Update backup app to use the App model from the app registry models

This commit is contained in:
Roberto Rosario
2012-08-14 13:54:53 -04:00
parent d02e5b1d37
commit fc61ad1440
10 changed files with 147 additions and 10 deletions

View File

@@ -8,6 +8,7 @@ from job_processor.exceptions import JobQueuePushError
from navigation.api import bind_links, register_model_list_columns
from project_tools.api import register_tool
from project_setup.api import register_setup
from app_registry.api import register_app
from .links import backup_tool_link, restore_tool_link, backup_job_list, backup_job_create, backup_job_edit, backup_job_test
from .models import BackupJob
@@ -38,3 +39,5 @@ register_model_list_columns(BackupJob, [
{'name':_(u'begin date time'), 'attribute': 'begin_datetime'},
{'name':_(u'storage module'), 'attribute': 'storage_module'},
])
register_app('backups', _(u'Backups'))

View File

@@ -2,12 +2,21 @@ from __future__ import absolute_import
from django import forms
from app_registry.models import App
from .models import BackupJob
from .api import AppBackup
def valid_app_choices():
return App.live.filter(name__in=[appbackup.name for appbackup in AppBackup.get_all()])
class BackupJobForm(forms.ModelForm):
#expiration_datetime = SplitTimeDeltaField()
apps = forms.ModelChoiceField(queryset=valid_app_choices())
class Meta:
model = BackupJob
#exclude = ('checkout_datetime', 'user_content_type', 'user_object_id')

View File

@@ -0,0 +1,55 @@
# -*- coding: utf-8 -*-
import datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models
class Migration(SchemaMigration):
def forwards(self, orm):
# Deleting model 'BackupJobApp'
db.delete_table('backups_backupjobapp')
# Adding M2M table for field app on 'BackupJob'
db.create_table('backups_backupjob_app', (
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
('backupjob', models.ForeignKey(orm['backups.backupjob'], null=False)),
('app', models.ForeignKey(orm['app_registry.app'], null=False))
))
db.create_unique('backups_backupjob_app', ['backupjob_id', 'app_id'])
def backwards(self, orm):
# Adding model 'BackupJobApp'
db.create_table('backups_backupjobapp', (
('backup_job', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['backups.BackupJob'])),
('app_backup', self.gf('django.db.models.fields.CharField')(max_length=64)),
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
))
db.send_create_signal('backups', ['BackupJobApp'])
# Removing M2M table for field app on 'BackupJob'
db.delete_table('backups_backupjob_app')
models = {
'app_registry.app': {
'Meta': {'ordering': "('name',)", 'object_name': 'App'},
'icon': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'})
},
'backups.backupjob': {
'Meta': {'object_name': 'BackupJob'},
'app': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['app_registry.App']", 'symmetrical': 'False'}),
'begin_datetime': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 8, 14, 0, 0)'}),
'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
'storage_arguments_json': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'storage_module_name': ('django.db.models.fields.CharField', [], {'max_length': '16'})
}
}
complete_apps = ['backups']

View File

@@ -0,0 +1,55 @@
# -*- coding: utf-8 -*-
import datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models
class Migration(SchemaMigration):
def forwards(self, orm):
# Removing M2M table for field app on 'BackupJob'
db.delete_table('backups_backupjob_app')
# Adding M2M table for field apps on 'BackupJob'
db.create_table('backups_backupjob_apps', (
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
('backupjob', models.ForeignKey(orm['backups.backupjob'], null=False)),
('app', models.ForeignKey(orm['app_registry.app'], null=False))
))
db.create_unique('backups_backupjob_apps', ['backupjob_id', 'app_id'])
def backwards(self, orm):
# Adding M2M table for field app on 'BackupJob'
db.create_table('backups_backupjob_app', (
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
('backupjob', models.ForeignKey(orm['backups.backupjob'], null=False)),
('app', models.ForeignKey(orm['app_registry.app'], null=False))
))
db.create_unique('backups_backupjob_app', ['backupjob_id', 'app_id'])
# Removing M2M table for field apps on 'BackupJob'
db.delete_table('backups_backupjob_apps')
models = {
'app_registry.app': {
'Meta': {'ordering': "('name',)", 'object_name': 'App'},
'icon': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'})
},
'backups.backupjob': {
'Meta': {'object_name': 'BackupJob'},
'apps': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['app_registry.App']", 'symmetrical': 'False'}),
'begin_datetime': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 8, 14, 0, 0)'}),
'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
'storage_arguments_json': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'storage_module_name': ('django.db.models.fields.CharField', [], {'max_length': '16'})
}
}
complete_apps = ['backups']

View File

@@ -8,6 +8,8 @@ from django.utils.translation import ugettext_lazy as _
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
from app_registry.models import App
from .api import AppBackup, StorageModuleBase
logger = logging.getLogger(__name__)
@@ -16,6 +18,7 @@ logger = logging.getLogger(__name__)
class BackupJob(models.Model):
name = models.CharField(max_length=64, verbose_name=_(u'name'))
enabled = models.BooleanField(default=True, verbose_name=_(u'enabled'))
apps = models.ManyToManyField(App)
begin_datetime = models.DateTimeField(verbose_name=_(u'begin date and time'), default=lambda: datetime.datetime.now())
# * repetition =
@@ -34,9 +37,9 @@ class BackupJob(models.Model):
storage_module_name = models.CharField(max_length=16, choices=StorageModuleBase.get_as_choices(), verbose_name=_(u'storage module'))
storage_arguments_json = models.TextField(verbose_name=_(u'storage module arguments (in JSON)'), blank=True)
@property
def apps(self):
return self.backupjobapp_set
#@property
#def apps(self):
# return self.backupjobapp_set
def __unicode__(self):
return self.name
@@ -51,7 +54,8 @@ class BackupJob(models.Model):
storage_module = self.storage_module
#TODO: loads
for app in self.apps.all():
app.backup(storage_module(backup_path='/tmp', dry_run=dry_run), dry_run=dry_run)
app_backup = AppBackup.get(app.name)
app_backup.backup(storage_module(backup_path='/tmp', dry_run=dry_run), dry_run=dry_run)
def save(self, *args, **kwargs):
#dump
@@ -66,9 +70,9 @@ class BackupJob(models.Model):
verbose_name_plural = _(u'document checkouts')
class BackupJobApp(models.Model):
backup_job = models.ForeignKey(BackupJob)
app_backup = models.CharField(max_length=64, choices=AppBackup.get_as_choices())
#class BackupJobApp(models.Model):
# backup_job = models.ForeignKey(BackupJob)
# app_backup = models.CharField(max_length=64, choices=AppBackup.get_as_choices())
#class BackupJobLog

View File

@@ -1,7 +1,10 @@
from __future__ import absolute_import
from django.utils.translation import ugettext_lazy as _
from project_setup.api import register_setup
from navigation.api import bind_links
from app_registry.api import register_app
from .links import database_bootstrap, bootstrap_execute, erase_database_link
from .api import BootstrapSimple, BootstrapPermit
@@ -10,3 +13,4 @@ register_setup(database_bootstrap)
register_setup(erase_database_link)
bind_links([BootstrapSimple], [bootstrap_execute])
bind_links([BootstrapPermit], [bootstrap_execute])
register_app('bootstrap', _(u'Database bootstrap'))

View File

@@ -4,7 +4,7 @@ from django.utils.translation import ugettext_lazy as _
from navigation.api import bind_links, register_top_menu
from scheduler.api import LocalScheduler
from app_registry.api import register_app
from documents.models import Document
from acls.api import class_permissions
@@ -40,3 +40,4 @@ checkouts_scheduler.add_interval_job('task_check_expired_check_outs', _(u'Check
checkouts_scheduler.start()
initialize_document_checkout_extra_methods()
register_app('checkouts', _(u'Checkouts'))

View File

@@ -7,7 +7,8 @@ from navigation.api import (bind_links, register_top_menu,
from documents.models import Document
from acls.api import class_permissions
from acls.permissions import ACLS_EDIT_ACL, ACLS_VIEW_ACL
from backups.api import AppBackup, ElementBackupModel
from backups.api import AppBackup, ModelBackup
from app_registry.api import register_app
from .models import Folder
from .links import (folder_list, folder_create, folder_edit,
@@ -44,4 +45,6 @@ class_permissions(Document, [
PERMISSION_FOLDER_REMOVE_DOCUMENT,
])
AppBackup('folders', _(u'Folders'), [ElementBackupModel()])
app = register_app('folders', _(u'Folders'))
AppBackup('folders', app.label, [ModelBackup()])

View File

@@ -167,6 +167,8 @@ INSTALLED_APPS = (
'scheduler',
'job_processor',
'backups',
'app_registry',
'icons',
# Mayan EDMS
'diagnostics',
'maintenance',

View File

@@ -44,6 +44,7 @@ urlpatterns = patterns('',
(r'^clustering/', include('clustering.urls')),
(r'^trash/', include('trash.urls')),
(r'^backups/', include('backups.urls')),
(r'^apps/', include('app_registry.urls')),
)