summaryrefslogtreecommitdiff
path: root/archaeological_warehouse/forms.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_warehouse/forms.py')
-rw-r--r--archaeological_warehouse/forms.py64
1 files changed, 63 insertions, 1 deletions
diff --git a/archaeological_warehouse/forms.py b/archaeological_warehouse/forms.py
index 125adb2b5..9c39c61c5 100644
--- a/archaeological_warehouse/forms.py
+++ b/archaeological_warehouse/forms.py
@@ -43,7 +43,7 @@ from bootstrap_datepicker.widgets import DatePicker
from ishtar_common.forms import name_validator, reverse_lazy, \
get_form_selection, ManageOldType, FinalForm, FormSet, \
CustomForm, FieldType, DocumentItemSelect, FormHeader, TableSelect, \
- CustomFormSearch, MultiSearchForm, LockForm
+ CustomFormSearch, MultiSearchForm, LockForm, QAForm
from ishtar_common.forms_common import get_town_field, MergeForm, ManualMerge,\
MergeIntoForm
from archaeological_finds.forms import FindMultipleFormSelection, \
@@ -547,3 +547,65 @@ class FindPackagingFormSelection(FindMultipleFormSelection):
class ContainerDeletionForm(FinalForm):
confirm_msg = _("Would you like to delete this container?")
confirm_end_msg = _("Would you like to delete this container?")
+
+
+class QAContainerFormMulti(QAForm):
+ PREFIX = "qa"
+ form_admin_name = _("Container - Quick action - Modify")
+ form_slug = "container-quickaction-modify"
+ base_models = ['qaparent', 'qacontainer_type', 'qalocation']
+ associated_models = {
+ 'qaparent': models.Container,
+ 'qacontainer_type': models.ContainerType,
+ 'qalocation': models.Warehouse,
+ }
+
+ MULTI = True
+ REPLACE_FIELDS = [
+ "qaparent",
+ "qacontainer_type",
+ "qalocation"
+ ]
+
+ HEADERS = {
+ "qalocation": FormHeader(_("Warehouse")),
+ }
+
+ SINGLE_FIELDS = []
+ qacontainer_type = forms.ChoiceField(label=_("Container type"),
+ required=False, choices=[])
+ qalocation = forms.IntegerField(
+ label=_("Location"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-warehouse'),
+ associated_model=models.Warehouse),
+ validators=[valid_id(models.Warehouse)], required=False)
+ qaparent = forms.IntegerField(
+ label=_("Parent"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-container'),
+ dynamic_limit=['qalocation'],
+ associated_model=models.Container),
+ validators=[valid_id(models.Container)], required=False)
+
+ TYPES = [
+ FieldType('qacontainer_type', models.ContainerType),
+ ]
+
+ def __init__(self, *args, **kwargs):
+ super(QAContainerFormMulti, self).__init__(*args, **kwargs)
+ locations = set([item.location_id for item in self.items])
+ if len(locations) == 1:
+ self.fields["qalocation"].initial = locations.pop()
+
+ def _get_qalocation(self, value):
+ try:
+ return models.Warehouse.objects.get(pk=value).name
+ except models.Warehouse.DoesNotExist:
+ return ""
+
+ def _get_qaparent(self, value):
+ try:
+ return models.Container.objects.get(pk=value).cached_label
+ except models.Container.DoesNotExist:
+ return ""