diff --git a/preferences/urls.py b/preferences/urls.py
index 30163868..9bfd67d3 100644
--- a/preferences/urls.py
+++ b/preferences/urls.py
@@ -71,6 +71,11 @@ urlpatterns = [
views.edit_options,
name='edit-options'
),
+ url(
+ r'^edit_options/(?PCotisationsOption)$',
+ views.edit_options,
+ name='edit-options'
+ ),
url(r'^add_service/$', views.add_service, name='add-service'),
url(
r'^edit_service/(?P[0-9]+)$',
@@ -106,5 +111,20 @@ urlpatterns = [
name='edit-switchmanagementcred'
),
url(r'^del_switchmanagementcred/(?P[0-9]+)$', views.del_switchmanagementcred, name='del-switchmanagementcred'),
+ url(
+ r'^add_document_template/$',
+ views.add_document_template,
+ name='add-document-template'
+ ),
+ url(
+ r'^edit_document_template/(?P[0-9]+)$',
+ views.edit_document_template,
+ name='edit-document-template'
+ ),
+ url(
+ r'^del_document_template/$',
+ views.del_document_template,
+ name='del-document-template'
+ ),
url(r'^$', views.display_options, name='display-options'),
]
diff --git a/preferences/views.py b/preferences/views.py
index 0e86713c..ecb3826e 100644
--- a/preferences/views.py
+++ b/preferences/views.py
@@ -48,7 +48,9 @@ from .forms import (
ServiceForm,
ReminderForm,
RadiusKeyForm,
- SwitchManagementCredForm
+ SwitchManagementCredForm,
+ DocumentTemplateForm,
+ DelDocumentTemplateForm
)
from .models import (
Service,
@@ -64,6 +66,8 @@ from .models import (
RadiusKey,
SwitchManagementCred,
RadiusOption,
+ CotisationsOption,
+ DocumentTemplate
)
from . import models
from . import forms
@@ -88,6 +92,8 @@ def display_options(request):
radiuskey_list = RadiusKey.objects.all()
switchmanagementcred_list = SwitchManagementCred.objects.all()
radiusoptions, _ = RadiusOption.objects.get_or_create()
+ cotisationsoptions, _created = CotisationsOption.objects.get_or_create()
+ document_template_list = DocumentTemplate.objects.order_by('name')
return form({
'useroptions': useroptions,
'machineoptions': machineoptions,
@@ -102,6 +108,8 @@ def display_options(request):
'radiuskey_list' : radiuskey_list,
'switchmanagementcred_list': switchmanagementcred_list,
'radiusoptions' : radiusoptions,
+ 'cotisationsoptions': cotisationsoptions,
+ 'document_template_list': document_template_list,
}, 'preferences/display_preferences.html', request)
@@ -405,3 +413,86 @@ def del_mailcontact(request, instances):
request
)
+
+@login_required
+@can_create(DocumentTemplate)
+def add_document_template(request):
+ """
+ View used to add a document template.
+ """
+ document_template = DocumentTemplateForm(
+ request.POST or None,
+ request.FILES or None,
+ )
+ if document_template.is_valid():
+ document_template.save()
+ messages.success(
+ request,
+ _("The document template was created.")
+ )
+ return redirect(reverse('preferences:display-options'))
+ return form({
+ 'preferenceform': document_template,
+ 'action_name': _("Add"),
+ 'title': _("New document template")
+ }, 'preferences/preferences.html', request)
+
+
+@login_required
+@can_edit(DocumentTemplate)
+def edit_document_template(request, document_template_instance, **_kwargs):
+ """
+ View used to edit a document_template.
+ """
+ document_template = DocumentTemplateForm(
+ request.POST or None,
+ request.FILES or None,
+ instance=document_template_instance)
+ if document_template.is_valid():
+ if document_template.changed_data:
+ document_template.save()
+ messages.success(
+ request,
+ _("The document template was edited.")
+ )
+ return redirect(reverse('preferences:display-options'))
+ return form({
+ 'preferenceform': document_template,
+ 'action_name': _("Edit"),
+ 'title': _("Edit document template")
+ }, 'preferences/preferences.html', request)
+
+
+@login_required
+@can_delete_set(DocumentTemplate)
+def del_document_template(request, instances):
+ """
+ View used to delete a set of document template.
+ """
+ document_template = DelDocumentTemplateForm(
+ request.POST or None, instances=instances)
+ if document_template.is_valid():
+ document_template_del = document_template.cleaned_data['document_templates']
+ for document_template in document_template_del:
+ try:
+ document_template.delete()
+ messages.success(
+ request,
+ _("The document template %(document_template)s was deleted.") % {
+ 'document_template': document_template
+ }
+ )
+ except ProtectedError:
+ messages.error(
+ request,
+ _("The document template %(document_template)s can't be deleted \
+ because it is currently being used.") % {
+ 'document_template': document_template
+ }
+ )
+ return redirect(reverse('preferences:display-options'))
+ return form({
+ 'preferenceform': document_template,
+ 'action_name': _("Delete"),
+ 'title': _("Delete document template")
+ }, 'preferences/preferences.html', request)
diff --git a/re2o/settings.py b/re2o/settings.py
index 0a019d2d..f2557b44 100644
--- a/re2o/settings.py
+++ b/re2o/settings.py
@@ -120,6 +120,7 @@ TEMPLATES = [
'DIRS': [
# Use only absolute paths with '/' delimiters even on Windows
os.path.join(BASE_DIR, 'templates').replace('\\', '/'),
+ os.path.join(BASE_DIR, 'media', 'templates').replace('\\', '/'),
],
'APP_DIRS': True,
'OPTIONS': {