X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/04941fc550431a551ec377ed71d7d040712a4fb5..9cbc5fae80503add586688e2095653ef02ccb59d:/gnu/packages/django.scm diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm index 3864cc884b..8e72139a07 100644 --- a/gnu/packages/django.scm +++ b/gnu/packages/django.scm @@ -1,9 +1,11 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Hartmut Goebel -;;; Copyright © 2016 Efraim Flashner -;;; Copyright © 2017 ng0 -;;; Copyright © 2017 Tobias Geerinckx-Rice +;;; Copyright © 2016, 2019 Efraim Flashner +;;; Copyright © 2017 ng0 +;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2017 Ricardo Wurmus +;;; Copyright © 2018 Vijayalakshmi Vedantham +;;; Copyright © 2019 Sam ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,6 +26,7 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix build-system python) #:use-module (gnu packages) #:use-module (gnu packages base) @@ -31,21 +34,27 @@ #:use-module (gnu packages check) #:use-module (gnu packages python) #:use-module (gnu packages python-web) - #:use-module (gnu packages time)) + #:use-module (gnu packages python-xyz) + #:use-module (gnu packages sphinx) + #:use-module (gnu packages time) + #:use-module (gnu packages xml)) (define-public python-django (package (name "python-django") - (version "1.10.8") + (version "1.11.28") (source (origin (method url-fetch) (uri (pypi-uri "Django" version)) (sha256 (base32 - "1fwqqh2zbcy9dy0lnvk338s11llnnfz2k56bf84w0wv56ayq7vyl")))) + "1ss1jyip7mlbfjn27m0j6wx80s8h4ksg6g5annkgwigp8xgy6g5k")))) (build-system python-build-system) (arguments - '(#:phases + '(#:modules ((srfi srfi-1) + (guix build python-build-system) + (guix build utils)) + #:phases (modify-phases %standard-phases (add-before 'check 'set-tzdir (lambda* (#:key inputs #:allow-other-keys) @@ -56,13 +65,23 @@ "/share/zoneinfo")) #t)) (replace 'check - (lambda _ + (lambda* (#:key inputs #:allow-other-keys) (setenv "PYTHONPATH" (string-append ".:" (getenv "PYTHONPATH"))) - (zero? (system* "python" "tests/runtests.py"))))))) + (substitute* "tests/admin_scripts/tests.py" + (("python_path = \\[") + (string-append "python_path = ['" + (find (lambda (entry) + (string-prefix? + (assoc-ref inputs "python-pytz") + entry)) + (string-split (getenv "PYTHONPATH") + #\:)) + "', "))) + (invoke "python" "tests/runtests.py")))))) ;; TODO: Install extras/django_bash_completion. (native-inputs - `(("tzdata", tzdata-for-tests) + `(("tzdata" ,tzdata-for-tests) ;; bcrypt and argon2-cffi are extra requirements not yet in guix ;;("python-argon2-cffi" ,python-argon2-cffi) ; >= 16.1.0 ;;("python-bcrypt" ,python-bcrypt) ; not py-bcrypt! @@ -75,11 +94,12 @@ ("python-numpy" ,python-numpy) ("python-pillow" ,python-pillow) ("python-pyyaml" ,python-pyyaml) - ("python-pytz" ,python-pytz) ;; optional for tests: ("python-selenium" ,python-selenium) ("python-sqlparse" ,python-sqlparse) ("python-tblib" ,python-tblib))) - (home-page "http://www.djangoproject.com/") + (propagated-inputs + `(("python-pytz" ,python-pytz))) + (home-page "https://www.djangoproject.com/") (synopsis "High-level Python Web framework") (description "Django is a high-level Python Web framework that encourages rapid @@ -103,6 +123,46 @@ to the @dfn{don't repeat yourself} (DRY) principle.") ;; required. ,@(package-native-inputs base)))))) +(define-public python-django-extensions + (package + (name "python-django-extensions") + (version "2.1.6") + (source + (origin + (method git-fetch) + ;; Fetch from the git repository, so that the tests can be run. + (uri (git-reference + (url "https://github.com/django-extensions/django-extensions.git") + (commit version))) + (file-name (string-append name "-" version)) + (sha256 + (base32 + "0p4qrdinrv6indczlc8dcnm528i5fzmcn9xk1ja7ycfkyk5x6j5w")))) + (build-system python-build-system) + (arguments + '(#:tests? #f)) ;TODO collected 378 items / 3 errors / 1 skipped + (propagated-inputs + `(("python-six" ,python-six) + ("python-vobject" ,python-vobject) + ("python-werkzeug" ,python-werkzeug) + ("python-dateutil" ,python-dateutil) + ("python-django" ,python-django))) + (native-inputs + `(("python-mock" ,python-mock) + ("python-factory-boy" ,python-factory-boy) + ("python-tox" ,python-tox) + ("python-pytest" ,python-pytest) + ("python-pytest-cov" ,python-pytest-cov) + ("python-pytest-django" ,python-pytest-django) + ("python-shortuuid" , python-shortuuid))) + (home-page + "https://github.com/django-extensions/django-extensions") + (synopsis "Custom management extensions for Django") + (description + "Django-extensions extends Django providing, for example, management +commands, additional database fields and admin extensions.") + (license license:expat))) + (define-public python-django-simple-math-captcha (package (name "python-django-simple-math-captcha") @@ -131,6 +191,62 @@ with arguments to the field constructor.") (define-public python2-django-simple-math-captcha (package-with-python2 python-django-simple-math-captcha)) +(define-public python-django-taggit + (package + (name "python-django-taggit") + (version "1.1.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "django-taggit" version)) + (sha256 + (base32 + "044fzcpmns90kaxdi49qczlam4xsi8rl73rpfwvxx1gkcqzidgq1")))) + (build-system python-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "python3" "-m" "django" "test" "--settings=tests.settings")))))) + (propagated-inputs + `(("python-django" ,python-django) + ("python-isort" ,python-isort))) + (native-inputs + `(("python-pytest" ,python-pytest) + ("python-mock" ,python-mock))) + (home-page + "https://github.com/jazzband/django-taggit") + (synopsis + "Reusable Django application for simple tagging") + (description + "Django-taggit is a reusable Django application for simple tagging.") + (license license:bsd-3))) + +(define-public python-easy-thumbnails + (package + (name "python-easy-thumbnails") + (version "2.7") + (source + (origin + (method url-fetch) + (uri (pypi-uri "easy-thumbnails" version)) + (sha256 + (base32 + "14gzp5cv24z0qhxb7f7k7v9jgzpaj4n8yhjq83ynpx8183fs1rz4")))) + (build-system python-build-system) + (propagated-inputs + `(("python-django" ,python-django) + ("python-pillow" ,python-pillow))) + (home-page "https://github.com/SmileyChris/easy-thumbnails") + (synopsis "Easy thumbnails for Django") + (description + "Easy thumbnails is a Django plugin to dynamically create thumbnails +based on source images. Multiple thumbnails can be created from a single +source image, using different options to control parameters like the image +size and quality.") + (license license:bsd-3))) + (define-public python-pytest-django (package (name "python-pytest-django") @@ -156,7 +272,7 @@ with arguments to the field constructor.") ("python-setuptools-scm" ,python-setuptools-scm))) (propagated-inputs `(("python-pytest" ,python-pytest))) - (home-page "http://pytest-django.readthedocs.org/") + (home-page "https://pytest-django.readthedocs.org/") (synopsis "Django plugin for py.test") (description "Pytest-django is a plugin for py.test that provides a set of useful tools for testing Django applications and projects.") @@ -168,22 +284,24 @@ useful tools for testing Django applications and projects.") (define-public python-django-filter (package (name "python-django-filter") - (version "0.14.0") + (version "1.1.0") (source (origin (method url-fetch) (uri (pypi-uri "django-filter" version)) (sha256 (base32 - "0f78hmk8c903zwfzlsiw7ivgag81ymmb5hi73rzxbhnlg2v0l3fx")))) + "0slpfqfhnjrzlrb6vmswyhrzn01p84s16j2x1xib35gg4fxg23pc")))) (build-system python-build-system) (arguments '(#:phases (modify-phases %standard-phases (replace 'check (lambda _ - (zero? (system* "python" "runtests.py"))))))) + (invoke "python" "runtests.py")))))) (native-inputs `(("python-django" ,python-django) + ("python-djangorestframework" ,python-djangorestframework) + ("python-django-crispy-forms" ,python-django-crispy-forms) ("python-mock" ,python-mock))) (home-page "https://django-filter.readthedocs.io/en/latest/") (synopsis "Reusable Django application to filter querysets dynamically") @@ -200,14 +318,14 @@ them do this.") (define-public python-django-allauth (package (name "python-django-allauth") - (version "0.30.0") + (version "0.39.1") (source (origin (method url-fetch) (uri (pypi-uri "django-allauth" version)) (sha256 (base32 - "1fslqc5qqb0b66yscvkyjwfv8cnbfx5nlkpnwimyb3pf1nc1w7r3")))) + "17l0acpr3cihdndzccjhgv58f9z170v2qwx7w0b8w6235x646i24")))) (build-system python-build-system) (arguments '(#:phases @@ -216,19 +334,20 @@ them do this.") (add-before 'check 'skip-test-requiring-network-access (lambda _ (substitute* "allauth/socialaccount/providers/openid/tests.py" + (("import override_settings") "import tag, override_settings") (("def test_login") - "from django.test import tag - @tag('requires-web') + "@tag('requires-web') def test_login")))) (replace 'check (lambda _ + ;; TODO: investigate why this test fails + (delete-file "allauth/socialaccount/providers/cern/tests.py") (setenv "DJANGO_SETTINGS_MODULE" "test_settings") - (zero? (system* - "django-admin" + (invoke "django-admin" "test" "allauth" "--verbosity=2" - "--exclude-tag=requires-web"))))))) + "--exclude-tag=requires-web")))))) (propagated-inputs `(("python-openid" ,python-openid) ("python-requests" ,python-requests) @@ -248,18 +367,56 @@ account authentication.") (define-public python2-django-allauth (package-with-python2 python-django-allauth)) +(define-public python-django-debug-toolbar + (package + (name "python-django-debug-toolbar") + (version "1.10.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jazzband/django-debug-toolbar.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0zr6yjsms97wlvvd17rdbrx01irkg887dn9x70c1hzfjmfvp9afk")))) + (build-system python-build-system) + (propagated-inputs + `(("python-sqlparse" ,python-sqlparse) + ("python-django" ,python-django))) + (native-inputs + `(("python-django-jinja" ,python-django-jinja) + ("python-html5lib" ,python-html5lib))) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "make" "test")))))) + (home-page + "https://github.com/jazzband/django-debug-toolbar") + (synopsis "Toolbar to help with developing Django applications") + (description + "A configurable set of panels that display information about the current +request and response as a toolbar on the rendered page.") + (license license:bsd-3))) + (define-public python-django-gravatar2 (package (name "python-django-gravatar2") - (version "1.4.0") + (version "1.4.2") (source (origin (method url-fetch) (uri (pypi-uri "django-gravatar2" version)) (sha256 (base32 - "1v4qyj6kms321yw0z2g1kch6b2dskmv6fjd6sfxzwr4xshq9mccl")))) + "1qsv40xywbqsf4mkrmsswrpzqd7nfljxpfiim9an2z3dykn5rka6")))) (build-system python-build-system) + (arguments + '(;; TODO: The django project for the tests is missing from the release. + #:tests? #f)) (inputs `(("python-django" ,python-django))) (home-page "https://github.com/twaddington/django-gravatar") @@ -318,6 +475,47 @@ merging, minifying and compiling CSS and Javascript files.") (define-public python2-django-assets (package-with-python2 python-django-assets)) +(define-public python-django-jinja + (package + (name "python-django-jinja") + (version "2.4.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/niwinz/django-jinja.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1fcrxlznlq1xvl26y3j1r22vvy6m08r5l97xi2wj50rdmxhfvhis")))) + (build-system python-build-system) + (propagated-inputs + `(("python-django" ,python-django) + ("python-jinja2" ,python-jinja2) + ("python-pytz" ,python-pytz) + ("python-django-pipeline" ,python-django-pipeline))) + (arguments + '(;; TODO Tests currently fail due to issues with the configuration for + ;; django-pipeline + #:tests? #f + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (or + (not tests?) + (with-directory-excursion "testing" + (invoke "python" "runtests.py")))))))) + (home-page + "https://niwinz.github.io/django-jinja/latest/") + (synopsis "Simple jinja2 templating backend for Django") + (description + "This package provides a templating backend for Django, using Jinja2. It +provides certain advantages over the builtin Jinja2 backend in Django, for +example, explicit calls to callables from templates and better performance.") + (license license:bsd-3))) + (define-public python-django-jsonfield (package (name "python-django-jsonfield") @@ -421,9 +619,9 @@ project aims to bulk update given objects using one query over Django ORM.") (replace 'check (lambda _ ;; the next version will need "make test" - (and (zero? (system* "flake8" "contact_form")) - (zero? (system* "coverage" "run" "contact_form/runtests.py")) - (zero? (system* "coverage" "report" "-m" "--fail-under" "0")))))))) + (invoke "flake8" "contact_form") + (invoke "coverage" "run" "contact_form/runtests.py") + (invoke "coverage" "report" "-m" "--fail-under" "0")))))) (native-inputs `(("python-coverage" ,python-coverage) ("python-flake8" ,python-flake8))) @@ -479,8 +677,7 @@ entries, photos, book chapters, or anything else.") `(#:phases (modify-phases %standard-phases (replace 'check - (lambda _ - (zero? (system* "./test_project/manage.py" "test"))))))) + (lambda _ (invoke "./test_project/manage.py" "test")))))) (propagated-inputs `(("python-django" ,python-django))) (native-inputs @@ -498,25 +695,68 @@ project.") (define-public python2-django-overextends (package-with-python2 python-django-overextends)) +(define-public python-django-pipeline + (package + (name "python-django-pipeline") + (version "1.6.14") + (source + (origin + (method url-fetch) + (uri (pypi-uri "django-pipeline" version)) + (sha256 + (base32 + "1a207y71r7za033ira0qmh2yrgp5rq0l04gw2fg9b8jri7sslrzg")))) + (build-system python-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-source + (lambda _ + (substitute* "tests/tests/test_compiler.py" + (("\\/usr\\/bin\\/env") + (which "env"))))) + (replace 'check + (lambda*(#:key tests? #:allow-other-keys) + (or + (not tests?) + (begin + (setenv "PYTHONPATH" + (string-append (getcwd) ":" + (getenv "PYTHONPATH"))) + (setenv "DJANGO_SETTINGS_MODULE" "tests.settings") + (invoke "django-admin" "test" "tests")))))))) + (propagated-inputs + `(("python-django" ,python-django) + ("python-slimit" ,python-slimit) + ("python-jsmin" ,python-jsmin))) + (home-page + "https://github.com/jazzband/django-pipeline") + (synopsis "Asset packaging library for Django") + (description + "Pipeline is an asset packaging library for Django, providing both CSS +and JavaScript concatenation and compression, built-in JavaScript template +support, and optional data-URI image and font embedding.") + (license license:expat))) + (define-public python-django-redis (package (name "python-django-redis") - (version "4.7.0") + (version "4.10.0") (source (origin (method url-fetch) (uri (pypi-uri "django-redis" version)) (sha256 (base32 - "0yyyxv8n9l9dhs893jsqwg2cxqkkc79g719n9dzzzqgkzialv1c1")))) + "1rxcwnv9ik0swkwvfqdi9i9baw6n8if5pj6q63fjh4p9chw3j2xg")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases (replace 'check (lambda _ - (and (zero? (system* "redis-server" "--daemonize" "yes")) - (with-directory-excursion "tests" - (zero? (system* "python" "runtests.py"))))))))) + (invoke "redis-server" "--daemonize" "yes") + (with-directory-excursion "tests" + (invoke "python" "runtests.py"))))))) (native-inputs `(("python-fakeredis" ,python-fakeredis) ("python-hiredis" ,python-hiredis) @@ -538,25 +778,26 @@ project.") (define-public python-django-rq (package (name "python-django-rq") - (version "0.9.4") + (version "1.3.1") (source (origin (method url-fetch) (uri (pypi-uri "django-rq" version)) (sha256 (base32 - "04v8ilfdp10bk31fxgh4cn083gsn5m06342cnpm5d10nd8hc0vky")))) + "1ips1ikv5qhgwb58ssn496vgqg9qv6jinwmwbrg9l3s75fskd1l5")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases (replace 'check (lambda _ - (and (zero? (system* "redis-server" "--daemonize" "yes")) - (zero? (system* "django-admin.py" "test" "django_rq" - "--settings=django_rq.test_settings" - "--pythonpath=")))))))) + (invoke "redis-server" "--daemonize" "yes") + (invoke "django-admin.py" "test" "django_rq" + "--settings=django_rq.tests.settings" + "--pythonpath=")))))) (native-inputs - `(("redis" ,redis))) + `(("python-mock" ,python-mock) + ("redis" ,redis))) (propagated-inputs `(("python-django" ,python-django) ("python-rq" ,python-rq))) @@ -601,16 +842,17 @@ the order of added relations.") (define-public python-django-appconf (package (name "python-django-appconf") - (version "1.0.2") + (version "1.0.3") (source (origin (method url-fetch) (uri (pypi-uri "django-appconf" version)) (sha256 (base32 - "0qdjdx35g66xjsc50v0c5h3kg6njs8df33mbjx6j4k1vd3m9lkba")))) + "1qw0p9qh78bvkgi38ba58djwn0rd5j1lrkg2c2wk5wb7snj3rw9m")))) (build-system python-build-system) (propagated-inputs - `(("python-django" ,python-django))) + `(("python-django" ,python-django) + ("python-six" ,python-six))) (home-page "https://github.com/django-compressor/django-appconf") (synopsis "Handle configuration defaults of packaged Django apps") (description @@ -651,14 +893,14 @@ static files.") (define-public pootle (package (name "pootle") - (version "2.8.0rc5") + (version "2.8.2") (source (origin (method url-fetch) (uri (pypi-uri "Pootle" version ".tar.bz2")) (sha256 (base32 - "0m6qcpkcy22dk3ad5y2k8851kqg2w6vrkywgy4vabwbacd7r1mvn")))) + "1ng8igq0alsqzasgxdh3fb23581anyzp121h9041pwdzzv98kn4m")))) (build-system python-build-system) (arguments `(; pootle supports only python2. @@ -712,7 +954,7 @@ static files.") ("python2-pytest-catchlog" ,python2-pytest-catchlog) ("python2-pytest-cov" ,python2-pytest-cov) ("python2-factory-boy" ,python2-factory-boy))) - (home-page "http://pootle.translatehouse.org/") + (home-page "https://pootle.translatehouse.org/") (synopsis "Community localization server") (description "Pootle is an online translation and localization tool. It works to @@ -741,3 +983,73 @@ Django projects, which allows association of a number of tags with any (define-public python2-django-tagging (package-with-python2 python-django-tagging)) + +(define-public python-djangorestframework + (package + (name "python-djangorestframework") + (version "3.7.7") + (source + (origin + (method url-fetch) + (uri (pypi-uri "djangorestframework" version)) + (sha256 + (base32 + "11qv117gqwswxjljs7wafxg1hyzzlx3qrviwlk9hw41bsbl997lz")))) + (build-system python-build-system) + (arguments + '(;; No included tests + #:tests? #f)) + (propagated-inputs + `(("python-django" ,python-django))) + (home-page "https://www.django-rest-framework.org") + (synopsis "Toolkit for building Web APIs with Django") + (description + "The Django REST framework is for building Web APIs with Django. It +provides features like a web browseable API and authentication policies.") + (license license:bsd-2))) + +(define-public python-django-crispy-forms + (package + (name "python-django-crispy-forms") + (version "1.7.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "django-crispy-forms" version)) + (sha256 + (base32 + "0pv7y648i8iz7mf64gkjizpbx5d01ap2s4vqqa30n38if6wvlljr")))) + (build-system python-build-system) + (arguments + '(;; No included tests + #:tests? #f)) + (propagated-inputs + `(("python-django" ,python-django))) + (home-page + "http://github.com/maraujop/django-crispy-forms") + (synopsis "Tool to control Django forms without custom templates") + (description + "@code{django-crispy-forms} lets you easily build, customize and reuse +forms using your favorite CSS framework, without writing template code.") + (license license:expat))) + +(define-public python-django-override-storage + (package + (name "python-django-override-storage") + (version "0.1.6") + (source + (origin + (method url-fetch) + (uri (pypi-uri "django-override-storage" version)) + (sha256 + (base32 "022arq94lxnlyykn8wvfnkykhi2dldnsn93pa2i41na551i0wpiv")))) + (build-system python-build-system) + (propagated-inputs + `(("python-django" ,python-django))) + (home-page + "https://github.com/danifus/django-override-storage") + (synopsis "Django test helpers to manage file storage side effects") + (description + "This project provides tools to help reduce the side effects of using +FileFields during tests.") + (license license:expat)))