127 lines
4.6 KiB
Python
127 lines
4.6 KiB
Python
from __future__ import absolute_import
|
|
|
|
from django.conf import settings
|
|
from django.contrib import messages
|
|
from django.core.urlresolvers import reverse
|
|
from django.http import HttpResponseRedirect
|
|
from django.shortcuts import render_to_response, get_object_or_404
|
|
from django.template import RequestContext
|
|
from django.utils.translation import ugettext as _
|
|
|
|
from common.utils import encapsulate
|
|
from permissions.models import Permission
|
|
|
|
#from .classes import AppBackup
|
|
#from .forms import BackupJobForm
|
|
#from .models import App#, BackupJob
|
|
from .permissions import PERMISSION_BACKUP_JOB_VIEW, PERMISSION_BACKUP_JOB_CREATE, PERMISSION_BACKUP_JOB_EDIT
|
|
|
|
|
|
def backup_job_list(request):
|
|
pre_object_list = BackupJob.objects.all()
|
|
|
|
try:
|
|
Permission.objects.check_permissions(request.user, [PERMISSION_BACKUP_JOB_VIEW])
|
|
except PermissionDenied:
|
|
# If user doesn't have global permission, get a list of backup jobs
|
|
# for which he/she does have access use it to filter the
|
|
# provided object_list
|
|
final_object_list = AccessEntry.objects.filter_objects_by_access(PERMISSION_BACKUP_JOB_VIEW, request.user, pre_object_list)
|
|
else:
|
|
final_object_list = pre_object_list
|
|
|
|
context = {
|
|
'object_list': final_object_list,
|
|
'title': _(u'backup jobs'),
|
|
'hide_link': True,
|
|
#'extra_columns': [
|
|
# {'name': _(u'info'), 'attribute': 'info'},
|
|
#],
|
|
}
|
|
return render_to_response('generic_list.html', context,
|
|
context_instance=RequestContext(request))
|
|
|
|
|
|
def backup_job_create(request):
|
|
Permission.objects.check_permissions(request.user, [PERMISSION_BACKUP_JOB_CREATE])
|
|
|
|
if request.method == 'POST':
|
|
form = BackupJobForm(data=request.POST)
|
|
if form.is_valid():
|
|
try:
|
|
backup_job = form.save()
|
|
except Exception, exc:
|
|
messages.error(request, _(u'Error creating backup job; %s') % exc)
|
|
else:
|
|
messages.success(request, _(u'Backup job "%s" created successfully.') % backup_job)
|
|
return HttpResponseRedirect(reverse('backup_job_list'))
|
|
else:
|
|
form = BackupJobForm()
|
|
|
|
return render_to_response('generic_form.html', {
|
|
'form': form,
|
|
'title': _(u'Create backup job')
|
|
}, context_instance=RequestContext(request))
|
|
|
|
|
|
def backup_job_edit(request, backup_job_pk):
|
|
backup_job = get_object_or_404(BackupJob, pk=backup_job_pk)
|
|
try:
|
|
Permission.objects.check_permissions(request.user, [PERMISSION_BACKUP_JOB_EDIT])
|
|
except PermissionDenied:
|
|
AccessEntry.objects.check_access(PERMISSION_BACKUP_JOB_EDIT, request.user, backup_job)
|
|
|
|
if request.method == 'POST':
|
|
form = BackupJobForm(data=request.POST, instance=backup_job)
|
|
if form.is_valid():
|
|
try:
|
|
backup_job = form.save()
|
|
except Exception, exc:
|
|
messages.error(request, _(u'Error editing backup job; %s') % exc)
|
|
else:
|
|
messages.success(request, _(u'Backup job "%s" edited successfully.') % backup_job)
|
|
return HttpResponseRedirect(reverse('backup_job_list'))
|
|
else:
|
|
form = BackupJobForm(instance=backup_job)
|
|
|
|
return render_to_response('generic_form.html', {
|
|
'form': form,
|
|
'object': backup_job,
|
|
'title': _(u'Edit backup job: %s') % backup_job
|
|
}, context_instance=RequestContext(request))
|
|
|
|
|
|
def backup_job_test(request, backup_job_pk):
|
|
backup_job = get_object_or_404(BackupJob, pk=backup_job_pk)
|
|
#try:
|
|
# Permission.objects.check_permissions(request.user, [PERMISSION_BACKUP_JOB_EDIT])
|
|
#except PermissionDenied:
|
|
# AccessEntry.objects.check_access(PERMISSION_BACKUP_JOB_EDIT, request.user, backup_job)
|
|
|
|
try:
|
|
backup_job.backup(dry_run=True)
|
|
except Exception, exc:
|
|
if settings.DEBUG:
|
|
raise
|
|
else:
|
|
messages.error(request, _(u'Error testing backup job; %s') % exc)
|
|
return HttpResponseRedirect(reverse('backup_job_list'))
|
|
else:
|
|
messages.success(request, _(u'Test for backup job "%s" finished successfully.') % backup_job)
|
|
return HttpResponseRedirect(reverse('backup_job_list'))
|
|
|
|
|
|
def backup_view(request):
|
|
#Permission.objects.check_permissions(request.user, [])
|
|
|
|
context = {
|
|
'object_list': AppBackup.get_all(),
|
|
'title': _(u'registered apps for backup'),
|
|
'hide_link': True,
|
|
'extra_columns': [
|
|
{'name': _(u'info'), 'attribute': 'info'},
|
|
],
|
|
}
|
|
return render_to_response('generic_list.html', context,
|
|
context_instance=RequestContext(request))
|