summaryrefslogtreecommitdiff
path: root/archaeological_operations
diff options
context:
space:
mode:
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
commit63cd3cb094c17d09cf99cf1bf9fa7c28c6dd9d59 (patch)
tree36d69381b619bd72bfd3a0f575c9e47dac8550a2 /archaeological_operations
parent2e148adc5ee132424d670ae94445f79994ef605b (diff)
downloadIshtar-63cd3cb094c17d09cf99cf1bf9fa7c28c6dd9d59.tar.bz2
Ishtar-63cd3cb094c17d09cf99cf1bf9fa7c28c6dd9d59.zip
Flake8
Diffstat (limited to 'archaeological_operations')
-rw-r--r--archaeological_operations/data_importer.py86
-rw-r--r--archaeological_operations/ishtar_menu.py141
-rw-r--r--archaeological_operations/urls.py183
-rw-r--r--archaeological_operations/utils.py186
-rw-r--r--archaeological_operations/views.py277
-rw-r--r--archaeological_operations/widgets.py9
-rw-r--r--archaeological_operations/wizards.py6
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)