summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_files/forms.py15
-rw-r--r--archaeological_files/locale/fr/LC_MESSAGES/django.po169
-rw-r--r--archaeological_files/models.py43
-rw-r--r--archaeological_finds/models.py3
-rw-r--r--archaeological_operations/forms.py106
-rw-r--r--archaeological_operations/locale/fr/LC_MESSAGES/django.po501
-rw-r--r--archaeological_operations/migrations/0027_auto__add_field_historicaloperation_creation_date__add_field_operation.py462
-rw-r--r--archaeological_operations/migrations/0028_init_creation_date.py457
-rw-r--r--archaeological_operations/migrations/0029_auto__chg_field_historicaloperation_creation_date__chg_field_operation.py458
-rw-r--r--archaeological_operations/models.py35
-rw-r--r--archaeological_operations/views.py10
-rw-r--r--ishtar_common/locale/fr/LC_MESSAGES/django.po261
-rw-r--r--ishtar_common/models.py90
-rw-r--r--ishtar_common/static/media/style.css16
-rw-r--r--ishtar_common/templates/ishtar/dashboards/dashboard_main.html3
-rw-r--r--ishtar_common/templates/ishtar/dashboards/dashboard_main_detail.html96
-rw-r--r--ishtar_common/templatetags/date_formating.py19
-rw-r--r--ishtar_common/views.py28
-rw-r--r--requirements.txt2
19 files changed, 2224 insertions, 550 deletions
diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py
index 4364829b2..d2e31d80c 100644
--- a/archaeological_files/forms.py
+++ b/archaeological_files/forms.py
@@ -42,7 +42,7 @@ from ishtar_common.forms import FinalForm, FormSet, ClosingDateFormSelection, \
from ishtar_common.forms_common import get_town_field, get_person_field
from archaeological_operations.forms import AdministrativeActOpeForm, \
AdministrativeActOpeFormSelection, FinalAdministrativeActDeleteForm, \
- ParcelField
+ ParcelField, SLICING
from ishtar_common import widgets
GENERAL_CONTRACTOR, created = PersonType.objects.get_or_create(
@@ -122,29 +122,36 @@ class FileFormSelection(forms.Form):
raise forms.ValidationError(_(u"You should select a file."))
return cleaned_data
-SLICING = (('year',_(u"years")), ("month",_(u"months")))
DATE_SOURCE = (('creation',_(u"Creation date")),
("reception",_(u"Reception date")))
class DashboardForm(forms.Form):
slicing = forms.ChoiceField(label=_("Slicing"), choices=SLICING,
required=False)
+ department_detail = forms.BooleanField(label=_("Department detail"),
+ required=False)
date_source = forms.ChoiceField(label=_("Date get from"),
choices=DATE_SOURCE, required=False)
file_type = forms.ChoiceField(label=_("File type"), choices=[],
required=False)
saisine_type = forms.ChoiceField(label=_("Saisine type"), choices=[],
required=False)
- after = forms.DateField(label=_(u"Creation date after"),
+ after = forms.DateField(label=_(u"Date after"),
widget=widgets.JQueryDate, required=False)
- before = forms.DateField(label=_(u"Creation date before"),
+ before = forms.DateField(label=_(u"Date before"),
widget=widgets.JQueryDate, required=False)
def __init__(self, *args, **kwargs):
+ if 'prefix' not in kwargs:
+ kwargs['prefix'] = 'files'
super(DashboardForm, self).__init__(*args, **kwargs)
self.fields['saisine_type'].choices = models.SaisineType.get_types()
self.fields['file_type'].choices = models.FileType.get_types()
+ def get_show_detail(self):
+ return hasattr(self, 'cleaned_data') and \
+ self.cleaned_data.get('department_detail')
+
def get_date_source(self):
date_source = 'creation'
if hasattr(self, 'cleaned_data') and \
diff --git a/archaeological_files/locale/fr/LC_MESSAGES/django.po b/archaeological_files/locale/fr/LC_MESSAGES/django.po
index f2951cc68..fd733daa3 100644
--- a/archaeological_files/locale/fr/LC_MESSAGES/django.po
+++ b/archaeological_files/locale/fr/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: alpha\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-10-15 01:32+0200\n"
+"POT-Creation-Date: 2014-10-21 00:45+0200\n"
"PO-Revision-Date: 2010-12-09\n"
"Last-Translator: Étienne Loks <etienne.loks at peacefrogs net>\n"
"Language-Team: \n"
@@ -18,29 +18,29 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"
-#: forms.py:55 forms.py:169 forms.py:209 forms.py:320 forms.py:360
-#: models.py:67 templates/ishtar/sheet_file.html:98
+#: forms.py:55 forms.py:188 forms.py:228 forms.py:339 forms.py:379
+#: models.py:68 templates/ishtar/sheet_file.html:98
#: templates/ishtar/sheet_file.html:126
msgid "Year"
msgstr "Année"
-#: forms.py:56 forms.py:173 forms.py:211 forms.py:359 models.py:69
+#: forms.py:56 forms.py:192 forms.py:230 forms.py:378 models.py:70
msgid "Numeric reference"
msgstr "Référence numérique"
-#: forms.py:58 forms.py:175 forms.py:362
+#: forms.py:58 forms.py:194 forms.py:381
msgid "Other reference"
msgstr "Autre référence"
-#: forms.py:60 forms.py:342
+#: forms.py:60 forms.py:361
msgid "File name"
msgstr "Nom du dossier"
-#: forms.py:61 forms.py:130 forms.py:180 models.py:74
+#: forms.py:61 forms.py:135 forms.py:199 models.py:75
msgid "File type"
msgstr "Type de dossier"
-#: forms.py:62 forms.py:132 forms.py:248
+#: forms.py:62 forms.py:137 forms.py:267
msgid "Saisine type"
msgstr "Type de saisine"
@@ -52,23 +52,23 @@ msgstr "Parcelle (section/numéro)"
msgid "Is active?"
msgstr "Est actif ?"
-#: forms.py:66 forms.py:222 forms.py:345 models.py:81
+#: forms.py:66 forms.py:241 forms.py:364 models.py:82
msgid "General contractor"
msgstr "Aménageur"
-#: forms.py:73 forms.py:352
+#: forms.py:73 forms.py:371
msgid "Organization of general contractor"
msgstr "Organisation de l'aménageur"
-#: forms.py:80 forms.py:364 templates/ishtar/sheet_file.html:102
+#: forms.py:80 forms.py:383 templates/ishtar/sheet_file.html:102
msgid "In charge"
msgstr "Responsable"
-#: forms.py:87 forms.py:373
+#: forms.py:87 forms.py:392
msgid "Created by"
msgstr "Créé par"
-#: forms.py:94 forms.py:241 forms.py:371 models.py:90
+#: forms.py:94 forms.py:260 forms.py:390 models.py:91
msgid "Permit reference"
msgstr "Référence du permis"
@@ -80,141 +80,141 @@ msgstr "Recherche de dossiers archéologiques"
msgid "You should select a file."
msgstr "Vous devez sélectionner un dossier archéologique."
-#: forms.py:125
-msgid "years"
-msgstr "années"
+#: forms.py:125 forms.py:197 models.py:96
+msgid "Creation date"
+msgstr "Date de création"
-#: forms.py:125
-msgid "months"
-msgstr "mois"
+#: forms.py:126 forms.py:269 models.py:98
+msgid "Reception date"
+msgstr "Date de réception"
-#: forms.py:128
+#: forms.py:129
msgid "Slicing"
msgstr "Découpage"
-#: forms.py:134
-msgid "Creation date after"
-msgstr "Date de création après"
+#: forms.py:131
+msgid "Department detail"
+msgstr "Détail par département"
-#: forms.py:136
-msgid "Creation date before"
-msgstr "Date de création avant"
+#: forms.py:133
+msgid "Date get from"
+msgstr "Date utilisée"
-#: forms.py:159 templates/ishtar/sheet_file.html:24
+#: forms.py:139
+msgid "Date after"
+msgstr "Date après"
+
+#: forms.py:141
+msgid "Date before"
+msgstr "Date avant"
+
+#: forms.py:178 templates/ishtar/sheet_file.html:24
msgid "General"
msgstr "Général"
-#: forms.py:163 models.py:76
+#: forms.py:182 models.py:77
msgid "Person in charge"
msgstr "Responsable"
-#: forms.py:177 models.py:73
+#: forms.py:196 models.py:74
msgid "Name"
msgstr "Nom"
-#: forms.py:178 models.py:95
-msgid "Creation date"
-msgstr "Date de création"
-
-#: forms.py:181 models.py:99
+#: forms.py:200 models.py:100
msgid "Related file"
msgstr "Dossier en relation avec"
-#: forms.py:185 forms.py:291 models.py:115 templates/ishtar/sheet_file.html:85
+#: forms.py:204 forms.py:310 models.py:116 templates/ishtar/sheet_file.html:85
msgid "Comment"
msgstr "Commentaire"
-#: forms.py:189 models.py:106
+#: forms.py:208 models.py:107
msgid "Total surface (m²)"
msgstr "Surface totale des terrains (m²)"
-#: forms.py:192 models.py:110
+#: forms.py:211 models.py:111
msgid "Main address"
msgstr "Adresse des terrains"
-#: forms.py:193 models.py:111
+#: forms.py:212 models.py:112
msgid "Main address - complement"
msgstr "Adresse des terrains - complément"
-#: forms.py:204
+#: forms.py:223
#, python-format
msgid "<br/>(last recorded: %s)"
msgstr "<br/>(dernier enregistrement : %s)"
-#: forms.py:217
+#: forms.py:236
msgid "Preventive informations"
msgstr "Information archéologie préventive"
-#: forms.py:231 models.py:86
+#: forms.py:250 models.py:87
msgid "Responsible for town planning service"
msgstr "Responsable au service instructeur"
-#: forms.py:239 models.py:52 models.py:88
+#: forms.py:258 models.py:52 models.py:89
msgid "Permit type"
msgstr "Type de permis"
-#: forms.py:244 models.py:109
+#: forms.py:263 models.py:110
msgid "Total developed surface (m²)"
msgstr "Surface totale aménagée (m²)"
-#: forms.py:250 models.py:97
-msgid "Reception date"
-msgstr "Date de réception"
-
-#: forms.py:261 templates/ishtar/sheet_file.html:75
+#: forms.py:280 templates/ishtar/sheet_file.html:75
#: templates/ishtar/dashboards/dashboard_file.html:42
msgid "Research archaeology"
msgstr "Archéologie programmée"
-#: forms.py:269 models.py:118 templates/ishtar/sheet_file.html:76
+#: forms.py:288 models.py:119 templates/ishtar/sheet_file.html:76
msgid "Departments"
msgstr "Départements"
-#: forms.py:279 models.py:130
+#: forms.py:298 models.py:131
msgid "Scientist in charge"
msgstr "Responsable scientifique"
-#: forms.py:281 models.py:123 templates/ishtar/sheet_file.html:78
+#: forms.py:300 models.py:124 templates/ishtar/sheet_file.html:78
msgid "Requested operation type"
msgstr "Type d'opération demandée"
-#: forms.py:283
+#: forms.py:302
msgid "Lead organization"
msgstr "Organisation porteuse du projet"
-#: forms.py:300 models.py:134 templates/ishtar/sheet_file.html:83
+#: forms.py:319 models.py:135 templates/ishtar/sheet_file.html:83
msgid "Classified area"
msgstr "Au sein d'un site classé"
-#: forms.py:302 models.py:136 templates/ishtar/sheet_file.html:84
+#: forms.py:321 models.py:137 templates/ishtar/sheet_file.html:84
msgid "Protected area"
msgstr "Au sein d'un secteur sauvegardé"
-#: forms.py:313
+#: forms.py:332
msgid "Would you like to close this archaeological file?"
msgstr "Voulez vous clore ce dossier archéologique ?"
-#: forms.py:317
+#: forms.py:336
msgid "Would you like to delete this archaelogical file ?"
msgstr "Voulez vous supprimer ce dossier archéologique ?"
-#: forms.py:321
+#: forms.py:340
msgid "Index"
msgstr "Index"
-#: forms.py:325 forms.py:337 forms.py:402
+#: forms.py:344 forms.py:356 forms.py:421
msgid "Act type"
msgstr "Type d'acte"
-#: forms.py:338
+#: forms.py:357
msgid "Signature date after"
msgstr "Date de signature après"
-#: forms.py:340
+#: forms.py:359
msgid "Signature date before"
msgstr "Date de signature avant"
-#: ishtar_menu.py:30 models.py:150 templates/ishtar/sheet_file.html:6
+#: ishtar_menu.py:30 models.py:151 templates/ishtar/sheet_file.html:6
msgid "Archaeological file"
msgstr "Dossier"
@@ -258,7 +258,7 @@ msgstr "Tableau de bord"
msgid "General informations"
msgstr "Informations générales"
-#: ishtar_menu.py:73 models.py:151
+#: ishtar_menu.py:73 models.py:152
#: templates/ishtar/dashboards/dashboard_file.html:8
msgid "Archaeological files"
msgstr "Dossiers archéologiques"
@@ -279,75 +279,75 @@ msgstr "Types de permis"
msgid "Delay (in days)"
msgstr "Delai (en jours)"
-#: models.py:71
+#: models.py:72
msgid "Internal reference"
msgstr "Référence interne"
-#: models.py:92
+#: models.py:93
msgid "Closing date"
msgstr "Date de clotûre"
-#: models.py:93
+#: models.py:94
msgid "Towns"
msgstr "Communes"
-#: models.py:104
+#: models.py:105
msgid "Ref. number"
msgstr "Réf. numérique"
-#: models.py:113
+#: models.py:114
msgid "Main address - postal code"
msgstr "Adresse des terrains - code postal"
-#: models.py:125 templates/ishtar/sheet_file.html:79
+#: models.py:126 templates/ishtar/sheet_file.html:79
msgid "Organization"
msgstr "Organisation"
-#: models.py:131
+#: models.py:132
msgid "Research archaeology comment"
msgstr "Commentaire archéologie programmée"
-#: models.py:145
+#: models.py:146
msgid "Cached name"
msgstr "Nom en cache"
-#: models.py:153
+#: models.py:154
msgid "Can view all Archaelogical file"
msgstr "Peut voir tous les dossier archéologique"
-#: models.py:154
+#: models.py:155
msgid "Can view own Archaelogical file"
msgstr "Peut voir son propre Dossier"
-#: models.py:155
+#: models.py:156
msgid "Can add own Archaelogical file"
msgstr "Peut ajouter son propre Dossier"
-#: models.py:156
+#: models.py:157
msgid "Can change own Archaelogical file"
msgstr "Peut changer son propre Dossier"
-#: models.py:157
+#: models.py:158
msgid "Can delete own Archaelogical file"
msgstr "Peut supprimer son propre Dossier"
-#: models.py:158
+#: models.py:159
msgid "Can close File"
msgstr "Peut fermer un dossier"
-#: models.py:164
+#: models.py:165
msgid "FILE"
msgstr "DOSSIER"
-#: models.py:312
+#: models.py:278
msgid "Intercommunal"
msgstr "Intercommunal"
-#: models.py:376
+#: models.py:342
msgid "File"
msgstr "Dossier"
-#: models.py:377
+#: models.py:343
msgid "Department"
msgstr "Département"
@@ -679,6 +679,15 @@ msgstr "Principales communes en nombre"
msgid "Main towns by surface (ha)"
msgstr "Principales communes en surface (ha)"
+#~ msgid "years"
+#~ msgstr "années"
+
+#~ msgid "months"
+#~ msgstr "mois"
+
+#~ msgid "Creation date before"
+#~ msgstr "Date de création avant"
+
#~ msgid "Town"
#~ msgstr "Commune"
diff --git a/archaeological_files/models.py b/archaeological_files/models.py
index 70570e145..4483e6401 100644
--- a/archaeological_files/models.py
+++ b/archaeological_files/models.py
@@ -30,7 +30,7 @@ from ishtar_common.utils import cached_label_changed, get_cache
from ishtar_common.models import GeneralType, BaseHistorizedItem, \
HistoricalRecords, OwnPerms, Person, Organization, Department, Town, \
- Dashboard, IshtarUser, ValueGetter, ShortMenuItem
+ Dashboard, DashboardFormItem, IshtarUser, ValueGetter, ShortMenuItem
class FileType(GeneralType):
class Meta:
@@ -61,7 +61,8 @@ if settings.COUNTRY == 'fr':
verbose_name_plural = u"Types Saisine"
ordering = ('label',)
-class File(BaseHistorizedItem, OwnPerms, ValueGetter, ShortMenuItem):
+class File(BaseHistorizedItem, OwnPerms, ValueGetter, ShortMenuItem,
+ DashboardFormItem):
TABLE_COLS = ['numeric_reference', 'year', 'internal_reference',
'file_type', 'saisine_type', 'towns', ]
year = models.IntegerField(_(u"Year"),
@@ -229,44 +230,6 @@ class File(BaseHistorizedItem, OwnPerms, ValueGetter, ShortMenuItem):
owns = super(File, cls).get_owns(user)
return sorted(owns.all(), key=lambda x:x.cached_label)
- @classmethod
- def get_periods(cls, slice='year', fltr={}, date_source='creation'):
- date_var = date_source + '_date'
- q = cls.objects.filter(**{date_var+'__isnull':False})
- if fltr:
- q = q.filter(**fltr)
- if slice == 'year':
- return [res[date_var].year for res in list(q.values(date_var
- ).annotate(Count("id")).order_by())]
- elif slice == 'month':
- return [(res[date_var].year, res[date_var].month)
- for res in list(q.values(date_var
- ).annotate(Count("id")).order_by())]
- return []
-
- @classmethod
- def get_by_year(cls, year, fltr={}, date_source='creation'):
- date_var = date_source + '_date'
- q = cls.objects.filter(**{date_var+'__isnull':False})
- if fltr:
- q = q.filter(**fltr)
- return q.filter(**{date_var+'__year':year})
-
- @classmethod
- def get_by_month(cls, year, month, fltr={}, date_source='creation'):
- date_var = date_source + '_date'
- q = cls.objects.filter(**{date_var+'__isnull':False})
- if fltr:
- q = q.filter(**fltr)
- return q.filter(**{date_var+'__year':year, date_var+'__month':month})
-
- @classmethod
- def get_total_number(cls, fltr={}):
- q = cls.objects
- if fltr:
- q = q.filter(**fltr)
- return q.count()
-
def get_values(self, prefix=''):
values = super(File, self).get_values(prefix=prefix)
values['adminact_associated_file_towns_count'] = unicode(
diff --git a/archaeological_finds/models.py b/archaeological_finds/models.py
index 8c93a733d..a7e19e0ed 100644
--- a/archaeological_finds/models.py
+++ b/archaeological_finds/models.py
@@ -344,7 +344,8 @@ class TreatmentType(GeneralType):
ordering = ('label',)
class Treatment(BaseHistorizedItem, OwnPerms):
- container = models.ForeignKey(Container, verbose_name=_(u"Container"),
+ if WAREHOUSE_AVAILABLE:
+ container = models.ForeignKey(Container, verbose_name=_(u"Container"),
blank=True, null=True)
description = models.TextField(_(u"Description"), blank=True, null=True)
treatment_type = models.ForeignKey(TreatmentType,
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py
index d31d5c542..bb743372d 100644
--- a/archaeological_operations/forms.py
+++ b/archaeological_operations/forms.py
@@ -35,7 +35,11 @@ from django.utils.safestring import mark_safe
from ishtar_common.models import valid_id, PersonType, Person, Town, \
DocumentTemplate, Organization, OrganizationType
-from archaeological_files.models import File
+
+FILES_AVAILABLE = 'archaeological_files' in settings.INSTALLED_APPS
+
+if FILES_AVAILABLE:
+ from archaeological_files.models import File
import models
from widgets import ParcelWidget, SelectParcelWidget
@@ -292,14 +296,90 @@ class OperationCodeInput(forms.TextInput):
'url':reverse_lazy('get_available_operation_code')}
return mark_safe(rendered + js)
-class OperationFormFileChoice(forms.Form):
- form_label = _(u"Associated file")
- associated_models = {'associated_file':File,}
- currents = {'associated_file':File}
- associated_file = forms.IntegerField(label=_(u"Archaelogical file"),
- widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-file'),
- associated_model=File),
- validators=[valid_id(File)], required=False)
+if FILES_AVAILABLE:
+ class OperationFormFileChoice(forms.Form):
+ form_label = _(u"Associated file")
+ associated_models = {'associated_file':File,}
+ currents = {'associated_file':File}
+ associated_file = forms.IntegerField(label=_(u"Archaelogical file"),
+ widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-file'),
+ associated_model=File),
+ validators=[valid_id(File)], required=False)
+
+SLICING = (("month",_(u"months")), ('year',_(u"years")),)
+
+DATE_SOURCE = (('creation',_(u"Creation date")),
+ ("start",_(u"Start of field work")))
+
+PREVENTIVE_RESARCH = (('all', _('All')),
+ ('preventive', _(u"Preventive")),
+ ('research', _(u"Research")),)
+
+class DashboardForm(forms.Form):
+ slicing = forms.ChoiceField(label=_("Slicing"), choices=SLICING,
+ required=False)
+ department_detail = forms.BooleanField(label=_("Department detail"),
+ required=False)
+ date_source = forms.ChoiceField(label=_("Date get from"),
+ choices=DATE_SOURCE, required=False)
+ preventive_research = forms.ChoiceField(label=_("Preventive/Research"),
+ choices=PREVENTIVE_RESARCH, required=False)
+ operation_type = forms.ChoiceField(label=_("Operation type"), choices=[],
+ required=False)
+ operator = forms.ChoiceField(label=_("Operator"), choices=[],
+ required=False)
+ after = forms.DateField(label=_(u"Date after"),
+ widget=widgets.JQueryDate, required=False)
+ before = forms.DateField(label=_(u"Date before"),
+ widget=widgets.JQueryDate, required=False)
+ with_report = forms.BooleanField(label=_("With reports"), required=False)
+ with_finds = forms.BooleanField(label=_("With finds"), required=False)
+
+ def __init__(self, *args, **kwargs):
+ if 'prefix' not in kwargs:
+ kwargs['prefix'] = 'operations'
+ super(DashboardForm, self).__init__(*args, **kwargs)
+ self.fields['operation_type'].choices = models.OperationType.get_types()
+ self.fields['operator'].choices = [('', '--')]
+ self.fields['operator'].choices += [(orga.pk, orga.name)
+ for orga in Organization.objects.filter(operator__isnull=False)\
+ .order_by('name').distinct().all()]
+
+ def get_show_detail(self):
+ return hasattr(self, 'cleaned_data') and \
+ self.cleaned_data.get('department_detail')
+
+ def get_date_source(self):
+ date_source = 'creation'
+ if hasattr(self, 'cleaned_data') and \
+ self.cleaned_data.get('date_source'):
+ date_source = self.cleaned_data['date_source']
+ return date_source
+
+ def get_filter(self):
+ if not hasattr(self, 'cleaned_data') or not self.cleaned_data:
+ return {}
+ date_source = self.get_date_source()
+ fltr = {}
+ if self.cleaned_data.get('preventive_research'):
+ preventive_research = self.cleaned_data['preventive_research']
+ if preventive_research == 'preventive':
+ fltr['file_type__preventive'] = True
+ elif preventive_research == 'preventive':
+ fltr['file_type__preventive'] = False
+ if self.cleaned_data.get('operation_type'):
+ fltr['operation_type_id'] = self.cleaned_data['operation_type']
+ if self.cleaned_data.get('operator'):
+ fltr['operator_id'] = self.cleaned_data['operator']
+ if self.cleaned_data.get('after'):
+ fltr[date_source+'_date__gte'] = self.cleaned_data['after']
+ if self.cleaned_data.get('before'):
+ fltr[date_source+'_date__lte'] = self.cleaned_data['before']
+ if self.cleaned_data.get('with_report'):
+ fltr['report_delivery_date__isnull'] = False
+ if self.cleaned_data.get('with_finds'):
+ fltr['context_record__base_finds__isnull'] = False
+ return fltr
class OperationFormGeneral(forms.Form):
form_label = _(u"General")
@@ -419,9 +499,10 @@ class OperationFormGeneral(forms.Form):
return self.cleaned_data
class OperationFormModifGeneral(OperationFormGeneral):
- currents = {'associated_file':File}
operation_code = forms.IntegerField(label=_(u"Operation code"))
- associated_file = forms.IntegerField(label=_(u"Archaelogical file"),
+ if FILES_AVAILABLE:
+ currents = {'associated_file':File}
+ associated_file = forms.IntegerField(label=_(u"Archaelogical file"),
widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-file'),
associated_model=File),
validators=[valid_id(File)], required=False)
@@ -435,7 +516,8 @@ class OperationFormModifGeneral(OperationFormGeneral):
OperationFormModifGeneral.associated_models = \
OperationFormGeneral.associated_models.copy()
-OperationFormModifGeneral.associated_models['associated_file'] = File
+if FILES_AVAILABLE:
+ OperationFormModifGeneral.associated_models['associated_file'] = File
class OperationFormPreventive(forms.Form):
diff --git a/archaeological_operations/locale/fr/LC_MESSAGES/django.po b/archaeological_operations/locale/fr/LC_MESSAGES/django.po
index 4ed867e8c..18bb27bc0 100644
--- a/archaeological_operations/locale/fr/LC_MESSAGES/django.po
+++ b/archaeological_operations/locale/fr/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: alpha\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-03-27 22:43+0100\n"
+"POT-Creation-Date: 2014-10-21 00:45+0200\n"
"PO-Revision-Date: 2010-12-09\n"
"Last-Translator: Étienne Loks <etienne.loks at peacefrogs net>\n"
"Language-Team: \n"
@@ -18,12 +18,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"
-#: forms.py:63 forms.py:186 forms.py:445 forms.py:466 forms.py:470
-#: models.py:568 templates/ishtar/sheet_operation.html:89
+#: forms.py:67 forms.py:190 forms.py:573 forms.py:594 forms.py:598
+#: models.py:654 templates/ishtar/blocks/window_tables/parcels.html:8
msgid "Parcels"
msgstr "Parcelles"
-#: forms.py:66 forms.py:106 forms.py:423 models.py:562
+#: forms.py:70 forms.py:110 forms.py:551 models.py:648
+#: templates/ishtar/blocks/window_tables/parcels.html:5
#: templates/ishtar/dashboards/dashboard_operation.html:302
#: templates/ishtar/dashboards/dashboard_operation.html:315
#: templates/ishtar/dashboards/dashboard_operation.html:482
@@ -31,161 +32,232 @@ msgstr "Parcelles"
msgid "Town"
msgstr "Commune"
-#: forms.py:68 forms.py:189 forms.py:324 forms.py:612 models.py:121
-#: models.py:494 models.py:560 templates/ishtar/sheet_operation.html:87
+#: forms.py:72 forms.py:199 forms.py:427 forms.py:740 models.py:162
+#: models.py:507 models.py:646
+#: templates/ishtar/blocks/window_tables/parcels.html:6
msgid "Year"
msgstr "Année"
-#: forms.py:71 models.py:563 templates/ishtar/sheet_operation.html:88
+#: forms.py:75 models.py:649
+#: templates/ishtar/blocks/window_tables/parcels.html:7
msgid "Section"
msgstr "Section"
-#: forms.py:73 models.py:564
+#: forms.py:77 models.py:650
msgid "Parcel number"
msgstr "Numéro de parcelle"
-#: forms.py:101
+#: forms.py:105
msgid "Town section and parcel number fields are required."
msgstr "La commune, la section et le numéro de parcelle sont obligatoire."
-#: forms.py:108
+#: forms.py:112
msgid "Full text input"
msgstr "Saisie libre"
-#: forms.py:110
+#: forms.py:114
msgid "example: \"2013: XD:1 to 13,24,33 to 39, YD:24\" or \"AB:24,AC:42\""
msgstr "exemple : \"2013: XD:1 à 13,24,33 à 39, YD:24\" ou \"AB:24,AC:42\""
-#: forms.py:180
+#: forms.py:184
msgid "There are identical parcels."
msgstr "Il y a des parcelles identiques."
-#: forms.py:190
+#: forms.py:200
msgid "Numeric reference"
msgstr "Identifiant numérique"
-#: forms.py:191
+#: forms.py:201
msgid "Name (full text search)"
msgstr "Nom (recherche texte intégral)"
-#: forms.py:196 forms.py:312 forms.py:590 models.py:42 models.py:129
+#: forms.py:206 forms.py:327 forms.py:415 forms.py:718 models.py:43
+#: models.py:170
msgid "Operation type"
msgstr "Type d'opération"
-#: forms.py:203 models.py:437
+#: forms.py:212 models.py:494
msgid "Scientist in charge"
msgstr "Responsable scientifique"
-#: forms.py:208 forms.py:302 models.py:119
+#: forms.py:217 forms.py:408 models.py:159
msgid "In charge"
msgstr "Responsable"
-#: forms.py:209 models.py:131
+#: forms.py:218 forms.py:329 forms.py:402 models.py:157
+msgid "Operator"
+msgstr "Opérateur"
+
+#: forms.py:223 models.py:172
msgid "Remains"
msgstr "Vestiges"
-#: forms.py:210 forms.py:495 forms.py:514 models.py:135
-#: templates/ishtar/sheet_operation.html:146
+#: forms.py:224 forms.py:623 forms.py:642 models.py:176
+#: templates/ishtar/sheet_operation.html:128
msgid "Periods"
msgstr "Périodes"
-#: forms.py:211
+#: forms.py:225
msgid "Started before"
msgstr "Commencé avant"
-#: forms.py:213
+#: forms.py:227
msgid "Started after"
msgstr "Commencé après"
-#: forms.py:215
+#: forms.py:229
msgid "Ended before"
msgstr "Terminé avant"
-#: forms.py:217
+#: forms.py:231
msgid "Ended after"
msgstr "Terminé après"
-#: forms.py:219
+#: forms.py:233
msgid "Parcel (section/number)"
msgstr "Parcelle (section/numéro)"
-#: forms.py:220
+#: forms.py:234
msgid "Is open?"
msgstr "Est ouvert ?"
-#: forms.py:239 forms.py:584 views.py:171
+#: forms.py:236 forms.py:748
+msgid "Created by"
+msgstr "Créé par"
+
+#: forms.py:260 forms.py:712 views.py:181
msgid "Operation search"
msgstr "Recherche d'opérations"
-#: forms.py:251 forms.py:586
+#: forms.py:272 forms.py:714
msgid "You should select an operation."
msgstr "Vous devez sélectionner une opération."
-#: forms.py:279 forms.py:645 templates/ishtar/sheet_administrativeact.html:11
+#: forms.py:301
+msgid "Associated file"
+msgstr "Dossier associé"
+
+#: forms.py:304 forms.py:505 models.py:504 wizards.py:73
+msgid "Archaelogical file"
+msgstr "Dossier"
+
+#: forms.py:309
+msgid "months"
+msgstr "mois"
+
+#: forms.py:309
+msgid "years"
+msgstr "années"
+
+#: forms.py:311 models.py:144
+msgid "Creation date"
+msgstr "Date de création"
+
+#: forms.py:312
+msgid "Start of field work"
+msgstr "Début du travail de terrain"
+
+#: forms.py:314
+msgid "All"
+msgstr "Tous"
+
+#: forms.py:315 models.py:70
+msgid "Preventive"
+msgstr "Préventif"
+
+#: forms.py:316 models.py:71
+msgid "Research"
+msgstr "Programmée"
+
+#: forms.py:319
+msgid "Slicing"
+msgstr "Découpage"
+
+#: forms.py:321
+msgid "Department detail"
+msgstr "Détail par département"
+
+#: forms.py:323
+msgid "Date get from"
+msgstr "Date obtenue depuis"
+
+#: forms.py:325
+msgid "Preventive/Research"
+msgstr "Préventif/Programmé"
+
+#: forms.py:331
+msgid "Date after"
+msgstr "Date après"
+
+#: forms.py:333
+msgid "Date before"
+msgstr "Date avant"
+
+#: forms.py:335
+msgid "With reports"
+msgstr "Avec un rapport"
+
+#: forms.py:336
+msgid "With finds"
+msgstr "Avec du matériel"
+
+#: forms.py:385 forms.py:780 templates/ishtar/sheet_administrativeact.html:11
#: templates/ishtar/sheet_operation.html:28
msgid "General"
msgstr "Général"
-#: forms.py:290
+#: forms.py:394
msgid "Head scientist"
msgstr "Responsable scientifique"
-#: forms.py:297 models.py:117
-msgid "Operator"
-msgstr "Opérateur"
-
-#: forms.py:308 models.py:408 models.py:446 wizards.py:86
-msgid "Archaelogical file"
-msgstr "Dossier"
-
-#: forms.py:314 models.py:64 models.py:107 models.py:614
+#: forms.py:417 models.py:96 models.py:143 models.py:728
msgid "Start date"
msgstr "Date de début"
-#: forms.py:316 models.py:108
+#: forms.py:419 models.py:146
msgid "Excavation end date"
msgstr "Date de fin de chantier"
-#: forms.py:318 models.py:111
+#: forms.py:421 models.py:149
msgid "Report delivery date"
msgstr "Date de livraison du rapport"
-#: forms.py:321
+#: forms.py:424
msgid "Total surface (m²)"
msgstr "Surface totale des terrains (m²)"
-#: forms.py:328 models.py:122 models.py:297
+#: forms.py:431 forms.py:502 models.py:163 models.py:343
msgid "Operation code"
msgstr "Code de l'opération"
-#: forms.py:331 models.py:170
+#: forms.py:434 models.py:213
msgid "Generic name"
msgstr "Nom générique"
-#: forms.py:333 models.py:168
+#: forms.py:436 models.py:211
msgid "Operator reference"
msgstr "Référence de l'opérateur"
-#: forms.py:337
+#: forms.py:440
msgid "Associated archaeological sites"
msgstr "Sites archéologiques associés"
-#: forms.py:357 models.py:172
+#: forms.py:459 models.py:215
msgid "Comment"
msgstr "Commentaire"
-#: forms.py:370
+#: forms.py:476
msgid ""
"If you want to set an excavation end date you have to provide a start date."
msgstr ""
"Avant de renseigner la date de fin de chantier, il est nécessaire de "
"renseigner une date de début."
-#: forms.py:373
+#: forms.py:479
msgid "The excavation end date cannot be before the start date."
msgstr "La date de fin de chantier ne peut être avant la date de début."
-#: forms.py:387
+#: forms.py:493
#, python-format
msgid ""
"Operation code already exist for year: %(year)d - use a value bigger than "
@@ -194,110 +266,110 @@ msgstr ""
"Ce code d'opération existe déjà pour l'année %(year)d - utilisez une valeur "
"plus grande que %(last_val)d"
-#: forms.py:391
+#: forms.py:497
msgid "Bad operation code"
msgstr "Mauvais code d'opération"
-#: forms.py:396
+#: forms.py:524
msgid "Preventive informations - excavation"
msgstr "Information archéologie préventive - fouille"
-#: forms.py:397 models.py:133
+#: forms.py:525 models.py:174
#: templates/ishtar/dashboards/dashboard_operation.html:495
msgid "Cost (€)"
msgstr "Cout (€)"
-#: forms.py:398 models.py:136
+#: forms.py:526 models.py:177
msgid "Scheduled man-days"
msgstr "Jours-hommes prévus"
-#: forms.py:400 models.py:138
+#: forms.py:528 models.py:179
msgid "Optional man-days"
msgstr "Jours-hommes optionnels"
-#: forms.py:402 models.py:140
+#: forms.py:530 models.py:181
msgid "Effective man-days"
msgstr "Jours-hommes effectifs"
-#: forms.py:411
+#: forms.py:539
msgid "Preventive informations - diagnostic"
msgstr "Information archéologie préventive - diagnostic"
-#: forms.py:414 models.py:153
+#: forms.py:542 models.py:194
msgid "Prescription on zoning"
msgstr "Prescription sur zonage"
-#: forms.py:416 models.py:156
+#: forms.py:544 models.py:197
msgid "Prescription on large area"
msgstr "Prescription sur une vaste surface"
-#: forms.py:418 models.py:159
+#: forms.py:546 models.py:200
msgid "Prescription on geoarchaeological context"
msgstr "Prescription sur un contexte géoarchéologique"
-#: forms.py:421 forms.py:442 models.py:132 models.py:503
+#: forms.py:549 forms.py:570 models.py:173 models.py:558
msgid "Towns"
msgstr "Communes"
-#: forms.py:447 models.py:567 models.py:613
-#: templates/ishtar/sheet_operation.html:118
-#: templates/ishtar/sheet_operation.html:150
+#: forms.py:575 models.py:653 models.py:727
+#: templates/ishtar/sheet_operation.html:100
+#: templates/ishtar/sheet_operation.html:132
msgid "Parcel"
msgstr "Parcelle"
-#: forms.py:473 forms.py:492 models.py:59
+#: forms.py:601 forms.py:620 models.py:91
msgid "Remain types"
msgstr "Types de vestige"
-#: forms.py:476 models.py:58
+#: forms.py:604 models.py:90
msgid "Remain type"
msgstr "Type de vestige"
-#: forms.py:488
+#: forms.py:616
msgid "There are identical remain types"
msgstr "Il y a des types de vestige identiques."
-#: forms.py:498
+#: forms.py:626
msgid "Period"
msgstr "Période"
-#: forms.py:510
+#: forms.py:638
msgid "There are identical periods"
msgstr "Il y a des périodes identiques."
-#: forms.py:517 models.py:78
+#: forms.py:645 models.py:110
msgid "Reference"
msgstr "Référence"
-#: forms.py:518 models.py:79
+#: forms.py:646 models.py:111
msgid "Name"
msgstr "Nom"
-#: forms.py:524
+#: forms.py:652
msgid "This reference already exists."
msgstr "Cette référence existe déjà."
-#: forms.py:533
+#: forms.py:661
msgid "Associated archaelogical sites"
msgstr "Entités archéologiques associées"
-#: forms.py:539 ishtar_menu.py:29
+#: forms.py:667 ishtar_menu.py:29
msgid "Search"
msgstr "Recherche"
-#: forms.py:543
+#: forms.py:671
msgid "Would you like to close this operation?"
msgstr "Voulez vous clore cette opération ?"
-#: forms.py:547
+#: forms.py:675
msgid "Would you like to delete this operation?"
msgstr "Voulez vous supprimer cette opération ?"
-#: forms.py:555 forms.py:613 models.py:399 models.py:432
+#: forms.py:683 forms.py:741 models.py:448 models.py:487
msgid "Index"
msgstr "Index"
-#: forms.py:578
+#: forms.py:706
#, python-format
msgid ""
"Index already exist for operation: %(operation)s - use a value bigger than "
@@ -306,69 +378,70 @@ msgstr ""
"Cet index existe déjà pour l'opération : %(operation)s, utilisez une valeur "
"plus grande que %(last_val)d"
-#: forms.py:589
+#: forms.py:717
msgid "Operation's town"
msgstr "Commune de l'opération"
-#: forms.py:592
+#: forms.py:720
msgid "Operation's year"
msgstr "Année de l'opération"
-#: forms.py:603
+#: forms.py:731
msgid "Documentation search"
msgstr "Recherche de document"
-#: forms.py:605
+#: forms.py:733
msgid "You should select a document."
msgstr "Vous devez sélectionner un document."
-#: forms.py:617 forms.py:648 models.py:419 models.py:429
+#: forms.py:745 forms.py:783 models.py:468 models.py:482
msgid "Act type"
msgstr "Type d'acte"
-#: forms.py:628
+#: forms.py:763
msgid "Administrative act search"
msgstr "Recherche d'actes administratifs"
-#: forms.py:640 forms.py:732
+#: forms.py:775 forms.py:868
msgid "You should select an administrative act."
msgstr "Vous devez sélectionner un acte administratif."
-#: forms.py:649 models.py:439
-msgid "Signatory"
-msgstr "Signataire"
-
-#: forms.py:653 models.py:449
+#: forms.py:788 models.py:508
msgid "Object"
msgstr "Objet"
-#: forms.py:655 models.py:447
+#: forms.py:790 models.py:505
msgid "Signature date"
msgstr "Date de signature"
-#: forms.py:670
+#: forms.py:805
msgid "Would you like to delete this administrative act?"
msgstr "Voulez vous supprimer cet acte administratif ?"
-#: forms.py:674
+#: forms.py:809
msgid "Template"
msgstr "Patron"
-#: forms.py:699
+#: forms.py:834
msgid "Doc generation"
msgstr "Generation de document"
-#: forms.py:701
+#: forms.py:836
msgid "Generate the associated doc?"
msgstr "Générer le document associé ?"
-#: forms.py:719 ishtar_menu.py:94 views.py:308
+#: forms.py:846
+msgid "Indexed?"
+msgstr "Indexé ?"
+
+#: forms.py:855 ishtar_menu.py:94 views.py:323
msgctxt "admin act register"
msgid "Register"
msgstr "Registre"
-#: ishtar_menu.py:27 models.py:180 models.py:374 models.py:397 models.py:409
-#: models.py:441 models.py:559 templates/ishtar/sheet_operation.html:6
+#: ishtar_menu.py:27 models.py:223 models.py:423 models.py:446 models.py:458
+#: models.py:499 models.py:645 wizards.py:291 wizards.py:301
+#: templates/ishtar/sheet_operation.html:6
msgid "Operation"
msgstr "Opération"
@@ -388,7 +461,7 @@ msgstr "Clotûre"
msgid "Deletion"
msgstr "Suppression"
-#: ishtar_menu.py:49 models.py:457
+#: ishtar_menu.py:49 models.py:518
#: templates/ishtar/sheet_administrativeact.html:6
msgid "Administrative act"
msgstr "Acte administratif"
@@ -417,304 +490,308 @@ msgstr "Tableau de bord"
msgid "General informations"
msgstr "Informations générales"
-#: ishtar_menu.py:105 models.py:181
+#: ishtar_menu.py:105 models.py:224
#: templates/ishtar/dashboards/dashboard_operation.html:9
msgid "Operations"
msgstr "Opérations"
-#: models.py:40
+#: models.py:40 models.py:95
+msgid "Order"
+msgstr "Ordre"
+
+#: models.py:41
msgid "Is preventive"
msgstr "Préventif"
-#: models.py:43
+#: models.py:44
msgid "Operation types"
msgstr "Types d'opération"
-#: models.py:63
-msgid "Order"
-msgstr "Ordre"
-
-#: models.py:65 models.py:615
+#: models.py:97 models.py:729
msgid "End date"
msgstr "Date de fin"
-#: models.py:66
+#: models.py:98
msgid "Parent period"
msgstr "Période parente"
-#: models.py:70
+#: models.py:102
msgid "Type Period"
msgstr "Type de période"
-#: models.py:71
+#: models.py:103
msgid "Types Period"
msgstr "Types de période"
-#: models.py:82
+#: models.py:114
msgid "Archaeological site"
msgstr "Entité archéologique"
-#: models.py:83 models.py:176
+#: models.py:115 models.py:219
msgid "Archaeological sites"
msgstr "Entités archéologiques"
-#: models.py:86
+#: models.py:118
msgid "Can view all Archaeological site"
msgstr "Peut voir toutes les entités archéologiques"
-#: models.py:88
+#: models.py:120
msgid "Can view own Archaeological site"
msgstr "Peut voir ses propres entités archéologiques"
-#: models.py:90
+#: models.py:122
msgid "Can add own Archaeological site"
msgstr "Peut ajouter ses propres entités archéologique"
-#: models.py:92
+#: models.py:124
msgid "Can change own Archaeological site"
msgstr "Peut changer ses propres entités archéologiques"
-#: models.py:94
+#: models.py:126
msgid "Can delete own Archaeological site"
msgstr "Peut supprimer ses propres entités archéologiques"
-#: models.py:110
+#: models.py:148
msgid "Closing date"
msgstr "Date de clotûre"
-#: models.py:114
+#: models.py:152
msgid "In charge scientist"
msgstr "Responsable scientifique"
-#: models.py:126 models.py:556
+#: models.py:167 models.py:642
msgid "File"
msgstr "Dossier"
-#: models.py:130
+#: models.py:171
msgid "Surface (m²)"
msgstr "Area (m²)"
-#: models.py:173
+#: models.py:216
msgid "Cached name"
msgstr "Nom en cache"
-#: models.py:183
+#: models.py:226
msgid "Can view all Operation"
msgstr "Peut voir toutes les Opérations"
-#: models.py:184
+#: models.py:227
msgid "Can view own Operation"
msgstr "Peut voir sa propre Opération"
-#: models.py:185
+#: models.py:228
msgid "Can add own Operation"
msgstr "Peut ajouter sa propre Opération"
-#: models.py:186
+#: models.py:229
msgid "Can change own Operation"
msgstr "Peut changer sa propre Opération"
-#: models.py:187
+#: models.py:230
msgid "Can delete own Operation"
msgstr "Peut supprimer sa propre Opération"
-#: models.py:188
+#: models.py:231
msgid "Can close Operation"
msgstr "Peut ferme une Opération"
-#: models.py:208
+#: models.py:260
msgid "OPE"
msgstr "OPE"
-#: models.py:245
+#: models.py:301
msgid "Intercommunal"
msgstr "Intercommunal"
-#: models.py:269
+#: models.py:328 models.py:457
msgid "Archaeological file"
msgstr "Dossier"
-#: models.py:312
+#: models.py:358
msgid "This operation code already exists for this year"
msgstr "Cet code d'opération existe déjà pour cette année."
-#: models.py:375 templates/ishtar/dashboards/dashboard_operation.html:273
+#: models.py:424 templates/ishtar/dashboards/dashboard_operation.html:273
#: templates/ishtar/dashboards/dashboard_operation.html:286
#: templates/ishtar/dashboards/dashboard_operation.html:453
#: templates/ishtar/dashboards/dashboard_operation.html:466
msgid "Department"
msgstr "Département"
-#: models.py:383
+#: models.py:432
msgid "Operation documentation"
msgstr "Documentation d'une opération"
-#: models.py:384
+#: models.py:433
msgid "Operation documentations"
msgstr "Documentations des opérations"
-#: models.py:387
+#: models.py:436
msgid "Can view all Operation source"
msgstr "Peut voir toutes les sources des opérations"
-#: models.py:389
+#: models.py:438
msgid "Can view own Operation source"
msgstr "Peut voir sa propre source d'opération"
-#: models.py:391
+#: models.py:440
msgid "Can add own Operation source"
msgstr "Peut ajouter sa propre source d'opération"
-#: models.py:393
+#: models.py:442
msgid "Can change own Operation source"
msgstr "Peut changer sa propre source d'opération"
-#: models.py:395
+#: models.py:444
msgid "Can delete own Operation source"
msgstr "Peut supprimer sa propre source d'opération"
-#: models.py:411
+#: models.py:460
msgid "Intended to"
msgstr "Destiné à"
-#: models.py:413
+#: models.py:462
msgid "Code"
msgstr "Code"
-#: models.py:415
+#: models.py:464
msgid "Associated template"
msgstr "Patron associé"
-#: models.py:417
+#: models.py:466
msgid "Indexed"
msgstr "Indexé"
-#: models.py:420
+#: models.py:469
msgid "Act types"
msgstr "Types d'acte"
-#: models.py:431
+#: models.py:485
msgid "Person in charge of the operation"
msgstr "Responsable d'opération"
-#: models.py:434
+#: models.py:489
msgid "Archaeological preventive operator"
msgstr "Opérateur d'archéologie préventive"
-#: models.py:458
+#: models.py:496
+msgid "Signatory"
+msgstr "Signataire"
+
+#: models.py:519
msgid "Administrative acts"
msgstr "Actes administratifs"
-#: models.py:461
+#: models.py:522
msgid "Can view all Administrative act"
msgstr "Peut voir tout les Actes administratifs"
-#: models.py:463
+#: models.py:524
msgid "Can view own Administrative act"
msgstr "Peut voir son propre Acte administratif"
-#: models.py:465
+#: models.py:526
msgid "Can add own Administrative act"
msgstr "Peut ajouter son propre Acte administratif"
-#: models.py:467
+#: models.py:528
msgid "Can change own Administrative act"
msgstr "Peut changer son propre Acte administratif"
-#: models.py:469
+#: models.py:530
msgid "Can delete own Administrative act"
msgstr "Peut supprimer son propre Acte administratif"
-#: models.py:477
+#: models.py:539
#: templates/ishtar/blocks/window_tables/administrativacts.html:5
msgid "Ref."
msgstr "Réf."
-#: models.py:549
+#: models.py:605
msgid "This index already exists for this year"
msgstr "Cet index existe déjà pour cette année."
-#: models.py:612
+#: models.py:725
msgid "Owner"
msgstr "Propriétaire"
-#: models.py:618
+#: models.py:732
msgid "Parcel owner"
msgstr "Propriétaire de parcelle"
-#: models.py:619
+#: models.py:733
msgid "Parcel owners"
msgstr "Propriétaires de parcelle"
-#: models.py:643
+#: models.py:757
msgid "Recorded"
msgstr "Enregistré"
-#: models.py:644
+#: models.py:758
msgid "Effective"
msgstr "Effectif"
-#: models.py:645
+#: models.py:759
msgid "Active"
msgstr "Actif"
-#: models.py:646
+#: models.py:760
msgid "Field completed"
msgstr "Terrain achevé"
-#: models.py:647
+#: models.py:761
msgid "Associated report"
msgstr "Rapport associé"
-#: models.py:648
+#: models.py:762
msgid "Closed"
msgstr "Fermé"
-#: models.py:649
+#: models.py:763
msgid "Documented and closed"
msgstr "Documenté et clôt"
-#: views.py:185
+#: views.py:200
msgid "New operation"
msgstr "Nouvelle opération"
-#: views.py:216
+#: views.py:231
msgid "Operation modification"
msgstr "Modification d'une opération"
-#: views.py:246
+#: views.py:261
msgid "Operation closing"
msgstr "Clotûre de l'opération"
-#: views.py:252
+#: views.py:267
msgid "Operation deletion"
msgstr "Suppression d'une opération"
-#: views.py:260
+#: views.py:275
msgid "Operation: source creation"
msgstr "Operation : nouvelle documentation associée"
-#: views.py:268
+#: views.py:283
msgid "Operation: source modification"
msgstr "Operation : modification d'une documentation associée"
-#: views.py:274
+#: views.py:289
msgid "Operation: source deletion"
msgstr "Operation : suppression d'une documentation associée"
-#: views.py:283
+#: views.py:298
msgid "Operation: new administrative act"
msgstr "Operation : nouvel acte administratif"
-#: views.py:293
+#: views.py:308
msgid "Operation: administrative act modification"
msgstr "Operation : modification d'un acte administratif"
-#: views.py:302
+#: views.py:317
msgid "Operation: administrative act deletion"
msgstr "Operation : suppression d'un acte administratif"
-#: wizards.py:168
+#: wizards.py:165
msgid ""
"Warning: No Archaelogical File is provided. If you have forget it return to "
"the first step."
@@ -924,108 +1001,100 @@ msgstr "Code postal :"
msgid "Associated parcels"
msgstr "Parcelles associées"
-#: templates/ishtar/sheet_operation.html:86
-msgid "Commune"
-msgstr "Commune"
-
-#: templates/ishtar/sheet_operation.html:101
-msgid "No parcel associated to this operation"
-msgstr "Pas de parcelle associée à cette opération"
-
-#: templates/ishtar/sheet_operation.html:105
+#: templates/ishtar/sheet_operation.html:87
msgid "Administrativ acts"
msgstr "Actes administratifs"
-#: templates/ishtar/sheet_operation.html:108
+#: templates/ishtar/sheet_operation.html:90
msgid "Document from this operation"
msgstr "Documents de cette opération"
-#: templates/ishtar/sheet_operation.html:112
+#: templates/ishtar/sheet_operation.html:94
msgid "Context records"
msgstr "Unité d'Enregistrement"
-#: templates/ishtar/sheet_operation.html:114
+#: templates/ishtar/sheet_operation.html:96
msgid "ID"
msgstr "Identifiant"
-#: templates/ishtar/sheet_operation.html:115
+#: templates/ishtar/sheet_operation.html:97
#: templates/ishtar/blocks/window_tables/administrativacts.html:6
#: templates/ishtar/dashboards/dashboard_operation.html:82
msgid "Type"
msgstr "Type"
-#: templates/ishtar/sheet_operation.html:116
+#: templates/ishtar/sheet_operation.html:98
msgid "Chronology"
msgstr "Chronologie"
-#: templates/ishtar/sheet_operation.html:117
-#: templates/ishtar/sheet_operation.html:147
+#: templates/ishtar/sheet_operation.html:99
+#: templates/ishtar/sheet_operation.html:129
msgid "Description"
msgstr "Description"
-#: templates/ishtar/sheet_operation.html:128
-#: templates/ishtar/sheet_operation.html:171
+#: templates/ishtar/sheet_operation.html:110
+#: templates/ishtar/sheet_operation.html:153
msgid "Details"
msgstr "Détails"
-#: templates/ishtar/sheet_operation.html:131
+#: templates/ishtar/sheet_operation.html:113
msgid "No context record associated to this operation"
msgstr "Pas d'Unité d'Enregistrement associée à cette opération"
-#: templates/ishtar/sheet_operation.html:135
+#: templates/ishtar/sheet_operation.html:117
msgid "Documents from associated context records"
msgstr "Documents d'Unité d'Enregistrement associés"
-#: templates/ishtar/sheet_operation.html:140
+#: templates/ishtar/sheet_operation.html:122
msgid "Finds"
msgstr "Mobilier"
-#: templates/ishtar/sheet_operation.html:142
+#: templates/ishtar/sheet_operation.html:124
msgid "Complete Id"
msgstr "Id complet"
-#: templates/ishtar/sheet_operation.html:143
+#: templates/ishtar/sheet_operation.html:125
msgid "Short Id"
msgstr "Id court"
-#: templates/ishtar/sheet_operation.html:144
+#: templates/ishtar/sheet_operation.html:126
msgid "Material type"
msgstr "Type de matériau"
-#: templates/ishtar/sheet_operation.html:145
+#: templates/ishtar/sheet_operation.html:127
msgctxt "short"
msgid "Context record"
msgstr "UE"
-#: templates/ishtar/sheet_operation.html:148
+#: templates/ishtar/sheet_operation.html:130
msgid "Weight"
msgstr "Poids"
-#: templates/ishtar/sheet_operation.html:149
+#: templates/ishtar/sheet_operation.html:131
msgid "Numbers"
msgstr "Nombre"
-#: templates/ishtar/sheet_operation.html:151
+#: templates/ishtar/sheet_operation.html:133
msgid "Container ref."
msgstr "Réf. du contenant"
-#: templates/ishtar/sheet_operation.html:152
+#: templates/ishtar/sheet_operation.html:134
msgid "Warehouse"
msgstr "Dépôt"
-#: templates/ishtar/sheet_operation.html:175
+#: templates/ishtar/sheet_operation.html:157
msgid "No find associated to context record"
msgstr "Pas de mobilier associé à cette Unité d'Enregistrement"
-#: templates/ishtar/sheet_operation.html:178
+#: templates/ishtar/sheet_operation.html:160
msgid "No find associated to parcel"
msgstr "Pas de mobilier associé à cette parcelle"
-#: templates/ishtar/sheet_operation.html:178
+#: templates/ishtar/sheet_operation.html:160
msgid "(no context record)"
msgstr "(pas d'Unité d'Enregistrement)"
-#: templates/ishtar/sheet_operation.html:183
+#: templates/ishtar/sheet_operation.html:165
msgid "Documents from associated finds"
msgstr "Documents concernant le mobilier associé"
@@ -1037,6 +1106,10 @@ msgstr "Date"
msgid "No administrative act associated"
msgstr "Aucun acte administratif associé"
+#: templates/ishtar/blocks/window_tables/parcels.html:20
+msgid "No parcel"
+msgstr "Pas de parcelle"
+
#: templates/ishtar/dashboards/dashboard_operation.html:11
msgid "Global informations"
msgstr "Informations générales"
@@ -1268,6 +1341,16 @@ msgstr "Coût FNAP"
msgid "Main towns by cost"
msgstr "Principales communes par coût"
+#: templates/ishtar/wizard/wizard_adminact_deletion.html:6
+msgid "This act is indexed!"
+msgstr "Cet acte est indexé !"
+
+#~ msgid "Commune"
+#~ msgstr "Commune"
+
+#~ msgid "No parcel associated to this operation"
+#~ msgstr "Pas de parcelle associée à cette opération"
+
#~ msgid "Person in charge of the scientific part"
#~ msgstr "Responsable scientifique"
diff --git a/archaeological_operations/migrations/0027_auto__add_field_historicaloperation_creation_date__add_field_operation.py b/archaeological_operations/migrations/0027_auto__add_field_historicaloperation_creation_date__add_field_operation.py
new file mode 100644
index 000000000..2a21c1569
--- /dev/null
+++ b/archaeological_operations/migrations/0027_auto__add_field_historicaloperation_creation_date__add_field_operation.py
@@ -0,0 +1,462 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding field 'HistoricalOperation.creation_date'
+ db.add_column('archaeological_operations_historicaloperation', 'creation_date',
+ self.gf('django.db.models.fields.DateField')(default=datetime.date.today, null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'Operation.creation_date'
+ db.add_column('archaeological_operations_operation', 'creation_date',
+ self.gf('django.db.models.fields.DateField')(default=datetime.date.today, null=True, blank=True),
+ keep_default=False)
+
+
+ def backwards(self, orm):
+ # Deleting field 'HistoricalOperation.creation_date'
+ db.delete_column('archaeological_operations_historicaloperation', 'creation_date')
+
+ # Deleting field 'Operation.creation_date'
+ db.delete_column('archaeological_operations_operation', 'creation_date')
+
+
+ models = {
+ 'archaeological_files.file': {
+ 'Meta': {'ordering': "('cached_label',)", 'object_name': 'File'},
+ 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'cached_label': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'cira_advised': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'classified_area': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today'}),
+ 'departments': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'file_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.FileType']"}),
+ 'general_contractor': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'general_contractor'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'file_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '60', 'null': 'True', 'blank': 'True'}),
+ 'mh_listing': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'mh_register': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'numeric_reference': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'organization': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'permit_reference': ('django.db.models.fields.CharField', [], {'max_length': '60', 'null': 'True', 'blank': 'True'}),
+ 'permit_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.PermitType']", 'null': 'True', 'blank': 'True'}),
+ 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'protected_area': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'reception_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'reference_number': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'related_file': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.File']", 'null': 'True', 'blank': 'True'}),
+ 'requested_operation_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['archaeological_operations.OperationType']"}),
+ 'research_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'responsible_town_planning_service': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'responsible_town_planning_service'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'saisine_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.SaisineType']", 'null': 'True', 'blank': 'True'}),
+ 'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scientist'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'total_developed_surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'total_surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'towns': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'file'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Town']"}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2014'})
+ },
+ 'archaeological_files.filetype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'FileType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'archaeological_files.permittype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'PermitType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'archaeological_files.saisinetype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'SaisineType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'delay': ('django.db.models.fields.IntegerField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'archaeological_operations.acttype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'ActType'},
+ 'associated_template': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'acttypes'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.DocumentTemplate']"}),
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'indexed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'intented_to': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'archaeological_operations.administrativeact': {
+ 'Meta': {'ordering': "('year', 'index', 'act_type')", 'object_name': 'AdministrativeAct'},
+ 'act_object': ('django.db.models.fields.TextField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}),
+ 'act_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.ActType']"}),
+ 'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_files.File']"}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_operation_in_charge'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_operations.Operation']"}),
+ 'operator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_operator'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'ref_sra': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
+ 'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_scientist'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'signatory': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'signatory'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'signature_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.archaeologicalsite': {
+ 'Meta': {'object_name': 'ArchaeologicalSite'},
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'reference': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20'})
+ },
+ 'archaeological_operations.historicaladministrativeact': {
+ 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalAdministrativeAct'},
+ 'act_object': ('django.db.models.fields.TextField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}),
+ 'act_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'associated_file_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'history_creator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'history_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'history_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'history_modifier_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'history_type': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
+ 'history_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'blank': 'True'}),
+ 'in_charge_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'operator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'ref_sra': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
+ 'scientist_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'signatory_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'signature_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.historicaloperation': {
+ 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalOperation'},
+ 'associated_file_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'cached_label': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'cira_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'cira_rapporteur_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'code_dracar': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'code_patriarche': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'common_name': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
+ 'cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today', 'null': 'True', 'blank': 'True'}),
+ 'eas_number': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'effective_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'excavation_end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_financing': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'geoarchaeological_context_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'history_creator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'history_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'history_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'history_modifier_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'history_type': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
+ 'history_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'blank': 'True'}),
+ 'in_charge_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'large_area_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'negative_result': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_code': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'operator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'operator_reference': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'optional_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'report_delivery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'scheduled_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'scientist_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'zoning_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.operation': {
+ 'Meta': {'ordering': "('cached_label',)", 'object_name': 'Operation'},
+ 'archaeological_sites': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_operations.ArchaeologicalSite']", 'symmetrical': 'False'}),
+ 'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operations'", 'null': 'True', 'to': "orm['archaeological_files.File']"}),
+ 'cached_label': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'cira_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'cira_rapporteur': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'cira_rapporteur'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'code_dracar': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'code_patriarche': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'common_name': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
+ 'cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today', 'null': 'True', 'blank': 'True'}),
+ 'eas_number': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'effective_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'excavation_end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_financing': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'geoarchaeological_context_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operation_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'large_area_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'negative_result': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_code': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['archaeological_operations.OperationType']"}),
+ 'operator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operator'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'operator_reference': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'optional_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'periods': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_operations.Period']", 'symmetrical': 'False'}),
+ 'remains': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_operations.RemainType']", 'symmetrical': 'False'}),
+ 'report_delivery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'scheduled_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operation_scientist_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'towns': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.Town']", 'symmetrical': 'False'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'zoning_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.operationbydepartment': {
+ 'Meta': {'object_name': 'OperationByDepartment', 'db_table': "'operation_department'", 'managed': 'False'},
+ 'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Operation']"})
+ },
+ 'archaeological_operations.operationsource': {
+ 'Meta': {'object_name': 'OperationSource'},
+ 'associated_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'authors': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'operationsource_related'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Author']"}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '25', 'null': 'True', 'blank': 'True'}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'source'", 'to': "orm['archaeological_operations.Operation']"}),
+ 'receipt_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'reference': ('django.db.models.fields.CharField', [], {'max_length': '25', 'null': 'True', 'blank': 'True'}),
+ 'source_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.SourceType']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'})
+ },
+ 'archaeological_operations.operationtype': {
+ 'Meta': {'ordering': "['-preventive', 'order', 'label']", 'object_name': 'OperationType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'preventive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'archaeological_operations.parcel': {
+ 'Meta': {'ordering': "('year', 'section', 'parcel_number')", 'object_name': 'Parcel'},
+ 'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'parcels'", 'null': 'True', 'to': "orm['archaeological_files.File']"}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'parcels'", 'null': 'True', 'to': "orm['archaeological_operations.Operation']"}),
+ 'parcel_number': ('django.db.models.fields.CharField', [], {'max_length': '6'}),
+ 'section': ('django.db.models.fields.CharField', [], {'max_length': '4'}),
+ 'town': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'parcels'", 'to': "orm['ishtar_common.Town']"}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.parcelowner': {
+ 'Meta': {'object_name': 'ParcelOwner'},
+ 'end_date': ('django.db.models.fields.DateField', [], {}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'parcel_owner'", 'to': "orm['ishtar_common.Person']"}),
+ 'parcel': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Parcel']"}),
+ 'start_date': ('django.db.models.fields.DateField', [], {})
+ },
+ 'archaeological_operations.period': {
+ 'Meta': {'ordering': "('order',)", 'object_name': 'Period'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.IntegerField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}),
+ 'start_date': ('django.db.models.fields.IntegerField', [], {}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'archaeological_operations.remaintype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'RemainType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ },
+ 'ishtar_common.arrondissement': {
+ 'Meta': {'object_name': 'Arrondissement'},
+ 'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '30'})
+ },
+ 'ishtar_common.author': {
+ 'Meta': {'object_name': 'Author'},
+ 'author_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.AuthorType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'author'", 'to': "orm['ishtar_common.Person']"})
+ },
+ 'ishtar_common.authortype': {
+ 'Meta': {'object_name': 'AuthorType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'ishtar_common.canton': {
+ 'Meta': {'object_name': 'Canton'},
+ 'arrondissement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Arrondissement']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '30'})
+ },
+ 'ishtar_common.department': {
+ 'Meta': {'ordering': "['number']", 'object_name': 'Department'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
+ 'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'})
+ },
+ 'ishtar_common.documenttemplate': {
+ 'Meta': {'ordering': "['associated_object_name']", 'object_name': 'DocumentTemplate'},
+ 'associated_object_name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'template': ('django.db.models.fields.files.FileField', [], {'max_length': '100'})
+ },
+ 'ishtar_common.organization': {
+ 'Meta': {'object_name': 'Organization'},
+ 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'organization_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.OrganizationType']"}),
+ 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}),
+ 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'town': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'})
+ },
+ 'ishtar_common.organizationtype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'OrganizationType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'ishtar_common.person': {
+ 'Meta': {'object_name': 'Person'},
+ 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'attached_to': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'members'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
+ 'person_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.PersonType']", 'symmetrical': 'False'}),
+ 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}),
+ 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'surname': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '2'}),
+ 'town': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'})
+ },
+ 'ishtar_common.persontype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'PersonType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'ishtar_common.sourcetype': {
+ 'Meta': {'object_name': 'SourceType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'ishtar_common.town': {
+ 'Meta': {'ordering': "['numero_insee']", 'object_name': 'Town'},
+ 'canton': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Canton']", 'null': 'True', 'blank': 'True'}),
+ 'center': ('django.contrib.gis.db.models.fields.PointField', [], {'srid': '27572', 'null': 'True', 'blank': 'True'}),
+ 'departement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'numero_insee': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '6'}),
+ 'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ }
+ }
+
+ complete_apps = ['archaeological_operations'] \ No newline at end of file
diff --git a/archaeological_operations/migrations/0028_init_creation_date.py b/archaeological_operations/migrations/0028_init_creation_date.py
new file mode 100644
index 000000000..0136fb217
--- /dev/null
+++ b/archaeological_operations/migrations/0028_init_creation_date.py
@@ -0,0 +1,457 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+
+class Migration(DataMigration):
+
+ def forwards(self, orm):
+ for item in orm['archaeological_operations.Operation'].objects.all():
+ q = orm['archaeological_operations.HistoricalOperation'].objects.filter(
+ id=item.id, history_date__isnull=False
+ ).order_by('history_date', 'history_id')
+ if not q.count():
+ return
+ hist_item = q.all()[0]
+ item.creation_date = hist_item.history_date
+ item.skip_history_when_saving = True
+ item.save()
+
+ def backwards(self, orm):
+ pass
+
+ models = {
+ 'archaeological_files.file': {
+ 'Meta': {'ordering': "('cached_label',)", 'object_name': 'File'},
+ 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'cached_label': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'cira_advised': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'classified_area': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today'}),
+ 'departments': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'file_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.FileType']"}),
+ 'general_contractor': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'general_contractor'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'file_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '60', 'null': 'True', 'blank': 'True'}),
+ 'mh_listing': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'mh_register': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'numeric_reference': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'organization': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'permit_reference': ('django.db.models.fields.CharField', [], {'max_length': '60', 'null': 'True', 'blank': 'True'}),
+ 'permit_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.PermitType']", 'null': 'True', 'blank': 'True'}),
+ 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'protected_area': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'reception_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'reference_number': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'related_file': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.File']", 'null': 'True', 'blank': 'True'}),
+ 'requested_operation_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['archaeological_operations.OperationType']"}),
+ 'research_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'responsible_town_planning_service': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'responsible_town_planning_service'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'saisine_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.SaisineType']", 'null': 'True', 'blank': 'True'}),
+ 'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scientist'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'total_developed_surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'total_surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'towns': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'file'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Town']"}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2014'})
+ },
+ 'archaeological_files.filetype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'FileType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'archaeological_files.permittype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'PermitType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'archaeological_files.saisinetype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'SaisineType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'delay': ('django.db.models.fields.IntegerField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'archaeological_operations.acttype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'ActType'},
+ 'associated_template': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'acttypes'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.DocumentTemplate']"}),
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'indexed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'intented_to': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'archaeological_operations.administrativeact': {
+ 'Meta': {'ordering': "('year', 'index', 'act_type')", 'object_name': 'AdministrativeAct'},
+ 'act_object': ('django.db.models.fields.TextField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}),
+ 'act_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.ActType']"}),
+ 'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_files.File']"}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_operation_in_charge'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_operations.Operation']"}),
+ 'operator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_operator'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'ref_sra': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
+ 'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_scientist'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'signatory': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'signatory'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'signature_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.archaeologicalsite': {
+ 'Meta': {'object_name': 'ArchaeologicalSite'},
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'reference': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20'})
+ },
+ 'archaeological_operations.historicaladministrativeact': {
+ 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalAdministrativeAct'},
+ 'act_object': ('django.db.models.fields.TextField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}),
+ 'act_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'associated_file_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'history_creator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'history_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'history_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'history_modifier_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'history_type': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
+ 'history_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'blank': 'True'}),
+ 'in_charge_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'operator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'ref_sra': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
+ 'scientist_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'signatory_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'signature_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.historicaloperation': {
+ 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalOperation'},
+ 'associated_file_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'cached_label': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'cira_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'cira_rapporteur_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'code_dracar': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'code_patriarche': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'common_name': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
+ 'cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today', 'null': 'True', 'blank': 'True'}),
+ 'eas_number': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'effective_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'excavation_end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_financing': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'geoarchaeological_context_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'history_creator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'history_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'history_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'history_modifier_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'history_type': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
+ 'history_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'blank': 'True'}),
+ 'in_charge_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'large_area_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'negative_result': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_code': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'operator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'operator_reference': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'optional_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'report_delivery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'scheduled_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'scientist_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'zoning_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.operation': {
+ 'Meta': {'ordering': "('cached_label',)", 'object_name': 'Operation'},
+ 'archaeological_sites': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_operations.ArchaeologicalSite']", 'symmetrical': 'False'}),
+ 'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operations'", 'null': 'True', 'to': "orm['archaeological_files.File']"}),
+ 'cached_label': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'cira_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'cira_rapporteur': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'cira_rapporteur'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'code_dracar': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'code_patriarche': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'common_name': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
+ 'cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today', 'null': 'True', 'blank': 'True'}),
+ 'eas_number': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'effective_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'excavation_end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_financing': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'geoarchaeological_context_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operation_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'large_area_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'negative_result': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_code': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['archaeological_operations.OperationType']"}),
+ 'operator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operator'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'operator_reference': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'optional_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'periods': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_operations.Period']", 'symmetrical': 'False'}),
+ 'remains': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_operations.RemainType']", 'symmetrical': 'False'}),
+ 'report_delivery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'scheduled_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operation_scientist_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'towns': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.Town']", 'symmetrical': 'False'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'zoning_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.operationbydepartment': {
+ 'Meta': {'object_name': 'OperationByDepartment', 'db_table': "'operation_department'", 'managed': 'False'},
+ 'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Operation']"})
+ },
+ 'archaeological_operations.operationsource': {
+ 'Meta': {'object_name': 'OperationSource'},
+ 'associated_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'authors': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'operationsource_related'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Author']"}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '25', 'null': 'True', 'blank': 'True'}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'source'", 'to': "orm['archaeological_operations.Operation']"}),
+ 'receipt_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'reference': ('django.db.models.fields.CharField', [], {'max_length': '25', 'null': 'True', 'blank': 'True'}),
+ 'source_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.SourceType']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'})
+ },
+ 'archaeological_operations.operationtype': {
+ 'Meta': {'ordering': "['-preventive', 'order', 'label']", 'object_name': 'OperationType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'preventive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'archaeological_operations.parcel': {
+ 'Meta': {'ordering': "('year', 'section', 'parcel_number')", 'object_name': 'Parcel'},
+ 'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'parcels'", 'null': 'True', 'to': "orm['archaeological_files.File']"}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'parcels'", 'null': 'True', 'to': "orm['archaeological_operations.Operation']"}),
+ 'parcel_number': ('django.db.models.fields.CharField', [], {'max_length': '6'}),
+ 'section': ('django.db.models.fields.CharField', [], {'max_length': '4'}),
+ 'town': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'parcels'", 'to': "orm['ishtar_common.Town']"}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.parcelowner': {
+ 'Meta': {'object_name': 'ParcelOwner'},
+ 'end_date': ('django.db.models.fields.DateField', [], {}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'parcel_owner'", 'to': "orm['ishtar_common.Person']"}),
+ 'parcel': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Parcel']"}),
+ 'start_date': ('django.db.models.fields.DateField', [], {})
+ },
+ 'archaeological_operations.period': {
+ 'Meta': {'ordering': "('order',)", 'object_name': 'Period'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.IntegerField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}),
+ 'start_date': ('django.db.models.fields.IntegerField', [], {}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'archaeological_operations.remaintype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'RemainType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ },
+ 'ishtar_common.arrondissement': {
+ 'Meta': {'object_name': 'Arrondissement'},
+ 'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '30'})
+ },
+ 'ishtar_common.author': {
+ 'Meta': {'object_name': 'Author'},
+ 'author_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.AuthorType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'author'", 'to': "orm['ishtar_common.Person']"})
+ },
+ 'ishtar_common.authortype': {
+ 'Meta': {'object_name': 'AuthorType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'ishtar_common.canton': {
+ 'Meta': {'object_name': 'Canton'},
+ 'arrondissement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Arrondissement']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '30'})
+ },
+ 'ishtar_common.department': {
+ 'Meta': {'ordering': "['number']", 'object_name': 'Department'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
+ 'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'})
+ },
+ 'ishtar_common.documenttemplate': {
+ 'Meta': {'ordering': "['associated_object_name']", 'object_name': 'DocumentTemplate'},
+ 'associated_object_name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'template': ('django.db.models.fields.files.FileField', [], {'max_length': '100'})
+ },
+ 'ishtar_common.organization': {
+ 'Meta': {'object_name': 'Organization'},
+ 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'organization_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.OrganizationType']"}),
+ 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}),
+ 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'town': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'})
+ },
+ 'ishtar_common.organizationtype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'OrganizationType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'ishtar_common.person': {
+ 'Meta': {'object_name': 'Person'},
+ 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'attached_to': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'members'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
+ 'person_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.PersonType']", 'symmetrical': 'False'}),
+ 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}),
+ 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'surname': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '2'}),
+ 'town': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'})
+ },
+ 'ishtar_common.persontype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'PersonType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'ishtar_common.sourcetype': {
+ 'Meta': {'object_name': 'SourceType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'ishtar_common.town': {
+ 'Meta': {'ordering': "['numero_insee']", 'object_name': 'Town'},
+ 'canton': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Canton']", 'null': 'True', 'blank': 'True'}),
+ 'center': ('django.contrib.gis.db.models.fields.PointField', [], {'srid': '27572', 'null': 'True', 'blank': 'True'}),
+ 'departement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'numero_insee': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '6'}),
+ 'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ }
+ }
+
+ complete_apps = ['archaeological_operations']
+ symmetrical = True
diff --git a/archaeological_operations/migrations/0029_auto__chg_field_historicaloperation_creation_date__chg_field_operation.py b/archaeological_operations/migrations/0029_auto__chg_field_historicaloperation_creation_date__chg_field_operation.py
new file mode 100644
index 000000000..d5b36444a
--- /dev/null
+++ b/archaeological_operations/migrations/0029_auto__chg_field_historicaloperation_creation_date__chg_field_operation.py
@@ -0,0 +1,458 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Changing field 'HistoricalOperation.creation_date'
+ db.alter_column('archaeological_operations_historicaloperation', 'creation_date', self.gf('django.db.models.fields.DateField')())
+
+ # Changing field 'Operation.creation_date'
+ db.alter_column('archaeological_operations_operation', 'creation_date', self.gf('django.db.models.fields.DateField')())
+
+ def backwards(self, orm):
+
+ # Changing field 'HistoricalOperation.creation_date'
+ db.alter_column('archaeological_operations_historicaloperation', 'creation_date', self.gf('django.db.models.fields.DateField')(null=True))
+
+ # Changing field 'Operation.creation_date'
+ db.alter_column('archaeological_operations_operation', 'creation_date', self.gf('django.db.models.fields.DateField')(null=True))
+
+ models = {
+ 'archaeological_files.file': {
+ 'Meta': {'ordering': "('cached_label',)", 'object_name': 'File'},
+ 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'cached_label': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'cira_advised': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'classified_area': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today'}),
+ 'departments': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'file_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.FileType']"}),
+ 'general_contractor': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'general_contractor'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'file_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '60', 'null': 'True', 'blank': 'True'}),
+ 'mh_listing': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'mh_register': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'numeric_reference': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'organization': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'permit_reference': ('django.db.models.fields.CharField', [], {'max_length': '60', 'null': 'True', 'blank': 'True'}),
+ 'permit_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.PermitType']", 'null': 'True', 'blank': 'True'}),
+ 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'protected_area': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'reception_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'reference_number': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'related_file': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.File']", 'null': 'True', 'blank': 'True'}),
+ 'requested_operation_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['archaeological_operations.OperationType']"}),
+ 'research_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'responsible_town_planning_service': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'responsible_town_planning_service'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'saisine_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.SaisineType']", 'null': 'True', 'blank': 'True'}),
+ 'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scientist'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'total_developed_surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'total_surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'towns': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'file'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Town']"}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2014'})
+ },
+ 'archaeological_files.filetype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'FileType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'archaeological_files.permittype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'PermitType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'archaeological_files.saisinetype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'SaisineType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'delay': ('django.db.models.fields.IntegerField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'archaeological_operations.acttype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'ActType'},
+ 'associated_template': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'acttypes'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.DocumentTemplate']"}),
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'indexed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'intented_to': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'archaeological_operations.administrativeact': {
+ 'Meta': {'ordering': "('year', 'index', 'act_type')", 'object_name': 'AdministrativeAct'},
+ 'act_object': ('django.db.models.fields.TextField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}),
+ 'act_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.ActType']"}),
+ 'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_files.File']"}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_operation_in_charge'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_operations.Operation']"}),
+ 'operator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_operator'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'ref_sra': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
+ 'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_scientist'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'signatory': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'signatory'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'signature_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.archaeologicalsite': {
+ 'Meta': {'object_name': 'ArchaeologicalSite'},
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'reference': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20'})
+ },
+ 'archaeological_operations.historicaladministrativeact': {
+ 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalAdministrativeAct'},
+ 'act_object': ('django.db.models.fields.TextField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}),
+ 'act_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'associated_file_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'history_creator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'history_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'history_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'history_modifier_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'history_type': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
+ 'history_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'blank': 'True'}),
+ 'in_charge_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'operator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'ref_sra': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
+ 'scientist_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'signatory_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'signature_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.historicaloperation': {
+ 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalOperation'},
+ 'associated_file_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'cached_label': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'cira_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'cira_rapporteur_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'code_dracar': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'code_patriarche': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'common_name': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
+ 'cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today'}),
+ 'eas_number': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'effective_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'excavation_end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_financing': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'geoarchaeological_context_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'history_creator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'history_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'history_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'history_modifier_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'history_type': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
+ 'history_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'blank': 'True'}),
+ 'in_charge_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'large_area_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'negative_result': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_code': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'operator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'operator_reference': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'optional_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'report_delivery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'scheduled_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'scientist_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'zoning_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.operation': {
+ 'Meta': {'ordering': "('cached_label',)", 'object_name': 'Operation'},
+ 'archaeological_sites': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_operations.ArchaeologicalSite']", 'symmetrical': 'False'}),
+ 'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operations'", 'null': 'True', 'to': "orm['archaeological_files.File']"}),
+ 'cached_label': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'cira_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'cira_rapporteur': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'cira_rapporteur'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'code_dracar': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'code_patriarche': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'common_name': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
+ 'cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today'}),
+ 'eas_number': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'effective_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'excavation_end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_financing': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'geoarchaeological_context_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operation_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'large_area_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'negative_result': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_code': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['archaeological_operations.OperationType']"}),
+ 'operator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operator'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'operator_reference': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'optional_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'periods': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_operations.Period']", 'symmetrical': 'False'}),
+ 'remains': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_operations.RemainType']", 'symmetrical': 'False'}),
+ 'report_delivery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'scheduled_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operation_scientist_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'towns': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.Town']", 'symmetrical': 'False'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'zoning_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.operationbydepartment': {
+ 'Meta': {'object_name': 'OperationByDepartment', 'db_table': "'operation_department'", 'managed': 'False'},
+ 'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Operation']"})
+ },
+ 'archaeological_operations.operationsource': {
+ 'Meta': {'object_name': 'OperationSource'},
+ 'associated_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'authors': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'operationsource_related'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Author']"}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '25', 'null': 'True', 'blank': 'True'}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'source'", 'to': "orm['archaeological_operations.Operation']"}),
+ 'receipt_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'reference': ('django.db.models.fields.CharField', [], {'max_length': '25', 'null': 'True', 'blank': 'True'}),
+ 'source_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.SourceType']"}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'})
+ },
+ 'archaeological_operations.operationtype': {
+ 'Meta': {'ordering': "['-preventive', 'order', 'label']", 'object_name': 'OperationType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'preventive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'archaeological_operations.parcel': {
+ 'Meta': {'ordering': "('year', 'section', 'parcel_number')", 'object_name': 'Parcel'},
+ 'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'parcels'", 'null': 'True', 'to': "orm['archaeological_files.File']"}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'parcels'", 'null': 'True', 'to': "orm['archaeological_operations.Operation']"}),
+ 'parcel_number': ('django.db.models.fields.CharField', [], {'max_length': '6'}),
+ 'section': ('django.db.models.fields.CharField', [], {'max_length': '4'}),
+ 'town': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'parcels'", 'to': "orm['ishtar_common.Town']"}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.parcelowner': {
+ 'Meta': {'object_name': 'ParcelOwner'},
+ 'end_date': ('django.db.models.fields.DateField', [], {}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'parcel_owner'", 'to': "orm['ishtar_common.Person']"}),
+ 'parcel': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Parcel']"}),
+ 'start_date': ('django.db.models.fields.DateField', [], {})
+ },
+ 'archaeological_operations.period': {
+ 'Meta': {'ordering': "('order',)", 'object_name': 'Period'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.IntegerField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}),
+ 'start_date': ('django.db.models.fields.IntegerField', [], {}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'archaeological_operations.remaintype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'RemainType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ },
+ 'ishtar_common.arrondissement': {
+ 'Meta': {'object_name': 'Arrondissement'},
+ 'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '30'})
+ },
+ 'ishtar_common.author': {
+ 'Meta': {'object_name': 'Author'},
+ 'author_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.AuthorType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'author'", 'to': "orm['ishtar_common.Person']"})
+ },
+ 'ishtar_common.authortype': {
+ 'Meta': {'object_name': 'AuthorType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'ishtar_common.canton': {
+ 'Meta': {'object_name': 'Canton'},
+ 'arrondissement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Arrondissement']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '30'})
+ },
+ 'ishtar_common.department': {
+ 'Meta': {'ordering': "['number']", 'object_name': 'Department'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
+ 'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'})
+ },
+ 'ishtar_common.documenttemplate': {
+ 'Meta': {'ordering': "['associated_object_name']", 'object_name': 'DocumentTemplate'},
+ 'associated_object_name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'template': ('django.db.models.fields.files.FileField', [], {'max_length': '100'})
+ },
+ 'ishtar_common.organization': {
+ 'Meta': {'object_name': 'Organization'},
+ 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'organization_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.OrganizationType']"}),
+ 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}),
+ 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'town': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'})
+ },
+ 'ishtar_common.organizationtype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'OrganizationType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'ishtar_common.person': {
+ 'Meta': {'object_name': 'Person'},
+ 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'attached_to': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'members'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['auth.User']"}),
+ 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
+ 'person_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.PersonType']", 'symmetrical': 'False'}),
+ 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}),
+ 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'surname': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '2'}),
+ 'town': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'})
+ },
+ 'ishtar_common.persontype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'PersonType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'ishtar_common.sourcetype': {
+ 'Meta': {'object_name': 'SourceType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'ishtar_common.town': {
+ 'Meta': {'ordering': "['numero_insee']", 'object_name': 'Town'},
+ 'canton': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Canton']", 'null': 'True', 'blank': 'True'}),
+ 'center': ('django.contrib.gis.db.models.fields.PointField', [], {'srid': '27572', 'null': 'True', 'blank': 'True'}),
+ 'departement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'numero_insee': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '6'}),
+ 'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ }
+ }
+
+ complete_apps = ['archaeological_operations'] \ No newline at end of file
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index 9f81a0e1c..a4a225ff0 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -33,7 +33,7 @@ from ishtar_common.utils import cached_label_changed
from ishtar_common.models import GeneralType, BaseHistorizedItem, \
HistoricalRecords, LightHistorizedItem, OwnPerms, Department, Source,\
Person, Organization, Town, Dashboard, IshtarUser, ValueGetter, \
- DocumentTemplate, ShortMenuItem
+ DocumentTemplate, ShortMenuItem, DashboardFormItem
FILES_AVAILABLE = 'archaeological_files' in settings.INSTALLED_APPS
class OperationType(GeneralType):
@@ -132,12 +132,15 @@ class ArchaeologicalSite(BaseHistorizedItem):
name += u" %s %s" % (settings.JOINT, self.name)
return name
-class Operation(BaseHistorizedItem, OwnPerms, ValueGetter, ShortMenuItem):
+class Operation(BaseHistorizedItem, OwnPerms, ValueGetter, ShortMenuItem,
+ DashboardFormItem):
TABLE_COLS = ['year_index', 'operation_type', 'remains', 'towns',
'start_date', 'excavation_end_date']
if FILES_AVAILABLE:
TABLE_COLS.insert(4, 'associated_file_short_label')
start_date = models.DateField(_(u"Start date"), null=True, blank=True)
+ creation_date = models.DateField(_(u"Creation date"),
+ default=datetime.date.today)
excavation_end_date = models.DateField(_(u"Excavation end date"), null=True,
blank=True)
end_date = models.DateField(_(u"Closing date"), null=True, blank=True)
@@ -335,34 +338,6 @@ class Operation(BaseHistorizedItem, OwnPerms, ValueGetter, ShortMenuItem):
Max('operation_code'))["operation_code__max"]
return (max_val + 1) if max_val else 1
- @classmethod
- def get_periods(cls, slice='year', fltr={}):
- q = cls.objects
- if fltr:
- q = q.filter(**fltr)
- if slice == 'year':
- max_year = datetime.date.today().year + 1
- return [res['year'] for res in list(
- q.exclude( year__isnull=True
- ).exclude(year__gt=max_year
- ).values('year'
- ).annotate(Count("id")).order_by())]
- return []
-
- @classmethod
- def get_by_year(cls, year, fltr={}):
- q = cls.objects
- if fltr:
- q = q.filter(**fltr)
- return q.filter(year=year)
-
- @classmethod
- def get_total_number(cls, fltr={}):
- q = cls.objects
- if fltr:
- q = q.filter(**fltr)
- return q.count()
-
year_index_lbl = _(u"Operation code")
@property
def year_index(self):
diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py
index 6e623db88..5e6385de7 100644
--- a/archaeological_operations/views.py
+++ b/archaeological_operations/views.py
@@ -181,8 +181,7 @@ operation_search_wizard = SearchWizard.as_view([
label=_(u"Operation search"),
url_name='operation_search',)
-operation_creation_wizard = OperationWizard.as_view([
- ('filechoice-operation_creation', OperationFormFileChoice),
+wizard_steps = [
('general-operation_creation', OperationFormGeneral),
('preventive-operation_creation', OperationFormPreventive),
('preventivediag-operation_creation', OperationFormPreventiveDiag),
@@ -192,7 +191,12 @@ operation_creation_wizard = OperationWizard.as_view([
('parcels-operation_creation', SelectedParcelFormSet),
('remains-operation_creation', RemainFormset),
('periods-operation_creation', PeriodFormset),
- ('final-operation_creation', FinalForm)],
+ ('final-operation_creation', FinalForm)]
+if FILES_AVAILABLE:
+ wizard_steps.insert(0, ('filechoice-operation_creation',
+ OperationFormFileChoice))
+
+operation_creation_wizard = OperationWizard.as_view(wizard_steps,
label=_(u"New operation"),
condition_dict={
'preventive-operation_creation':\
diff --git a/ishtar_common/locale/fr/LC_MESSAGES/django.po b/ishtar_common/locale/fr/LC_MESSAGES/django.po
index 5291ab4ff..923126974 100644
--- a/ishtar_common/locale/fr/LC_MESSAGES/django.po
+++ b/ishtar_common/locale/fr/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: alpha\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-10-15 01:16+0200\n"
+"POT-Creation-Date: 2014-10-21 00:43+0200\n"
"PO-Revision-Date: 2010-12-09\n"
"Last-Translator: Étienne Loks <etienne.loks at peacefrogs net>\n"
"Language-Team: \n"
@@ -54,8 +54,7 @@ msgstr "Confirmation"
#: forms.py:80
msgid "Are you sure you want to delete?"
-msgstr ""
-"Êtes vous sûr de vouloir supprimer ?"
+msgstr "Êtes vous sûr de vouloir supprimer ?"
#: forms.py:88
msgid "There are identical items."
@@ -73,12 +72,12 @@ msgstr "Vous devez sélectionner un élément."
msgid "Add a new item"
msgstr "Ajouter un nouvel élément"
-#: forms.py:164 models.py:672
+#: forms.py:164 models.py:739
msgid "Template"
msgstr "Patron"
#: forms_common.py:42 forms_common.py:104 forms_common.py:185
-#: forms_common.py:190 models.py:721 models.py:976
+#: forms_common.py:190 models.py:788 models.py:1043
#: templates/ishtar/sheet_organization.html:17
#: templates/ishtar/sheet_person.html:20 templates/ishtar/sheet_person.html:30
msgid "Town"
@@ -102,68 +101,68 @@ msgstr ""
"<p class='example'>Par exemple tapez « saint denis 93 » pour obtenir la "
"commune Saint-Denis dans le département français de Seine-Saint-Denis.</p>"
-#: forms_common.py:56 forms_common.py:354 ishtar_menu.py:30 models.py:794
-#: models.py:861 models.py:901 templates/ishtar/sheet_person.html:6
+#: forms_common.py:56 forms_common.py:354 ishtar_menu.py:30 models.py:861
+#: models.py:928 models.py:968 templates/ishtar/sheet_person.html:6
msgid "Person"
msgstr "Individu"
-#: forms_common.py:92 forms_common.py:152 ishtar_menu.py:42 models.py:746
+#: forms_common.py:92 forms_common.py:152 ishtar_menu.py:42 models.py:813
#: templates/ishtar/sheet_organization.html:6
msgid "Organization"
msgstr "Organisation"
#: forms_common.py:94 forms_common.py:130 forms_common.py:148
-#: forms_common.py:177 models.py:671 models.py:741 models.py:787 models.py:962
-#: templates/ishtar/sheet_organization.html:12
+#: forms_common.py:177 models.py:738 models.py:808 models.py:854
+#: models.py:1029 templates/ishtar/sheet_organization.html:12
#: templates/ishtar/sheet_organization.html:25
#: templates/ishtar/sheet_person.html:12 templates/ishtar/sheet_person.html:26
msgid "Name"
msgstr "Nom"
-#: forms_common.py:96 models.py:735
+#: forms_common.py:96 models.py:802
msgid "Organization type"
msgstr "Type d'organisation"
-#: forms_common.py:98 forms_common.py:179 models.py:716
+#: forms_common.py:98 forms_common.py:179 models.py:783
#: templates/ishtar/sheet_organization.html:14
#: templates/ishtar/sheet_person.html:17 templates/ishtar/sheet_person.html:27
msgid "Address"
msgstr "Adresse"
-#: forms_common.py:100 forms_common.py:181 models.py:717
+#: forms_common.py:100 forms_common.py:181 models.py:784
#: templates/ishtar/sheet_organization.html:15
#: templates/ishtar/sheet_person.html:18 templates/ishtar/sheet_person.html:28
msgid "Address complement"
msgstr "Complément d'adresse"
-#: forms_common.py:102 forms_common.py:183 models.py:719
+#: forms_common.py:102 forms_common.py:183 models.py:786
#: templates/ishtar/sheet_organization.html:16
#: templates/ishtar/sheet_person.html:19 templates/ishtar/sheet_person.html:29
msgid "Postal code"
msgstr "Code postal"
-#: forms_common.py:105 forms_common.py:186 models.py:722
+#: forms_common.py:105 forms_common.py:186 models.py:789
msgid "Country"
msgstr "Pays"
#: forms_common.py:107 forms_common.py:150 forms_common.py:188
-#: forms_common.py:240 models.py:727 templates/ishtar/sheet_person.html:15
+#: forms_common.py:240 models.py:794 templates/ishtar/sheet_person.html:15
msgid "Email"
msgstr "Courriel"
-#: forms_common.py:108 forms_common.py:189 models.py:724
+#: forms_common.py:108 forms_common.py:189 models.py:791
#: templates/ishtar/sheet_organization.html:18
#: templates/ishtar/sheet_person.html:21 templates/ishtar/sheet_person.html:31
msgid "Phone"
msgstr "Téléphone"
-#: forms_common.py:109 models.py:725
+#: forms_common.py:109 models.py:792
#: templates/ishtar/sheet_organization.html:19
#: templates/ishtar/sheet_person.html:22 templates/ishtar/sheet_person.html:32
msgid "Mobile phone"
msgstr "Téléphone portable"
-#: forms_common.py:131 forms_common.py:151 models.py:743 models.py:925
+#: forms_common.py:131 forms_common.py:151 models.py:810 models.py:992
#: templates/sheet_ope.html:85 templates/sheet_ope.html.py:105
#: templates/sheet_ope.html:126 templates/ishtar/sheet_organization.html:27
#: templates/ishtar/sheet_person.html:42 templates/ishtar/sheet_person.html:95
@@ -175,7 +174,7 @@ msgstr "Type"
msgid "Organization search"
msgstr "Recherche d'organisations"
-#: forms_common.py:149 forms_common.py:175 models.py:785
+#: forms_common.py:149 forms_common.py:175 models.py:852
#: templates/ishtar/sheet_organization.html:26
#: templates/ishtar/sheet_person.html:13
msgid "Surname"
@@ -189,7 +188,7 @@ msgstr "Recherche d'individus"
msgid "Identity"
msgstr "Identité"
-#: forms_common.py:174 forms_common.py:311 models.py:784 models.py:924
+#: forms_common.py:174 forms_common.py:311 models.py:851 models.py:991
#: templates/sheet_ope.html:104 templates/ishtar/sheet_person.html:94
#: templates/ishtar/blocks/window_tables/documents.html:5
msgid "Title"
@@ -199,7 +198,7 @@ msgstr "Titre"
msgid "Current organization"
msgstr "Organisation actuelle"
-#: forms_common.py:199 forms_common.py:222 forms_common.py:225 models.py:771
+#: forms_common.py:199 forms_common.py:222 forms_common.py:225 models.py:838
msgid "Person type"
msgstr "Type d'individu"
@@ -231,7 +230,7 @@ msgstr "Ce nom d'utilisateur existe déjà."
msgid "Send the new password by email?"
msgstr "Envoyer le nouveau mot de passe par courriel ?"
-#: forms_common.py:291 forms_common.py:303 models.py:977
+#: forms_common.py:291 forms_common.py:303 models.py:1044
#: templates/ishtar/sheet_person.html:72
msgid "Towns"
msgstr "Communes"
@@ -244,23 +243,23 @@ msgstr "Il y a des communes identiques."
msgid "Documentation informations"
msgstr "Information sur le document"
-#: forms_common.py:313 forms_common.py:332 models.py:920
+#: forms_common.py:313 forms_common.py:332 models.py:987
msgid "Source type"
msgstr "Type de source"
-#: forms_common.py:315 models.py:929
+#: forms_common.py:315 models.py:996
msgid "Numerical ressource (web address)"
msgstr "Ressource numérique (adresse web)"
-#: forms_common.py:316 models.py:931
+#: forms_common.py:316 models.py:998
msgid "Receipt date"
msgstr "Date de réception"
-#: forms_common.py:318 models.py:933
+#: forms_common.py:318 models.py:1000
msgid "Creation date"
msgstr "Date de création"
-#: forms_common.py:329 forms_common.py:348 forms_common.py:379 models.py:906
+#: forms_common.py:329 forms_common.py:348 forms_common.py:379 models.py:973
#: templates/ishtar/wizard/wizard_person_deletion.html:124
msgid "Author"
msgstr "Auteur"
@@ -269,7 +268,7 @@ msgstr "Auteur"
msgid "Would you like to delete this documentation?"
msgstr "Voulez vous supprimer ce document ?"
-#: forms_common.py:355 models.py:897 models.py:903
+#: forms_common.py:355 models.py:964 models.py:970
msgid "Author type"
msgstr "Type d'auteur"
@@ -281,7 +280,7 @@ msgstr "Sélection d'auteur"
msgid "There are identical authors."
msgstr "Il y a des auteurs identiques."
-#: forms_common.py:389 models.py:907 models.py:926
+#: forms_common.py:389 models.py:974 models.py:993
#: templates/sheet_ope.html:106
#: templates/ishtar/blocks/window_tables/documents.html:7
msgid "Authors"
@@ -303,7 +302,7 @@ msgstr "Modification"
msgid "Delete"
msgstr "Supprimer"
-#: ishtar_menu.py:57 views.py:119
+#: ishtar_menu.py:57 views.py:121
msgid "Account management"
msgstr "Gestion des comptes"
@@ -319,7 +318,7 @@ msgstr "Un élément sélectionné n'est pas valide."
msgid "This item already exist."
msgstr "Cet élément existe déjà."
-#: models.py:202 models.py:548 models.py:704
+#: models.py:202 models.py:548 models.py:771
msgid "Label"
msgstr "Libellé"
@@ -331,7 +330,7 @@ msgstr "Identifiant textuel"
msgid "Comment"
msgstr "Commentaire"
-#: models.py:206 models.py:675
+#: models.py:206 models.py:742
msgid "Available"
msgstr "Disponible"
@@ -359,161 +358,154 @@ msgstr "Ordre"
msgid "Wizard step"
msgstr "Étape de l'assistant"
-#: models.py:596 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83
-#: templates/ishtar/sheet_person.html:39 templates/ishtar/sheet_person.html:68
-#: templates/ishtar/sheet_person.html:93
-#: templates/ishtar/dashboards/dashboard_main_detail.html:94
-msgid "Year"
-msgstr "Année"
+#: models.py:643 models.py:674
+msgid "Total"
+msgstr "Total"
-#: models.py:599 models.py:608 models.py:705
-#: templates/ishtar/dashboards/dashboard_main_detail.html:105
+#: models.py:650 models.py:772
+#: templates/ishtar/dashboards/dashboard_main_detail.html:135
#: templates/ishtar/dashboards/dashboard_main_detail_users.html:26
msgid "Number"
msgstr "Nombre"
-#: models.py:607 templates/ishtar/dashboards/dashboard_main_detail.html:100
-msgid "Month"
-msgstr "Mois"
-
-#: models.py:670
+#: models.py:737
msgid "Administrative Act"
msgstr "Acte administratif"
-#: models.py:673
+#: models.py:740
msgid "Associated object"
msgstr "Objet associé"
-#: models.py:678
+#: models.py:745
msgid "Document template"
msgstr "Patron de document"
-#: models.py:679
+#: models.py:746
msgid "Document templates"
msgstr "Patrons de documents"
-#: models.py:708
+#: models.py:775
msgid "Department"
msgstr "Département"
-#: models.py:709
+#: models.py:776
msgid "Departments"
msgstr "Départements"
-#: models.py:736
+#: models.py:803
msgid "Organization types"
msgstr "Types d'organisation"
-#: models.py:747
+#: models.py:814
msgid "Organizations"
msgstr "Organisations"
-#: models.py:749
+#: models.py:816
msgid "Can view all Organization"
msgstr "Peut voir toutes les Organisations"
-#: models.py:750
+#: models.py:817
msgid "Can view own Organization"
msgstr "Peut voir sa propre Organisation"
-#: models.py:751
+#: models.py:818
msgid "Can add own Organization"
msgstr "Peut ajouter sa propre Organisation"
-#: models.py:752
+#: models.py:819
msgid "Can change own Organization"
msgstr "Peut changer sa propre Organisation"
-#: models.py:753
+#: models.py:820
msgid "Can delete own Organization"
msgstr "Peut supprimer sa propre Organisation"
-#: models.py:768
+#: models.py:835
msgid "Groups"
msgstr "Groupes"
-#: models.py:772
+#: models.py:839
msgid "Person types"
msgstr "Types d'individu"
-#: models.py:777
+#: models.py:844
msgid "Mr"
msgstr "M."
-#: models.py:778
+#: models.py:845
msgid "Miss"
msgstr "Mlle"
-#: models.py:779
+#: models.py:846
msgid "Mrs"
msgstr "Mme"
-#: models.py:780
+#: models.py:847
msgid "Doctor"
msgstr "Dr."
-#: models.py:788 models.py:823
+#: models.py:855 models.py:890
msgid "Types"
msgstr "Types"
-#: models.py:791
+#: models.py:858
msgid "Is attached to"
msgstr "Est rattaché à"
-#: models.py:795
+#: models.py:862
msgid "Persons"
msgstr "Individus"
-#: models.py:797
+#: models.py:864
msgid "Can view all Person"
msgstr "Peut voir toutes les Personnes"
-#: models.py:798
+#: models.py:865
msgid "Can view own Person"
msgstr "Peut voir sa propre Personne"
-#: models.py:799
+#: models.py:866
msgid "Can add own Person"
msgstr "Peut ajouter sa propre Personne"
-#: models.py:800
+#: models.py:867
msgid "Can change own Person"
msgstr "Peut changer sa propre Personne"
-#: models.py:801
+#: models.py:868
msgid "Can delete own Person"
msgstr "Peut supprimer sa propre Personne"
-#: models.py:865
+#: models.py:932
msgid "Ishtar user"
msgstr "Utilisateur d'Ishtar"
-#: models.py:866
+#: models.py:933
msgid "Ishtar users"
msgstr "Utilisateurs d'Ishtar"
-#: models.py:898
+#: models.py:965
msgid "Author types"
msgstr "Types d'auteur"
-#: models.py:921
+#: models.py:988
msgid "Source types"
msgstr "Types de source"
-#: models.py:934 templates/ishtar/sheet_person.html:40
+#: models.py:1001 templates/ishtar/sheet_person.html:40
#: templates/ishtar/sheet_person.html:67
msgid "Ref."
msgstr "Réf."
-#: models.py:936
+#: models.py:1003
msgid "Internal reference"
msgstr "Référence interne"
-#: models.py:963
+#: models.py:1030
msgid "Surface (m²)"
msgstr "Area (m²)"
-#: models.py:964 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
+#: models.py:1031 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
msgid "Localisation"
msgstr "Localisation"
@@ -521,78 +513,78 @@ msgstr "Localisation"
msgid " (...)"
msgstr " (...)"
-#: views.py:79
+#: views.py:81
msgid "New person"
msgstr "Nouvelle personne"
-#: views.py:87
+#: views.py:89
msgid "Person modification"
msgstr "Modification d'une personne"
-#: views.py:93
+#: views.py:95
msgid "Person deletion"
msgstr "Suppresion de personne"
-#: views.py:99
+#: views.py:101
msgid "New organization"
msgstr "Nouvelle organisation"
-#: views.py:106
+#: views.py:108
msgid "Organization modification"
msgstr "Modification d'une organisation"
-#: views.py:112
+#: views.py:114
msgid "Organization deletion"
msgstr "Suppresion d'une organisation"
-#: views.py:209
+#: views.py:211
msgid "True"
msgstr "Oui"
-#: views.py:211
+#: views.py:213
msgid "False"
msgstr "Non"
-#: views.py:434 templates/base.html:75
+#: views.py:436 templates/base.html:75
#: templates/ishtar/sheet_organization.html:35
#: templates/ishtar/sheet_person.html:57 templates/ishtar/sheet_person.html:83
msgid "Details"
msgstr "Détails"
-#: views.py:644 views.py:691
+#: views.py:646 views.py:693
msgid "Operation not permitted."
msgstr "Opération non permise"
-#: views.py:646
+#: views.py:648
#, python-format
msgid "New %s"
msgstr "Nouveau %s"
-#: views.py:708 views.py:746
+#: views.py:710 views.py:766
msgid "Archaeological files"
msgstr "Dossiers archéologiques"
-#: views.py:709 views.py:750
+#: views.py:711 views.py:770
msgid "Operations"
msgstr "Opérations"
-#: views.py:711 views.py:755
+#: views.py:713 views.py:775
msgid "Context records"
msgstr "Unité d'Enregistrement"
-#: views.py:713 views.py:760
+#: views.py:715 views.py:780
msgid "Finds"
msgstr "Mobilier"
-#: widgets.py:322
+#: widgets.py:326
msgid "No results"
msgstr "Pas de résultats"
-#: widgets.py:323
+#: widgets.py:327
msgid "Loading..."
msgstr "Chargement..."
-#: widgets.py:324
+#: widgets.py:328
msgid "Remove"
msgstr "Enlever"
@@ -848,6 +840,13 @@ msgstr "Parcelles associées"
msgid "Commune"
msgstr "Commune"
+#: templates/sheet_ope.html:61 templates/sheet_ope.html.py:83
+#: templates/ishtar/sheet_person.html:39 templates/ishtar/sheet_person.html:68
+#: templates/ishtar/sheet_person.html:93
+#: templates/ishtar/dashboards/dashboard_main_detail.html:120
+msgid "Year"
+msgstr "Année"
+
#: templates/sheet_ope.html:62
msgid "Section"
msgstr "Section"
@@ -1038,7 +1037,7 @@ msgstr "Pas de document associé à cette personne"
msgid "Related to"
msgstr "Associé à"
-#: templates/ishtar/dashboards/dashboard_main.html:23
+#: templates/ishtar/dashboards/dashboard_main.html:26
msgid "Users"
msgstr "Utilisateurs"
@@ -1046,72 +1045,88 @@ msgstr "Utilisateurs"
msgid "Numbers"
msgstr "Nombre"
-#: templates/ishtar/dashboards/dashboard_main_detail.html:6
+#: templates/ishtar/dashboards/dashboard_main_detail.html:12
+msgid "Change"
+msgstr "Modifier"
+
+#: templates/ishtar/dashboards/dashboard_main_detail.html:16
msgid "Total:"
msgstr "Total :"
-#: templates/ishtar/dashboards/dashboard_main_detail.html:15
-msgid "Change"
-msgstr "Modifier"
+#: templates/ishtar/dashboards/dashboard_main_detail.html:19
+msgid "Draw rectangle on the graph to zoom. Double-click to reinitialize."
+msgstr "Dessiner un rectangle sur le graphique pour zoomer. Double-cliquer pour réinitialiser."
-#: templates/ishtar/dashboards/dashboard_main_detail.html:31
+#: templates/ishtar/dashboards/dashboard_main_detail.html:21
+msgid "Display as an image"
+msgstr "Afficher comme une image"
+
+#: templates/ishtar/dashboards/dashboard_main_detail.html:24
+msgid "Right-click on this image to save it."
+msgstr "Click droit sur l'image pour l'enregistrer."
+
+#: templates/ishtar/dashboards/dashboard_main_detail.html:39
msgid "By years"
msgstr "Par années"
-#: templates/ishtar/dashboards/dashboard_main_detail.html:33
-#: templates/ishtar/dashboards/dashboard_main_detail.html:43
+#: templates/ishtar/dashboards/dashboard_main_detail.html:41
+#: templates/ishtar/dashboards/dashboard_main_detail.html:51
msgid "Average:"
msgstr "Moyenne :"
-#: templates/ishtar/dashboards/dashboard_main_detail.html:34
-#: templates/ishtar/dashboards/dashboard_main_detail.html:44
+#: templates/ishtar/dashboards/dashboard_main_detail.html:42
+#: templates/ishtar/dashboards/dashboard_main_detail.html:52
msgid "Variance:"
msgstr "Variance :"
-#: templates/ishtar/dashboards/dashboard_main_detail.html:35
-#: templates/ishtar/dashboards/dashboard_main_detail.html:45
+#: templates/ishtar/dashboards/dashboard_main_detail.html:43
+#: templates/ishtar/dashboards/dashboard_main_detail.html:53
msgid "Standard deviation:"
msgstr "Écart-type :"
-#: templates/ishtar/dashboards/dashboard_main_detail.html:36
-#: templates/ishtar/dashboards/dashboard_main_detail.html:46
+#: templates/ishtar/dashboards/dashboard_main_detail.html:44
+#: templates/ishtar/dashboards/dashboard_main_detail.html:54
msgid "Median:"
msgstr "Médiane :"
-#: templates/ishtar/dashboards/dashboard_main_detail.html:37
-#: templates/ishtar/dashboards/dashboard_main_detail.html:47
+#: templates/ishtar/dashboards/dashboard_main_detail.html:45
+#: templates/ishtar/dashboards/dashboard_main_detail.html:55
msgid "Mode:"
msgstr "Mode :"
-#: templates/ishtar/dashboards/dashboard_main_detail.html:41
+#: templates/ishtar/dashboards/dashboard_main_detail.html:49
msgid "By operations"
msgstr "Par opérations"
-#: templates/ishtar/dashboards/dashboard_main_detail.html:50
+#: templates/ishtar/dashboards/dashboard_main_detail.html:58
msgid "Created last"
msgstr "Derniers créés"
-#: templates/ishtar/dashboards/dashboard_main_detail.html:53
+#: templates/ishtar/dashboards/dashboard_main_detail.html:61
msgid "Created"
msgstr "Créé"
-#: templates/ishtar/dashboards/dashboard_main_detail.html:57
-#: templates/ishtar/dashboards/dashboard_main_detail.html:68
+#: templates/ishtar/dashboards/dashboard_main_detail.html:65
+#: templates/ishtar/dashboards/dashboard_main_detail.html:76
msgid "Show"
msgstr "Voir"
-#: templates/ishtar/dashboards/dashboard_main_detail.html:61
+#: templates/ishtar/dashboards/dashboard_main_detail.html:69
msgid "Recent changes"
msgstr "Derniers changés"
-#: templates/ishtar/dashboards/dashboard_main_detail.html:64
+#: templates/ishtar/dashboards/dashboard_main_detail.html:72
msgid "Modified"
msgstr "Modifier"
-#: templates/ishtar/dashboards/dashboard_main_detail.html:116
+#: templates/ishtar/dashboards/dashboard_main_detail.html:108
msgid "No data for theses criteria."
msgstr "Pas de données pour ces critères."
+#: templates/ishtar/dashboards/dashboard_main_detail.html:126
+msgid "Month"
+msgstr "Mois"
+
#: templates/ishtar/dashboards/dashboard_main_detail_users.html:26
msgid "User type"
msgstr "Type d'utilisateur"
@@ -1294,7 +1309,7 @@ msgstr "La création du compte a échouée"
#: templates/registration/activation_complete.html:7
msgid "You may now login with your username and password."
-msgstr
+msgstr ""
"Vous pouvez maintenant vous identifier avec votre identifiant et votre mot "
"de passe"
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index 98f4addb7..3df557806 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -25,6 +25,7 @@ import datetime
from PIL import Image
import os
import tempfile
+import copy
from django.conf import settings
from django.core.exceptions import ObjectDoesNotExist, ValidationError
@@ -560,11 +561,53 @@ class UserDashboard:
self.types = types.annotate(number=Count('pk'))\
.order_by('person__person_types')
+class DashboardFormItem(object):
+ @classmethod
+ def get_periods(cls, slice='month', fltr={}, date_source='creation'):
+ date_var = date_source + '_date'
+ q = cls.objects.filter(**{date_var+'__isnull':False})
+ if fltr:
+ q = q.filter(**fltr)
+ if slice == 'year':
+ return [res[date_var].year for res in list(q.values(date_var
+ ).annotate(Count("id")).order_by())]
+ elif slice == 'month':
+ return [(res[date_var].year, res[date_var].month)
+ for res in list(q.values(date_var
+ ).annotate(Count("id")).order_by())]
+ return []
+
+ @classmethod
+ def get_by_year(cls, year, fltr={}, date_source='creation'):
+ date_var = date_source + '_date'
+ q = cls.objects.filter(**{date_var+'__isnull':False})
+ if fltr:
+ q = q.filter(**fltr)
+ return q.filter(**{date_var+'__year':year}).distinct('pk')
+
+ @classmethod
+ def get_by_month(cls, year, month, fltr={}, date_source='creation'):
+ date_var = date_source + '_date'
+ q = cls.objects.filter(**{date_var+'__isnull':False})
+ if fltr:
+ q = q.filter(**fltr)
+ q = q.filter(**{date_var+'__year':year, date_var+'__month':month})
+ return q.distinct('pk')
+
+ @classmethod
+ def get_total_number(cls, fltr={}):
+ q = cls.objects
+ if fltr:
+ q = q.filter(**fltr)
+ return q.distinct('pk').count()
+
class Dashboard:
- def __init__(self, model, slice='year', date_source=None, fltr={}):
+ def __init__(self, model, slice='year', date_source=None, show_detail=None,
+ fltr={}):
# don't provide date_source if it is not relevant
self.model = model
self.total_number = model.get_total_number(fltr)
+ self.show_detail = show_detail
history_model = self.model.history.model
# last edited - created
self.recents, self.lasts = [], []
@@ -587,31 +630,50 @@ class Dashboard:
obj.history_date = idx['hd']
last_lst.append(obj)
# years
- base_kwargs = {'fltr':fltr}
+ base_kwargs = {'fltr':fltr.copy()}
if date_source:
base_kwargs['date_source'] = date_source
- periods_kwargs = base_kwargs.copy()
+ periods_kwargs = copy.deepcopy(base_kwargs)
periods_kwargs['slice'] = slice
self.periods = model.get_periods(**periods_kwargs)
self.periods = list(set(self.periods))
self.periods.sort()
if not self.total_number or not self.periods:
return
+ kwargs_num = copy.deepcopy(base_kwargs)
+ self.serie_labels = [_(u"Total")]
# numbers
if slice == 'year':
- self.values = [('year', _(u"Year"), reversed(self.periods))]
- self.numbers = [model.get_by_year(year, **base_kwargs).count()
+ self.values = [('year', "",
+ list(reversed(self.periods)))]
+ self.numbers = [model.get_by_year(year, **kwargs_num).count()
for year in self.periods]
- self.values += [('number', _(u"Number"), reversed(self.numbers))]
+ self.values += [('number', _(u"Number"),
+ list(reversed(self.numbers)))]
if slice == 'month':
- self.numbers = [model.get_by_month(*period, **base_kwargs).count()
- for period in self.periods]
- periods = reversed(self.periods)
- self.periods = ["%d-%s-01" % (period[0], ('0'+str(period[1]))
- if len(str(period[1])) == 1 else period[1])
- for period in periods]
- self.values = [('month', _(u"Month"), self.periods)]
- self.values += [('number', _(u"Number"), reversed(self.numbers))]
+ periods = list(reversed(self.periods))
+ self.periods = ["%d-%s-01" % (p[0], ('0'+str(p[1]))
+ if len(str(p[1])) == 1 else p[1])
+ for p in periods]
+ self.values = [('month', "", self.periods)]
+ if show_detail:
+ for dpt in settings.ISHTAR_DPTS:
+ self.serie_labels.append(unicode(dpt))
+ idx = 'number_' + unicode(dpt)
+ kwargs_num['fltr']["towns__numero_insee__startswith"] = \
+ unicode(dpt)
+ numbers = [model.get_by_month(*p.split('-')[:2],
+ **kwargs_num).count()
+ for p in self.periods]
+ self.values += [(idx, dpt, list(numbers))]
+ # put "Total" at the end
+ self.serie_labels.append(self.serie_labels.pop(0))
+ kwargs_num = base_kwargs.copy()
+ self.numbers = [model.get_by_month(*p.split('-')[:2],
+ **kwargs_num).count()
+ for p in self.periods]
+ self.values += [('number', _(u"Total"),
+ list(self.numbers))]
# calculate
self.average = self.get_average()
self.variance = self.get_variance()
diff --git a/ishtar_common/static/media/style.css b/ishtar_common/static/media/style.css
index 341308926..3c2c429b1 100644
--- a/ishtar_common/static/media/style.css
+++ b/ishtar_common/static/media/style.css
@@ -560,6 +560,7 @@ table.confirm tr.spacer td:last-child{
.ui-tabs .ui-tabs-nav li.ui-tabs-active a{
background-color:#fff;
+ color:#666;
}
.sheet{
@@ -669,6 +670,13 @@ table.confirm tr.spacer td:last-child{
padding:0.5em 1em;
}
+.chart-img{
+ display:none;
+}
+
+.chart-img-form{
+ margin-top:1em;
+}
#window table th, .dashboard table.resume th{
background-color:#922;
@@ -783,8 +791,7 @@ table.confirm tr.spacer td:last-child{
margin:0.3em;
}
-p.alert{
- color:#D14;
+p.info-box, p.alert{
display:block;
font-style:italic;
width:670px;
@@ -794,6 +801,11 @@ p.alert{
-moz-border-radius:8px;
-webkit-border-radius:8px;
border-radius:8px;
+ font-size: 0.9em;
+}
+
+p.alert{
+ color:#D14;
background-image:url(images/red_flag.png);
background-repeat:no-repeat;
background-position:left center;
diff --git a/ishtar_common/templates/ishtar/dashboards/dashboard_main.html b/ishtar_common/templates/ishtar/dashboards/dashboard_main.html
index 8822875b5..868f8a5c3 100644
--- a/ishtar_common/templates/ishtar/dashboards/dashboard_main.html
+++ b/ishtar_common/templates/ishtar/dashboards/dashboard_main.html
@@ -6,9 +6,12 @@
<script language="javascript" type="text/javascript" src="{{STATIC_URL}}js/jqplot/jquery.jqplot.min.js"></script>
<script language="javascript" type="text/javascript" src="{{STATIC_URL}}js/jqplot/plugins/jqplot.canvasTextRenderer.min.js"></script>
<script language="javascript" type="text/javascript" src="{{STATIC_URL}}js/jqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js"></script>
+<script language="javascript" type="text/javascript" src="{{STATIC_URL}}js/jqplot/plugins/jqplot.canvasAxisTickRenderer.min.js"></script>
<script language="javascript" type="text/javascript" src="{{STATIC_URL}}js/jqplot/plugins/jqplot.highlighter.min.js"></script>
<script language="javascript" type="text/javascript" src="{{STATIC_URL}}js/jqplot/plugins/jqplot.pieRenderer.min.js"></script>
<script language="javascript" type="text/javascript" src="{{STATIC_URL}}js/jqplot/plugins/jqplot.dateAxisRenderer.min.js"></script>
+<script language="javascript" type="text/javascript" src="{{STATIC_URL}}js/jqplot/plugins/jqplot.cursor.min.js"></script>
+<script language="javascript" type="text/javascript" src="{{STATIC_URL}}js/jqplot/plugins/jqplot.cursor.min.js"></script>
<link rel="stylesheet" href="{{STATIC_URL}}js/jqplot/jquery.jqplot.min.css" />
{% endblock %}
{% block content %}
diff --git a/ishtar_common/templates/ishtar/dashboards/dashboard_main_detail.html b/ishtar_common/templates/ishtar/dashboards/dashboard_main_detail.html
index 610457ae3..87ce5c528 100644
--- a/ishtar_common/templates/ishtar/dashboards/dashboard_main_detail.html
+++ b/ishtar_common/templates/ishtar/dashboards/dashboard_main_detail.html
@@ -1,11 +1,8 @@
-{% load i18n %}
+{% load i18n date_formating %}
{% load url from future %}
<div class='dashboard' id="{{unique_id}}-tab">
<div>
<h4>{% trans "Numbers" %}</h4>
- <p><strong>{% trans "Total:" %}</strong> {{dashboard.total_number}}</p>
- <div class='table'>
- <div id="chart_{{unique_id}}" style="height:400px; width:700px;"></div>
{% if form %}
<div class='form'>
<form method='post' action="{% url 'dashboard-main-detail' item_name %}" id='{{unique_id}}_form'>
@@ -16,15 +13,27 @@
</form>
</div>
{% endif %}
- {% comment %}
- <table>
+ <p><strong>{% trans "Total:" %}</strong> {{dashboard.total_number}}</p>
+ <div class='table'>
+ <div id="chart_{{unique_id}}" style="height:400px; width:700px;"></div>
+ <p class='info-box'>{% trans 'Draw rectangle on the graph to zoom. Double-click to reinitialize.' %}</p>
+ <div class='form chart-img-form'>
+ <button id="chart_img_display_{{unique_id}}" class='submit'>{% trans "Display as an image" %}</button>
+ <div id="chart_img_{{unique_id}}" class='chart-img'>
+ <div id="img_{{unique_id}}"></div>
+ <p class='info-box'>{% trans 'Right-click on this image to save it.' %}</p>
+ </div>
+ </div>
+ </div>
+ <div class='table'>
+ <table class='resume'>
{% for idx, lbl, values in dashboard.values %}
<tr class='idx {% if forloop.counter0|divisibleby:"2" %}even{%else%}odd{%endif%}'>
<th>{{lbl}}</th>
- {% for value in values %}<td>{{value}}</td>{% endfor%}
+ {% for value in values reversed %}{% if forloop.parentloop.counter0 %}<td>{% else %}<th>{%endif%}{{value|date_formating }}{% if forloop.parentloop.counter0 %}</td>{% else %}</th>{%endif%}{% endfor%}
</tr>
{% endfor%}
- </table>{% endcomment %}
+ </table>
</div>
{% if dashboard.periods %}
<h4>{% trans "By years" %}</h4>
@@ -71,23 +80,41 @@
</div>
<script language="javascript" type="text/javascript">
$(document).ready(function(){
-var values_{{unique_id}} = [];
+{% for idx, lbl, values in dashboard.values %} {% if forloop.counter0 > 0 %} var values_{{forloop.counter0}}_{{unique_id}} = []; {% for idx, lbl, values in dashboard.values %} {% for value in values %} {% if forloop.parentloop.counter0 == 0 %} values_{{forloop.parentloop.parentloop.counter0}}_{{unique_id}}.push([{{VALUE_QUOTE|safe}}{{value}}{{VALUE_QUOTE|safe}}, 0]); {% elif forloop.parentloop.parentloop.counter0 == forloop.parentloop.counter0 %} values_{{forloop.parentloop.parentloop.counter0}}_{{unique_id}}[{{forloop.counter0}}][1] = {{value}}; {% endif %} {% endfor%} {% endfor%} {% endif %} {% endfor %}
-{% for idx, lbl, values in dashboard.values %} {% for value in values %}{% ifequal forloop.parentloop.counter0 0 %}
-values_{{unique_id}}.push([{{VALUE_QUOTE|safe}}{{value}}{{VALUE_QUOTE|safe}}, 0]);
-{% else %}values_{{unique_id}}[{{forloop.counter0}}][1] = {{value}};{% endifequal %}{% endfor%}{% endfor%}
+{% comment %}
+# less compact version
+{% for idx, lbl, values in dashboard.values %}
+ {% if forloop.counter0 > 0 %}
+ {% for idx, lbl, values in dashboard.values %}
+ {% for value in values %}
+ {% if forloop.parentloop.counter0 == 0 %}
+ values_{{forloop.parentloop.counter0}}_{{unique_id}}.push([{{VALUE_QUOTE|safe}}{{value}}{{VALUE_QUOTE|safe}}, 0]);
+ {% elif forloop.parentloop.counter0 == forloop.counter0 %}
+ values_{{forloop.counter0}}_{{unique_id}}[{{forloop.counter0}}][1] = {{value}};
+ {% endif %}
+ {% endfor%}
+ {% endfor%}
+ {% endif %}
+{% endfor %}
+{% endcomment %}
+
+
+if (typeof values_1_{{unique_id}} === 'undefined'
+ || values_1_{{unique_id}}.length == 0){
-if (values_{{unique_id}}.length > 0){
+$('#chart_img_{{unique_id}}').hide();
+$('#chart_{{unique_id}}').html("<p class='alert'>{% trans 'No data for theses criteria.' %}</p>");
+} else {
var showmarker = false;
-if (values_{{unique_id}}.length < 25){
+if (values_1_{{unique_id}}.length < 25){
var showmarker = true;
}
var plot_{{unique_id}} = $.jqplot('chart_{{unique_id}}',
- [values_{{unique_id}}], {
- series:[{showMarker:showmarker}],
+ [{% for idx, lbl, values in dashboard.values %}{% if forloop.counter0 > 0 %} {% if forloop.counter0 > 1 %}, {% endif%} values_{{forloop.counter0}}_{{unique_id}} {% endif %} {% endfor%}], {
axes:{ {%ifequal slicing 'year'%}
xaxis:{
label:'{% trans "Year" %}',
@@ -98,7 +125,11 @@ var plot_{{unique_id}} = $.jqplot('chart_{{unique_id}}',
xaxis:{
label:'{% trans "Month" %}',
renderer:$.jqplot.DateAxisRenderer,
- tickOptions:{formatString:'%b %Y'},
+ tickRenderer:$.jqplot.CanvasAxisTickRenderer,
+ tickOptions:{
+ formatString:'%b %Y',
+ angle:-25
+ }
},{%endifequal%}
yaxis:{
label:'{% trans "Number"%}',
@@ -108,11 +139,28 @@ var plot_{{unique_id}} = $.jqplot('chart_{{unique_id}}',
highlighter: {
show: true,
sizeAdjust: 7.5
- }
+ },
+ series:[{% for label in dashboard.serie_labels %}
+ {%if forloop.counter0%}, {% endif %}{label:"{{label}}", showmarker:showmarker}{% endfor %}
+ ],
+ cursor:{
+ show: true,
+ zoom:true,
+ showTooltip:false
+ },
+ legend: { show:true, location: 'nw' }
+ });
+
+ $('#chart_img_display_{{unique_id}}').click(function(){
+ $('#chart_img_{{unique_id}}').hide();
+ $('#img_{{unique_id}}').html(
+ $('<img/>').attr(
+ 'src', $('#chart_{{unique_id}}').jqplotToImageStr({})
+ )
+ );
+ $('#chart_img_{{unique_id}}').show('slow');
});
-} else {
-$('#chart_{{unique_id}}').html("<p class='alert'>{% trans 'No data for theses criteria.' %}</p");
}
$('#search_{{unique_id}}').click(function (){
@@ -124,9 +172,9 @@ $('#search_{{unique_id}}').click(function (){
return false;
});
-{% ifequal item_name 'files' %}
-load_jquerydate_after();
-load_jquerydate_before();
-{% endifequal %}
+{% if item_name == 'files' or item_name == "operations"%}
+load_jquerydate_{{item_name}}_after();
+load_jquerydate_{{item_name}}_before();
+{% endif %}
});
</script>
diff --git a/ishtar_common/templatetags/date_formating.py b/ishtar_common/templatetags/date_formating.py
new file mode 100644
index 000000000..eb81cf52c
--- /dev/null
+++ b/ishtar_common/templatetags/date_formating.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+from datetime import datetime
+
+from django.template import Library
+from django.utils.translation import ugettext as _
+
+register = Library()
+
+@register.filter
+def date_formating(value):
+ try:
+ d = datetime.strptime(unicode(value), '%Y-%m-%d')
+ return _(d.strftime("%B")).capitalize() + u" %d" % d.year
+ except ValueError:
+ # could be passed to non date value: on error return value
+ return value
+
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index d20b8b2af..889bd3893 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -50,6 +50,8 @@ if settings.XHTML2ODT_PATH:
from menus import menu
+from archaeological_operations.forms import DashboardForm as DashboardFormOpe
+
from ishtar_common.forms import FinalForm, FinalDeleteForm
from ishtar_common import forms_common as forms
from ishtar_common import wizards
@@ -720,6 +722,8 @@ if 'archaeological_files' in settings.INSTALLED_APPS:
from archaeological_files.forms import DashboardForm as DashboardFormFile
DASHBOARD_FORMS['files'] = DashboardFormFile
+DASHBOARD_FORMS['operations'] = DashboardFormOpe
+
def dashboard_main_detail(request, item_name):
"""
Specific tab of the main dashboard
@@ -730,7 +734,11 @@ def dashboard_main_detail(request, item_name):
'ishtar/dashboards/dashboard_main_detail_users.html',
dct, context_instance=RequestContext(request))
form = None
- slicing, date_source, fltr = 'year', None, {}
+ slicing, date_source, fltr, show_detail = 'year', None, {}, False
+ if (item_name == 'files' and \
+ 'archaeological_files' in settings.INSTALLED_APPS) \
+ or item_name == 'operations':
+ slicing = 'month'
if item_name in DASHBOARD_FORMS:
if request.method == 'POST':
form = DASHBOARD_FORMS[item_name](request.POST)
@@ -739,22 +747,28 @@ def dashboard_main_detail(request, item_name):
fltr = form.get_filter()
if hasattr(form, 'get_date_source'):
date_source = form.get_date_source()
+ if hasattr(form, 'get_show_detail'):
+ show_detail = form.get_show_detail()
else:
form = DASHBOARD_FORMS[item_name]()
lbl, dashboard = None, None
- if item_name == 'files' and \
- 'archaeological_files' in settings.INSTALLED_APPS:
- from archaeological_files.models import File
- dashboard_kwargs = {'slice':slicing, 'fltr':fltr,}
+ if (item_name == 'files' and \
+ 'archaeological_files' in settings.INSTALLED_APPS) \
+ or item_name == 'operations':
+ dashboard_kwargs = {'slice':slicing, 'fltr':fltr,
+ 'show_detail':show_detail}
# date_source is only relevant when the form has set one
if date_source:
dashboard_kwargs['date_source'] = date_source
+ if item_name == 'files' and \
+ 'archaeological_files' in settings.INSTALLED_APPS:
+ from archaeological_files.models import File
lbl, dashboard = (_(u"Archaeological files"),
models.Dashboard(File, **dashboard_kwargs))
if item_name == 'operations':
from archaeological_operations.models import Operation
- lbl, dashboard = (_(u"Operations"), models.Dashboard(Operation,
- slice=slicing, fltr=fltr))
+ lbl, dashboard = (_(u"Operations"),
+ models.Dashboard(Operation, **dashboard_kwargs))
if item_name == 'contextrecords' and \
'archaeological_context_records' in settings.INSTALLED_APPS:
from archaeological_context_records.models import ContextRecord
diff --git a/requirements.txt b/requirements.txt
index f2997ef25..478800dc5 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -5,7 +5,7 @@ django==1.4
south>=0.7.3,<0.7.99
pillow
pisa==3.0.33
-reportlab
+reportlab==2.5
dbf
python-memcached