diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-03-19 11:14:30 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-03-19 11:14:30 +0100 |
commit | 9d662a73d94264e2129195018d230481e1e2272f (patch) | |
tree | 30cb8af3b825e1bbdda4e360e0f17659b64dc7e7 /archaeological_files_pdl | |
parent | fd397e0752cac5328074db7aff20b6e840537fd3 (diff) | |
download | Ishtar-9d662a73d94264e2129195018d230481e1e2272f.tar.bz2 Ishtar-9d662a73d94264e2129195018d230481e1e2272f.zip |
Format - black: files_pdl
Diffstat (limited to 'archaeological_files_pdl')
-rw-r--r-- | archaeological_files_pdl/forms.py | 442 | ||||
-rw-r--r-- | archaeological_files_pdl/urls.py | 28 | ||||
-rw-r--r-- | archaeological_files_pdl/views.py | 104 | ||||
-rw-r--r-- | archaeological_files_pdl/wizards.py | 107 |
4 files changed, 379 insertions, 302 deletions
diff --git a/archaeological_files_pdl/forms.py b/archaeological_files_pdl/forms.py index 8f3847ced..18940f2d5 100644 --- a/archaeological_files_pdl/forms.py +++ b/archaeological_files_pdl/forms.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Copyright (C) 2014-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> @@ -25,17 +25,33 @@ from django.utils.functional import lazy from django.utils.safestring import mark_safe from ishtar_common.utils import ugettext_lazy as _ -from ishtar_common.models import Person, Town, valid_id, \ - person_type_pk_lazy, person_type_pks_lazy, organization_type_pks_lazy, \ - organization_type_pk_lazy, get_sra_agent_label, \ - get_orga_general_contractor_label, get_general_contractor_label, \ - get_orga_planning_service_label, get_responsible_planning_service_label +from ishtar_common.models import ( + Person, + Town, + valid_id, + person_type_pk_lazy, + person_type_pks_lazy, + organization_type_pks_lazy, + organization_type_pk_lazy, + get_sra_agent_label, + get_orga_general_contractor_label, + get_general_contractor_label, + get_orga_planning_service_label, + get_responsible_planning_service_label, +) from ishtar_common.models_common import Department from archaeological_files import models -from ishtar_common.forms import get_now, reverse_lazy, ManageOldType, \ - CustomForm, FieldType, IshtarForm, FormHeader +from ishtar_common.forms import ( + get_now, + reverse_lazy, + ManageOldType, + CustomForm, + FieldType, + IshtarForm, + FormHeader, +) from ishtar_common import widgets from bootstrap_datepicker.widgets import DatePicker @@ -45,26 +61,31 @@ class FileFormGeneral(CustomForm, ManageOldType): form_label = _("General") form_admin_name = _("Archaeological file - 010 - General") form_slug = "file-010-general" - associated_models = {'file_type': models.FileType} + associated_models = {"file_type": models.FileType} file_type = forms.ChoiceField(label=_("File type"), choices=[]) - year = forms.IntegerField(label=_("Year"), - initial=lambda: datetime.datetime.now().year, - validators=[validators.MinValueValidator(1000), - validators.MaxValueValidator(2100)]) - creation_date = forms.DateField(label=_("Creation date"), - initial=get_now, widget=DatePicker) + year = forms.IntegerField( + label=_("Year"), + initial=lambda: datetime.datetime.now().year, + validators=[ + validators.MinValueValidator(1000), + validators.MaxValueValidator(2100), + ], + ) + creation_date = forms.DateField( + label=_("Creation date"), initial=get_now, widget=DatePicker + ) reception_date = forms.DateField( - label=_("Reception date"), initial=get_now, widget=DatePicker) + label=_("Reception date"), initial=get_now, widget=DatePicker + ) TYPES = [ - FieldType('file_type', models.FileType), + FieldType("file_type", models.FileType), ] def clean_reception_date(self): - value = self.cleaned_data.get('reception_date', None) + value = self.cleaned_data.get("reception_date", None) if value and value > datetime.date.today(): - raise forms.ValidationError( - _('Reception date cannot be after today.')) + raise forms.ValidationError(_("Reception date cannot be after today.")) return value @@ -72,114 +93,123 @@ class FileFormPreventiveType(CustomForm, ManageOldType, forms.Form): form_label = "Saisine" form_admin_name = _("Archaeological file - 013 - Preventive - Saisine") form_slug = "file-013-preventivesaisine" - associated_models = {'saisine_type': models.SaisineType, - 'permit_type': models.PermitType} - permit_type = forms.ChoiceField(label=_("Permit type"), required=False, - choices=[]) - saisine_type = forms.ChoiceField(label=_("Saisine type"), - choices=[]) + associated_models = { + "saisine_type": models.SaisineType, + "permit_type": models.PermitType, + } + permit_type = forms.ChoiceField(label=_("Permit type"), required=False, choices=[]) + saisine_type = forms.ChoiceField(label=_("Saisine type"), choices=[]) TYPES = [ - FieldType('saisine_type', models.SaisineType), + FieldType("saisine_type", models.SaisineType), ] def __init__(self, *args, **kwargs): super(FileFormPreventiveType, self).__init__(*args, **kwargs) - self.fields['permit_type'].choices = models.PermitType.get_types( - default='NP', initial=self.init_data.get('permit_type')) - self.fields['permit_type'].help_text = models.PermitType.get_help() + self.fields["permit_type"].choices = models.PermitType.get_types( + default="NP", initial=self.init_data.get("permit_type") + ) + self.fields["permit_type"].help_text = models.PermitType.get_help() class FileFormPlanning(CustomForm, ManageOldType): form_label = _("Planning") form_admin_name = _("Archaeological file - 017 - Preventive - Planning") form_slug = "file-017-preventiveplanning" - base_models = ['town', 'department'] - associated_models = {'town': Town, 'department': Department} + base_models = ["town", "department"] + associated_models = {"town": Town, "department": Department} HEADERS = {} - HEADERS['town'] = FormHeader(_("Localisation")) - name = forms.CharField(label=_("Planning name"), required=False, - max_length=100) + HEADERS["town"] = FormHeader(_("Localisation")) + name = forms.CharField(label=_("Planning name"), required=False, max_length=100) town = widgets.Select2MultipleField( - model=Town, label=_("Towns"), required=False, remote=True) + model=Town, label=_("Towns"), required=False, remote=True + ) department = widgets.Select2MultipleField( - model=Department, label=_("Departments"), required=False, - help_text=_("Only relevant when no town is provided.") + model=Department, + label=_("Departments"), + required=False, + help_text=_("Only relevant when no town is provided."), ) - locality = forms.CharField(label=_("Locality"), max_length=100, - required=False) + locality = forms.CharField(label=_("Locality"), max_length=100, required=False) address = forms.CharField( label=_("Address (number/street)"), widget=forms.Textarea(attrs={"placeholder": _("Number/street")}), - required=False) - postal_code = forms.CharField(label=_("Postal code"), max_length=10, - required=False) - HEADERS['total_surface'] = FormHeader(_("Surfaces")) + required=False, + ) + postal_code = forms.CharField(label=_("Postal code"), max_length=10, required=False) + HEADERS["total_surface"] = FormHeader(_("Surfaces")) total_surface = forms.FloatField( required=False, widget=widgets.AreaWidget, label=_("Total surface (m2)"), - validators=[validators.MinValueValidator(0), - validators.MaxValueValidator(999999999)]) + validators=[ + validators.MinValueValidator(0), + validators.MaxValueValidator(999999999), + ], + ) total_developed_surface = forms.FloatField( widget=widgets.AreaWidget, label=_("Total developed surface (m2)"), required=False, - validators=[validators.MinValueValidator(0), - validators.MaxValueValidator(999999999)]) + validators=[ + validators.MinValueValidator(0), + validators.MaxValueValidator(999999999), + ], + ) class FileFormResearchAddress(CustomForm, forms.Form): form_label = _("Address") form_admin_name = _("Archaeological file - 015 - Research - Address") form_slug = "file-015-researchplanning" - base_models = ['town', 'department'] - associated_models = {'town': Town, 'department': Department} - name = forms.CharField(label=_("Project name"), required=False, - max_length=100) + base_models = ["town", "department"] + associated_models = {"town": Town, "department": Department} + name = forms.CharField(label=_("Project name"), required=False, max_length=100) town = widgets.Select2MultipleField( - model=Town, label=_("Towns"), required=False, remote=True) + model=Town, label=_("Towns"), required=False, remote=True + ) department = widgets.Select2MultipleField( - model=Department, label=_("Departments"), required=False) - locality = forms.CharField(label=_("Locality"), max_length=100, - required=False) + model=Department, label=_("Departments"), required=False + ) + locality = forms.CharField(label=_("Locality"), max_length=100, required=False) address = forms.CharField( label=_("Address (number/street)"), widget=forms.Textarea(attrs={"placeholder": _("Number/street")}), - required=False) - postal_code = forms.CharField(label=_("Postal code"), max_length=10, - required=False) + required=False, + ) + postal_code = forms.CharField(label=_("Postal code"), max_length=10, required=False) class PersonOrgaForm(forms.Form): - PERSON_FIELD = 'TO BE DEFINED' - PERSON_TYPE_PK = person_type_pk_lazy('general_contractor') + PERSON_FIELD = "TO BE DEFINED" + PERSON_TYPE_PK = person_type_pk_lazy("general_contractor") PERSON_LABEL = "" - ORGA_FIELD = 'TO BE DEFINED' - ORGA_TYPE_PK = organization_type_pk_lazy('general_contractor') + ORGA_FIELD = "TO BE DEFINED" + ORGA_TYPE_PK = organization_type_pk_lazy("general_contractor") ORGA_LABEL = "" def _media(self): - if self.status == 'corporation': - return forms.Media(js=('js/JQueryCorporation.js',)) + if self.status == "corporation": + return forms.Media(js=("js/JQueryCorporation.js",)) + media = property(_media) def __init__(self, *args, **kwargs): # get the status: natural person or corporation - DEFAULT_STATUS = 'natural' - current_status = '' - if 'data' in kwargs: + DEFAULT_STATUS = "natural" + current_status = "" + if "data" in kwargs: # the order is important: PERSON can have an ORGA for field in [self.ORGA_FIELD, self.PERSON_FIELD]: current_item_key = ( - (kwargs['prefix'] + '-') - if kwargs.get('prefix') else '') + field - if kwargs['data'] and kwargs['data'].get(current_item_key): + (kwargs["prefix"] + "-") if kwargs.get("prefix") else "" + ) + field + if kwargs["data"] and kwargs["data"].get(current_item_key): model = self.associated_models[field] try: - model.objects.get( - pk=kwargs['data'][current_item_key]) - current_status = 'natural' \ - if field == self.PERSON_FIELD else 'corporation' + model.objects.get(pk=kwargs["data"][current_item_key]) + current_status = ( + "natural" if field == self.PERSON_FIELD else "corporation" + ) except (model.DoesNotExist, ValueError): pass initial = kwargs.get("initial", {}) @@ -190,18 +220,19 @@ class PersonOrgaForm(forms.Form): model = self.associated_models[field] try: model.objects.get(pk=value) - current_status = 'natural' if field == self.PERSON_FIELD \ - else 'corporation' + current_status = ( + "natural" if field == self.PERSON_FIELD else "corporation" + ) except (model.DoesNotExist, ValueError): pass - status = '' - if 'status' in kwargs: - status = kwargs.pop('status') + status = "" + if "status" in kwargs: + status = kwargs.pop("status") if current_status != status: - if kwargs.get('data'): + if kwargs.get("data"): # status is different from the existing - clear fields - kwargs.pop('data') + kwargs.pop("data") elif current_status: status = current_status else: @@ -209,41 +240,45 @@ class PersonOrgaForm(forms.Form): self.status = status - if status not in ('natural', 'corporation'): + if status not in ("natural", "corporation"): status = DEFAULT_STATUS super(PersonOrgaForm, self).__init__(*args, **kwargs) # distinct widget for natural and corporation - if status == 'natural': + if status == "natural": self.fields[self.PERSON_FIELD] = forms.IntegerField( label=self.PERSON_LABEL, required=False, initial=initial.get(self.PERSON_FIELD, None), widget=widgets.JQueryPersonOrganization( - reverse_lazy('autocomplete-person', - args=[self.PERSON_TYPE_PK]), - reverse_lazy('person_create'), + reverse_lazy("autocomplete-person", args=[self.PERSON_TYPE_PK]), + reverse_lazy("person_create"), model=Person, - limit={'person_types': [self.PERSON_TYPE_PK], - 'attached_to__isnull': True}, - js_template='ishtar/blocks/JQueryNaturalPerson.js', - new=True), - validators=[valid_id(Person)]) + limit={ + "person_types": [self.PERSON_TYPE_PK], + "attached_to__isnull": True, + }, + js_template="ishtar/blocks/JQueryNaturalPerson.js", + new=True, + ), + validators=[valid_id(Person)], + ) else: self.fields[self.ORGA_FIELD] = forms.IntegerField( label=self.ORGA_LABEL, required=False, initial=initial.get(self.ORGA_FIELD, None), widget=widgets.JQueryPersonOrganization( - reverse_lazy('autocomplete-organization', - args=[self.ORGA_TYPE_PK]), - reverse_lazy('organization_create'), + reverse_lazy("autocomplete-organization", args=[self.ORGA_TYPE_PK]), + reverse_lazy("organization_create"), model=models.Organization, - limit={'organization_type': [self.ORGA_TYPE_PK]}, - js_template='ishtar/blocks/JQueryCorporationPerson.js', - new=True), - validators=[valid_id(models.Organization)]) + limit={"organization_type": [self.ORGA_TYPE_PK]}, + js_template="ishtar/blocks/JQueryCorporationPerson.js", + new=True, + ), + validators=[valid_id(models.Organization)], + ) class FileFormGeneralContractor(CustomForm, ManageOldType): @@ -251,62 +286,69 @@ class FileFormGeneralContractor(CustomForm, ManageOldType): form_admin_name = _("Archaeological file - 030 - General contractor") form_slug = "file-030-generalcontractor" - associated_models = {'general_contractor': models.Person, - 'corporation_general_contractor': models.Organization} + associated_models = { + "general_contractor": models.Person, + "corporation_general_contractor": models.Organization, + } corporation_general_contractor = forms.IntegerField( label=_("General contractor"), widget=widgets.JQueryAutoComplete( reverse_lazy( - 'autocomplete-organization', + "autocomplete-organization", args=[ - organization_type_pks_lazy(['general_contractor']), - ]), + organization_type_pks_lazy(["general_contractor"]), + ], + ), limit={ - 'organization_type': [ - organization_type_pk_lazy('general_contractor') - ] + "organization_type": [organization_type_pk_lazy("general_contractor")] }, tips=lazy(get_orga_general_contractor_label), associated_model=models.Organization, new=True, detail=True, - modify=True + modify=True, ), - validators=[valid_id(models.Organization)]) + validators=[valid_id(models.Organization)], + ) general_contractor = forms.IntegerField( label=_("In charge"), required=False, widget=widgets.JQueryAutoComplete( - reverse_lazy('autocomplete-person', - args=[ - person_type_pks_lazy(['general_contractor']) - ]), + reverse_lazy( + "autocomplete-person", + args=[person_type_pks_lazy(["general_contractor"])], + ), associated_model=Person, - limit={'person_types': [ - person_type_pk_lazy('general_contractor') - ]}, + limit={"person_types": [person_type_pk_lazy("general_contractor")]}, tips=lazy(get_general_contractor_label), detail=True, modify=True, - new=True), - validators=[valid_id(Person)] + new=True, + ), + validators=[valid_id(Person)], ) def clean(self): general_contractor = self.cleaned_data["general_contractor"] corporation_general_contractor = self.cleaned_data[ - "corporation_general_contractor"] + "corporation_general_contractor" + ] if general_contractor: try: person = models.Person.objects.get(pk=general_contractor) except models.Person.DoesNotExist: raise forms.ValidationError(_("Non existing person.")) - if not person.attached_to or \ - person.attached_to.pk != corporation_general_contractor: - raise forms.ValidationError(_( - "The organization of the person in charge differs from the " - "general contractor.")) + if ( + not person.attached_to + or person.attached_to.pk != corporation_general_contractor + ): + raise forms.ValidationError( + _( + "The organization of the person in charge differs from the " + "general contractor." + ) + ) return self.cleaned_data @@ -314,52 +356,56 @@ class FileFormPlanningService(CustomForm, IshtarForm): form_label = _("Planning service") form_admin_name = _("Archaeological file - 040 - Planning service") form_slug = "file-040-planningservice" - associated_models = {'responsible_town_planning_service': models.Person, - 'planning_service': models.Organization} + associated_models = { + "responsible_town_planning_service": models.Person, + "planning_service": models.Organization, + } planning_service = forms.IntegerField( label=_("Planning service"), required=False, widget=widgets.JQueryAutoComplete( reverse_lazy( - 'autocomplete-organization', - args=[organization_type_pks_lazy(['planning_service'])]), + "autocomplete-organization", + args=[organization_type_pks_lazy(["planning_service"])], + ), associated_model=models.Organization, limit={ - 'organization_type': - [organization_type_pk_lazy(['planning_service'])], + "organization_type": [organization_type_pk_lazy(["planning_service"])], }, tips=lazy(get_orga_planning_service_label), new=True, detail=True, modify=True, ), - validators=[valid_id(models.Organization)] + validators=[valid_id(models.Organization)], ) responsible_town_planning_service = forms.IntegerField( label=_("In charge"), required=False, widget=widgets.JQueryAutoComplete( - reverse_lazy('autocomplete-person', - args=[ - person_type_pks_lazy( - ['responsible_planning_service'])]), + reverse_lazy( + "autocomplete-person", + args=[person_type_pks_lazy(["responsible_planning_service"])], + ), associated_model=Person, - limit={'person_types': [ - person_type_pk_lazy('responsible_planning_service') - ]}, - dynamic_limit=['planning_service'], + limit={ + "person_types": [person_type_pk_lazy("responsible_planning_service")] + }, + dynamic_limit=["planning_service"], tips=lazy(get_responsible_planning_service_label), detail=True, modify=True, - new=True), - validators=[valid_id(Person)] + new=True, + ), + validators=[valid_id(Person)], + ) + permit_reference = forms.CharField( + label=_("File reference"), required=False, max_length=200 ) - permit_reference = forms.CharField(label=_("File reference"), - required=False, max_length=200) planning_service_date = forms.DateField( - label=_("Date of planning service file"), widget=DatePicker, - required=False) + label=_("Date of planning service file"), widget=DatePicker, required=False + ) def clean(self): responsible = self.cleaned_data["responsible_town_planning_service"] @@ -370,9 +416,12 @@ class FileFormPlanningService(CustomForm, IshtarForm): except models.Person.DoesNotExist: raise forms.ValidationError(_("Non existing person.")) if not person.attached_to or person.attached_to.pk != orga: - raise forms.ValidationError(_( - "The organization of the person in charge differs from the " - "planning service.")) + raise forms.ValidationError( + _( + "The organization of the person in charge differs from the " + "planning service." + ) + ) return self.cleaned_data @@ -380,83 +429,86 @@ class FileFormInstruction(CustomForm, IshtarForm): form_label = _("Instruction") form_admin_name = _("Archaeological file - 050 - Instruction") form_slug = "file-050-instruction" - associated_models = {'in_charge': models.Person, - 'related_file': models.File} + associated_models = {"in_charge": models.Person, "related_file": models.File} in_charge = forms.IntegerField( label=_("File managed by"), widget=widgets.JQueryAutoComplete( reverse_lazy( - 'autocomplete-person', - args=[person_type_pks_lazy(["sra_agent"])]), - limit={ - 'person_types': [ - person_type_pk_lazy('sra_agent')] - }, + "autocomplete-person", args=[person_type_pks_lazy(["sra_agent"])] + ), + limit={"person_types": [person_type_pk_lazy("sra_agent")]}, tips=lazy(get_sra_agent_label), - associated_model=Person, new=True, + associated_model=Person, + new=True, ), - validators=[valid_id(Person)]) + validators=[valid_id(Person)], + ) related_file = forms.IntegerField( - label=_("Related file"), required=False, - widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-file'), - associated_model=models.File), - validators=[valid_id(models.File)]) - comment = forms.CharField(label=_("Comment"), widget=forms.Textarea, - required=False) - instruction_deadline = forms.DateField(widget=DatePicker, - required=False) - year = forms.IntegerField(label=_("Year"), - validators=[validators.MinValueValidator(1000), - validators.MaxValueValidator(2100)]) - numeric_reference = forms.IntegerField(label=_("Numeric reference"), - required=False) + label=_("Related file"), + required=False, + widget=widgets.JQueryAutoComplete( + reverse_lazy("autocomplete-file"), associated_model=models.File + ), + validators=[valid_id(models.File)], + ) + comment = forms.CharField(label=_("Comment"), widget=forms.Textarea, required=False) + instruction_deadline = forms.DateField(widget=DatePicker, required=False) + year = forms.IntegerField( + label=_("Year"), + validators=[ + validators.MinValueValidator(1000), + validators.MaxValueValidator(2100), + ], + ) + numeric_reference = forms.IntegerField(label=_("Numeric reference"), required=False) numeric_reference_is_readonly = True end_date = forms.DateField(widget=DatePicker, required=False) def __init__(self, *args, **kwargs): c_year = datetime.date.today().year - if 'year' in kwargs: - c_year = kwargs.pop('year') + if "year" in kwargs: + c_year = kwargs.pop("year") saisine_type = None - if 'saisine_type' in kwargs: - saisine_type = kwargs.pop('saisine_type') + if "saisine_type" in kwargs: + saisine_type = kwargs.pop("saisine_type") reception_date = None - if 'reception_date' in kwargs: - reception_date = kwargs.pop('reception_date') - if 'data' in kwargs and kwargs['data']: - kwargs['data'][kwargs.get('prefix', '') + '-year'] = c_year + if "reception_date" in kwargs: + reception_date = kwargs.pop("reception_date") + if "data" in kwargs and kwargs["data"]: + kwargs["data"][kwargs.get("prefix", "") + "-year"] = c_year super(FileFormInstruction, self).__init__(*args, **kwargs) - self.fields['year'].initial = c_year + self.fields["year"].initial = c_year - self.fields['year'].widget.attrs.update({'readonly': 'readonly'}) + self.fields["year"].widget.attrs.update({"readonly": "readonly"}) c_num = 0 - q = models.File.objects.filter(numeric_reference__isnull=False, - year=c_year - ).order_by('-numeric_reference') + q = models.File.objects.filter( + numeric_reference__isnull=False, year=c_year + ).order_by("-numeric_reference") if q.count(): c_num = q.all()[0].numeric_reference - lbl = self.fields['numeric_reference'].label - self.fields['numeric_reference'].label = mark_safe(lbl) - self.fields['numeric_reference'].initial = c_num + 1 + lbl = self.fields["numeric_reference"].label + self.fields["numeric_reference"].label = mark_safe(lbl) + self.fields["numeric_reference"].initial = c_num + 1 if self.numeric_reference_is_readonly: - self.fields['numeric_reference'].widget.attrs['readonly'] = True + self.fields["numeric_reference"].widget.attrs["readonly"] = True if reception_date and saisine_type: if type(reception_date) == str: try: reception_date = datetime.datetime.strptime( - reception_date, '%d/%m/%Y') - self.fields['instruction_deadline'].initial = \ - (reception_date + datetime.timedelta( - days=saisine_type.delay or 0) - ).strftime('%Y-%m-%d') + reception_date, "%d/%m/%Y" + ) + self.fields["instruction_deadline"].initial = ( + reception_date + + datetime.timedelta(days=saisine_type.delay or 0) + ).strftime("%Y-%m-%d") except ValueError: pass def clean_numeric_reference(self): if self.numeric_reference_is_readonly: - return self.fields['numeric_reference'].initial - return self.cleaned_data['numeric_reference'] + return self.fields["numeric_reference"].initial + return self.cleaned_data["numeric_reference"] class FileFormInstructionEdit(FileFormInstruction): diff --git a/archaeological_files_pdl/urls.py b/archaeological_files_pdl/urls.py index 6acb6129d..186135b93 100644 --- a/archaeological_files_pdl/urls.py +++ b/archaeological_files_pdl/urls.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Copyright (C) 2014 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> @@ -22,14 +22,24 @@ from django.conf.urls import url from archaeological_files_pdl import views urlpatterns = [ - url(r'file_creation/(?P<step>.+)?$', - views.file_creation_wizard, name='file_creation'), - url(r'file_modification/(?P<step>.+)?$', - views.file_modification_wizard, name='file_modification'), - url(r'townplanning-edit/$', + url( + r"file_creation/(?P<step>.+)?$", + views.file_creation_wizard, + name="file_creation", + ), + url( + r"file_modification/(?P<step>.+)?$", + views.file_modification_wizard, + name="file_modification", + ), + url( + r"townplanning-edit/$", views.TownPlanningCreate.as_view(), - name='townplanning_create'), - url(r'townplanning-edit/(?P<pk>\d+)$', + name="townplanning_create", + ), + url( + r"townplanning-edit/(?P<pk>\d+)$", views.TownPlanningEdit.as_view(), - name='townplanning_edit'), + name="townplanning_edit", + ), ] diff --git a/archaeological_files_pdl/views.py b/archaeological_files_pdl/views.py index a7d0dee02..a0c5720d1 100644 --- a/archaeological_files_pdl/views.py +++ b/archaeological_files_pdl/views.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Copyright (C) 2015 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> @@ -22,8 +22,7 @@ from ishtar_common.utils import ugettext_lazy as _ from archaeological_files_pdl.wizards import FileWizard, FileModificationWizard from archaeological_operations.wizards import is_preventive, is_not_preventive -from ishtar_common.views import OrganizationPersonCreate, \ - OrganizationPersonEdit +from ishtar_common.views import OrganizationPersonCreate, OrganizationPersonEdit from archaeological_files_pdl import forms from archaeological_files import forms as ref_forms @@ -32,60 +31,67 @@ from archaeological_files import models file_creation_wizard_is_preventive = is_preventive( - 'general-file_creation', models.FileType, type_key='file_type') + "general-file_creation", models.FileType, type_key="file_type" +) file_creation_wizard_is_not_preventive = is_not_preventive( - 'general-file_creation', models.FileType, type_key='file_type') -file_creation_wizard = FileWizard.as_view([ - ('general-file_creation', forms.FileFormGeneral), - ('preventivetype-file_creation', forms.FileFormPreventiveType), - ('preventiveplanning-file_creation', forms.FileFormPlanning), - ('researchaddress-file_creation', forms.FileFormResearchAddress), - ('parcelspdl-file_creation', ref_forms.ParcelFormset), - ('generalcontractor-file_creation', forms.FileFormGeneralContractor), - ('planningservice-file_creation', forms.FileFormPlanningService), - ('research-file_creation', ref_forms.FileFormResearch), - ('instruction-file_creation', forms.FileFormInstruction), - ('final-file_creation', ref_forms.FinalForm)], + "general-file_creation", models.FileType, type_key="file_type" +) +file_creation_wizard = FileWizard.as_view( + [ + ("general-file_creation", forms.FileFormGeneral), + ("preventivetype-file_creation", forms.FileFormPreventiveType), + ("preventiveplanning-file_creation", forms.FileFormPlanning), + ("researchaddress-file_creation", forms.FileFormResearchAddress), + ("parcelspdl-file_creation", ref_forms.ParcelFormset), + ("generalcontractor-file_creation", forms.FileFormGeneralContractor), + ("planningservice-file_creation", forms.FileFormPlanningService), + ("research-file_creation", ref_forms.FileFormResearch), + ("instruction-file_creation", forms.FileFormInstruction), + ("final-file_creation", ref_forms.FinalForm), + ], label=_("New file"), condition_dict={ - 'preventivetype-file_creation': file_creation_wizard_is_preventive, - 'preventiveplanning-file_creation': file_creation_wizard_is_preventive, - 'generalcontractor-file_creation': file_creation_wizard_is_preventive, - 'planningservice-file_creation': file_creation_wizard_is_preventive, - 'researchaddress-file_creation': - file_creation_wizard_is_not_preventive, - 'research-file_creation': file_creation_wizard_is_not_preventive}, - url_name='file_creation',) + "preventivetype-file_creation": file_creation_wizard_is_preventive, + "preventiveplanning-file_creation": file_creation_wizard_is_preventive, + "generalcontractor-file_creation": file_creation_wizard_is_preventive, + "planningservice-file_creation": file_creation_wizard_is_preventive, + "researchaddress-file_creation": file_creation_wizard_is_not_preventive, + "research-file_creation": file_creation_wizard_is_not_preventive, + }, + url_name="file_creation", +) file_modification_wizard_is_preventive = is_preventive( - 'general-file_modification', models.FileType, type_key='file_type') + "general-file_modification", models.FileType, type_key="file_type" +) file_modification_wizard_is_not_preventive = is_not_preventive( - 'general-file_modification', models.FileType, type_key='file_type') -file_modification_wizard = FileModificationWizard.as_view([ - ('selec-file_modification', ref_forms.FileFormSelection), - ('general-file_modification', forms.FileFormGeneral), - ('preventivetype-file_modification', forms.FileFormPreventiveType), - ('preventiveplanning-file_modification', forms.FileFormPlanning), - ('researchaddress-file_modification', forms.FileFormResearchAddress), - ('parcelspdl-file_modification', ref_forms.ParcelFormset), - ('generalcontractor-file_modification', forms.FileFormGeneralContractor), - ('planningservice-file_modification', forms.FileFormPlanningService), - ('research-file_modification', ref_forms.FileFormResearch), - ('instruction-file_modification', forms.FileFormInstructionEdit), - ('final-file_modification', ref_forms.FinalForm)], + "general-file_modification", models.FileType, type_key="file_type" +) +file_modification_wizard = FileModificationWizard.as_view( + [ + ("selec-file_modification", ref_forms.FileFormSelection), + ("general-file_modification", forms.FileFormGeneral), + ("preventivetype-file_modification", forms.FileFormPreventiveType), + ("preventiveplanning-file_modification", forms.FileFormPlanning), + ("researchaddress-file_modification", forms.FileFormResearchAddress), + ("parcelspdl-file_modification", ref_forms.ParcelFormset), + ("generalcontractor-file_modification", forms.FileFormGeneralContractor), + ("planningservice-file_modification", forms.FileFormPlanningService), + ("research-file_modification", ref_forms.FileFormResearch), + ("instruction-file_modification", forms.FileFormInstructionEdit), + ("final-file_modification", ref_forms.FinalForm), + ], label=_("File modification"), condition_dict={ - 'preventivetype-file_modification': file_modification_wizard_is_preventive, - 'preventiveplanning-file_modification': - file_modification_wizard_is_preventive, - 'generalcontractor-file_modification': - file_modification_wizard_is_preventive, - 'planningservice-file_modification': - file_modification_wizard_is_preventive, - 'researchaddress-file_modification': - file_modification_wizard_is_not_preventive, - 'research-file_modification': file_modification_wizard_is_not_preventive}, - url_name='file_modification',) + "preventivetype-file_modification": file_modification_wizard_is_preventive, + "preventiveplanning-file_modification": file_modification_wizard_is_preventive, + "generalcontractor-file_modification": file_modification_wizard_is_preventive, + "planningservice-file_modification": file_modification_wizard_is_preventive, + "researchaddress-file_modification": file_modification_wizard_is_not_preventive, + "research-file_modification": file_modification_wizard_is_not_preventive, + }, + url_name="file_modification", +) class TownPlanningEdit(OrganizationPersonEdit): diff --git a/archaeological_files_pdl/wizards.py b/archaeological_files_pdl/wizards.py index 988303937..211ea84f8 100644 --- a/archaeological_files_pdl/wizards.py +++ b/archaeological_files_pdl/wizards.py @@ -26,45 +26,44 @@ from ishtar_common.utils import ugettext_lazy as _ class FileWizard(BaseFileWizard): - parcel_step_key = 'parcelspdl-' - town_step_keys = ['preventiveplanning-', 'researchaddress-'] - town_input_id = 'town' + parcel_step_key = "parcelspdl-" + town_step_keys = ["preventiveplanning-", "researchaddress-"] + town_input_id = "town" towns_formset = False multi_towns = True wizard_templates = { #'generalcontractor-%(url_name)s': # 'ishtar/wizard/wizard_generalcontractor.html', - 'planningservice-%(url_name)s': - 'ishtar/wizard/wizard_planningservice.html', - 'instruction-%(url_name)s': - 'ishtar/wizard/wizard_instruction.html', - 'preventiveplanning-%(url_name)s': - 'ishtar/wizard/wizard_preventiveplanning.html', + "planningservice-%(url_name)s": "ishtar/wizard/wizard_planningservice.html", + "instruction-%(url_name)s": "ishtar/wizard/wizard_instruction.html", + "preventiveplanning-%(url_name)s": "ishtar/wizard/wizard_preventiveplanning.html", } - wizard_confirm = 'ishtar/wizard/file_confirm_wizard.html' + wizard_confirm = "ishtar/wizard/file_confirm_wizard.html" def get_current_year(self): - general_form_key = 'general-' + self.url_name - return self.session_get_value(general_form_key, 'year') + general_form_key = "general-" + self.url_name + return self.session_get_value(general_form_key, "year") def get_form_kwargs(self, *args, **kwargs): returned = super(FileWizard, self).get_form_kwargs(*args, **kwargs) - if args and args[0].startswith('generalcontractor-'): - if 'status' in self.request.GET: - returned['status'] = self.request.GET['status'] - if args and args[0].startswith('instruction-'): - returned['year'] = self.get_current_year() - returned['saisine_type'] = self.get_saisine_type() - returned['reception_date'] = \ - self.session_get_value( - 'general-' + self.url_name, 'reception_date') + if args and args[0].startswith("generalcontractor-"): + if "status" in self.request.GET: + returned["status"] = self.request.GET["status"] + if args and args[0].startswith("instruction-"): + returned["year"] = self.get_current_year() + returned["saisine_type"] = self.get_saisine_type() + returned["reception_date"] = self.session_get_value( + "general-" + self.url_name, "reception_date" + ) return returned def get_saisine_type(self): try: idx = int( self.session_get_value( - 'preventivetype-' + self.url_name, 'saisine_type')) + "preventivetype-" + self.url_name, "saisine_type" + ) + ) return models.SaisineType.objects.get(pk=idx) except (TypeError, ValueError, models.PermitType.DoesNotExist): pass @@ -78,53 +77,63 @@ class FileWizard(BaseFileWizard): try: idx = int( self.session_get_value( - 'preventivetype-' + self.url_name, 'permit_type')) + "preventivetype-" + self.url_name, "permit_type" + ) + ) permit_type = models.PermitType.objects.get(pk=idx) - context['permit_type'] = str(permit_type) - context['permit_type_code'] = str(permit_type.txt_idx) + context["permit_type"] = str(permit_type) + context["permit_type_code"] = str(permit_type.txt_idx) except (TypeError, ValueError, models.PermitType.DoesNotExist): pass elif self.steps.current == forminstruction: saisine_type = self.get_saisine_type() - context['FILE_PREFIX'] = settings.ISHTAR_FILE_PREFIX + context["FILE_PREFIX"] = settings.ISHTAR_FILE_PREFIX if saisine_type: - context['saisine_type'] = str(saisine_type) - context['saisine_type_message'] = str(saisine_type) + context["saisine_type"] = str(saisine_type) + context["saisine_type_message"] = str(saisine_type) if saisine_type.delay: - context['saisine_type_message'] += str(_( - ": delay of {} days")).format(saisine_type.delay) + context["saisine_type_message"] += str( + _(": delay of {} days") + ).format(saisine_type.delay) elif self.steps.current == formfinal: - if self.steps.current.endswith('creation'): # creation only + if self.steps.current.endswith("creation"): # creation only parcels = [] parcel_step_key = self.parcel_step_key + self.url_name - parcel_numbers = self.session_get_value( - parcel_step_key, 'parcel_number', multi=True) or [] - sections = self.session_get_value( - parcel_step_key, 'section', multi=True) or [] - towns = self.session_get_value( - parcel_step_key, 'town', multi=True) or [] + parcel_numbers = ( + self.session_get_value(parcel_step_key, "parcel_number", multi=True) + or [] + ) + sections = ( + self.session_get_value(parcel_step_key, "section", multi=True) or [] + ) + towns = ( + self.session_get_value(parcel_step_key, "town", multi=True) or [] + ) for idx, parcel_number in enumerate(parcel_numbers): - if not parcel_number or len(sections) <= idx \ - or len(towns) <= idx: + if not parcel_number or len(sections) <= idx or len(towns) <= idx: continue - parcels.append({ - 'town': towns[idx], - 'section': sections[idx], - 'parcel_number': parcel_number}) - context['similar_files'] = models.File.similar_files(parcels) + parcels.append( + { + "town": towns[idx], + "section": sections[idx], + "parcel_number": parcel_number, + } + ) + context["similar_files"] = models.File.similar_files(parcels) else: # edition only try: numeric_reference = int( self.session_get_value( - 'instruction-' + self.url_name, - 'numeric_reference')) + "instruction-" + self.url_name, "numeric_reference" + ) + ) q = models.File.objects.filter( numeric_reference=numeric_reference, - year=self.get_current_year()).exclude( - pk=self.get_current_object().pk) - context['numeric_reference_files'] = q.all() + year=self.get_current_year(), + ).exclude(pk=self.get_current_object().pk) + context["numeric_reference_files"] = q.all() except ValueError: pass |