summaryrefslogtreecommitdiff
path: root/archaeological_files_pdl
diff options
context:
space:
mode:
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
commit9d662a73d94264e2129195018d230481e1e2272f (patch)
tree30cb8af3b825e1bbdda4e360e0f17659b64dc7e7 /archaeological_files_pdl
parentfd397e0752cac5328074db7aff20b6e840537fd3 (diff)
downloadIshtar-9d662a73d94264e2129195018d230481e1e2272f.tar.bz2
Ishtar-9d662a73d94264e2129195018d230481e1e2272f.zip
Format - black: files_pdl
Diffstat (limited to 'archaeological_files_pdl')
-rw-r--r--archaeological_files_pdl/forms.py442
-rw-r--r--archaeological_files_pdl/urls.py28
-rw-r--r--archaeological_files_pdl/views.py104
-rw-r--r--archaeological_files_pdl/wizards.py107
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