diff options
author | Étienne Loks <etienne.loks@proxience.com> | 2015-09-30 20:19:41 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@proxience.com> | 2015-09-30 20:19:41 +0200 |
commit | 63cd3cb094c17d09cf99cf1bf9fa7c28c6dd9d59 (patch) | |
tree | 36d69381b619bd72bfd3a0f575c9e47dac8550a2 | |
parent | 2e148adc5ee132424d670ae94445f79994ef605b (diff) | |
download | Ishtar-63cd3cb094c17d09cf99cf1bf9fa7c28c6dd9d59.tar.bz2 Ishtar-63cd3cb094c17d09cf99cf1bf9fa7c28c6dd9d59.zip |
Flake8
-rw-r--r-- | archaeological_operations/data_importer.py | 86 | ||||
-rw-r--r-- | archaeological_operations/ishtar_menu.py | 141 | ||||
-rw-r--r-- | archaeological_operations/urls.py | 183 | ||||
-rw-r--r-- | archaeological_operations/utils.py | 186 | ||||
-rw-r--r-- | archaeological_operations/views.py | 277 | ||||
-rw-r--r-- | archaeological_operations/widgets.py | 9 | ||||
-rw-r--r-- | archaeological_operations/wizards.py | 6 |
7 files changed, 489 insertions, 399 deletions
diff --git a/archaeological_operations/data_importer.py b/archaeological_operations/data_importer.py index 252fdcca0..9cbdca05c 100644 --- a/archaeological_operations/data_importer.py +++ b/archaeological_operations/data_importer.py @@ -17,15 +17,14 @@ # See the file COPYING for details. -import copy, datetime, re +import re from django.db import IntegrityError from django.template.defaultfilters import slugify -from django.utils.translation import ugettext_lazy as _ from ishtar_common.data_importer import * from ishtar_common.models import Town, OrganizationType, SourceType, \ - SupportType, Format, AuthorType + SupportType, Format, AuthorType from archaeological_operations import models from archaeological_operations.forms import OPERATOR @@ -33,13 +32,14 @@ from archaeological_operations.utils import parse_parcels RE_PERMIT_REFERENCE = re.compile('[A-Za-z]*(.*)') + class ImportParcelFormater(ImportFormater): - NEED = ['town',] + NEED = ['town', ] PARCEL_OWNER_KEY = 'associated_file' def post_process(self, obj, context, value, owner=None): value = value.strip() - base_dct = {self.PARCEL_OWNER_KEY:obj, 'history_modifier':owner} + base_dct = {self.PARCEL_OWNER_KEY: obj, 'history_modifier': owner} if 'parcels' in context: for key in context['parcels']: if context['parcels'][key]: @@ -49,8 +49,9 @@ class ImportParcelFormater(ImportFormater): try: models.Parcel.objects.get_or_create(**parcel_dct) except IntegrityError: - raise ImporterError("Erreur d'import parcelle, contexte : %s" \ - % unicode(parcel_dct)) + raise ImporterError("Erreur d'import parcelle, contexte : %s" + % unicode(parcel_dct)) + class ImportYearFormater(ImportFormater): def post_process(self, obj, context, value, owner=None): @@ -60,6 +61,7 @@ class ImportYearFormater(ImportFormater): obj.year = value.year obj.save() + class TownFormater(Formater): def __init__(self, town_full_dct={}, town_dct={}): self._town_full_dct = town_full_dct @@ -70,13 +72,13 @@ class TownFormater(Formater): for town in Town.objects.all(): key = (slugify(town.name.strip()), town.numero_insee[:2]) if key in self._town_full_dct: - print("Danger! %s is ambiguous with another town on the same "\ - "department."% town.name) + print("Danger! %s is ambiguous with another town on the same " + "department." % town.name) continue self._town_full_dct[key] = town key = slugify(town.name.strip()) if key in self._town_dct: - print("Warning %s is ambiguous with no department provided" %\ + print("Warning %s is ambiguous with no department provided" % town.name) continue self._town_dct[key] = town @@ -98,6 +100,7 @@ class TownFormater(Formater): if key in self._town_dct: return self._town_dct[key] + class TownINSEEFormater(Formater): def __init__(self): self._town_dct = {} @@ -114,6 +117,7 @@ class TownINSEEFormater(Formater): self._town_dct[value] = q.all()[0] return self._town_dct[value] + class SurfaceFormater(Formater): def test(self): assert self.format(u"352 123") == 352123 @@ -133,14 +137,13 @@ class SurfaceFormater(Formater): try: return int(value.replace(' ', '')) * factor except ValueError: - raise ImporterError("Erreur import surface : %s" \ - % unicode(value)) + raise ImporterError("Erreur import surface : %s" % unicode(value)) -#RE_ADD_CD_POSTAL_TOWN = re.compile("(.*)[, ](\d{5}) (.*?) *(?: "\ -# "*CEDEX|cedex|Cedex *\d*)*") +# RE_ADD_CD_POSTAL_TOWN = re.compile("(.*)[, ](\d{5}) (.*?) *(?: "\ +# "*CEDEX|cedex|Cedex *\d*)*") -RE_NAME_ADD_CD_POSTAL_TOWN = re.compile("(.+)?[, ]*" + NEW_LINE_BREAK \ - + "(.+)?[, ]*(\d{2} *\d{3})[, ]*(.+)") +RE_NAME_ADD_CD_POSTAL_TOWN = re.compile( + "(.+)?[, ]*" + NEW_LINE_BREAK + "(.+)?[, ]*(\d{2} *\d{3})[, ]*(.+)") RE_ADD_CD_POSTAL_TOWN = re.compile("(.+)?[, ]*(\d{2} *\d{3})[, ]*(.+)") @@ -148,14 +151,15 @@ RE_CD_POSTAL_FILTER = re.compile("(\d*) (\d*)") RE_ORGA = re.compile("([^,]*)") + class OperationImporterBibracte(Importer): OBJECT_CLS = models.Operation DESC = u"Exports Bibracte : importeur pour l'onglet opération" DEFAULTS = { - ('operator',):{ - 'organization_type':OPERATOR - }, - } + ('operator',): { + 'organization_type': OPERATOR + }, + } LINE_FORMAT = [ # CODE OPE ImportFormater('operation_code', IntegerFormater(),), @@ -165,9 +169,9 @@ class OperationImporterBibracte(Importer): ImportFormater('operation_type', TypeFormater(models.OperationType),), # NOM ImportFormater('common_name', UnicodeFormater(120),), - # OPERATEUR + # OPERATEUR ImportFormater('operator__name', UnicodeFormater(120),), - # resp. lien IMPORT avec personne + # resp. lien IMPORT avec personne ImportFormater('in_charge__raw_name', UnicodeFormater(300),), # début ImportFormater('start_date', DateFormater(['%Y/%m/%d']),), @@ -181,23 +185,25 @@ class OperationImporterBibracte(Importer): RE_PARCEL_SECT_NUM = re.compile("([A-Za-z]*)([0-9]*)") RE_NUM_INSEE = re.compile("([0-9]*)") + class ParcelImporterBibracte(Importer): OBJECT_CLS = models.Parcel DESC = u"Exports Bibracte : importeur pour l'onglet parcelles" DEFAULTS = { - ('operator',):{ - 'organization_type':OrganizationType.objects.get( - txt_idx="operator")}, - } + ('operator',): { + 'organization_type': OrganizationType.objects.get( + txt_idx="operator")}, + } LINE_FORMAT = [ # code OA ImportFormater('operation__operation_code', IntegerFormater(),), # identifiant parcelle - ImportFormater(['section', 'parcel_number'], - [UnicodeFormater(4), UnicodeFormater(6),], - regexp=RE_PARCEL_SECT_NUM, - regexp_formater_args=[[0], [1]], required=False, - duplicate_fields=['external_id'],), + ImportFormater( + ['section', 'parcel_number'], + [UnicodeFormater(4), UnicodeFormater(6), ], + regexp=RE_PARCEL_SECT_NUM, + regexp_formater_args=[[0], [1]], required=False, + duplicate_fields=['external_id'],), # numero parcelle ImportFormater('parcel_number', UnicodeFormater(6), required=False,), @@ -211,7 +217,7 @@ class ParcelImporterBibracte(Importer): # numero INSEE commune ImportFormater('town__numero_insee', UnicodeFormater(6), regexp=RE_NUM_INSEE, required=False,), - # nom departement + # nom departement None, # lieu dit adresse ImportFormater('address', UnicodeFormater(500), @@ -224,8 +230,7 @@ MAIN_AUTHOR, created = AuthorType.objects.get_or_create(txt_idx='main_author') class DocImporterBibracte(Importer): OBJECT_CLS = models.OperationSource DEFAULTS = { - ('authors',):{ - 'author_type':MAIN_AUTHOR}, + ('authors',): {'author_type': MAIN_AUTHOR}, } DESC = u"Exports Bibracte : importeur pour l'onglet documentation" LINE_FORMAT = [ @@ -233,17 +238,20 @@ class DocImporterBibracte(Importer): ImportFormater('operation__operation_code', IntegerFormater(),), # identifiant documentation ImportFormater('external_id', UnicodeFormater(12),), - # type - ImportFormater('source_type', TypeFormater(SourceType), required=False), + # type + ImportFormater('source_type', TypeFormater(SourceType), + required=False), # nature support - ImportFormater('support_type', TypeFormater(SupportType), required=False), + ImportFormater('support_type', TypeFormater(SupportType), + required=False), # nombre element ImportFormater('item_number', IntegerFormater(), required=False), # auteur - ImportFormater('authors__person__raw_name', UnicodeFormater(300), required=False), + ImportFormater('authors__person__raw_name', UnicodeFormater(300), + required=False), # annee ImportFormater('creation_date', DateFormater(['%Y']),), - # format + # format ImportFormater('format_type', TypeFormater(Format), required=False), # description legende ImportFormater('description', UnicodeFormater(1000), required=False), diff --git a/archaeological_operations/ishtar_menu.py b/archaeological_operations/ishtar_menu.py index 249c86185..8c9fbbbc3 100644 --- a/archaeological_operations/ishtar_menu.py +++ b/archaeological_operations/ishtar_menu.py @@ -27,28 +27,35 @@ import models FILES_AVAILABLE = 'archaeological_files' in settings.INSTALLED_APPS MENU_SECTIONS = [ - (30, SectionItem('operation_management', _(u"Operation"), + (30, SectionItem( + 'operation_management', _(u"Operation"), childs=[ - MenuItem('operation_search', _(u"Search"), + MenuItem( + 'operation_search', _(u"Search"), model=models.Operation, access_controls=['view_operation', 'view_own_operation']), - MenuItem('operation_creation', _(u"Creation"), + MenuItem( + 'operation_creation', _(u"Creation"), model=models.Operation, access_controls=['add_operation', 'add_own_operation']), - MenuItem('operation_modification', _(u"Modification"), - model=models.Operation, - access_controls=['change_operation', - 'change_own_operation']), - MenuItem('operation_closing', _(u"Closing"), - model=models.Operation, - access_controls=['close_operation']), - MenuItem('operation_deletion', _(u"Deletion"), - model=models.Operation, - access_controls=['change_operation', - 'change_own_operation']), - SectionItem('operation_source', _(u"Documentation"), + MenuItem( + 'operation_modification', _(u"Modification"), + model=models.Operation, + access_controls=['change_operation', + 'change_own_operation']), + MenuItem( + 'operation_closing', _(u"Closing"), + model=models.Operation, + access_controls=['close_operation']), + MenuItem( + 'operation_deletion', _(u"Deletion"), + model=models.Operation, + access_controls=['change_operation', + 'change_own_operation']), + SectionItem( + 'operation_source', _(u"Documentation"), childs=[ MenuItem('operation_source_search', _(u"Search"), @@ -72,58 +79,74 @@ MENU_SECTIONS = [ 'change_own_operation']), ]) ]), - ), - (102, SectionItem('dashboard', _(u"Dashboard"), - childs=[ - MenuItem('dashboard_main', _(u"General informations"), + ), + ( + 102, SectionItem( + 'dashboard', _(u"Dashboard"), + childs=[ + MenuItem( + 'dashboard_main', _(u"General informations"), model=models.Operation, access_controls=['change_operation']), - MenuItem('dashboard_operation', _(u"Operations"), + MenuItem( + 'dashboard_operation', _(u"Operations"), model=models.Operation, access_controls=['change_operation']), - ]), + ]), ), ] if FILES_AVAILABLE: - MENU_SECTIONS.insert(1, - (35, SectionItem('administrativact_management', _(u"Administrative Act"), - childs=[ - MenuItem('administrativact_register', - pgettext_lazy('admin act register',u"Register"), - model=models.AdministrativeAct, - access_controls=['view_administrativeact', - 'view_own_administrativeact']), - ]) - ) + MENU_SECTIONS.insert( + 1, + ( + 35, SectionItem( + 'administrativact_management', _(u"Administrative Act"), + childs=[ + MenuItem( + 'administrativact_register', + pgettext_lazy('admin act register', u"Register"), + model=models.AdministrativeAct, + access_controls=['view_administrativeact', + 'view_own_administrativeact']), + ]) + ) ) - MENU_SECTIONS[0][1].childs.insert(5, - SectionItem('admin_act_operations', - _(u"Administrative act"), + MENU_SECTIONS[0][1].childs.insert( + 5, + SectionItem( + 'admin_act_operations', + _(u"Administrative act"), childs=[ - MenuItem('operation_administrativeactop_search', - _(u"Search"), - model=models.Operation, - access_controls=['change_operation', - 'change_own_operation']), - MenuItem('operation_administrativeactop', - _(u"Add"), - model=models.Operation, - access_controls=['change_operation', - 'change_own_operation']), - MenuItem('operation_administrativeactop_modification', - _(u"Modification"), - model=models.AdministrativeAct, - access_controls=['change_operation', - 'change_own_operation']), - MenuItem('operation_administrativeactop_deletion', - _(u"Deletion"), - model=models.AdministrativeAct, - access_controls=['operation_deletion', - 'delete_own_operation']), - MenuItem('operation_administrativeact_document', - _(u"Documents"), - model=models.AdministrativeAct, - access_controls=['change_operation', 'change_own_operation']), - ],) + MenuItem( + 'operation_administrativeactop_search', + _(u"Search"), + model=models.Operation, + access_controls=[ + 'change_operation', 'change_own_operation']), + MenuItem( + 'operation_administrativeactop', + _(u"Add"), + model=models.Operation, + access_controls=['change_operation', + 'change_own_operation']), + MenuItem( + 'operation_administrativeactop_modification', + _(u"Modification"), + model=models.AdministrativeAct, + access_controls=['change_operation', + 'change_own_operation']), + MenuItem( + 'operation_administrativeactop_deletion', + _(u"Deletion"), + model=models.AdministrativeAct, + access_controls=[ + 'operation_deletion', 'delete_own_operation']), + MenuItem( + 'operation_administrativeact_document', + _(u"Documents"), + model=models.AdministrativeAct, + access_controls=['change_operation', + 'change_own_operation']), + ],) ) diff --git a/archaeological_operations/urls.py b/archaeological_operations/urls.py index f448fd6a7..e0909af8b 100644 --- a/archaeological_operations/urls.py +++ b/archaeological_operations/urls.py @@ -22,96 +22,99 @@ from django.conf.urls.defaults import * import views # forms -urlpatterns = patterns('', - url(r'operation_administrativeactop_search/(?P<step>.+)?$', - views.operation_administrativeactop_search_wizard, - name='operation_administrativeactop_search'), - url(r'operation_administrativeactop/(?P<step>.+)?$', - views.operation_administrativeactop_wizard, - name='operation_administrativeactop'), - url(r'operation_administrativeactop_modification/(?P<step>.+)?$', - views.operation_administrativeactop_modification_wizard, - name='operation_administrativeactop_modification'), - url(r'operation_administrativeactop_deletion/(?P<step>.+)?$', - views.operation_administrativeactop_deletion_wizard, - name='operation_administrativeactop_deletion'), - url(r'operation_source_search/(?P<step>.+)?$', - views.operation_source_search_wizard, - name='operation_source_search'), - url(r'operation_source_creation/(?P<step>.+)?$', - views.operation_source_creation_wizard, - name='operation_source_creation'), - url(r'operation_source_modification/(?P<step>.+)?$', - views.operation_source_modification_wizard, - name='operation_source_modification'), - url(r'operation_source_deletion/(?P<step>.+)?$', - views.operation_source_deletion_wizard, - name='operation_source_deletion'), - url(r'operation_search/(?P<step>.+)?$', - views.operation_search_wizard, name='operation_search'), - url(r'operation_creation/(?P<step>.+)?$', - views.operation_creation_wizard, name='operation_creation'), - url(r'operation_add/(?P<file_id>\d+)$', - views.operation_add, name='operation_add'), - url(r'operation_modification/(?P<step>.+)?$', - views.operation_modification_wizard, - name='operation_modification'), - url(r'operation_modify/(?P<pk>.+)/$', - views.operation_modify, name='operation_modify'), - url(r'operation_closing/(?P<step>.+)?$', - views.operation_closing_wizard, name='operation_closing'), - url(r'operation_deletion/(?P<step>.+)?$', - views.operation_deletion_wizard, name='operation_deletion'), - url(r'administrativact_register/(?P<step>.+)?$', - views.administrativact_register_wizard, - name='administrativact_register'), +urlpatterns = patterns( + '', + url(r'operation_administrativeactop_search/(?P<step>.+)?$', + views.operation_administrativeactop_search_wizard, + name='operation_administrativeactop_search'), + url(r'operation_administrativeactop/(?P<step>.+)?$', + views.operation_administrativeactop_wizard, + name='operation_administrativeactop'), + url(r'operation_administrativeactop_modification/(?P<step>.+)?$', + views.operation_administrativeactop_modification_wizard, + name='operation_administrativeactop_modification'), + url(r'operation_administrativeactop_deletion/(?P<step>.+)?$', + views.operation_administrativeactop_deletion_wizard, + name='operation_administrativeactop_deletion'), + url(r'operation_source_search/(?P<step>.+)?$', + views.operation_source_search_wizard, + name='operation_source_search'), + url(r'operation_source_creation/(?P<step>.+)?$', + views.operation_source_creation_wizard, + name='operation_source_creation'), + url(r'operation_source_modification/(?P<step>.+)?$', + views.operation_source_modification_wizard, + name='operation_source_modification'), + url(r'operation_source_deletion/(?P<step>.+)?$', + views.operation_source_deletion_wizard, + name='operation_source_deletion'), + url(r'operation_search/(?P<step>.+)?$', + views.operation_search_wizard, name='operation_search'), + url(r'operation_creation/(?P<step>.+)?$', + views.operation_creation_wizard, name='operation_creation'), + url(r'operation_add/(?P<file_id>\d+)$', + views.operation_add, name='operation_add'), + url(r'operation_modification/(?P<step>.+)?$', + views.operation_modification_wizard, + name='operation_modification'), + url(r'operation_modify/(?P<pk>.+)/$', + views.operation_modify, name='operation_modify'), + url(r'operation_closing/(?P<step>.+)?$', + views.operation_closing_wizard, name='operation_closing'), + url(r'operation_deletion/(?P<step>.+)?$', + views.operation_deletion_wizard, name='operation_deletion'), + url(r'administrativact_register/(?P<step>.+)?$', + views.administrativact_register_wizard, + name='administrativact_register'), ) -urlpatterns += patterns('archaeological_operations.views', - url(r'autocomplete-operation/$', 'autocomplete_operation', - name='autocomplete-operation'), - url(r'get-operation/(?P<type>.+)?$', 'get_operation', - name='get-operation'), - url(r'get-operation-full/(?P<type>.+)?$', 'get_operation', - name='get-operation-full', kwargs={'full':True}), - url(r'get-available-operation-code/(?P<year>.+)?$', - 'get_available_operation_code', name='get_available_operation_code'), - url(r'revert-operation/(?P<pk>.+)/(?P<date>.+)$', - 'revert_operation', name='revert-operation'), - url(r'show-operation(?:/(?P<pk>.+))?/(?P<type>.+)?$', - 'show_operation', name='show-operation'), - url(r'show-historized-operation/(?P<pk>.+)?/(?P<date>.+)?$', - 'show_operation', name='show-historized-operation'), - url(r'get-administrativeactop/(?P<type>.+)?$', - 'get_administrativeactop', name='get-administrativeactop'), - url(r'get-administrativeact/(?P<type>.+)?$', - 'get_administrativeact', name='get-administrativeact'), - url(r'get-administrativeact-full/(?P<type>.+)?$', - 'get_administrativeact', name='get-administrativeact-full', - kwargs={'full':True}), - url(r'show-administrativeact(?:/(?P<pk>.+))?/(?P<type>.+)?$', - 'show_administrativeact', name='show-administrativeact'), - # allow specialization for operations - url(r'show-administrativeact(?:/(?P<pk>.+))?/(?P<type>.+)?$', - 'show_administrativeact', name='show-administrativeactop'), - # allow specialization for files - url(r'show-administrativeact(?:/(?P<pk>.+))?/(?P<type>.+)?$', - 'show_administrativeact', name='show-administrativeactfile'), - url(r'generatedoc-administrativeactop/(?P<pk>.+)?/(?P<template_pk>.+)?$', - 'generatedoc_administrativeactop', - name='generatedoc-administrativeactop'), - url(r'get-operationsource/(?P<type>.+)?$', - 'get_operationsource', name='get-operationsource'), - url(r'dashboard_operation/$', 'dashboard_operation', - name='dashboard-operation'), - url(r'autocomplete-archaeologicalsite/$', - 'autocomplete_archaeologicalsite', - name='autocomplete-archaeologicalsite'), - url(r'new-archaeologicalsite/(?:(?P<parent_name>[^/]+)/)?(?:(?P<limits>[^/]+)/)?$', - 'new_archaeologicalsite', name='new-archaeologicalsite'), - url(r'autocomplete-patriarche/$', 'autocomplete_patriarche', - name='autocomplete-patriarche'), - url(r'operation_administrativeact_document/$', - 'administrativeactfile_document', - name='operation-administrativeact-document'), +urlpatterns += patterns( + 'archaeological_operations.views', + url(r'autocomplete-operation/$', 'autocomplete_operation', + name='autocomplete-operation'), + url(r'get-operation/(?P<type>.+)?$', 'get_operation', + name='get-operation'), + url(r'get-operation-full/(?P<type>.+)?$', 'get_operation', + name='get-operation-full', kwargs={'full': True}), + url(r'get-available-operation-code/(?P<year>.+)?$', + 'get_available_operation_code', name='get_available_operation_code'), + url(r'revert-operation/(?P<pk>.+)/(?P<date>.+)$', + 'revert_operation', name='revert-operation'), + url(r'show-operation(?:/(?P<pk>.+))?/(?P<type>.+)?$', + 'show_operation', name='show-operation'), + url(r'show-historized-operation/(?P<pk>.+)?/(?P<date>.+)?$', + 'show_operation', name='show-historized-operation'), + url(r'get-administrativeactop/(?P<type>.+)?$', + 'get_administrativeactop', name='get-administrativeactop'), + url(r'get-administrativeact/(?P<type>.+)?$', + 'get_administrativeact', name='get-administrativeact'), + url(r'get-administrativeact-full/(?P<type>.+)?$', + 'get_administrativeact', name='get-administrativeact-full', + kwargs={'full': True}), + url(r'show-administrativeact(?:/(?P<pk>.+))?/(?P<type>.+)?$', + 'show_administrativeact', name='show-administrativeact'), + # allow specialization for operations + url(r'show-administrativeact(?:/(?P<pk>.+))?/(?P<type>.+)?$', + 'show_administrativeact', name='show-administrativeactop'), + # allow specialization for files + url(r'show-administrativeact(?:/(?P<pk>.+))?/(?P<type>.+)?$', + 'show_administrativeact', name='show-administrativeactfile'), + url(r'generatedoc-administrativeactop/(?P<pk>.+)?/(?P<template_pk>.+)?$', + 'generatedoc_administrativeactop', + name='generatedoc-administrativeactop'), + url(r'get-operationsource/(?P<type>.+)?$', + 'get_operationsource', name='get-operationsource'), + url(r'dashboard_operation/$', 'dashboard_operation', + name='dashboard-operation'), + url(r'autocomplete-archaeologicalsite/$', + 'autocomplete_archaeologicalsite', + name='autocomplete-archaeologicalsite'), + url(r'new-archaeologicalsite/(?:(?P<parent_name>[^/]+)/)?' + r'(?:(?P<limits>[^/]+)/)?$', + 'new_archaeologicalsite', name='new-archaeologicalsite'), + url(r'autocomplete-patriarche/$', 'autocomplete_patriarche', + name='autocomplete-patriarche'), + url(r'operation_administrativeact_document/$', + 'administrativeactfile_document', + name='operation-administrativeact-document'), ) diff --git a/archaeological_operations/utils.py b/archaeological_operations/utils.py index 60b1585ef..53bfedc62 100644 --- a/archaeological_operations/utils.py +++ b/archaeological_operations/utils.py @@ -21,23 +21,24 @@ DELIMITER = ";" QUOTECHAR = '"' import datetime -import csv, codecs import re from django.conf import settings -from django.db import transaction +from django.core.exceptions import ObjectDoesNotExist from django.template.defaultfilters import slugify from django.contrib.auth.models import User from ishtar_common.models import Town, Person, PersonType, OrganizationType, \ Organization, SourceType -from archaeological_files.models import PermitType, File, FileType -from archaeological_operations.models import Operation, OperationType, Period, \ - AdministrativeAct, ActType, OperationSource, Parcel +from archaeological_files.models import PermitType +from archaeological_operations.models import OperationType, Period, \ + ActType + def get_default_person(): return User.objects.order_by('pk').all()[0] + def _get_parse_string(trunc_number=None): def parse_string(value): value = value.strip() @@ -51,20 +52,24 @@ def _get_parse_string(trunc_number=None): parse_string = _get_parse_string() + def parse_multivalue(value): - s1 = re.sub('(.)([A-Z][a-z]+)', r'\1 \2', name) + s1 = re.sub('(.)([A-Z][a-z]+)', r'\1 \2', value) s1 = re.sub('([a-z0-9])([A-Z])', r'\1 \2', s1) return re.sub('([0-9])([a-z])', r'\1 \2', s1) ope_types = {} + + def _init_ope_types(): for k in settings.ISHTAR_OPE_TYPES.keys(): ot, created = OperationType.objects.get_or_create( - txt_idx=settings.ISHTAR_OPE_TYPES[k][0], - defaults={'label':settings.ISHTAR_OPE_TYPES[k][1], - 'preventive':k[0]==u'préventive'}) + txt_idx=settings.ISHTAR_OPE_TYPES[k][0], + defaults={'label': settings.ISHTAR_OPE_TYPES[k][1], + 'preventive': k[0] == u'préventive'}) ope_types[k] = ot + def parse_operationtype(value, preventive, owner): value = (preventive.strip(), value.strip()) if not ope_types: @@ -75,6 +80,8 @@ def parse_operationtype(value, preventive, owner): periods = {} periods_keys = [] + + def _init_period(): for k in settings.ISHTAR_PERIODS.keys(): periods[k] = Period.objects.get(txt_idx=settings.ISHTAR_PERIODS[k]) @@ -92,6 +99,7 @@ def _init_period(): period_names_keys.sort(key=len) period_names_keys.reverse() + def parse_period(value): value = parse_string(value) value = value[3:] if value.startswith('EUR') else value @@ -119,6 +127,7 @@ REPLACED_PERIOD_DCT = dict(_REPLACED_PERIOD) period_names = {} period_names_keys = {} + def parse_period_name(value): if not period_names: _init_period() @@ -138,36 +147,41 @@ def parse_period_name(value): _CACHED_PERMIT_TYPES = {} + def _init_permit_type(): for k in settings.ISHTAR_PERMIT_TYPES: txt_idx, label = settings.ISHTAR_PERMIT_TYPES[k] - permit_type, created = PermitType.objects.get_or_create(txt_idx=txt_idx, - defaults={'label':label, - 'available':True}) + permit_type, created = PermitType.objects.get_or_create( + txt_idx=txt_idx, defaults={'label': label, + 'available': True}) _CACHED_PERMIT_TYPES[k] = permit_type + def parse_permittype(value): value = parse_string(value).lower() if not _CACHED_PERMIT_TYPES: _init_permit_type() if value not in _CACHED_PERMIT_TYPES: - if not "" in _CACHED_PERMIT_TYPES: + if "" not in _CACHED_PERMIT_TYPES: return value = "" return _CACHED_PERMIT_TYPES[value] _CACHED_ADMIN_ACT_TYPES = {} + + def parse_admin_act_typ(value, code, owner): value = parse_string(value).lower() code = parse_string(code).lower() if not value or not code: return if code not in _CACHED_ADMIN_ACT_TYPES: - act_type, created = ActType.objects.get_or_create(txt_idx=code, - defaults={'label':value}) - _CACHED_ADMIN_ACT_TYPES[code] = act_type + act_type, created = ActType.objects.get_or_create( + txt_idx=code, defaults={'label': value}) + _CACHED_ADMIN_ACT_TYPES[code] = act_type return _CACHED_ADMIN_ACT_TYPES[code] + def parse_fileref(value): value = parse_string(value).split('/')[0] value = value.split('.')[0] @@ -176,6 +190,7 @@ def parse_fileref(value): return None return int(match.group()) + def parse_orga(value, alternate_value, owner): value = parse_string(value) if not value: @@ -194,6 +209,7 @@ def parse_orga(value, alternate_value, owner): history_modifier=owner) return orga + def parse_bool(value): value = parse_string(value) if value.lower() in ('yes', 'oui'): @@ -204,6 +220,7 @@ def parse_bool(value): value = None return value + def parse_date(value): value = parse_string(value).split(' ')[0] try: @@ -211,6 +228,7 @@ def parse_date(value): except: return None + def parse_yearref(value): value = parse_string(value).split('.')[0] match = re.search('[0-9].[0-9]*', value) @@ -218,6 +236,7 @@ def parse_yearref(value): return None return int(match.group()) + def parse_surface(value): value = parse_string(value) value = value.replace(',', '.') @@ -230,6 +249,7 @@ def parse_surface(value): except: return None + def parse_year(value): value = parse_string(value) try: @@ -240,6 +260,7 @@ def parse_year(value): return None return yr + def parse_trunc_patriarche(value): value = parse_string(value) if not value: @@ -251,6 +272,7 @@ def parse_trunc_patriarche(value): return return '18' + unicode(value) + def parse_operation_code(value): value = parse_string(value) code = value.split('.')[-1] @@ -259,12 +281,14 @@ def parse_operation_code(value): except: return + def parse_title(value): value = parse_string(value) if not value: return return value.title() + def parse_name_surname(value): value = parse_string(value) items = value.split(' ') @@ -273,40 +297,41 @@ def parse_name_surname(value): if len(items) > 1: name = " ".join(items[:-1]) surname = items[-1] - values = {"surname":parse_title(surname)[:30], - "name":parse_title(name)[:30]} + values = {"surname": parse_title(surname)[:30], + "name": parse_title(name)[:30]} if not values['surname'] and not values['name']: return q = Person.objects.filter(**values) if q.count(): return q.all()[0] else: - defaults = {'history_modifier':get_default_user(), - 'title':''} + defaults = {'history_modifier': get_default_user(), + 'title': ''} defaults.update(values) p = Person.objects.create(**defaults) p.person_types.add(PersonType.objects.get( - txt_idx='head_scientist')) + txt_idx='head_scientist')) return p + def parse_person(surname, name, old_ref, owner): - value = parse_string(value) - values = {"surname":parse_title(surname), - "name":parse_title(name)} + values = {"surname": parse_title(surname), + "name": parse_title(name)} if not values['surname'] and not values['name']: return q = Person.objects.filter(**values) if q.count(): return q.all()[0] else: - defaults = {'history_modifier':owner, - 'title':''} + defaults = {'history_modifier': owner, + 'title': ''} defaults.update(values) p = Person.objects.create(**defaults) p.person_types.add(PersonType.objects.get( - txt_idx='head_scientist')) + txt_idx='head_scientist')) return p + def parse_comment_addr_nature(nature, addr, owner): addr = parse_string(addr) nature = parse_string(nature) @@ -322,57 +347,60 @@ def parse_comment_addr_nature(nature, addr, owner): # si pas de start date : premier janvier de year ope_types = { - 'AET':('other_study', - 'Autre étude', True), - 'APP':('assistance_preparation_help', - 'Aide à la préparation de publication', True), - 'DOC':('documents_study', - 'Étude documentaire', True), - 'EV':('evaluation', - "Fouille d'évaluation", True), - 'FOU':('ancient_excavation', - "Fouille ancienne", True), - 'FP':('prog_excavation', - "Fouille programmée", False), - 'MH':('building_study', "Fouille avant MH", True), - 'OPD':('arch_diagnostic', - "Diagnostic archéologique", True), - 'PAN':('analysis_program', - "Programme d'analyses", False), - 'PCR':('collective_research_project', - "Projet collectif de recherche", False), - 'PMS':('specialized_eqp_prospection', - "Prospection avec matériel spécialisé", False), - 'PRD':('diachronic_prospection', + 'AET': ('other_study', + 'Autre étude', True), + 'APP': ('assistance_preparation_help', + 'Aide à la préparation de publication', True), + 'DOC': ('documents_study', + 'Étude documentaire', True), + 'EV': ('evaluation', + "Fouille d'évaluation", True), + 'FOU': ('ancient_excavation', + "Fouille ancienne", True), + 'FP': ('prog_excavation', + "Fouille programmée", False), + 'MH': ('building_study', "Fouille avant MH", True), + 'OPD': ('arch_diagnostic', + "Diagnostic archéologique", True), + 'PAN': ('analysis_program', + "Programme d'analyses", False), + 'PCR': ('collective_research_project', + "Projet collectif de recherche", False), + 'PMS': ('specialized_eqp_prospection', + "Prospection avec matériel spécialisé", False), + 'PRD': ('diachronic_prospection', + "Prospection diachronique", False), + 'PI': ('diachronic_prospection', "Prospection diachronique", False), - 'PI':('diachronic_prospection', - "Prospection diachronique", False), - 'PRM':('metal_detector_prospection', - "Prospection détecteur de métaux", False), - 'PRT':('thematic_prospection', - "Prospection thématique", False), - 'PT':('thematic_prospection', + 'PRM': ('metal_detector_prospection', + "Prospection détecteur de métaux", False), + 'PRT': ('thematic_prospection', + "Prospection thématique", False), + 'PT': ('thematic_prospection', "Prospection thématique", False), - 'RAR':('cave_art_record', - "Relevé d'art rupestre", False), - 'SD':('sampling_research', - "Sondage", False), - 'SP':('prev_excavation', - "Fouille préventive", True), - 'SU':('emergency_excavation', - "Fouille préventive d'urgence", True), + 'RAR': ('cave_art_record', + "Relevé d'art rupestre", False), + 'SD': ('sampling_research', + "Sondage", False), + 'SP': ('prev_excavation', + "Fouille préventive", True), + 'SU': ('emergency_excavation', + "Fouille préventive d'urgence", True), } _CACHED_OPE_TYPES = {} + def _prepare_ope_types(): for k in ope_types.keys(): txt_idx, label, preventive = ope_types[k] - ot, created = OperationType.objects.get_or_create(txt_idx=txt_idx, - defaults={'label':label, 'preventive':preventive}) + ot, created = OperationType.objects.get_or_create( + txt_idx=txt_idx, defaults={'label': label, + 'preventive': preventive}) if k not in _CACHED_OPE_TYPES.keys(): _CACHED_OPE_TYPES[k] = ot + def parse_patriarche_operationtype(value): if value not in _CACHED_OPE_TYPES.keys(): return None @@ -380,6 +408,7 @@ def parse_patriarche_operationtype(value): _dpt_re_filter = re.compile('^\([0-9]*\) ') + def parse_ope_name(value): if not value: return '' @@ -389,6 +418,7 @@ def parse_ope_name(value): value = _dpt_re_filter.sub('', value) return value + def parse_ha(value): value = parse_string(value) try: @@ -397,6 +427,7 @@ def parse_ha(value): value = None return value + def parse_rapp_index(value): value = parse_string(value) items = re.findall(r'[0-9]+$', value) @@ -405,16 +436,18 @@ def parse_rapp_index(value): _CACHED_DOC_TYPES = {} + def parse_doc_types(value): value = parse_string(value) if value not in _CACHED_DOC_TYPES: if value not in settings.ISHTAR_DOC_TYPES: return _CACHED_DOC_TYPES[value], created = SourceType.objects.get_or_create( - txt_idx=value, - defaults={"label":settings.ISHTAR_DOC_TYPES[value]}) + txt_idx=value, + defaults={"label": settings.ISHTAR_DOC_TYPES[value]}) return _CACHED_DOC_TYPES[value] + def parse_insee(value): value = parse_string(value) values = [] @@ -427,15 +460,20 @@ def parse_insee(value): town = Town.objects.get(numero_insee=value) towns.append(town) except: - #sys.stderr.write('Numero INSEE : %s non existant en base' % value) + # sys.stderr.write('Numero INSEE : %s non existant en base' + # % value) continue return towns PARCEL_YEAR_REGEXP = re.compile(r"^([0-9]{4})[ :]+") -PARCEL_SECTION_REGEXP = re.compile(ur"(?: )*(?:[Ss]ection(?:s)?)?(?: )*([A-Z][A-Z0-9]{0,3})[ :]*((?:(?: |;|,|[Pp]arcelle(?:s)?|n°|et|à|to)*[0-9]+[p]?)+)") +PARCEL_SECTION_REGEXP = re.compile( + ur"(?: )*(?:[Ss]ection(?:s)?)?(?: )*([A-Z][A-Z0-9]{0,3})[ :]*" + ur"((?:(?: |;|,|[Pp]arcelle(?:s)?|n°|et|à|to)*[0-9]+[p]?)+)") PARCEL_NB_RANGE_REGEXP = re.compile(ur'([0-9]+[p]?) (?:à|to) ([0-9]+[p]?)') -PARCEL_NB_REGEXP = re.compile(ur'(?: |;|,|[Pp]arcelle(?:s)?|n°|et|à|to)*([0-9]+[p]?)') +PARCEL_NB_REGEXP = re.compile( + ur'(?: |;|,|[Pp]arcelle(?:s)?|n°|et|à|to)*([0-9]+[p]?)') + def parse_parcels(parcel_str, insee_code=None, owner=None): parcels, town = [], None @@ -456,7 +494,7 @@ def parse_parcels(parcel_str, insee_code=None, owner=None): for num in PARCEL_NB_REGEXP.findall(nums): if len(unicode(num)) > 6: continue - dct = {'year':year, 'section':sector, 'parcel_number':num} + dct = {'year': year, 'section': sector, 'parcel_number': num} if town: dct['town'] = town if owner: @@ -471,8 +509,8 @@ def parse_parcels(parcel_str, insee_code=None, owner=None): except ValueError: continue for num in xrange(lower_range, higher_range): - dct = {'year':year, 'section':sector, - 'parcel_number':unicode(num)} + dct = {'year': year, 'section': sector, + 'parcel_number': unicode(num)} if town: dct['town'] = town if owner: diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py index 5e7288caa..34473c7b1 100644 --- a/archaeological_operations/views.py +++ b/archaeological_operations/views.py @@ -38,9 +38,9 @@ import models def autocomplete_patriarche(request, non_closed=True): if (not request.user.has_perm('ishtar_common.view_operation', models.Operation) - and not request.user.has_perm('ishtar_common.view_own_operation', - models.Operation) - and not request.user.ishtaruser.has_right('operation_search')): + and not request.user.has_perm('ishtar_common.view_own_operation', + models.Operation) + and not request.user.ishtaruser.has_right('operation_search')): return HttpResponse(mimetype='text/plain') if not request.GET.get('term'): return HttpResponse(mimetype='text/plain') @@ -51,21 +51,21 @@ def autocomplete_patriarche(request, non_closed=True): if non_closed: query = query & Q(end_date__isnull=True) limit = 15 - operations = models.Operation.objects.filter(query - ).order_by('code_patriarche')[:limit] - data = json.dumps([{'id':operation.code_patriarche, - 'value':operation.code_patriarche} - for operation in operations]) + operations = models.Operation.objects\ + .filter(query).order_by('code_patriarche')[:limit] + data = json.dumps([{'id': operation.code_patriarche, + 'value': operation.code_patriarche} + for operation in operations]) return HttpResponse(data, mimetype='text/plain') def autocomplete_archaeologicalsite(request): if (not request.user.has_perm( - 'archaeological_operations.view_archaeologicalsite', - models.ArchaeologicalSite) + 'archaeological_operations.view_archaeologicalsite', + models.ArchaeologicalSite) and not request.user.has_perm( - 'archaeological_operations.view_own_archaeologicalsite', - models.ArchaeologicalSite)): + 'archaeological_operations.view_own_archaeologicalsite', + models.ArchaeologicalSite)): return HttpResponse(mimetype='text/plain') if not request.GET.get('term'): return HttpResponse(mimetype='text/plain') @@ -75,23 +75,24 @@ def autocomplete_archaeologicalsite(request): qt = Q(reference__icontains=q) | Q(name__icontains=q) query = query & qt limit = 15 - sites = models.ArchaeologicalSite.objects.filter(query - ).order_by('reference')[:limit] - data = json.dumps([{'id':site.pk, - 'value':unicode(site)[:60]} - for site in sites]) + sites = models.ArchaeologicalSite.objects\ + .filter(query).order_by('reference')[:limit] + data = json.dumps([{'id': site.pk, + 'value': unicode(site)[:60]} + for site in sites]) return HttpResponse(data, mimetype='text/plain') new_archaeologicalsite = new_item(models.ArchaeologicalSite, ArchaeologicalSiteForm) + def autocomplete_operation(request, non_closed=True): - person_types = request.user.ishtaruser.person.person_type + # person_types = request.user.ishtaruser.person.person_type if (not request.user.has_perm('ishtar_common.view_operation', models.Operation) and not request.user.has_perm('ishtar_common.view_own_operation', models.Operation) - and not request.user.ishtaruser.has_right('operation_search')): + and not request.user.ishtaruser.has_right('operation_search')): return HttpResponse(mimetype='text/plain') if not request.GET.get('term'): return HttpResponse(mimetype='text/plain') @@ -100,7 +101,7 @@ def autocomplete_operation(request, non_closed=True): for q in q.split(' '): extra = Q(towns__name__icontains=q) try: - value = int(q) + int(q) extra = extra | Q(year=q) | Q(operation_code=q) except ValueError: pass @@ -109,76 +110,85 @@ def autocomplete_operation(request, non_closed=True): query = query & Q(end_date__isnull=True) limit = 15 operations = models.Operation.objects.filter(query)[:limit] - data = json.dumps([{'id':operation.pk, 'value':unicode(operation)} - for operation in operations]) + data = json.dumps([{'id': operation.pk, 'value': unicode(operation)} + for operation in operations]) return HttpResponse(data, mimetype='text/plain') + def get_available_operation_code(request, year=None): if not request.user.has_perm('ishtar_common.view_operation', models.Operation)\ and not request.user.has_perm('ishtar_common.view_own_operation', models.Operation): return HttpResponse(mimetype='text/plain') - data = json.dumps({'id':models.Operation.get_available_operation_code(year)}) + data = json.dumps({'id': + models.Operation.get_available_operation_code(year)}) return HttpResponse(data, mimetype='text/plain') -get_operation = get_item(models.Operation, 'get_operation', 'operation', - bool_fields = ['end_date__isnull'], - dated_fields = ['start_date__lte', 'start_date__gte', - 'excavation_end_date__lte', 'excavation_end_date__gte'], - extra_request_keys={'common_name':'common_name__icontains', - 'end_date':'end_date__isnull', - 'year_index':('year', 'operation_code'), - 'start_before':'start_date__lte', - 'start_after':'start_date__gte', - 'end_before':'excavation_end_date__lte', - 'end_after':'excavation_end_date__gte', - 'parcel_0':('parcels__section', - 'associated_file__parcels__section'), - 'parcel_1':('parcels__parcel_number', - 'associated_file__parcels__parcel_number'), - 'history_creator':\ - 'history_creator__ishtaruser__person__pk', +get_operation = get_item( + models.Operation, 'get_operation', 'operation', + bool_fields=['end_date__isnull'], + dated_fields=['start_date__lte', 'start_date__gte', + 'excavation_end_date__lte', 'excavation_end_date__gte'], + extra_request_keys={'common_name': 'common_name__icontains', + 'end_date': 'end_date__isnull', + 'year_index': ('year', 'operation_code'), + 'start_before': 'start_date__lte', + 'start_after': 'start_date__gte', + 'end_before': 'excavation_end_date__lte', + 'end_after': 'excavation_end_date__gte', + 'parcel_0': ('parcels__section', + 'associated_file__parcels__section'), + 'parcel_1': ( + 'parcels__parcel_number', + 'associated_file__parcels__parcel_number'), + 'history_creator': + 'history_creator__ishtaruser__person__pk', }, - ) +) show_operation = show_item(models.Operation, 'operation') revert_operation = revert_item(models.Operation) -get_operationsource = get_item(models.OperationSource, +get_operationsource = get_item( + models.OperationSource, 'get_operationsource', 'operationsource', - extra_request_keys={'operation__towns':'operation__towns__pk', - 'operation__operation_type':'operation__operation_type__pk', - 'operation__year':'operation__year'}) + extra_request_keys={ + 'operation__towns': 'operation__towns__pk', + 'operation__operation_type': 'operation__operation_type__pk', + 'operation__year': 'operation__year'}) -get_administrativeactop = get_item(models.AdministrativeAct, +get_administrativeactop = get_item( + models.AdministrativeAct, 'get_administrativeactop', 'administrativeactop', - extra_request_keys={'associated_file__towns':'associated_file__towns__pk', - 'operation__towns':'operation__towns__pk', - 'act_type__intented_to':'act_type__intented_to', - 'year':'signature_date__year', - 'history_creator':\ - 'history_creator__ishtaruser__person__pk', + extra_request_keys={'associated_file__towns': 'associated_file__towns__pk', + 'operation__towns': 'operation__towns__pk', + 'act_type__intented_to': 'act_type__intented_to', + 'year': 'signature_date__year', + 'history_creator': + 'history_creator__ishtaruser__person__pk', }, - relative_session_names={'operation':'operation__pk'}) + relative_session_names={'operation': 'operation__pk'}) -get_administrativeact = get_item(models.AdministrativeAct, +get_administrativeact = get_item( + models.AdministrativeAct, 'get_administrativeact', 'administrativeact', - extra_request_keys={'year':'signature_date__year', - 'indexed':'index__isnull', - 'history_creator':\ - 'history_creator__ishtaruser__person__pk', - 'operation__towns':'operation__towns__pk'}, - reversed_bool_fields = ['index__isnull'],) + extra_request_keys={'year': 'signature_date__year', + 'indexed': 'index__isnull', + 'history_creator': + 'history_creator__ishtaruser__person__pk', + 'operation__towns': 'operation__towns__pk'}, + reversed_bool_fields=['index__isnull'],) show_administrativeact = show_item(models.AdministrativeAct, 'administrativeact') + def dashboard_operation(request, *args, **kwargs): """ Operation dashboard """ dct = {'dashboard': models.OperationDashboard()} - return render_to_response('ishtar/dashboards/dashboard_operation.html', dct, - context_instance=RequestContext(request)) + return render_to_response('ishtar/dashboards/dashboard_operation.html', + dct, context_instance=RequestContext(request)) operation_search_wizard = SearchWizard.as_view([ ('general-operation_search', OperationFormSelection)], @@ -200,22 +210,23 @@ if FILES_AVAILABLE: wizard_steps.insert(0, ('filechoice-operation_creation', OperationFormFileChoice)) -operation_creation_wizard = OperationWizard.as_view(wizard_steps, +operation_creation_wizard = OperationWizard.as_view( + wizard_steps, label=_(u"New operation"), condition_dict={ - 'preventive-operation_creation':\ - is_preventive('general-operation_creation', models.OperationType, - 'operation_type', 'prev_excavation'), - 'preventivediag-operation_creation':\ - is_preventive('general-operation_creation', models.OperationType, - 'operation_type', 'arch_diagnostic'), - 'townsgeneral-operation_creation':has_associated_file( + 'preventive-operation_creation': + is_preventive('general-operation_creation', models.OperationType, + 'operation_type', 'prev_excavation'), + 'preventivediag-operation_creation': + is_preventive('general-operation_creation', models.OperationType, + 'operation_type', 'arch_diagnostic'), + 'townsgeneral-operation_creation': has_associated_file( 'filechoice-operation_creation', negate=True), - 'towns-operation_creation':has_associated_file( + 'towns-operation_creation': has_associated_file( 'filechoice-operation_creation'), - 'parcelsgeneral-operation_creation':has_associated_file( + 'parcelsgeneral-operation_creation': has_associated_file( 'filechoice-operation_creation', negate=True), - 'parcels-operation_creation':has_associated_file( + 'parcels-operation_creation': has_associated_file( 'filechoice-operation_creation'), }, url_name='operation_creation',) @@ -234,37 +245,39 @@ operation_modification_wizard = OperationModificationWizard.as_view([ ('final-operation_modification', FinalForm)], label=_(u"Operation modification"), condition_dict={ - 'preventive-operation_modification':is_preventive( + 'preventive-operation_modification': is_preventive( 'general-operation_modification', models.OperationType, 'operation_type', 'prev_excavation'), - 'preventivediag-operation_modification':is_preventive( + 'preventivediag-operation_modification': is_preventive( 'general-operation_modification', models.OperationType, 'operation_type', 'arch_diagnostic'), - 'townsgeneral-operation_modification':has_associated_file( + 'townsgeneral-operation_modification': has_associated_file( 'general-operation_modification', negate=True), - 'towns-operation_modification':has_associated_file( + 'towns-operation_modification': has_associated_file( 'general-operation_modification'), - 'parcelsgeneral-operation_modification':has_associated_file( + 'parcelsgeneral-operation_modification': has_associated_file( 'general-operation_modification', negate=True), - 'parcels-operation_modification':has_associated_file( + 'parcels-operation_modification': has_associated_file( 'general-operation_modification'), - }, +}, url_name='operation_modification',) + def operation_modify(request, pk): - view = operation_modification_wizard(request) - OperationModificationWizard.session_set_value(request, - 'selec-operation_modification', 'pk', pk, reset=True) + operation_modification_wizard(request) + OperationModificationWizard.session_set_value( + request, 'selec-operation_modification', 'pk', pk, reset=True) return redirect(reverse('operation_modification', - kwargs={'step':'general-operation_modification'})) + kwargs={'step': 'general-operation_modification'})) + def operation_add(request, file_id): - view = operation_creation_wizard(request) + operation_creation_wizard(request) OperationWizard.session_set_value( - request, 'filechoice-operation_creation', 'associated_file', - file_id, reset=True) + request, 'filechoice-operation_creation', 'associated_file', + file_id, reset=True) return redirect(reverse('operation_creation', - kwargs={'step':'general-operation_creation'})) + kwargs={'step': 'general-operation_creation'})) operation_closing_wizard = OperationClosingWizard.as_view([ ('selec-operation_closing', OperationFormSelection), @@ -286,7 +299,7 @@ operation_source_search_wizard = SearchWizard.as_view([ operation_source_creation_wizard = OperationSourceWizard.as_view([ ('selec-operation_source_creation', SourceOperationFormSelection), - ('source-operation_source_creation',OperationSourceForm), + ('source-operation_source_creation', OperationSourceForm), ('authors-operation_source_creation', AuthorFormset), ('final-operation_source_creation', FinalForm)], label=_(u"Operation: source creation"), @@ -308,44 +321,45 @@ operation_source_deletion_wizard = OperationSourceDeletionWizard.as_view([ operation_administrativeactop_search_wizard = SearchWizard.as_view([ ('general-operation_administrativeactop_search', - AdministrativeActOpeFormSelection)], + AdministrativeActOpeFormSelection)], label=_(u"Administrative act search"), url_name='operation_administrativeactop_search',) operation_administrativeactop_wizard = \ - OperationAdministrativeActWizard.as_view([ - ('selec-operation_administrativeactop', OperationFormSelection), - ('administrativeact-operation_administrativeactop', - AdministrativeActOpeForm), - ('final-operation_administrativeactop', FinalForm)], - label=_(u"Operation: new administrative act"), - url_name='operation_administrativeactop',) + OperationAdministrativeActWizard.as_view([ + ('selec-operation_administrativeactop', OperationFormSelection), + ('administrativeact-operation_administrativeactop', + AdministrativeActOpeForm), + ('final-operation_administrativeactop', FinalForm)], + label=_(u"Operation: new administrative act"), + url_name='operation_administrativeactop',) operation_administrativeactop_modification_wizard = \ - OperationEditAdministrativeActWizard.as_view([ - ('selec-operation_administrativeactop_modification', - AdministrativeActOpeFormSelection), - ('administrativeact-operation_administrativeactop_modification', - AdministrativeActOpeForm), - ('final-operation_administrativeactop_modification', FinalForm)], - label=_(u"Operation: administrative act modification"), - url_name='operation_administrativeactop_modification',) + OperationEditAdministrativeActWizard.as_view([ + ('selec-operation_administrativeactop_modification', + AdministrativeActOpeFormSelection), + ('administrativeact-operation_administrativeactop_modification', + AdministrativeActOpeForm), + ('final-operation_administrativeactop_modification', FinalForm)], + label=_(u"Operation: administrative act modification"), + url_name='operation_administrativeactop_modification',) operation_administrativeactop_deletion_wizard = \ - AdministrativeActDeletionWizard.as_view([ - ('selec-operation_administrativeactop_deletion', - AdministrativeActOpeFormSelection), - ('final-operation_administrativeactop_deletion', - FinalAdministrativeActDeleteForm)], - label=_(u"Operation: administrative act deletion"), - url_name='operation_administrativeactop_deletion',) + AdministrativeActDeletionWizard.as_view([ + ('selec-operation_administrativeactop_deletion', + AdministrativeActOpeFormSelection), + ('final-operation_administrativeactop_deletion', + FinalAdministrativeActDeleteForm)], + label=_(u"Operation: administrative act deletion"), + url_name='operation_administrativeactop_deletion',) administrativact_register_wizard = SearchWizard.as_view([ ('general-administrativact_register', - AdministrativeActRegisterFormSelection)], - label=pgettext_lazy('admin act register',u"Register"), + AdministrativeActRegisterFormSelection)], + label=pgettext_lazy('admin act register', u"Register"), url_name='administrativact_register',) + def generatedoc_administrativeactop(request, pk, template_pk=None): if (not request.user.has_perm('ishtar_common.view_operation', models.Operation) @@ -358,8 +372,8 @@ def generatedoc_administrativeactop(request, pk, template_pk=None): except models.AdministrativeAct.DoesNotExist: doc = None if doc: - MIMES = {'odt':'application/vnd.oasis.opendocument.text', - 'ods':'application/vnd.oasis.opendocument.spreadsheet'} + MIMES = {'odt': 'application/vnd.oasis.opendocument.text', + 'ods': 'application/vnd.oasis.opendocument.spreadsheet'} ext = doc.split('.')[-1] doc_name = act_file.get_filename() + "." + ext mimetype = 'text/csv' @@ -367,43 +381,46 @@ def generatedoc_administrativeactop(request, pk, template_pk=None): mimetype = MIMES[ext] response = HttpResponse(open(doc), mimetype=mimetype) response['Content-Disposition'] = 'attachment; filename=%s' % \ - doc_name + doc_name return response return HttpResponse(mimetype='text/plain') + def administrativeactfile_document(request, operation=True): search_form = AdministrativeActOpeFormSelection if not operation: - from archaeological_files.forms import AdministrativeActFileFormSelection + from archaeological_files.forms import \ + AdministrativeActFileFormSelection search_form = AdministrativeActFileFormSelection dct = {} if request.POST: dct['search_form'] = search_form(request.POST) dct['template_form'] = DocumentGenerationAdminActForm( - operation=operation) + operation=operation) c_object = None try: if dct['search_form'].is_valid(): c_object = \ - DocumentGenerationAdminActForm._associated_model.objects.get( - pk=dct['search_form'].cleaned_data.get('pk')) + DocumentGenerationAdminActForm._associated_model\ + .objects.get(pk=dct['search_form'].cleaned_data.get('pk')) except DocumentGenerationAdminActForm._associated_model.DoesNotExist: pass if c_object: - dct['template_form'] = DocumentGenerationAdminActForm(request.POST, - operation=operation, - obj=c_object) + dct['template_form'] = DocumentGenerationAdminActForm( + request.POST, operation=operation, obj=c_object) if dct['template_form'].is_valid(): - return generatedoc_administrativeactop(request, + return generatedoc_administrativeactop( + request, dct['search_form'].cleaned_data.get('pk'), dct['template_form'].cleaned_data.get('document_template')) else: dct['search_form'] = search_form() dct['template_form'] = DocumentGenerationAdminActForm( - operation=operation) + operation=operation) return render_to_response('ishtar/administrativeact_document.html', dct, context_instance=RequestContext(request)) + def reset_wizards(request): for wizard_class, url_name in ( (OperationWizard, 'operation_creation'), @@ -413,10 +430,10 @@ def reset_wizards(request): (OperationSourceWizard, 'operation_source_creation'), (OperationSourceWizard, 'operation_source_modification'), (OperationSourceDeletionWizard, 'operation_source_deletion'), - (OperationAdministrativeActWizard, 'operation_administrativeactop'), + (OperationAdministrativeActWizard, + 'operation_administrativeactop'), (OperationEditAdministrativeActWizard, - 'operation_administrativeactop_modification'), + 'operation_administrativeactop_modification'), (AdministrativeActDeletionWizard, - 'operation_administrativeactop_deletion'), - ): + 'operation_administrativeactop_deletion'),): wizard_class.session_reset(request, url_name) diff --git a/archaeological_operations/widgets.py b/archaeological_operations/widgets.py index 6c4ebe79a..e3c0cd2ea 100644 --- a/archaeological_operations/widgets.py +++ b/archaeological_operations/widgets.py @@ -17,15 +17,15 @@ # See the file COPYING for details. -from django import forms from django.forms import widgets from django.utils.safestring import mark_safe from django.utils.translation import ugettext_lazy as _ + class ParcelWidget(widgets.MultiWidget): def __init__(self, attrs=None): if not attrs: - attrs = {'class':'widget-parcel'} + attrs = {'class': 'widget-parcel'} elif 'class' not in attrs: attrs['class'] = 'widget-parcel' else: @@ -33,7 +33,7 @@ class ParcelWidget(widgets.MultiWidget): _widgets = ( widgets.TextInput(attrs=attrs), widgets.TextInput(attrs=attrs), - ) + ) super(ParcelWidget, self).__init__(_widgets, attrs) def decompress(self, value): @@ -44,9 +44,10 @@ class ParcelWidget(widgets.MultiWidget): def format_output(self, rendered_widgets): return u' / '.join(rendered_widgets) + class SelectParcelWidget(widgets.TextInput): def render(self, *args, **kwargs): render = super(SelectParcelWidget, self).render(*args, **kwargs) render += u" <button name='formset_add' value='add'>%s</button>" \ - % _(u"Add") + % _(u"Add") return mark_safe(render) diff --git a/archaeological_operations/wizards.py b/archaeological_operations/wizards.py index 644bc7390..93787fca2 100644 --- a/archaeological_operations/wizards.py +++ b/archaeological_operations/wizards.py @@ -253,7 +253,7 @@ class OperationWizard(Wizard): for idx, parcel in enumerate(self.get_available_parcels(file)): parcel_pk, parcel_name = parcel post_data["%s-%d-parcel" % (parcel_form_key, idx)] = parcel_pk - post_data[parcel_form_key+'-TOTAL_FORMS'] = idx + 1 + post_data[parcel_form_key + '-TOTAL_FORMS'] = idx + 1 request.POST = post_data return super(OperationWizard, self).post(*args, **kwargs) @@ -447,7 +447,7 @@ def is_preventive(form_name, model, type_key='operation_type', key=''): return False try: typ = request.session[storage.prefix][ - 'step_data'][form_name][form_name+'-'+type_key] + 'step_data'][form_name][form_name + '-' + type_key] if type(typ) in (list, tuple): typ = typ[0] typ = int(typ) @@ -475,7 +475,7 @@ def has_associated_file(form_name, file_key='associated_file', negate=False): return negate try: file_id = request.session[storage.prefix][ - 'step_data'][form_name][form_name+'-'+file_key] + 'step_data'][form_name][form_name + '-' + file_key] if type(file_id) in (list, tuple): file_id = file_id[0] file_id = int(file_id) |