summaryrefslogtreecommitdiff
path: root/ishtar_common/forms_common.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2024-02-08 16:51:35 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2024-02-10 14:45:20 +0100
commitc9877e344061cdf7dbd000dce2bd4f213551603e (patch)
tree376e10f8429b8e6295ae9571aefdcb8b2881675f /ishtar_common/forms_common.py
parent312663b48eb1472a5283225705e44ad9005257b9 (diff)
downloadIshtar-c9877e344061cdf7dbd000dce2bd4f213551603e.tar.bz2
Ishtar-c9877e344061cdf7dbd000dce2bd4f213551603e.zip
✨ find/document fields: forms, searches
fields: quantity_comment, technical_areas, technical_processes, rights_owner, licenses, copyright, shooting_angle.
Diffstat (limited to 'ishtar_common/forms_common.py')
-rw-r--r--ishtar_common/forms_common.py62
1 files changed, 60 insertions, 2 deletions
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index e2597175b..872571aad 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -1915,7 +1915,9 @@ class DocumentForm(forms.ModelForm, CustomForm, ManageOldType):
"source_type": models.SourceType,
"support_type": models.SupportType,
"publisher": models.Organization,
+ "rights_owner": models.Organization,
"format_type": models.Format,
+ "shooting_angle": models.ShootingAngle,
}
pk = forms.IntegerField(label="", required=False, widget=forms.HiddenInput)
@@ -1934,6 +1936,9 @@ class DocumentForm(forms.ModelForm, CustomForm, ManageOldType):
model=models.Format, label=_("Format"), choices=[], required=False
)
scale = forms.CharField(label=_("Scale"), max_length=30, required=False)
+ shooting_angle = widgets.ModelChoiceField(
+ model=models.ShootingAngle, label=_("Shooting angle"), choices=[], required=False
+ )
container_id = forms.IntegerField(
label=_("Current container"),
widget=widgets.JQueryAutoComplete(
@@ -1988,6 +1993,19 @@ class DocumentForm(forms.ModelForm, CustomForm, ManageOldType):
licenses = widgets.Select2MultipleField(
label=_("Rights of use / licenses"), required=False, model=models.LicenseType
)
+ rights_owner = forms.IntegerField(
+ label=_("Rights owner"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy("autocomplete-organization"),
+ associated_model=models.Organization,
+ new=True,
+ ),
+ validators=[models.valid_id(models.Organization)],
+ required=False,
+ )
+ copyright = forms.CharField(
+ label=_("Copyright"), widget=forms.Textarea, required=False
+ )
tags = widgets.Select2MultipleField(
label=_("Tags"),
required=False,
@@ -2076,6 +2094,7 @@ class DocumentForm(forms.ModelForm, CustomForm, ManageOldType):
TYPES = [
FieldType("source_type", models.SourceType),
FieldType("support_type", models.SupportType),
+ FieldType("shooting_angle", models.ShootingAngle),
FieldType("format_type", models.Format),
FieldType("language", models.Language),
FieldType("licences", models.LicenseType, is_multiple=True),
@@ -2092,6 +2111,7 @@ class DocumentForm(forms.ModelForm, CustomForm, ManageOldType):
"format_type",
"support_type",
"scale",
+ "shooting_angle",
"image",
"associated_file",
"associated_url",
@@ -2102,10 +2122,12 @@ class DocumentForm(forms.ModelForm, CustomForm, ManageOldType):
"creation_date",
"publisher",
"publishing_year",
- "language",
"isbn",
"issn",
"licenses",
+ "rights_owner",
+ "copyright",
+ "language",
"source",
"source_free_input",
"source_page_range",
@@ -2133,6 +2155,7 @@ class DocumentForm(forms.ModelForm, CustomForm, ManageOldType):
# field name, permission, options
("tags", ("ishtar_common.add_documenttag",), {"new": True}),
("authors", ("ishtar_common.add_author",), {"new": True}),
+ ("rights_owner", ("ishtar_common.add_organization",), {"new": True}),
("publisher", ("ishtar_common.add_organization",), {"new": True}),
("container", ("archaeological_warehouse.add_container",), {"new": True}),
("container_ref", ("archaeological_warehouse.add_container",), {"new": True}),
@@ -2281,6 +2304,14 @@ class DocumentForm(forms.ModelForm, CustomForm, ManageOldType):
except models.Organization.DoesNotExist:
return
+ def clean_rights_owner(self):
+ if not self.cleaned_data.get("rights_owner", None):
+ return
+ try:
+ return models.Organization.objects.get(pk=self.cleaned_data["rights_owner"])
+ except models.Organization.DoesNotExist:
+ return
+
def save(self, commit=True):
if not self.cleaned_data.get("authors", None):
self.cleaned_data["authors"] = []
@@ -2368,6 +2399,15 @@ class DocumentSelect(HistorySelect):
isbn = forms.CharField(label=_("ISBN"))
issn = forms.CharField(label=_("ISSN"))
licenses = forms.ChoiceField(label=_("Rights of use / licenses"), choices=[])
+ rights_owner = forms.IntegerField(
+ label=_("Rights owner"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy("autocomplete-organization"),
+ associated_model=models.Organization,
+ ),
+ validators=[models.valid_id(models.Organization)],
+ )
+ copyright = forms.CharField(label=_("Copyright"))
comment = forms.CharField(label=_("Comment"))
additional_information = forms.CharField(label=_("Additional informations"))
@@ -2521,17 +2561,22 @@ class DocumentFormMultiSelection(LockForm, MultiSearchForm):
class QADocumentFormMulti(QAForm):
form_admin_name = _("Document - Quick action - Modify")
form_slug = "document-quickaction-modify"
- base_models = ["qa_source_type"]
+ base_models = ["qa_source_type", "qa_rights_owner"]
associated_models = {
"qa_source_type": models.SourceType,
"qa_authors": models.Author,
"qa_tags": models.DocumentTag,
+ "qa_rights_owner": models.Organization,
+ "qa_licenses": models.LicenseType,
}
MULTI = True
REPLACE_FIELDS = [
"qa_source_type",
"qa_creation_date",
+ "qa_rights_owner",
+ "qa_licenses",
+ "qa_copyright",
]
qa_source_type = forms.ChoiceField(label=_("Source type"), required=False)
qa_authors = widgets.ModelJQueryAutocompleteField(
@@ -2544,11 +2589,17 @@ class QADocumentFormMulti(QAForm):
qa_support_type = forms.ChoiceField(label=_("Medium"), choices=[], required=False)
qa_scale = forms.CharField(label=_("Scale"), max_length=30, required=False)
qa_tags = forms.ChoiceField(label=_("Tags"), choices=[], required=False)
+ qa_licenses = forms.ChoiceField(label=_("Rights of use / licenses"), choices=[], required=False)
+ qa_rights_owner = widgets.ModelJQueryAutocompleteField(
+ model=models.Organization, label=_("Rights owner"), new=True, required=False
+ )
+ qa_copyright = forms.CharField(label=_("Copyright"), required=False)
TYPES = [
FieldType("qa_source_type", models.SourceType),
FieldType("qa_format_type", models.Format),
FieldType("qa_support_type", models.SupportType),
+ FieldType("qa_licenses", models.LicenseType),
FieldType("qa_tags", models.DocumentTag),
]
@@ -2559,6 +2610,13 @@ class QADocumentFormMulti(QAForm):
return ""
return value
+ def _get_qa_rights_owner(self, value):
+ try:
+ value = models.Organization.objects.get(pk=value).cached_label
+ except models.Organization.DoesNotExist:
+ return ""
+ return value
+
class QADocumentDuplicateForm(IshtarForm):
qa_title = forms.CharField(label=_("Title"), max_length=500, required=False)