diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-08-01 12:41:44 +0200 |
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-08-13 18:26:03 +0200 |
| commit | b93797feaa842068f7b93676bddb7ca3e14eb356 (patch) | |
| tree | 34a471d9e263947fdfc6e6f1c2287f2fd3cb411a /archaeological_operations | |
| parent | 5bd94ea3b1083607642afaf014d2663ce420febf (diff) | |
| download | Ishtar-b93797feaa842068f7b93676bddb7ca3e14eb356.tar.bz2 Ishtar-b93797feaa842068f7b93676bddb7ca3e14eb356.zip | |
Fix innapropriate parcel deletion
Diffstat (limited to 'archaeological_operations')
| -rw-r--r-- | archaeological_operations/forms.py | 28 | ||||
| -rw-r--r-- | archaeological_operations/models.py | 12 |
2 files changed, 24 insertions, 16 deletions
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index acce3835b..866700871 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -77,20 +77,6 @@ class ParcelForm(IshtarForm): public_domain = forms.BooleanField(label=_(u"Public domain"), initial=False, required=False) - def count_valid_fields(self, data): - if not data: - return 0 - data = get_data_from_formset(data) - nb = len(data) - # remove last non relevant fields - for idx, vals in enumerate(reversed(data[:])): - if 'public_domain' in vals: - break - if 'section' in vals and 'parcel_number' in vals: - break - nb -= 1 - return nb - def __init__(self, *args, **kwargs): towns = None if 'data' in kwargs and 'TOWNS' in kwargs['data']: @@ -106,6 +92,20 @@ class ParcelForm(IshtarForm): if towns: self.fields['town'].choices = towns + def count_valid_fields(self, data): + if not data: + return 0 + data = get_data_from_formset(data) + nb = len(data) + # remove last non relevant fields + for idx, vals in enumerate(reversed(data[:])): + if 'public_domain' in vals: + break + if 'section' in vals and 'parcel_number' in vals: + break + nb -= 1 + return nb + def clean(self): """Check required fields""" if any(self.errors): diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index 1c3bbde99..1a534af7a 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -1395,6 +1395,8 @@ def strip_zero(value): class Parcel(LightHistorizedItem): EXTERNAL_ID_KEY = 'parcel_external_id' + BASE_SEARCH_VECTORS = ['section', 'parcel_number'] + PARENT_SEARCH_VECTORS = ['operation'] associated_file = models.ForeignKey( 'archaeological_files.File', @@ -1569,21 +1571,27 @@ def parcel_post_save(sender, **kwargs): if not kwargs['instance']: return parcel = kwargs['instance'] - created = kwargs.get('created', None) cached_label_changed(sender, **kwargs) updated = False + + """ # remove when the parcel is linked to nothing + # problematic in wizards + # TODO: add admin action if not getattr(parcel, '_updated_id', None) and not created \ and not parcel.operation and not parcel.associated_file: if parcel.context_record.count(): # trying to restore a lost parcel parcel.operation = parcel.context_record.all()[0].operation updated = True - else: + elif parcel.id: parcel.delete() return + else: + return + """ if updated: parcel.save() |
