summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@proxience.com>2014-07-14 19:07:14 +0200
committerÉtienne Loks <etienne.loks@proxience.com>2014-07-14 19:07:14 +0200
commit7c5c1f73ba17425c3737e96bbc600be43608b0a2 (patch)
treeaef2cc7fa68301c5043b92082c1b60f137917786
parentbf2b42b647bbe645b576f6e685bbaad94056b292 (diff)
downloadIshtar-7c5c1f73ba17425c3737e96bbc600be43608b0a2.tar.bz2
Ishtar-7c5c1f73ba17425c3737e96bbc600be43608b0a2.zip
Fix simulatneous operation_code creation
-rw-r--r--archaeological_operations/forms.py8
-rw-r--r--archaeological_operations/models.py26
-rw-r--r--ishtar_common/static/media/style.css7
3 files changed, 28 insertions, 13 deletions
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py
index a426eaf09..efbd279ed 100644
--- a/archaeological_operations/forms.py
+++ b/archaeological_operations/forms.py
@@ -268,7 +268,7 @@ class OperationFormSelection(forms.Form):
raise forms.ValidationError(_(u"You should select an operation."))
return cleaned_data
-class OperationCodeInput(forms.HiddenInput):
+class OperationCodeInput(forms.TextInput):
"""Manage auto complete when changing year in form"""
def render(self, *args, **kwargs):
name, value = args
@@ -349,8 +349,8 @@ class OperationFormGeneral(forms.Form):
validators=[validators.MinValueValidator(1900),
validators.MaxValueValidator(2100)])
operation_code = forms.IntegerField(label=_(u"Operation code"),
- initial=models.Operation.get_available_operation_code,
- widget=OperationCodeInput)
+ initial=models.Operation.get_available_operation_code,
+ widget=OperationCodeInput(attrs={'readonly':'readonly'}))
common_name = forms.CharField(label=_(u"Generic name"), required=False,
max_length=120, widget=forms.Textarea)
operator_reference = forms.CharField(label=_(u"Operator reference"),
@@ -383,6 +383,8 @@ class OperationFormGeneral(forms.Form):
super(OperationFormGeneral, self).__init__(*args, **kwargs)
self.fields['operation_type'].choices = models.OperationType.get_types()
self.fields['operation_type'].help_text = models.OperationType.get_help()
+ if kwargs and kwargs['data']: # data POSTED
+ self.fields['operation_code'].widget.attrs.pop('readonly')
def clean(self):
cleaned_data = self.cleaned_data
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index 8b083d4be..c6e55f03b 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -573,14 +573,7 @@ class AdministrativeAct(BaseHistorizedItem, OwnPerms, ValueGetter):
template = q.all()[0]
return template.publish(self)
- def save(self, *args, **kwargs):
- if not self.signature_date:
- return super(AdministrativeAct, self).save(*args, **kwargs)
- self.year = self.signature_date.year
-
- if not self.act_type.indexed:
- return super(AdministrativeAct, self).save(*args, **kwargs)
-
+ def _get_index(self):
if not self.index:
c_index = 1
q = AdministrativeAct.objects.filter(act_type__indexed=True,
@@ -595,8 +588,21 @@ class AdministrativeAct(BaseHistorizedItem, OwnPerms, ValueGetter):
if self.pk:
conflict = conflict.exclude(pk=self.pk)
if conflict.count():
- raise ValidationError(_(u"This index already exists for "
- u"this year"))
+ if self.pk:
+ raise ValidationError(_(u"This index already exists for "
+ u"this year"))
+ else:
+ self._get_index()
+
+ def save(self, *args, **kwargs):
+ if not self.signature_date:
+ return super(AdministrativeAct, self).save(*args, **kwargs)
+ self.year = self.signature_date.year
+
+ if not self.act_type.indexed:
+ return super(AdministrativeAct, self).save(*args, **kwargs)
+
+ self._get_index()
super(AdministrativeAct, self).save(*args, **kwargs)
class Parcel(LightHistorizedItem):
diff --git a/ishtar_common/static/media/style.css b/ishtar_common/static/media/style.css
index d2dda0758..4110e6da7 100644
--- a/ishtar_common/static/media/style.css
+++ b/ishtar_common/static/media/style.css
@@ -139,6 +139,13 @@ input[role=textbox]{
-webkit-border-radius:4px;
}
+textarea[readonly=readonly],
+input[readonly=readonly]{
+ background-color:#F1F2F6;
+ border:1px solid #F1F2F6;
+}
+
+
textarea:focus,
input[type=text]:focus,
input[role=textbox]:focus{