Add initial database erase support

This commit is contained in:
Roberto Rosario
2012-07-26 05:03:02 -04:00
parent bccc228fa0
commit ac65a6db76
7 changed files with 74 additions and 16 deletions

View File

@@ -3,9 +3,10 @@ from __future__ import absolute_import
from project_setup.api import register_setup
from navigation.api import register_links#, register_sidebar_template
from .links import database_bootstrap, bootstrap_execute
from .links import database_bootstrap, bootstrap_execute, erase_database_link
from .api import BootstrapSimple, BootstrapPermit
register_setup(database_bootstrap)
register_setup(erase_database_link)
register_links(BootstrapSimple, [bootstrap_execute])
register_links(BootstrapPermit, [bootstrap_execute])

View File

@@ -2,14 +2,48 @@ from __future__ import absolute_import
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ugettext
from django.contrib.auth.models import User, Group
from metadata.models import MetadataType, MetadataSet
from document_indexing.models import Index, IndexTemplateNode
from documents.models import DocumentType, DocumentTypeFilename
from documents.models import DocumentType, DocumentTypeFilename, Document
from permissions.models import Role
from metadata.api import save_metadata_list
#from sources.models import WebForm, StagingFolder
bootstrap_options = {}
def nuke_database():
for obj in Document.objects.all():
obj.delete()
for obj in MetadataType.objects.all():
obj.delete()
for obj in MetadataSet.objects.all():
obj.delete()
for obj in Index.objects.all():
obj.delete()
for obj in DocumentType.objects.all():
obj.delete()
#for obj in WebForm.objects.all():
# obj.delete()
#for obj in StagingFolder.objects.all():
# obj.delete()
for obj in Group.objects.all():
obj.delete()
for obj in User.objects.all():
if not obj.is_superuser and not obj.is_staff:
obj.delete()
class BootstrapBase(object):
name = None
label = ''

View File

@@ -7,3 +7,4 @@ def is_superuser(context):
database_bootstrap = {'text': _(u'bootstrap database'), 'view': 'bootstrap_type_list', 'icon': 'database_lightning.png', 'condition': is_superuser}#, 'children_view_regex': [r'statistics']}
bootstrap_execute = {'text': _(u'execute'), 'view': 'bootstrap_execute', 'args': 'object.name', 'sprite': 'database_lightning.png', 'condition': is_superuser}#, 'children_view_regex': [r'statistics']}
erase_database_link = {'text': _(u'erase database'), 'view': 'erase_database_view', 'icon': 'radioactivity.png', 'condition': is_superuser}#, 'children_view_regex': [r'statistics']}

View File

@@ -1,12 +1 @@
from __future__ import absolute_import
#import logging
#from django.db import models
#from django.utils.translation import ugettext_lazy as _
#logger = logging.getLogger(__name__)
#class CompanyType(models.Model):
# name =
from django.db import models

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -3,4 +3,5 @@ from django.conf.urls.defaults import patterns, url
urlpatterns = patterns('bootstrap.views',
url(r'^type/list/$', 'bootstrap_type_list', (), 'bootstrap_type_list'),
url(r'^(?P<bootstrap_name>\w+)/execute/$', 'bootstrap_execute', (), 'bootstrap_execute'),
url(r'^nuke/$', 'erase_database_view', (), 'erase_database_view'),
)

View File

@@ -7,7 +7,7 @@ from django.template import RequestContext
from django.contrib import messages
from django.core.urlresolvers import reverse
from .api import bootstrap_options
from .api import bootstrap_options, nuke_database
def bootstrap_type_list(request):
@@ -49,7 +49,7 @@ def bootstrap_execute(request, bootstrap_name):
'delete_view': False,
'previous': previous,
'next': next,
#'form_icon': u'basket_remove.png',
'form_icon': u'database_lightning.png',
'object': bootstrap,
}
@@ -57,3 +57,35 @@ def bootstrap_execute(request, bootstrap_name):
return render_to_response('generic_confirm.html', context,
context_instance=RequestContext(request))
def erase_database_view(request):
# TODO: check for permission
post_action_redirect = None
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/')))
next = request.POST.get('next', request.GET.get('next', post_action_redirect if post_action_redirect else request.META.get('HTTP_REFERER', '/')))
if request.method == 'POST':
try:
nuke_database()
except Exception, exc:
messages.error(request, _(u'Error erasing database; %s') % exc)
else:
messages.success(request, _(u'Database erased successfully.'))
return HttpResponseRedirect(next)
context = {
#'object_name': _(u'bootstrap setup'),
'delete_view': False,
'previous': previous,
'next': next,
'form_icon': u'radioactivity.png',
#'object': bootstrap,
}
context['title'] = _(u'Are you sure you wish to erase the entire database and document storage?')
return render_to_response('generic_confirm.html', context,
context_instance=RequestContext(request))