summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/forms_common.py3
-rw-r--r--ishtar_common/models.py1
-rw-r--r--ishtar_common/templates/ishtar/forms/qa_document_duplicate.html2
-rw-r--r--ishtar_common/templates/ishtar/forms/success.html6
-rw-r--r--ishtar_common/urls.py2
-rw-r--r--ishtar_common/utils.py9
-rw-r--r--ishtar_common/views.py5
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):