diff options
-rw-r--r-- | archaeological_files/templates/ishtar/sheet_file.html | 3 | ||||
-rw-r--r-- | archaeological_files_pdl/forms.py | 11 | ||||
-rw-r--r-- | archaeological_files_pdl/models.py | 2 | ||||
-rw-r--r-- | archaeological_files_pdl/templates/ishtar/wizard/wizard_preventiveplanning.html | 7 | ||||
-rw-r--r-- | ishtar_common/wizards.py | 37 |
5 files changed, 38 insertions, 22 deletions
diff --git a/archaeological_files/templates/ishtar/sheet_file.html b/archaeological_files/templates/ishtar/sheet_file.html index 2d7b6262d..fc5ddbe70 100644 --- a/archaeological_files/templates/ishtar/sheet_file.html +++ b/archaeological_files/templates/ishtar/sheet_file.html @@ -57,7 +57,8 @@ {% if item.comment %}<p><label>{%trans "Comment:"%}</label> <span class='value'>{{ item.comment }}</span></p>{%endif%} <h3>{% trans "Localisation"%}</h3> -<p><label>{%trans "Towns:"%}</label> <span class='value'>{{ item.towns.all|join:", " }}</span></p> +{% if item.towns.count %}<p><label>{%trans "Towns:"%}</label> <span class='value'>{{ item.towns.all|join:", " }}</span></p>{% endif %} +{% if item.departments.count %}<p><label>{%trans "Departments:"%}</label> <span class='value'>{{ item.departments.all|join:", " }}</span></p>{% endif %} {% if item.address %} <p><label>{%trans "Main address:"%}</label> <span class='value'>{{ item.address }}</span></p> {% if item.address_complement %}<p><label>{%trans "Complement:"%}</label> <span class='value'>{{ item.address_complement }}</span></p>{%endif%} diff --git a/archaeological_files_pdl/forms.py b/archaeological_files_pdl/forms.py index a0c5037e7..3b5ed4601 100644 --- a/archaeological_files_pdl/forms.py +++ b/archaeological_files_pdl/forms.py @@ -24,7 +24,7 @@ from django.core import validators from django.utils.safestring import mark_safe from django.utils.translation import ugettext_lazy as _ -from ishtar_common.models import Person, PersonType, Town, valid_id +from ishtar_common.models import Person, PersonType, Town, Department, valid_id from archaeological_files import models from ishtar_common.forms import get_now, reverse_lazy @@ -74,12 +74,14 @@ class FileFormPreventiveType(forms.Form): class FileFormPlanning(forms.Form): form_label = _(u"Planning") - base_model = 'town' - associated_models = {'town': Town} + base_models = ['town', 'department'] + associated_models = {'town': Town, 'department': Department} name = forms.CharField(label=_(u"Planning name"), required=False, max_length=100) town = widgets.MultipleAutocompleteField( model=Town, label=_("Towns"), required=False) + department = widgets.MultipleAutocompleteField( + model=Department, label=_("Departments"), required=False) locality = forms.CharField(label=_(u"Locality"), max_length=100, required=False) address = forms.CharField( @@ -266,7 +268,6 @@ class FileFormPlanningService(forms.Form): def is_valid(self, *args, **kwargs): c = super(FileFormPlanningService, self).is_valid(*args, **kwargs) - print(self.cleaned_data) return c @@ -283,7 +284,7 @@ class FileFormInstruction(forms.Form): limit={ 'person_types': [ PersonType.objects.get(txt_idx='sra_agent').pk] - }, + }, associated_model=Person, new=True), validators=[valid_id(Person)]) related_file = forms.IntegerField( diff --git a/archaeological_files_pdl/models.py b/archaeological_files_pdl/models.py index 71a836239..6b2021999 100644 --- a/archaeological_files_pdl/models.py +++ b/archaeological_files_pdl/models.py @@ -1,3 +1 @@ -from django.db import models - # Create your models here. diff --git a/archaeological_files_pdl/templates/ishtar/wizard/wizard_preventiveplanning.html b/archaeological_files_pdl/templates/ishtar/wizard/wizard_preventiveplanning.html index 6bd5598b6..1be5b1b36 100644 --- a/archaeological_files_pdl/templates/ishtar/wizard/wizard_preventiveplanning.html +++ b/archaeological_files_pdl/templates/ishtar/wizard/wizard_preventiveplanning.html @@ -32,6 +32,13 @@ </tr> <tr> + <th colspan='2'><label for="id_preventiveplanning-{{CURRENT_ACTION}}-department">{% trans "Departments" %}</label></th> +</tr> +<tr> + <td>{{wizard.form.department|safe}}</td> +</tr> + +<tr> <th colspan='2'><label for="id_preventiveplanning-{{CURRENT_ACTION}}-locality">Lieu-dit</label></th> </tr> <tr> diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py index 7da654b80..cc371b5e2 100644 --- a/ishtar_common/wizards.py +++ b/ishtar_common/wizards.py @@ -284,6 +284,8 @@ class Wizard(NamedUrlWizardView): frm = form.forms[0] if hasattr(frm, 'base_model') and frm.base_model: whole_associated_models.append(frm.base_model) + elif hasattr(frm, 'base_models') and frm.base_models: + whole_associated_models += frm.base_models else: whole_associated_models += associated_models.keys() fields = frm.fields.copy() @@ -291,8 +293,9 @@ class Wizard(NamedUrlWizardView): fields.pop('DELETE') multi = len(fields) > 1 if multi: - assert hasattr(frm, 'base_model'), \ - u"Must define a base_model for " + \ + assert hasattr(frm, 'base_model') or \ + hasattr(frm, 'base_models'), \ + u"Must define a base_model(s) for " + \ unicode(frm.__class__) for frm in form.forms: if not frm.is_valid(): @@ -314,7 +317,11 @@ class Wizard(NamedUrlWizardView): else: m2m.append((key, value)) if multi and vals: - m2m.append((frm.base_model, vals)) + if hasattr(frm, 'base_models'): + for m in frm.base_models: + m2m.append((frm.base_model, m)) + else: + m2m.append((frm.base_model, vals)) elif type(form.cleaned_data) == dict: for key in form.cleaned_data: if key.startswith('hidden_'): @@ -336,15 +343,17 @@ class Wizard(NamedUrlWizardView): value = model.objects.get(pk=value) else: value = None - if hasattr(form, 'base_model') and form.base_model and \ - form.base_model == key: - whole_associated_models.append(form.base_model) + if (hasattr(form, 'base_model') and form.base_model and + form.base_model == key) or ( + hasattr(form, 'base_models') and + key in form.base_models): + whole_associated_models.append(key) if value: vals = value if type(vals) not in (list, tuple): vals = [vals] for val in vals: - m2m.append((form.base_model, val)) + m2m.append((key, val)) else: dct[key] = value return self.save_model(dct, m2m, whole_associated_models, form_list, @@ -445,27 +454,27 @@ class Wizard(NamedUrlWizardView): obj.save() m2m_items = {} for model in whole_associated_models: - getattr(obj, model+'s').clear() + getattr(obj, model + 's').clear() for key, value in m2m: if key not in m2m_items: if type(key) == dict: vals = [] - for item in getattr(obj, key+'s').all(): + for item in getattr(obj, key + 's').all(): v = {} for k in value.keys(): v[k] = getattr(item, k) vals.append(v) m2m_items[key] = vals else: - m2m_items[key] = getattr(obj, key+'s').all() + m2m_items[key] = getattr(obj, key + 's').all() if value not in m2m_items[key]: if type(value) == dict: - model = getattr(obj, key+'s').model + model = getattr(obj, key + 's').model if issubclass(model, models.BaseHistorizedItem): value['history_modifier'] = self.request.user value = model.objects.create(**value) value.save() - getattr(obj, key+'s').add(value) + getattr(obj, key + 's').add(value) # necessary to manage interaction between models like # material_index management for baseitems obj.save() @@ -979,7 +988,7 @@ class AccountWizard(Wizard): continue for key in form.cleaned_data: if key == 'hidden_password' and form.cleaned_data[key]: - datas[-1][1].append((_("New password"), "*"*8)) + datas[-1][1].append((_("New password"), "*" * 8)) return datas def done(self, form_list, **kwargs): @@ -1032,7 +1041,7 @@ class AccountWizard(Wizard): 'password': dct['password'], 'app_name': app_name, 'site': site and site.domain or "" - }) + }) t = loader.get_template('account_activation_email.txt') msg = t.render(context) subject = _(u"[%(app_name)s] Account creation/modification") % { |