summaryrefslogtreecommitdiff
path: root/archaeological_files
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-14 09:44:45 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-14 09:44:45 +0200
commit34b80cd9b735aaae35859c972b75c3e9220cc8a4 (patch)
tree9fb4fcfff8387ac1c91707aab55180d560bf1485 /archaeological_files
parent73ba1638f580f6968126f4939a1f4495710915cb (diff)
downloadIshtar-34b80cd9b735aaae35859c972b75c3e9220cc8a4.tar.bz2
Ishtar-34b80cd9b735aaae35859c972b75c3e9220cc8a4.zip
Archaeological files: multiple del - redir
Diffstat (limited to 'archaeological_files')
-rw-r--r--archaeological_files/forms.py32
-rw-r--r--archaeological_files/templates/ishtar/wizard/wizard_file_deletion.html14
-rw-r--r--archaeological_files/views.py4
-rw-r--r--archaeological_files/wizards.py42
4 files changed, 50 insertions, 42 deletions
diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py
index 640e2cab1..4d8ab749a 100644
--- a/archaeological_files/forms.py
+++ b/archaeological_files/forms.py
@@ -30,14 +30,15 @@ from django.utils.translation import ugettext_lazy as _
from django.utils.safestring import mark_safe
from ishtar_common.models import Person, Organization, \
- valid_id, Department, person_type_pks_lazy, \
+ valid_id, valid_ids, Department, person_type_pks_lazy, \
person_type_pk_lazy, organization_type_pks_lazy
from archaeological_operations.models import ActType, AdministrativeAct, \
OperationType
from . import models
from ishtar_common.forms import FinalForm, get_now, reverse_lazy, TableSelect, \
- ManageOldType, CustomForm, FieldType, IshtarForm, HistorySelect
+ ManageOldType, CustomForm, FieldType, IshtarForm, HistorySelect, \
+ MultiSearchForm, LockForm, CustomFormSearch
from ishtar_common.forms_common import get_town_field
from archaeological_operations.forms import AdministrativeActForm, \
AdministrativeActOpeFormSelection, SLICING, AdministrativeActModifForm, \
@@ -123,7 +124,7 @@ class FileSelect(HistorySelect):
('', '--')] + list(settings.ISHTAR_DPTS)
-class FileFormSelection(forms.Form):
+class FileFormSelection(LockForm, CustomFormSearch):
SEARCH_AND_SELECT = True
form_label = _("Archaeological file search")
associated_models = {'pk': models.File}
@@ -136,18 +137,19 @@ class FileFormSelection(forms.Form):
source_full=reverse_lazy('get-file-full')),
validators=[valid_id(models.File)])
- def clean(self):
- cleaned_data = self.cleaned_data
- if 'pk' not in cleaned_data or not cleaned_data['pk']:
- raise forms.ValidationError(_(u"You should select a file."))
- pk = self.cleaned_data["pk"]
- try:
- file = models.File.objects.get(pk=pk)
- except models.File.DoesNotExist:
- raise forms.ValidationError(_("Invalid selection."))
- if file.locked:
- raise forms.ValidationError(_("This file is locked for edition."))
- return self.cleaned_data
+
+class FileFormMultiSelection(LockForm, MultiSearchForm):
+ form_label = _("Archaeological file search")
+ associated_models = {'pks': models.File}
+
+ pk = forms.CharField(
+ label="", required=False,
+ widget=widgets.DataTable(
+ reverse_lazy('get-file'),
+ FileSelect, models.File,
+ multiple_select=True,
+ source_full=reverse_lazy('get-file-full')),
+ validators=[valid_ids(models.File)])
DATE_SOURCE = (('creation', _(u"Creation date")),
diff --git a/archaeological_files/templates/ishtar/wizard/wizard_file_deletion.html b/archaeological_files/templates/ishtar/wizard/wizard_file_deletion.html
new file mode 100644
index 000000000..a29436e1d
--- /dev/null
+++ b/archaeological_files/templates/ishtar/wizard/wizard_file_deletion.html
@@ -0,0 +1,14 @@
+{% extends "ishtar/wizard/delete_wizard.html" %}
+{% load i18n %}
+{% block "detailled_extra_info" %}
+
+{% if current_object.operations.count %}
+<h3>{% trans "Associated operations" %}</h3>
+<ul class='list'>
+{% for item in current_object.operations.all %}
+ <li>{{person}} <a class='display_details_inline' href="#"
+ onclick='load_window("{% url "show-operation" item.pk "" %}")'><i class="fa fa-info-circle" aria-hidden="true"></i></a></li>{% endfor %}
+</ul>
+{% endif %}
+
+{% endblock %}
diff --git a/archaeological_files/views.py b/archaeological_files/views.py
index 08f875d54..a23475c3e 100644
--- a/archaeological_files/views.py
+++ b/archaeological_files/views.py
@@ -160,7 +160,7 @@ file_closing_wizard = FileClosingWizard.as_view(
label=_(u"File closing"), url_name='file_closing',)
file_deletion_wizard = FileDeletionWizard.as_view(
- [('selec-file_deletion', forms.FileFormSelection),
+ [('selec-file_deletion', forms.FileFormMultiSelection),
('final-file_deletion', forms.FinalFileDeleteForm)],
label=_(u"File deletion"),
url_name='file_deletion',)
@@ -171,7 +171,7 @@ def file_delete(request, pk):
return HttpResponseRedirect("/")
FileDeletionWizard.session_set_value(
- request, 'selec-file_deletion', 'pk', pk, reset=True)
+ request, 'selec-file_deletion', 'pks', pk, reset=True)
return redirect(reverse('file_deletion',
kwargs={'step': 'final-file_deletion'}))
diff --git a/archaeological_files/wizards.py b/archaeological_files/wizards.py
index 9f1f59a4b..c1aaf9037 100644
--- a/archaeological_files/wizards.py
+++ b/archaeological_files/wizards.py
@@ -20,15 +20,14 @@
from django.conf import settings
from django.core.exceptions import ObjectDoesNotExist
from django.db.models import Max
-from django.shortcuts import render
from django.utils.translation import ugettext_lazy as _
from ishtar_common.forms import reverse_lazy
-from ishtar_common.wizards import ClosingWizard, SearchWizard
+from ishtar_common.wizards import ClosingWizard, SearchWizard, \
+ MultipleDeletionWizard
from archaeological_operations.wizards import OperationWizard,\
OperationAdministrativeActWizard
-from archaeological_operations.models import AdministrativeAct, Parcel, \
- Operation
+from archaeological_operations.models import AdministrativeAct, Parcel
from . import models
@@ -42,6 +41,7 @@ class FileWizard(OperationWizard):
parcel_step_key = 'parcels-'
town_step_keys = ['towns-']
wizard_done_window = reverse_lazy('show-file')
+ redirect_url = "file_modification"
def get_extra_model(self, dct, m2m, form_list):
dct = super(FileWizard, self).get_extra_model(dct, m2m, form_list)
@@ -110,34 +110,26 @@ class FileModificationWizard(FileWizard):
modification = True
+FILE_FIELDS = ['year', 'numeric_reference', 'internal_reference',
+ 'file_type', 'in_charge', 'general_contractor', 'creation_date',
+ 'reception_date', 'total_surface', 'total_developed_surface',
+ 'address', 'address_complement', 'postal_code', 'comment']
+
+
class FileClosingWizard(ClosingWizard):
model = models.File
- fields = ['year', 'numeric_reference', 'internal_reference',
- 'file_type', 'in_charge', 'general_contractor', 'creation_date',
- 'reception_date', 'total_surface', 'total_developed_surface',
- 'address', 'address_complement', 'postal_code', 'comment']
+ fields = FILE_FIELDS
if settings.COUNTRY == 'fr':
fields += ['saisine_type', 'permit_reference']
fields += ['towns']
-class FileDeletionWizard(FileClosingWizard):
- def get_formated_datas(self, forms):
- datas = super(FileDeletionWizard, self).get_formated_datas(forms)
- datas.append((_("Associated operations"), []))
- for operation in Operation.objects.filter(
- associated_file=self.current_obj).all():
-
- if operation.end_date:
- datas[-1][1].append(('', str(operation)))
- return datas
-
- def done(self, form_list, **kwargs):
- obj = self.get_current_object()
- for operation in Operation.objects.filter(associated_file=obj).all():
- operation.delete()
- obj.delete()
- return render(self.request, 'ishtar/wizard/wizard_delete_done.html', {})
+class FileDeletionWizard(MultipleDeletionWizard, FileClosingWizard):
+ model = models.File
+ redirect_url = "file_deletion"
+ fields = FILE_FIELDS
+ wizard_templates = {
+ 'final-file_deletion': 'ishtar/wizard/wizard_file_deletion.html'}
class FileAdministrativeActWizard(OperationAdministrativeActWizard):