Files
mayan-edms/apps/backups/api.py
2012-08-10 14:20:38 -04:00

100 lines
2.4 KiB
Python

from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ugettext
class BackupManagerBase(object):
label = _(u'Base backup manager')
#def __init__(self, name, label):
# self.label = label
# self.name = name
def info(self):
return None
def __unicode__(self):
return unicode(self.__class__.label)
class ModelFixtures(BackupManagerBase):
label = _(u'Model fixtures')
def __init__(self, models=None):
self.model_list = models or []
def info(self):
return u', '.join(self.model_list) or _(u'All')
class DirectoryCopy(BackupManagerBase):
label = _(u'Directory copy')
def __init__(self, path):
self.path = path
def info(self):
return self.path
class AppBackup(object):
_registry = {}
STATE_BACKING_UP = 'backing_up'
STATE_RESTORING = 'restoring'
STATE_IDLE = 'idle'
STATE_CHOICES = (
(STATE_BACKING_UP, _(u'backing up')),
(STATE_RESTORING, _(u'restoring')),
(STATE_IDLE, _(u'idle')),
)
@classmethod
def get(cls, name):
return cls._registry[name]
@classmethod
def get_all(cls):
return cls._registry.values()
def __init__(self, name, label, backup_managers):
self.label = label
self.name = name
self.backup_managers = backup_managers
self.state = self.__class__.STATE_IDLE
self.__class__._registry[name] = self
@property
def info(self):
results = []
for manager in self.backup_managers:
results.append(u'%s - %s' % (manager, manager.info() or _(u'Nothing')))
return u', '.join(results)
def backup(self, storage_module=None):
self.state = self.__class__.STATE_BACKING_UP
# call storage_module
self.state = self.__class__.STATE_IDLE
def restore(self, storage_module=None):
self.state = self.__class__.STATE_RESTORING
# call storage_module
self.state = self.__class__.STATE_IDLE
def __unicode__(self):
return unicode(self.label)
class StorageModuleBase(object):
_registry = {}
def __init__(self, name, label):
self.label = label
self.name = name
self.__class__._registry[name] = self
def backup(self, *args, **kwargs):
raise NotImplemented
def restore(self, *args, **kwargs):
raise NotImplemented