diff options
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/forms_common.py | 3 | ||||
-rw-r--r-- | ishtar_common/models.py | 1 | ||||
-rw-r--r-- | ishtar_common/templates/ishtar/forms/qa_document_duplicate.html | 2 | ||||
-rw-r--r-- | ishtar_common/templates/ishtar/forms/success.html | 6 | ||||
-rw-r--r-- | ishtar_common/urls.py | 2 | ||||
-rw-r--r-- | ishtar_common/utils.py | 9 | ||||
-rw-r--r-- | ishtar_common/views.py | 5 |
7 files changed, 22 insertions, 6 deletions
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py index 0e4cc68db..dfd364764 100644 --- a/ishtar_common/forms_common.py +++ b/ishtar_common/forms_common.py @@ -2070,6 +2070,8 @@ class QADocumentFormMulti(QAForm): class QADocumentDuplicateForm(IshtarForm): qa_title = forms.CharField(label=_("Title"), max_length=500, required=False) qa_source_type = forms.ChoiceField(label=_("Type"), choices=[], required=False) + open_edit = forms.BooleanField(label=_("Edit duplicated item"), required=False) + open_edit.widget.NO_FORM_CONTROL = True TYPES = [ FieldType("qa_source_type", models.SourceType), @@ -2083,7 +2085,6 @@ class QADocumentDuplicateForm(IshtarForm): self.user = self.user.ishtaruser self.document = kwargs.pop("items")[0] super(QADocumentDuplicateForm, self).__init__(*args, **kwargs) - self.fields["qa_title"].initial = self.document.title + str(_(" - duplicate")) if self.document.source_type: self.fields["qa_source_type"].initial = self.document.source_type.pk diff --git a/ishtar_common/models.py b/ishtar_common/models.py index e0b22a4f0..f483020e0 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -446,6 +446,7 @@ class ImageModel(models.Model, ImageContainerModel): max_length=255, help_text=max_size_help(), ) + DUPLICATE_EXCLUDE = ["image", "thumbnail"] IMAGE_MAX_SIZE = settings.IMAGE_MAX_SIZE THUMB_MAX_SIZE = settings.THUMB_MAX_SIZE IMAGE_PREFIX = "" diff --git a/ishtar_common/templates/ishtar/forms/qa_document_duplicate.html b/ishtar_common/templates/ishtar/forms/qa_document_duplicate.html index 4dc04d15d..f299f3c24 100644 --- a/ishtar_common/templates/ishtar/forms/qa_document_duplicate.html +++ b/ishtar_common/templates/ishtar/forms/qa_document_duplicate.html @@ -92,4 +92,6 @@ </div> {% endif %} +{{form.open_edit}} <label for="id_open_edit">{{form.open_edit.label}}</label> + {% endblock %} diff --git a/ishtar_common/templates/ishtar/forms/success.html b/ishtar_common/templates/ishtar/forms/success.html index 0fe36ca53..9a86e893e 100644 --- a/ishtar_common/templates/ishtar/forms/success.html +++ b/ishtar_common/templates/ishtar/forms/success.html @@ -5,6 +5,12 @@ $(document).ready(function(){ $("#form-result-div").parent().modal("hide"); {% if context == 'bookmark' %} load_bookmark_list(); + {% elif context == 'redirect' %} + let redirect = "{{arg}}"; + redirect = redirect.replace(/\|/g, "/"); + setTimeout(function(){ + window.location.replace(redirect); + }, 500); {% endif %} main_submit_search(); }); diff --git a/ishtar_common/urls.py b/ishtar_common/urls.py index 9266a7a9a..9e120a945 100644 --- a/ishtar_common/urls.py +++ b/ishtar_common/urls.py @@ -261,7 +261,7 @@ urlpatterns = [ ), url(r"^alerts/$", views.AlertList.as_view(), name="alert-list"), url( - r"^success(?:/(?P<context>[a-z-]+))?/$", + r"^success(?:/(?P<context>[a-z-]+)(?:/(?P<arg>[0-9a-z-|]+))?)?/$", TemplateView.as_view(template_name="ishtar/forms/success.html"), name="success", ), diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py index e6283ae5e..e27b26e70 100644 --- a/ishtar_common/utils.py +++ b/ishtar_common/utils.py @@ -2029,6 +2029,7 @@ PRIVATE_FIELDS = ("id", "history_modifier", "order", "uuid") def duplicate_item(item, user=None, data=None): model = item.__class__ new = model.objects.get(pk=item.pk) + data = data or {} for field in model._meta.fields: # pk is in PRIVATE_FIELDS so: new.pk = None and a new @@ -2039,9 +2040,11 @@ def duplicate_item(item, user=None, data=None): setattr(new, field.name, None) if user: new.history_user = user - if data: - for k in data: - setattr(new, k, data[k]) + for k in data: + setattr(new, k, data[k]) + exclude_fields = getattr(model, "DUPLICATE_EXCLUDE", []) + for k in exclude_fields: + setattr(new, k, None) new.save() if hasattr(user, "user_ptr"): if hasattr(new, "history_creator"): diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 4e9fff2da..2cf09e66f 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -2561,7 +2561,10 @@ class QADocumentDuplicateFormView(QAItemForm): return kwargs def form_valid(self, form): - form.save() + new = form.save() + if form.cleaned_data.get("open_edit", False): + redir = reverse("edit-document", args=[new.pk]).replace("/", "|") + return HttpResponseRedirect(reverse("success", args=["redirect", redir])) return HttpResponseRedirect(reverse("success")) def get_context_data(self, **kwargs): |