Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-django-attachments for 
openSUSE:Factory checked in at 2023-04-24 22:31:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-django-attachments (Old)
 and      /work/SRC/openSUSE:Factory/.python-django-attachments.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-django-attachments"

Mon Apr 24 22:31:03 2023 rev:6 rq:1082315 version:1.11

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-django-attachments/python-django-attachments.changes
      2023-04-16 16:07:44.241045943 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-django-attachments.new.1533/python-django-attachments.changes
    2023-04-24 22:31:08.535485320 +0200
@@ -1,0 +2,9 @@
+Sun Apr 23 20:12:06 UTC 2023 - Dirk Müller <dmuel...@suse.com>
+
+- update to 1.11:
+  * Return form errors as JSON from ``add_attachment()`` view
+    when the ``X-Return-Form-Errors`` request header is present.
+    Response code is 400 - BAD REQUEST because this is a client
+    error. 
+
+-------------------------------------------------------------------

Old:
----
  django-attachments-1.10.tar.gz

New:
----
  django-attachments-1.11.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-django-attachments.spec ++++++
--- /var/tmp/diff_new_pack.viBL4K/_old  2023-04-24 22:31:09.039488316 +0200
+++ /var/tmp/diff_new_pack.viBL4K/_new  2023-04-24 22:31:09.047488363 +0200
@@ -19,7 +19,7 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %define skip_python36 1
 Name:           python-django-attachments
-Version:        1.10
+Version:        1.11
 Release:        0
 Summary:        Attach files to any Django model
 License:        MIT

++++++ django-attachments-1.10.tar.gz -> django-attachments-1.11.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-attachments-1.10/CHANGELOG.rst 
new/django-attachments-1.11/CHANGELOG.rst
--- old/django-attachments-1.10/CHANGELOG.rst   2023-04-14 19:32:18.000000000 
+0200
+++ new/django-attachments-1.11/CHANGELOG.rst   2023-04-20 09:53:39.000000000 
+0200
@@ -1,8 +1,17 @@
 Changelog:
 ==========
 
+v1.11 (2023-04-20)
+------------------
+
+- Return form errors as JSON from ``add_attachment()`` view
+  when the ``X-Return-Form-Errors`` request header is present.
+  Response code is 400 - BAD REQUEST because this is a client
+  error.
+
+
 v1.10 (2023-04-14)
--------------------
+------------------
 
 - Support custom form validators via ``AppConfig.attachment_validators``
 - Remove quotes from "attachment_list" (Aaron C. de Bruyn)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-attachments-1.10/PKG-INFO 
new/django-attachments-1.11/PKG-INFO
--- old/django-attachments-1.10/PKG-INFO        2023-04-14 19:32:47.553861900 
+0200
+++ new/django-attachments-1.11/PKG-INFO        2023-04-20 09:54:47.045522000 
+0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: django-attachments
-Version: 1.10
+Version: 1.11
 Summary: django-attachments is generic Django application to attach Files 
(Attachments) to any model.
 Home-page: https://github.com/bartTC/django-attachments
 Author: Martin Mahner
@@ -291,8 +291,17 @@
 Changelog:
 ==========
 
+v1.11 (2023-04-20)
+------------------
+
+- Return form errors as JSON from ``add_attachment()`` view
+  when the ``X-Return-Form-Errors`` request header is present.
+  Response code is 400 - BAD REQUEST because this is a client
+  error.
+
+
 v1.10 (2023-04-14)
--------------------
+------------------
 
 - Support custom form validators via ``AppConfig.attachment_validators``
 - Remove quotes from "attachment_list" (Aaron C. de Bruyn)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-attachments-1.10/attachments/tests/base.py 
new/django-attachments-1.11/attachments/tests/base.py
--- old/django-attachments-1.10/attachments/tests/base.py       2023-04-14 
19:03:55.000000000 +0200
+++ new/django-attachments-1.11/attachments/tests/base.py       2023-04-20 
09:53:39.000000000 +0200
@@ -43,7 +43,7 @@
 
         self.obj = self.target_model_class.objects.create(title="My first test 
item")
 
-    def _upload_testfile(self, file_obj=None, file_content=b"file content"):
+    def _upload_testfile(self, file_obj=None, file_content=b"file content", 
**extra):
         """
         Uploads a sample file for the given user.
         """
@@ -63,5 +63,6 @@
                 content_type="image/jpeg",
             )
         return self.client.post(
-            add_url, {"attachment_file": file_obj}, follow=True
+            add_url, {"attachment_file": file_obj}, follow=True,
+            **extra
         )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-attachments-1.10/attachments/tests/test_views.py 
new/django-attachments-1.11/attachments/tests/test_views.py
--- old/django-attachments-1.10/attachments/tests/test_views.py 2023-04-14 
19:03:55.000000000 +0200
+++ new/django-attachments-1.11/attachments/tests/test_views.py 2023-04-20 
09:53:39.000000000 +0200
@@ -1,6 +1,8 @@
 import os
-
+import json
 import mock
+
+from http import HTTPStatus
 from django.urls import reverse
 
 from ..models import Attachment
@@ -248,4 +250,24 @@
         self.assertEqual(Attachment.objects.count(), 0)
         self.assertEqual(
             Attachment.objects.attachments_for_object(self.obj).count(), 0
+        )
+
+    def test_form_errors_are_returned_as_json(self):
+        self.client.login(**self.cred_jon)
+        response = self._upload_testfile(
+            file_content=b"<xml>this is not allowed</xml>",
+            HTTP_X_RETURN_FORM_ERRORS=True,
+        )
+
+        self.assertEqual(response.status_code, HTTPStatus.BAD_REQUEST)
+        self.assertEqual(response.headers.get("Content-Type"), 
"application/json")
+
+        # this should be a dict
+        errors = json.loads(response.content)
+        # note: field errors are a list of string messages
+        self.assertEqual(errors["attachment_file"], ["XML is forbidden"])
+
+        self.assertEqual(Attachment.objects.count(), 0)
+        self.assertEqual(
+            Attachment.objects.attachments_for_object(self.obj).count(), 0
         )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-attachments-1.10/attachments/views.py 
new/django-attachments-1.11/attachments/views.py
--- old/django-attachments-1.10/attachments/views.py    2023-03-11 
20:52:08.000000000 +0100
+++ new/django-attachments-1.11/attachments/views.py    2023-04-20 
09:53:39.000000000 +0200
@@ -2,11 +2,12 @@
 
 import os
 
+from http import HTTPStatus
 from django.apps import apps
 from django.conf import settings
 from django.contrib import messages
 from django.contrib.auth.decorators import login_required
-from django.http import HttpResponseRedirect
+from django.http import HttpResponseRedirect, JsonResponse
 from django.shortcuts import get_object_or_404, render
 from django.urls import reverse
 from django.utils.translation import gettext
@@ -61,6 +62,9 @@
         messages.success(request, gettext("Your attachment was uploaded."))
         return HttpResponseRedirect(next_)
 
+    if request.headers.get("X-Return-Form-Errors", None):
+        return JsonResponse(form.errors, status=HTTPStatus.BAD_REQUEST)
+
     template_context = {
         "form": form,
         "form_url": add_url_for_obj(obj),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-attachments-1.10/django_attachments.egg-info/PKG-INFO 
new/django-attachments-1.11/django_attachments.egg-info/PKG-INFO
--- old/django-attachments-1.10/django_attachments.egg-info/PKG-INFO    
2023-04-14 19:32:47.000000000 +0200
+++ new/django-attachments-1.11/django_attachments.egg-info/PKG-INFO    
2023-04-20 09:54:46.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: django-attachments
-Version: 1.10
+Version: 1.11
 Summary: django-attachments is generic Django application to attach Files 
(Attachments) to any model.
 Home-page: https://github.com/bartTC/django-attachments
 Author: Martin Mahner
@@ -291,8 +291,17 @@
 Changelog:
 ==========
 
+v1.11 (2023-04-20)
+------------------
+
+- Return form errors as JSON from ``add_attachment()`` view
+  when the ``X-Return-Form-Errors`` request header is present.
+  Response code is 400 - BAD REQUEST because this is a client
+  error.
+
+
 v1.10 (2023-04-14)
--------------------
+------------------
 
 - Support custom form validators via ``AppConfig.attachment_validators``
 - Remove quotes from "attachment_list" (Aaron C. de Bruyn)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-attachments-1.10/setup.cfg 
new/django-attachments-1.11/setup.cfg
--- old/django-attachments-1.10/setup.cfg       2023-04-14 19:32:47.554861800 
+0200
+++ new/django-attachments-1.11/setup.cfg       2023-04-20 09:54:47.045522000 
+0200
@@ -1,6 +1,6 @@
 [metadata]
 name = django-attachments
-version = 1.10
+version = 1.11
 description = django-attachments is generic Django application to attach Files 
(Attachments) to any model.
 long_description = file: README.rst, CHANGELOG.rst
 author = Martin Mahner

Reply via email to