diff --git a/apps/backups/__init__.py b/apps/backups/__init__.py new file mode 100644 index 0000000000..1993add381 --- /dev/null +++ b/apps/backups/__init__.py @@ -0,0 +1,9 @@ +from __future__ import absolute_import + +from project_tools.api import register_tool +from navigation.api import bind_links + +from .links import backup_tool_link, restore_tool_link + +register_tool(backup_tool_link) +register_tool(restore_tool_link) diff --git a/apps/backups/api.py b/apps/backups/api.py new file mode 100644 index 0000000000..5717d99e50 --- /dev/null +++ b/apps/backups/api.py @@ -0,0 +1,42 @@ +from django.utils.translation import ugettext_lazy as _ + + +class ModuleBackup(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): + self.label = label + self.name = name + self.state = self.__class__.STATE_IDLE + self.__class__._registry[name] = self + + 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) diff --git a/apps/backups/links.py b/apps/backups/links.py new file mode 100644 index 0000000000..43117d73d4 --- /dev/null +++ b/apps/backups/links.py @@ -0,0 +1,10 @@ +from __future__ import absolute_import + +from django.utils.translation import ugettext_lazy as _ + +from navigation.api import Link + +#from .permissions import + +backup_tool_link = Link(text=_(u'backup'), view='backup_view', icon='cd_burn.png')#, permissions=[]) +restore_tool_link = Link(text=_(u'restore'), view='restore_view', icon='cd_eject.png')#, permissions=[]) diff --git a/apps/backups/models.py b/apps/backups/models.py new file mode 100644 index 0000000000..71a8362390 --- /dev/null +++ b/apps/backups/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/apps/backups/static/images/icons/cd_burn.png b/apps/backups/static/images/icons/cd_burn.png new file mode 100644 index 0000000000..d00b382878 Binary files /dev/null and b/apps/backups/static/images/icons/cd_burn.png differ diff --git a/apps/backups/static/images/icons/cd_eject.png b/apps/backups/static/images/icons/cd_eject.png new file mode 100644 index 0000000000..2297c44842 Binary files /dev/null and b/apps/backups/static/images/icons/cd_eject.png differ diff --git a/apps/backups/urls.py b/apps/backups/urls.py new file mode 100644 index 0000000000..0e94bc9070 --- /dev/null +++ b/apps/backups/urls.py @@ -0,0 +1,5 @@ +from django.conf.urls.defaults import patterns, url + +urlpatterns = patterns('backups.views', + url(r'^backup/$', 'backup_view', (), 'backup_view'), +) diff --git a/apps/backups/views.py b/apps/backups/views.py new file mode 100644 index 0000000000..9e83e82162 --- /dev/null +++ b/apps/backups/views.py @@ -0,0 +1,29 @@ +from __future__ import absolute_import + +from django.utils.translation import ugettext_lazy as _ +from django.http import HttpResponseRedirect +from django.shortcuts import render_to_response +from django.template import RequestContext +from django.contrib import messages +from django.core.urlresolvers import reverse + +from permissions.models import Permission + +from .api import ModuleBackup +#from .permissions import + + +def backup_view(request): + #Permission.objects.check_permissions(request.user, []) + + context = { + 'object_list': ModuleBackup.get_all(), + 'title': _(u'apps registered for backup'), + 'hide_link': True, + #'extra_columns': [ + # {'name': _(u'description'), 'attribute': 'description'}, + #], + } + + return render_to_response('generic_list.html', context, + context_instance=RequestContext(request)) diff --git a/settings.py b/settings.py index 878f60cc28..6728aaa3ef 100644 --- a/settings.py +++ b/settings.py @@ -166,6 +166,7 @@ INSTALLED_APPS = ( 'clustering', 'scheduler', 'job_processor', + 'backups', # Mayan EDMS 'diagnostics', 'maintenance', diff --git a/urls.py b/urls.py index 665c8ad2de..b62b2a388b 100644 --- a/urls.py +++ b/urls.py @@ -43,6 +43,7 @@ urlpatterns = patterns('', (r'^statistics/', include('statistics.urls')), (r'^clustering/', include('clustering.urls')), (r'^trash/', include('trash.urls')), + (r'^backups/', include('backups.urls')), )