Update backup app to use the App model from the app registry models
This commit is contained in:
@@ -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'))
|
||||
|
||||
@@ -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')
|
||||
|
||||
55
apps/backups/migrations/0005_auto__del_backupjobapp.py
Normal file
55
apps/backups/migrations/0005_auto__del_backupjobapp.py
Normal 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']
|
||||
55
apps/backups/migrations/0006_auto.py
Normal file
55
apps/backups/migrations/0006_auto.py
Normal 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']
|
||||
@@ -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
|
||||
|
||||
@@ -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'))
|
||||
|
||||
@@ -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'))
|
||||
|
||||
@@ -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()])
|
||||
|
||||
|
||||
@@ -167,6 +167,8 @@ INSTALLED_APPS = (
|
||||
'scheduler',
|
||||
'job_processor',
|
||||
'backups',
|
||||
'app_registry',
|
||||
'icons',
|
||||
# Mayan EDMS
|
||||
'diagnostics',
|
||||
'maintenance',
|
||||
|
||||
Reference in New Issue
Block a user