Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-django-rq for openSUSE:Factory checked in at 2023-02-10 14:36:10 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-django-rq (Old) and /work/SRC/openSUSE:Factory/.python-django-rq.new.1848 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-django-rq" Fri Feb 10 14:36:10 2023 rev:3 rq:1064214 version:2.7.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-django-rq/python-django-rq.changes 2023-01-04 20:18:35.745630047 +0100 +++ /work/SRC/openSUSE:Factory/.python-django-rq.new.1848/python-django-rq.changes 2023-02-10 14:36:19.258279283 +0100 @@ -1,0 +2,8 @@ +Fri Feb 10 10:30:19 UTC 2023 - Dirk Müller <dmuel...@suse.com> + +- update to 2.7.0: + * Able to show multiple execution results for each job + (requires RQ v1.12). + * Various admin interface improvements. + +------------------------------------------------------------------- Old: ---- django-rq-2.6.0.tar.gz New: ---- django-rq-2.7.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-django-rq.spec ++++++ --- /var/tmp/diff_new_pack.Mmki4C/_old 2023-02-10 14:36:19.646281601 +0100 +++ /var/tmp/diff_new_pack.Mmki4C/_new 2023-02-10 14:36:19.646281601 +0100 @@ -19,7 +19,7 @@ %define skip_python2 1 %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-django-rq -Version: 2.6.0 +Version: 2.7.0 Release: 0 Summary: Simple app that provides django integration for RQ (Redis Queue) License: MIT ++++++ django-rq-2.6.0.tar.gz -> django-rq-2.7.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-rq-2.6.0/.github/workflows/test.yml new/django-rq-2.7.0/.github/workflows/test.yml --- old/django-rq-2.6.0/.github/workflows/test.yml 2022-11-05 03:01:04.000000000 +0100 +++ new/django-rq-2.7.0/.github/workflows/test.yml 2023-02-07 12:10:27.000000000 +0100 @@ -16,7 +16,7 @@ name: Python${{ matrix.python-version }}/Django${{ matrix.django-version }} strategy: matrix: - python-version: ["3.8.3", "3.9", "3.10"] + python-version: ["3.8", "3.9", "3.10"] django-version: ["3.2.16", "4.0.8", "4.1.3"] steps: @@ -38,4 +38,4 @@ - name: Run Test run: | - `which django-admin` test django_rq --settings=django_rq.tests.settings --pythonpath=. \ No newline at end of file + `which django-admin` test django_rq --settings=django_rq.tests.settings --pythonpath=. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-rq-2.6.0/CHANGELOG.md new/django-rq-2.7.0/CHANGELOG.md --- old/django-rq-2.6.0/CHANGELOG.md 2022-11-05 03:01:04.000000000 +0100 +++ new/django-rq-2.7.0/CHANGELOG.md 2023-02-07 12:10:27.000000000 +0100 @@ -1,4 +1,8 @@ -# Version 2.5.2 (2022-11-05) +# Version 2.7.0 (2023-02-07) +* Able to show multiple execution results for each job (requires RQ v1.12). Thanks @selwin! +* Various admin interface improvements. Thanks @selwin! + +# Version 2.6.0 (2022-11-05) * Added `--max-jobs` argument to `rqworker` management command. Thanks @arpit-goel! * Remove job from `ScheduledJobRegistry` if a scheduled job is enqueued from admin. Thanks @robertaistleitner! * Minor code cleanup. Thanks @reybog90! diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-rq-2.6.0/README.rst new/django-rq-2.7.0/README.rst --- old/django-rq-2.6.0/README.rst 2022-11-05 03:01:04.000000000 +0100 +++ new/django-rq-2.7.0/README.rst 2023-02-07 12:10:27.000000000 +0100 @@ -80,12 +80,6 @@ .. code-block:: python - # For Django < 2.0 - urlpatterns += [ - url(r'^django-rq/', include('django_rq.urls')), - ] - - # For Django >= 2.0 urlpatterns += [ path('django-rq/', include('django_rq.urls')) ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-rq-2.6.0/django_rq/__init__.py new/django-rq-2.7.0/django_rq/__init__.py --- old/django-rq-2.6.0/django_rq/__init__.py 2022-11-05 03:01:04.000000000 +0100 +++ new/django-rq-2.7.0/django_rq/__init__.py 2023-02-07 12:10:27.000000000 +0100 @@ -1,4 +1,4 @@ -VERSION = (2, 6, 0) +VERSION = (2, 7, 0) from .decorators import job from .queues import enqueue, get_connection, get_queue, get_scheduler diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-rq-2.6.0/django_rq/templates/django_rq/job_detail.html new/django-rq-2.7.0/django_rq/templates/django_rq/job_detail.html --- old/django-rq-2.6.0/django_rq/templates/django_rq/job_detail.html 2022-11-05 03:01:04.000000000 +0100 +++ new/django-rq-2.7.0/django_rq/templates/django_rq/job_detail.html 2023-02-07 12:10:27.000000000 +0100 @@ -1,4 +1,4 @@ -{% extends "admin/base_site.html" %} +{% extends "admin/change_list.html" %} {% load static django_rq %} @@ -27,7 +27,7 @@ </div> {% endblock %} -{% block content_title %}<h1>Job Info</h1>{% endblock %} +{% block content_title %}<h2>Job {{ job.id }}</h2>{% endblock %} {% block content %} @@ -37,37 +37,30 @@ <div class="form-row"> <div> - <label class="required">ID:</label> - <div class="data">{{ job.id }}</div> + <label>Queue:</label> + <div class="readonly">{{ job.origin }}</div> </div> </div> <div class="form-row"> <div> - <label class="required">Queue:</label> - <div class="data">{{ job.origin }}</div> + <label>Timeout:</label> + <div class="readonly">{{ job.timeout }}</div> </div> </div> <div class="form-row"> <div> - <label class="required">Timeout:</label> - <div class="data">{{ job.timeout }}</div> - </div> - </div> - - <div class="form-row"> - <div> - <label class="required">Result TTL:</label> - <div class="data">{{ job.result_ttl }}</div> + <label>Result TTL:</label> + <div class="readonly">{{ job.result_ttl }}</div> </div> </div> {% if job.created_at %} <div class="form-row"> <div> - <label class="required">Created:</label> - <div class="data">{{ job.created_at|to_localtime|date:"Y-m-d, H:i:s" }}</div> + <label>Created:</label> + <div class="readonly">{{ job.created_at|to_localtime|date:"Y-m-d, H:i:s" }}</div> </div> </div> {% endif %} @@ -75,8 +68,8 @@ {% if job.enqueued_at %} <div class="form-row"> <div> - <label class="required">Queued:</label> - <div class="data">{{ job.enqueued_at|to_localtime|date:"Y-m-d, H:i:s" }}</div> + <label>Queued:</label> + <div class="readonly">{{ job.enqueued_at|to_localtime|date:"Y-m-d, H:i:s" }}</div> </div> </div> {% endif %} @@ -84,8 +77,8 @@ {% if job.started_at %} <div class="form-row"> <div> - <label class="required">Started:</label> - <div class="data">{{ job.started_at|to_localtime|date:"Y-m-d, H:i:s" }}</div> + <label>Started:</label> + <div class="readonly">{{ job.started_at|to_localtime|date:"Y-m-d, H:i:s" }}</div> </div> </div> {% endif %} @@ -93,37 +86,37 @@ {% if job.ended_at %} <div class="form-row"> <div> - <label class="required">Ended:</label> - <div class="data">{{ job.ended_at|to_localtime|date:"Y-m-d, H:i:s" }}</div> + <label>Ended:</label> + <div class="readonly">{{ job.ended_at|to_localtime|date:"Y-m-d, H:i:s" }}</div> </div> </div> {% endif %} <div class="form-row"> <div> - <label class="required">Status:</label> - <div class="data">{{ job.get_status }}</div> + <label>Status:</label> + <div class="readonly">{{ job.get_status }}</div> </div> </div> <div class="form-row"> <div> - <label class="required">Callable:</label> - <div class="data">{{ job|show_func_name }}</div> + <label>Callable:</label> + <div class="readonly">{{ job|show_func_name }}</div> </div> </div> <div class="form-row"> <div> - <label class="required">Meta:</label> + <label>Meta:</label> <div class="data">{{ job.meta }}</div> </div> </div> <div class="form-row"> <div> - <label class="required">Args:</label> - <div class="data"> + <label>Args:</label> + <div> {% if data_is_valid %} {% if job.args %} <ul> @@ -141,8 +134,8 @@ <div class="form-row"> <div> - <label class="required">Kwargs:</label> - <div class="data"> + <label>Kwargs:</label> + <div> {% if data_is_valid %} {% if job.kwargs %} <ul> @@ -160,8 +153,8 @@ <div class="form-row"> <div> - <label class="required">Depends On:</label> - <div class="data"> + <label>Depends On:</label> + <div class="readonly"> {% if dependency_id %} <a href = "{% url 'rq_job_detail' queue_index dependency_id %}"> {{ dependency_id }} @@ -170,23 +163,26 @@ </div> </div> </div> - - - <div class="form-row"> - <div> - <label class="required">Exception:</label> - <div class="data"><pre>{% if job.exc_info %}{{ job.exc_info|linebreaks }}{% endif %}</pre></div> + {% if exc_info %} + <div class="form-row"> + <div> + <label>Exception:</label> + <div><pre>{% if job.exc_info %}{{ job.exc_info|linebreaks }}{% endif %}</pre></div> + </div> </div> - </div> - + {% endif %} + + {% if job.legacy_result %} <div class="form-row"> <div> - <label class="required">Result:</label> - <div class="data">{{ job.result }}</div> + <label>Result:</label> + <div>{{ job.result }}</div> </div> </div> + {% endif %} </fieldset> + <div class="submit-row"> <p class="deletelink-box"><a href="delete/" class="deletelink">Delete</a></p> @@ -204,6 +200,48 @@ {% endif %} </div> + + <div class="inline-group" id="choice_set-group"> + + {% for result in job.results %} + <h2>Result {{ result.id }}</h2> + <div class="inline-related"> + + <fieldset class="module aligned "> + <div class="form-row field-choice_text"> + <div> + <label>Type:</label> + <div class="readonly">{{ result.type.name }}</div> + </div> + </div> + + <div class="form-row field-votes"> + <div> + <label>Created at: {{ result.Type }}</label> + <div class="readonly">{{ result.created_at|to_localtime|date:"Y-m-d, H:i:s" }}</div> + </div> + </div> + {% if result.type.value == 1 %} + <div class="form-row field-votes"> + <div> + <label>Return value:</label> + <div><pre>{{ result.return_value }}</pre></div> + </div> + </div> + {% elif result.type.value == 2 %} + <div class="form-row field-votes"> + <div> + <label>Exception:</label> + <div><pre>{{ result.exc_string }}</pre></div> + </div> + </div> + {% endif %} + + </fieldset> + </div> + {% endfor %} + </div> + </div> {% endblock %} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-rq-2.6.0/django_rq/views.py new/django-rq-2.7.0/django_rq/views.py --- old/django-rq-2.6.0/django_rq/views.py 2022-11-05 03:01:04.000000000 +0100 +++ new/django-rq-2.7.0/django_rq/views.py 2023-02-07 12:10:27.000000000 +0100 @@ -315,6 +315,7 @@ def job_detail(request, queue_index, job_id): queue_index = int(queue_index) queue = get_queue_by_index(queue_index) + try: job = Job.fetch(job_id, connection=queue.connection) except NoSuchJobError: @@ -326,13 +327,24 @@ except: data_is_valid = False + # Backward compatibility support for RQ < 1.12.0 + rv = job.connection.hget(job.key, 'result') + if rv is not None: + # cache the result + job.legacy_result = job.serializer.loads(rv) + try: + exc_info = job._exc_info + except AttributeError: + exc_info = None + context_data = { **admin.site.each_context(request), 'queue_index': queue_index, 'job': job, 'dependency_id': job._dependency_id, 'queue': queue, - 'data_is_valid': data_is_valid + 'data_is_valid': data_is_valid, + 'exc_info': exc_info, } return render(request, 'django_rq/job_detail.html', context_data) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-rq-2.6.0/integration_test/requirements.txt new/django-rq-2.7.0/integration_test/requirements.txt --- old/django-rq-2.6.0/integration_test/requirements.txt 2022-11-05 03:01:04.000000000 +0100 +++ new/django-rq-2.7.0/integration_test/requirements.txt 2023-02-07 12:10:27.000000000 +0100 @@ -1,5 +1,5 @@ -e .. -Django==3.2.16 +Django==3.2.17 gunicorn==20.1.0 psycopg2==2.9.5 -requests==2.28.1 +requests==2.28.2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-rq-2.6.0/setup.py new/django-rq-2.7.0/setup.py --- old/django-rq-2.6.0/setup.py 2022-11-05 03:01:04.000000000 +0100 +++ new/django-rq-2.7.0/setup.py 2023-02-07 12:10:27.000000000 +0100 @@ -3,7 +3,7 @@ setup( name='django-rq', - version='2.6.0', + version='2.7.0', author='Selwin Ong', author_email='selwin....@gmail.com', packages=['django_rq'], @@ -16,7 +16,7 @@ package_data={'': ['README.rst']}, install_requires=['django>=2.0', 'rq>=1.2', 'redis>=3'], extras_require={ - 'Sentry': ['raven>=6.1.0'], + 'Sentry': ['raven>=6.1.0'], 'testing': ['mock>=2.0.0'], }, classifiers=[ @@ -36,5 +36,5 @@ 'Programming Language :: Python :: 3.8', 'Topic :: Internet :: WWW/HTTP', 'Topic :: Software Development :: Libraries :: Python Modules', - ] + ], )