1184 lines
43 KiB
Scheme
1184 lines
43 KiB
Scheme
;;; GNU Guix --- Functional package management for GNU
|
||
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
|
||
;;; Copyright © 2016, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
|
||
;;; Copyright © 2017 Nikita <nikita@n0.is>
|
||
;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
|
||
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
|
||
;;; Copyright © 2018 Vijayalakshmi Vedantham <vijimay12@gmail.com>
|
||
;;; Copyright © 2019 Sam <smbaines8@gmail.com>
|
||
;;;
|
||
;;; This file is part of GNU Guix.
|
||
;;;
|
||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||
;;; under the terms of the GNU General Public License as published by
|
||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||
;;; your option) any later version.
|
||
;;;
|
||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
;;; GNU General Public License for more details.
|
||
;;;
|
||
;;; You should have received a copy of the GNU General Public License
|
||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||
|
||
(define-module (gnu packages django)
|
||
#: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)
|
||
#:use-module (gnu packages databases)
|
||
#:use-module (gnu packages check)
|
||
#:use-module (gnu packages geo)
|
||
#:use-module (gnu packages python)
|
||
#:use-module (gnu packages python-web)
|
||
#: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.11.28")
|
||
(source (origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "Django" version))
|
||
(sha256
|
||
(base32
|
||
"1ss1jyip7mlbfjn27m0j6wx80s8h4ksg6g5annkgwigp8xgy6g5k"))))
|
||
(build-system python-build-system)
|
||
(arguments
|
||
'(#: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)
|
||
;; The test-suite tests timezone-dependent functions, thus tzdata
|
||
;; needs to be available.
|
||
(setenv "TZDIR"
|
||
(string-append (assoc-ref inputs "tzdata")
|
||
"/share/zoneinfo"))
|
||
#t))
|
||
(replace 'check
|
||
(lambda* (#:key inputs #:allow-other-keys)
|
||
(setenv "PYTHONPATH"
|
||
(string-append ".:" (getenv "PYTHONPATH")))
|
||
(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)
|
||
;; 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!
|
||
;; Remaining packages are test requirements taken from
|
||
;; tests/requirements/py3.txt
|
||
("python-docutils" ,python-docutils)
|
||
;; optional for tests: ("python-geoip2" ,python-geoip2)
|
||
("python-jinja2" ,python-jinja2) ; >= 2.7
|
||
;; optional for tests: ("python-memcached" ,python-memcached)
|
||
("python-numpy" ,python-numpy)
|
||
("python-pillow" ,python-pillow)
|
||
("python-pyyaml" ,python-pyyaml)
|
||
;; optional for tests: ("python-selenium" ,python-selenium)
|
||
("python-sqlparse" ,python-sqlparse)
|
||
("python-tblib" ,python-tblib)))
|
||
(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
|
||
development and clean, pragmatic design. It provides many tools for building
|
||
any Web site. Django focuses on automating as much as possible and adhering
|
||
to the @dfn{don't repeat yourself} (DRY) principle.")
|
||
(license license:bsd-3)
|
||
(properties `((python2-variant . ,(delay python2-django))
|
||
(cpe-name . "django")))))
|
||
|
||
(define-public python2-django
|
||
(let ((base (package-with-python2 (strip-python2-variant python-django))))
|
||
(package
|
||
(inherit base)
|
||
(native-inputs
|
||
`(;; Test requirements for Python 2 taken from
|
||
;; tests/requirements/py3.txt: enum34 and mock.
|
||
("python2-enum34" ,python2-enum34)
|
||
("python2-mock" ,python2-mock)
|
||
;; When adding memcached mind: for Python 2 memcached <= 1.53 is
|
||
;; 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")
|
||
(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")
|
||
(version "1.0.7")
|
||
(source (origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "django-simple-math-captcha" version))
|
||
(sha256
|
||
(base32
|
||
"0906hms6y6znjhpd0g4wmzv9vcla4brkdpsm4zha9zdj8g5vq2hd"))))
|
||
(build-system python-build-system)
|
||
(arguments
|
||
;; FIXME: Upstream uses a 'runtests.py' script that is not
|
||
;; present in the pypi tarball.
|
||
'(#:tests? #f))
|
||
(propagated-inputs
|
||
`(("python-django" ,python-django)))
|
||
(home-page "https://github.com/alsoicode/django-simple-math-captcha")
|
||
(synopsis "Easy-to-use math field/widget captcha for Django forms")
|
||
(description
|
||
"A multi-value-field that presents a human answerable question,
|
||
with no settings.py configuration necessary, but instead can be configured
|
||
with arguments to the field constructor.")
|
||
(license license:asl2.0)))
|
||
|
||
(define-public python2-django-simple-math-captcha
|
||
(package-with-python2 python-django-simple-math-captcha))
|
||
|
||
(define-public python-django-classy-tags
|
||
(package
|
||
(name "python-django-classy-tags")
|
||
(version "1.0.0")
|
||
(source
|
||
(origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "django-classy-tags" version))
|
||
(sha256
|
||
(base32
|
||
"1cayqddvxd5prhybqi77lif2z4j7mmfmxgc61pq9i82q5gy2asmd"))))
|
||
(build-system python-build-system)
|
||
(arguments '(#:tests? #f)) ; Test script not distributed with release.
|
||
(propagated-inputs
|
||
`(("python-django" ,python-django)
|
||
("python-six" ,python-six)))
|
||
(home-page "https://github.com/divio/django-classy-tags")
|
||
(synopsis "Class based template tags for Django")
|
||
(description
|
||
"@code{django-classy-tags} is an approach at making writing template tags
|
||
in Django easier, shorter and more fun. It provides an extensible argument
|
||
parser which reduces most of the boiler plate code you usually have to write
|
||
when coding custom template tags.")
|
||
(license license:bsd-3)))
|
||
|
||
(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")
|
||
(version "3.1.2")
|
||
(source (origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "pytest-django" version))
|
||
(sha256
|
||
(base32
|
||
"02932m2sr8x22m4az8syr8g835g4ak77varrnw71n6xakmdcr303"))))
|
||
(build-system python-build-system)
|
||
(arguments
|
||
`(#:tests? #f ; FIXME: How to run tests?
|
||
#:phases
|
||
(modify-phases %standard-phases
|
||
(add-after 'unpack 'patch-setuppy
|
||
(lambda _
|
||
(substitute* "setup.py"
|
||
(("setuptools_scm==1.11.1") "setuptools_scm"))
|
||
#t)))))
|
||
(native-inputs
|
||
`(("python-django" ,python-django)
|
||
("python-setuptools-scm" ,python-setuptools-scm)))
|
||
(propagated-inputs
|
||
`(("python-pytest" ,python-pytest)))
|
||
(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.")
|
||
(license license:bsd-3)))
|
||
|
||
(define-public python2-pytest-django
|
||
(package-with-python2 python-pytest-django))
|
||
|
||
(define-public python-django-haystack
|
||
(package
|
||
(name "python-django-haystack")
|
||
(version "2.8.1")
|
||
(source
|
||
(origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "django-haystack" version))
|
||
(sha256
|
||
(base32
|
||
"1302fqsrx8w474xk5cmnmg3hjqfprlxnjg9qlg86arsr4v4vqm4b"))))
|
||
(build-system python-build-system)
|
||
(arguments
|
||
'(#:phases
|
||
(modify-phases %standard-phases
|
||
(add-after 'unpack 'loosen-verion-restrictions
|
||
(lambda _
|
||
(substitute* "setup.py"
|
||
(("geopy.*") "geopy',\n"))
|
||
#t))
|
||
(add-before 'check 'set-gdal-lib-path
|
||
(lambda* (#:key inputs #:allow-other-keys)
|
||
(setenv "GDAL_LIBRARY_PATH"
|
||
(string-append (assoc-ref inputs "gdal")
|
||
"/lib"))
|
||
#t)))
|
||
#:tests? #f)) ; OSError: libgdal.so.27: cannot open shared object file
|
||
(propagated-inputs
|
||
`(("python-django" ,python-django)))
|
||
(native-inputs
|
||
`(("gdal" ,gdal)
|
||
("python-coverage" ,python-coverage)
|
||
("python-dateutil" ,python-dateutil)
|
||
("python-geopy" ,python-geopy)
|
||
("python-mock" ,python-mock)
|
||
("python-nose" ,python-nose)
|
||
("python-requests" ,python-requests)
|
||
("python-setuptools-scm" ,python-setuptools-scm)
|
||
("python-pysolr" ,python-pysolr)
|
||
("python-whoosh" ,python-whoosh)))
|
||
(home-page "http://haystacksearch.org/")
|
||
(synopsis "Pluggable search for Django")
|
||
(description "Haystack provides modular search for Django. It features a
|
||
unified, familiar API that allows you to plug in different search backends
|
||
(such as Solr, Elasticsearch, Whoosh, Xapian, etc.) without having to modify
|
||
your code.")
|
||
(license license:bsd-3)))
|
||
|
||
(define-public python-django-filter
|
||
(package
|
||
(name "python-django-filter")
|
||
(version "1.1.0")
|
||
(source (origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "django-filter" version))
|
||
(sha256
|
||
(base32
|
||
"0slpfqfhnjrzlrb6vmswyhrzn01p84s16j2x1xib35gg4fxg23pc"))))
|
||
(build-system python-build-system)
|
||
(arguments
|
||
'(#:phases
|
||
(modify-phases %standard-phases
|
||
(replace 'check
|
||
(lambda _
|
||
(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")
|
||
(description
|
||
"Django-filter is a generic, reusable application to alleviate writing
|
||
some of the more mundane bits of view code. Specifically, it allows users to
|
||
filter down a queryset based on a model’s fields, displaying the form to let
|
||
them do this.")
|
||
(license license:bsd-3)))
|
||
|
||
(define-public python2-django-filter
|
||
(package-with-python2 python-django-filter))
|
||
|
||
(define-public python-django-allauth
|
||
(package
|
||
(name "python-django-allauth")
|
||
(version "0.39.1")
|
||
(source
|
||
(origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "django-allauth" version))
|
||
(sha256
|
||
(base32
|
||
"17l0acpr3cihdndzccjhgv58f9z170v2qwx7w0b8w6235x646i24"))))
|
||
(build-system python-build-system)
|
||
(arguments
|
||
'(#:phases
|
||
(modify-phases %standard-phases
|
||
;; TODO: Tagging the tests requiring the web could be done upstream.
|
||
(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")
|
||
"@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")
|
||
(invoke "django-admin"
|
||
"test"
|
||
"allauth"
|
||
"--verbosity=2"
|
||
"--exclude-tag=requires-web"))))))
|
||
(propagated-inputs
|
||
`(("python-openid" ,python-openid)
|
||
("python-requests" ,python-requests)
|
||
("python-requests-oauthlib" ,python-requests-oauthlib)))
|
||
(native-inputs
|
||
`(("python-mock" ,python-mock)))
|
||
(inputs
|
||
`(("python-django" ,python-django)))
|
||
(home-page "https://github.com/pennersr/django-allauth")
|
||
(synopsis "Set of Django applications addressing authentication")
|
||
(description
|
||
"Integrated set of Django applications addressing authentication,
|
||
registration, account management as well as 3rd party (social)
|
||
account authentication.")
|
||
(license license:expat)))
|
||
|
||
(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")
|
||
(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.2")
|
||
(source
|
||
(origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "django-gravatar2" version))
|
||
(sha256
|
||
(base32
|
||
"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")
|
||
(synopsis "Gravatar support for Django, improved version")
|
||
(description
|
||
"Essential Gravatar support for Django. Features helper methods,
|
||
templatetags and a full test suite.")
|
||
(license license:expat)))
|
||
|
||
(define-public python2-django-gravatar2
|
||
(package-with-python2 python-django-gravatar2))
|
||
|
||
(define-public python-django-assets
|
||
(package
|
||
(name "python-django-assets")
|
||
(version "0.12")
|
||
(source (origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "django-assets" version))
|
||
(sha256
|
||
(base32
|
||
"0y0007fvkn1rdlj2g0y6k1cnkx53kxab3g8i85i0rd58k335p365"))))
|
||
(build-system python-build-system)
|
||
(arguments
|
||
`(#:phases
|
||
(modify-phases %standard-phases
|
||
(add-before 'check 'fix-tests
|
||
(lambda _
|
||
(begin
|
||
;; https://github.com/miracle2k/django-assets/issues/87
|
||
(substitute* "tests/__init__.py"
|
||
(("settings.configure.*")
|
||
(string-append
|
||
"settings.configure(\n"
|
||
"INSTALLED_APPS=['django_assets', "
|
||
"'django.contrib.staticfiles'],\n"
|
||
"TEMPLATES=[{'BACKEND': "
|
||
"'django.template.backends.django.DjangoTemplates'}],\n"
|
||
")\n")))
|
||
;; These tests fail
|
||
(substitute* "tests/test_django.py"
|
||
(("TestLoader") "NoTestLoader"))))))))
|
||
(native-inputs
|
||
`(("python-nose" ,python-nose)))
|
||
(propagated-inputs
|
||
`(("python-django" ,python-django)
|
||
("python-webassets" ,python-webassets)))
|
||
(home-page "https://github.com/miracle2k/django-assets")
|
||
(synopsis "Asset management for Django")
|
||
(description
|
||
"Asset management for Django, to compress and merge CSS and Javascript
|
||
files. Integrates the webassets library with Django, adding support for
|
||
merging, minifying and compiling CSS and Javascript files.")
|
||
(license license:bsd-2)))
|
||
|
||
(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")
|
||
(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")
|
||
(version "1.0.3")
|
||
(source (origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "jsonfield" version))
|
||
(sha256
|
||
(base32
|
||
"19x4lak0hg9c20r7mvf27w7i8r6i4sg2g0ypmlmp2665fnk76zvy"))))
|
||
(build-system python-build-system)
|
||
(arguments
|
||
`(#:phases
|
||
(modify-phases %standard-phases
|
||
(add-before 'check 'fix-tests
|
||
(lambda _
|
||
(substitute* "jsonfield/tests.py"
|
||
(("django.forms.util") "django.forms.utils")))))))
|
||
(propagated-inputs
|
||
`(("python-django" ,python-django)))
|
||
(home-page "https://github.com/bradjasper/django-jsonfield")
|
||
(synopsis "Store validated JSON in your model")
|
||
(description
|
||
"Django-jsonfield is a reusable Django field that allows you to store
|
||
validated JSON in your model. It silently takes care of serialization. To
|
||
use, simply add the field to one of your models.")
|
||
(license license:expat)))
|
||
|
||
(define-public python2-django-jsonfield
|
||
(package-with-python2 python-django-jsonfield))
|
||
|
||
(define-public python-dj-database-url
|
||
(package
|
||
(name "python-dj-database-url")
|
||
(version "0.4.2")
|
||
(source (origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "dj-database-url" version))
|
||
(sha256
|
||
(base32
|
||
"024zbkc5rli4hia9lz9g8kf1zxhb2gwawj5abf67i7gf8n22v0x6"))))
|
||
(build-system python-build-system)
|
||
(home-page "https://github.com/kennethreitz/dj-database-url")
|
||
(synopsis "Use Database URLs in your Django Application")
|
||
(description
|
||
"This simple Django utility allows you to utilize the 12factor inspired
|
||
DATABASE_URL environment variable to configure your Django application.
|
||
|
||
The dj_database_url.config method returns a Django database connection
|
||
dictionary, populated with all the data specified in your URL. There is also a
|
||
conn_max_age argument to easily enable Django’s connection pool.")
|
||
(license license:bsd-2)))
|
||
|
||
(define-public python2-dj-database-url
|
||
(package-with-python2 python-dj-database-url))
|
||
|
||
(define-public python-django-picklefield
|
||
(package
|
||
(name "python-django-picklefield")
|
||
(version "2.1.1")
|
||
(source
|
||
(origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "django-picklefield" version))
|
||
(sha256
|
||
(base32
|
||
"0imncys5s3vsy2q79nn7k5d670da1xgmcr9gmhn06fry6ibf39b7"))))
|
||
(build-system python-build-system)
|
||
(propagated-inputs `(("python-django" ,python-django)))
|
||
(native-inputs `(("python-tox" ,python-tox)))
|
||
(home-page "https://github.com/gintas/django-picklefield")
|
||
(synopsis "Pickled object field for Django")
|
||
(description "Pickled object field for Django")
|
||
(license license:expat)))
|
||
|
||
(define-public python-django-bulk-update
|
||
(package
|
||
(name "python-django-bulk-update")
|
||
(version "1.1.10")
|
||
(source (origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "django-bulk-update" version))
|
||
(sha256
|
||
(base32
|
||
"0mbng9m7swfc0dnidipbzlxfhlfjrv755dlnha5s4m9mgdxb1fhc"))))
|
||
(build-system python-build-system)
|
||
(arguments
|
||
;; tests don't support django 1.10, but the module seems to work.
|
||
`(#:tests? #f))
|
||
(native-inputs
|
||
`(("six" ,python-six)
|
||
("jsonfield" ,python-django-jsonfield)
|
||
("python-dj-database-url" ,python-dj-database-url)))
|
||
(propagated-inputs
|
||
`(("python-django" ,python-django)))
|
||
(home-page "https://github.com/aykut/django-bulk-update")
|
||
(synopsis "Simple bulk update over Django ORM or with helper function")
|
||
(description
|
||
"Simple bulk update over Django ORM or with helper function. This
|
||
project aims to bulk update given objects using one query over Django ORM.")
|
||
(license license:expat)))
|
||
|
||
(define-public python2-django-bulk-update
|
||
(package-with-python2 python-django-bulk-update))
|
||
|
||
(define-public python-django-contact-form
|
||
(package
|
||
(name "python-django-contact-form")
|
||
(version "1.3")
|
||
(source (origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "django-contact-form" version))
|
||
(sha256
|
||
(base32
|
||
"0az590y56k5ahv4sixrkn54d3a8ig2q2z9pl6s3m4f533mx2gj17"))))
|
||
(build-system python-build-system)
|
||
(arguments
|
||
`(#:phases
|
||
(modify-phases %standard-phases
|
||
(replace 'check
|
||
(lambda _
|
||
;; the next version will need "make test"
|
||
(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)))
|
||
(propagated-inputs
|
||
`(("python-django" ,python-django)))
|
||
(home-page "https://github.com/ubernostrum/django-contact-form")
|
||
(synopsis "Contact form for Django")
|
||
(description
|
||
"This application provides simple, extensible contact-form functionality
|
||
for Django sites.")
|
||
(license license:bsd-3)))
|
||
|
||
(define-public python2-django-contact-form
|
||
(package-with-python2 python-django-contact-form))
|
||
|
||
(define-public python-django-contrib-comments
|
||
(package
|
||
(name "python-django-contrib-comments")
|
||
(version "1.8.0")
|
||
(source (origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "django-contrib-comments" version))
|
||
(sha256
|
||
(base32
|
||
"0bxsgw8jrkhg6r5s0z6ksfi4w8yknaqb1s9acmxd9pm3pnsnp5kx"))))
|
||
(build-system python-build-system)
|
||
(propagated-inputs
|
||
`(("python-django" ,python-django)))
|
||
(home-page "https://github.com/django/django-contrib-comments")
|
||
(synopsis "Comments framework")
|
||
(description
|
||
"Django used to include a comments framework; since Django 1.6 it's been
|
||
separated to a separate project. This is that project. This framework can be
|
||
used to attach comments to any model, so you can use it for comments on blog
|
||
entries, photos, book chapters, or anything else.")
|
||
(license license:bsd-3)))
|
||
|
||
(define-public python2-django-contrib-comments
|
||
(package-with-python2 python-django-contrib-comments))
|
||
|
||
(define-public python-django-overextends
|
||
(package
|
||
(name "python-django-overextends")
|
||
(version "0.4.3")
|
||
(source (origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "django-overextends" version))
|
||
(sha256
|
||
(base32
|
||
"0qc2pcf3i56pmfxh2jw7k3pgljd8xzficmkl2541n7bkcbngqfzm"))))
|
||
(build-system python-build-system)
|
||
(arguments
|
||
`(#:phases
|
||
(modify-phases %standard-phases
|
||
(replace 'check
|
||
(lambda _ (invoke "./test_project/manage.py" "test"))))))
|
||
(propagated-inputs
|
||
`(("python-django" ,python-django)))
|
||
(native-inputs
|
||
`(("sphinx-me" ,python-sphinx-me)))
|
||
(home-page "https://github.com/stephenmcd/django-overextends")
|
||
(synopsis "Circular template inheritance")
|
||
(description
|
||
"A Django reusable app providing the overextends template tag, a drop-in
|
||
replacement for Django's extends tag, which allows you to use circular template
|
||
inheritance. The primary use-case for overextends is to simultaneously
|
||
override and extend templates from other reusable apps, in your own Django
|
||
project.")
|
||
(license license:bsd-2)))
|
||
|
||
(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.10.0")
|
||
(source (origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "django-redis" version))
|
||
(sha256
|
||
(base32
|
||
"1rxcwnv9ik0swkwvfqdi9i9baw6n8if5pj6q63fjh4p9chw3j2xg"))))
|
||
(build-system python-build-system)
|
||
(arguments
|
||
`(#:phases
|
||
(modify-phases %standard-phases
|
||
(replace 'check
|
||
(lambda _
|
||
(invoke "redis-server" "--daemonize" "yes")
|
||
(with-directory-excursion "tests"
|
||
(invoke "python" "runtests.py")))))))
|
||
(native-inputs
|
||
`(("python-fakeredis" ,python-fakeredis)
|
||
("python-hiredis" ,python-hiredis)
|
||
("python-mock" ,python-mock)
|
||
("python-msgpack" ,python-msgpack)
|
||
("redis" ,redis)))
|
||
(propagated-inputs
|
||
`(("python-django" ,python-django)
|
||
("python-redis" ,python-redis)))
|
||
(home-page "https://github.com/niwibe/django-redis")
|
||
(synopsis "Full featured redis cache backend for Django")
|
||
(description
|
||
"Full featured redis cache backend for Django.")
|
||
(license license:bsd-3)))
|
||
|
||
(define-public python2-django-redis
|
||
(package-with-python2 python-django-redis))
|
||
|
||
(define-public python-django-rq
|
||
(package
|
||
(name "python-django-rq")
|
||
(version "1.3.1")
|
||
(source (origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "django-rq" version))
|
||
(sha256
|
||
(base32
|
||
"1ips1ikv5qhgwb58ssn496vgqg9qv6jinwmwbrg9l3s75fskd1l5"))))
|
||
(build-system python-build-system)
|
||
(arguments
|
||
`(#:phases
|
||
(modify-phases %standard-phases
|
||
(replace 'check
|
||
(lambda _
|
||
(invoke "redis-server" "--daemonize" "yes")
|
||
(invoke "django-admin.py" "test" "django_rq"
|
||
"--settings=django_rq.tests.settings"
|
||
"--pythonpath="))))))
|
||
(native-inputs
|
||
`(("python-mock" ,python-mock)
|
||
("redis" ,redis)))
|
||
(propagated-inputs
|
||
`(("python-django" ,python-django)
|
||
("python-rq" ,python-rq)))
|
||
(home-page "https://github.com/ui/django-rq")
|
||
(synopsis "Django integration with RQ")
|
||
(description
|
||
"Django integration with RQ, a Redis based Python queuing library.
|
||
Django-RQ is a simple app that allows you to configure your queues in django's
|
||
settings.py and easily use them in your project.")
|
||
(license license:expat)))
|
||
|
||
(define-public python2-django-rq
|
||
(package-with-python2 python-django-rq))
|
||
|
||
(define-public python-django-q
|
||
(package
|
||
(name "python-django-q")
|
||
(version "1.3.2")
|
||
(source
|
||
(origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "django-q" version))
|
||
(sha256
|
||
(base32
|
||
"0ac3rjxv37bn97a62ly8b7qvbv765z6paiinzpwxx83nal2icc42"))))
|
||
(build-system python-build-system)
|
||
(arguments
|
||
'(#:phases
|
||
(modify-phases %standard-phases
|
||
(replace 'check
|
||
(lambda _
|
||
(setenv "DJANGO_SETTINGS_MODULE" "django_q.tests.settings")
|
||
(invoke "django-admin" "test" "django_q.tests"
|
||
"--pythonpath=."))))))
|
||
(propagated-inputs
|
||
`(("python-arrow" ,python-arrow)
|
||
("python-blessed" ,python-blessed)
|
||
("python-django" ,python-django)
|
||
("python-django-picklefield" ,python-django-picklefield)))
|
||
(native-inputs
|
||
`(("python-django-redis" ,python-django-redis)
|
||
("python-pytest-django" ,python-pytest-django)))
|
||
(home-page "https://django-q.readthedocs.io/")
|
||
(synopsis "Multiprocessing distributed task queue for Django")
|
||
(description
|
||
"Django Q is a native Django task queue, scheduler and worker application
|
||
using Python multiprocessing.")
|
||
(license license:expat)))
|
||
|
||
(define-public python-django-sortedm2m
|
||
(package
|
||
(name "python-django-sortedm2m")
|
||
(version "1.3.3")
|
||
(source (origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "django-sortedm2m" version))
|
||
(sha256
|
||
(base32
|
||
"0axf765i7b3c2s83nlph47asi8s071dhq8l7y382v1pw785s22vi"))))
|
||
(build-system python-build-system)
|
||
(arguments
|
||
;; no tests.
|
||
`(#:tests? #f))
|
||
(propagated-inputs
|
||
`(("python-django" ,python-django)))
|
||
(home-page "https://github.com/gregmuellegger/django-sortedm2m")
|
||
(synopsis "Drop-in replacement for django's own ManyToManyField")
|
||
(description
|
||
"Sortedm2m is a drop-in replacement for django's own ManyToManyField.
|
||
The provided SortedManyToManyField behaves like the original one but remembers
|
||
the order of added relations.")
|
||
(license license:bsd-3)))
|
||
|
||
(define-public python2-django-sortedm2m
|
||
(package-with-python2 python-django-sortedm2m))
|
||
|
||
(define-public python-django-appconf
|
||
(package
|
||
(name "python-django-appconf")
|
||
(version "1.0.3")
|
||
(source (origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "django-appconf" version))
|
||
(sha256
|
||
(base32
|
||
"1qw0p9qh78bvkgi38ba58djwn0rd5j1lrkg2c2wk5wb7snj3rw9m"))))
|
||
(build-system python-build-system)
|
||
(propagated-inputs
|
||
`(("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
|
||
"This app precedes Django's own AppConfig classes that act as \"objects
|
||
[to] store metadata for an application\" inside Django's app loading mechanism.
|
||
In other words, they solve a related but different use case than
|
||
django-appconf and can't easily be used as a replacement. The similarity in
|
||
name is purely coincidental.")
|
||
(license license:bsd-3)))
|
||
|
||
(define-public python2-django-appconf
|
||
(package-with-python2 python-django-appconf))
|
||
|
||
(define-public python-django-statici18n
|
||
(package
|
||
(name "python-django-statici18n")
|
||
(version "1.3.0")
|
||
(source (origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "django-statici18n" version))
|
||
(sha256
|
||
(base32
|
||
"0alcf4g1nv69njhq5k3qw4mfl2k6dc18bik5nk0g1mnp3m8zyz7k"))))
|
||
(build-system python-build-system)
|
||
(propagated-inputs
|
||
`(("python-django" ,python-django)
|
||
("django-appconf" ,python-django-appconf)))
|
||
(home-page "https://github.com/zyegfryed/django-statici18n")
|
||
(synopsis "Generate JavaScript catalog to static files")
|
||
(description
|
||
"A Django app that provides helper for generating JavaScript catalog to
|
||
static files.")
|
||
(license license:bsd-3)))
|
||
|
||
(define-public python2-django-statici18n
|
||
(package-with-python2 python-django-statici18n))
|
||
|
||
(define-public pootle
|
||
(package
|
||
(name "pootle")
|
||
(version "2.8.2")
|
||
(source
|
||
(origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "Pootle" version ".tar.bz2"))
|
||
(sha256
|
||
(base32
|
||
"1ng8igq0alsqzasgxdh3fb23581anyzp121h9041pwdzzv98kn4m"))))
|
||
(build-system python-build-system)
|
||
(arguments
|
||
`(; pootle supports only python2.
|
||
#:python ,python-2
|
||
;; tests are not run and fail with "pytest_pootle/data/po/.tmp: No such
|
||
;; file or directory". If we create this directory,
|
||
;; pytest_pootle/data/po/terminology.po is missing.
|
||
#:tests? #f
|
||
#:phases
|
||
(modify-phases %standard-phases
|
||
(add-before 'build 'fix-requirements
|
||
(lambda _
|
||
(substitute* "Pootle.egg-info/requires.txt"
|
||
(("1.7.3") "1.8.0")
|
||
(("2.0.0") "2.1.0"))
|
||
(substitute* "requirements/tests.txt"
|
||
(("==3.0.6") ">=3.0.6"))
|
||
(substitute* "requirements/base.txt"
|
||
(("1.7.3") "1.8.0")
|
||
(("2.0.0") "2.1.0")))))))
|
||
(propagated-inputs
|
||
`(("django-allauth" ,python2-django-allauth)
|
||
("django-assets" ,python2-django-assets)
|
||
("django-bulk-update" ,python2-django-bulk-update)
|
||
("django-contact-form" ,python2-django-contact-form)
|
||
("django-contrib-comments" ,python2-django-contrib-comments)
|
||
("django-overextends" ,python2-django-overextends)
|
||
("django-redis" ,python2-django-redis)
|
||
("django-rq" ,python2-django-rq)
|
||
("django-sortedm2m" ,python2-django-sortedm2m)
|
||
("django-statici18n" ,python2-django-statici18n)
|
||
("babel" ,python2-babel)
|
||
("cssmin" ,python2-cssmin)
|
||
("diff-match-patch" ,python2-diff-match-patch)
|
||
("dirsync" ,python2-dirsync)
|
||
("elasticsearch" ,python2-elasticsearch)
|
||
("jsonfield" ,python2-django-jsonfield)
|
||
("lxml" ,python2-lxml)
|
||
("dateutil" ,python2-dateutil)
|
||
("levenshtein" ,python2-levenshtein)
|
||
("mysqlclient" ,python2-mysqlclient)
|
||
("psycopg2" ,python2-psycopg2)
|
||
("pytz" ,python2-pytz)
|
||
("rq" ,python2-rq)
|
||
("scandir" ,python2-scandir)
|
||
("stemming" ,python2-stemming)
|
||
("translate-toolkit" ,python2-translate-toolkit)))
|
||
(native-inputs
|
||
`(("python2-pytest" ,python2-pytest)
|
||
("python2-pytest-django" ,python2-pytest-django)
|
||
("python2-pytest-catchlog" ,python2-pytest-catchlog)
|
||
("python2-pytest-cov" ,python2-pytest-cov)
|
||
("python2-factory-boy" ,python2-factory-boy)))
|
||
(home-page "https://pootle.translatehouse.org/")
|
||
(synopsis "Community localization server")
|
||
(description
|
||
"Pootle is an online translation and localization tool. It works to
|
||
lower the barrier of entry, providing tools to enable teams to work towards
|
||
higher quality while welcoming newcomers.")
|
||
(license license:gpl3+)))
|
||
|
||
(define-public python-django-tagging
|
||
(package
|
||
(name "python-django-tagging")
|
||
(version "0.4.6")
|
||
(source
|
||
(origin
|
||
(method url-fetch)
|
||
(uri (pypi-uri "django-tagging" version))
|
||
(sha256
|
||
(base32
|
||
"0s7b4v45j783yaxs7rni10k24san0ya77nqz4s7zdf3jhfpk42r1"))))
|
||
(build-system python-build-system)
|
||
(home-page "https://github.com/Fantomas42/django-tagging")
|
||
(synopsis "Generic tagging application for Django")
|
||
(description "This package provides a generic tagging application for
|
||
Django projects, which allows association of a number of tags with any
|
||
@code{Model} instance and makes retrieval of tags simple.")
|
||
(license license:bsd-3)))
|
||
|
||
(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)))
|