gnu: r-tximport: Update to 1.12.0.
[jackhill/guix/guix.git] / gnu / packages / django.scm
CommitLineData
d18197af
HG
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
23b563dc 3;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
47956fa0 4;;; Copyright © 2017 ng0 <ng0@n0.is>
ea282711 5;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
40fac51a 6;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
8b209bb6 7;;; Copyright © 2018 Vijayalakshmi Vedantham <vijimay12@gmail.com>
52c3cb26 8;;; Copyright © 2019 Sam <smbaines8@gmail.com>
d18197af
HG
9;;;
10;;; This file is part of GNU Guix.
11;;;
12;;; GNU Guix is free software; you can redistribute it and/or modify it
13;;; under the terms of the GNU General Public License as published by
14;;; the Free Software Foundation; either version 3 of the License, or (at
15;;; your option) any later version.
16;;;
17;;; GNU Guix is distributed in the hope that it will be useful, but
18;;; WITHOUT ANY WARRANTY; without even the implied warranty of
19;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20;;; GNU General Public License for more details.
21;;;
22;;; You should have received a copy of the GNU General Public License
23;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
24
25(define-module (gnu packages django)
26 #:use-module ((guix licenses) #:prefix license:)
27 #:use-module (guix packages)
28 #:use-module (guix download)
52c3cb26 29 #:use-module (guix git-download)
d18197af
HG
30 #:use-module (guix build-system python)
31 #:use-module (gnu packages)
32 #:use-module (gnu packages base)
b939953b 33 #:use-module (gnu packages databases)
ac257f12 34 #:use-module (gnu packages check)
1b2f753d 35 #:use-module (gnu packages python)
33dc54b0 36 #:use-module (gnu packages python-web)
44d10b1f 37 #:use-module (gnu packages python-xyz)
33dc54b0 38 #:use-module (gnu packages time))
d18197af
HG
39
40(define-public python-django
41 (package
42 (name "python-django")
93617188 43 (version "1.11.20")
d18197af
HG
44 (source (origin
45 (method url-fetch)
46 (uri (pypi-uri "Django" version))
47 (sha256
48 (base32
93617188 49 "0h90kdq8r4y8wa73hdxmyy5psnwlg61dcq3qsa098cpfiyh9vaa3"))))
d18197af
HG
50 (build-system python-build-system)
51 (arguments
0458ab53
JB
52 '(#:modules ((srfi srfi-1)
53 (guix build python-build-system)
54 (guix build utils))
55 #:phases
d18197af
HG
56 (modify-phases %standard-phases
57 (add-before 'check 'set-tzdir
58 (lambda* (#:key inputs #:allow-other-keys)
59 ;; The test-suite tests timezone-dependent functions, thus tzdata
60 ;; needs to be available.
61 (setenv "TZDIR"
62 (string-append (assoc-ref inputs "tzdata")
63 "/share/zoneinfo"))
64 #t))
65 (replace 'check
0458ab53 66 (lambda* (#:key inputs #:allow-other-keys)
d18197af
HG
67 (setenv "PYTHONPATH"
68 (string-append ".:" (getenv "PYTHONPATH")))
0458ab53
JB
69 (substitute* "tests/admin_scripts/tests.py"
70 (("python_path = \\[")
71 (string-append "python_path = ['"
72 (find (lambda (entry)
73 (string-prefix?
74 (assoc-ref inputs "python-pytz")
75 entry))
76 (string-split (getenv "PYTHONPATH")
77 #\:))
78 "', ")))
4665d8c9 79 (invoke "python" "tests/runtests.py"))))))
d18197af 80 ;; TODO: Install extras/django_bash_completion.
dfdaea32 81 (native-inputs
c695fb76 82 `(("tzdata" ,tzdata-for-tests)
dfdaea32 83 ;; bcrypt and argon2-cffi are extra requirements not yet in guix
d18197af
HG
84 ;;("python-argon2-cffi" ,python-argon2-cffi) ; >= 16.1.0
85 ;;("python-bcrypt" ,python-bcrypt) ; not py-bcrypt!
dfdaea32
HG
86 ;; Remaining packages are test requirements taken from
87 ;; tests/requirements/py3.txt
d18197af
HG
88 ("python-docutils" ,python-docutils)
89 ;; optional for tests: ("python-geoip2" ,python-geoip2)
90 ("python-jinja2" ,python-jinja2) ; >= 2.7
91 ;; optional for tests: ("python-memcached" ,python-memcached)
92 ("python-numpy" ,python-numpy)
93 ("python-pillow" ,python-pillow)
94 ("python-pyyaml" ,python-pyyaml)
d18197af
HG
95 ;; optional for tests: ("python-selenium" ,python-selenium)
96 ("python-sqlparse" ,python-sqlparse)
97 ("python-tblib" ,python-tblib)))
0458ab53
JB
98 (propagated-inputs
99 `(("python-pytz" ,python-pytz)))
d18197af
HG
100 (home-page "http://www.djangoproject.com/")
101 (synopsis "High-level Python Web framework")
102 (description
103 "Django is a high-level Python Web framework that encourages rapid
104development and clean, pragmatic design. It provides many tools for building
105any Web site. Django focuses on automating as much as possible and adhering
106to the @dfn{don't repeat yourself} (DRY) principle.")
107 (license license:bsd-3)
33b25201
MB
108 (properties `((python2-variant . ,(delay python2-django))
109 (cpe-name . "django")))))
d18197af
HG
110
111(define-public python2-django
112 (let ((base (package-with-python2 (strip-python2-variant python-django))))
113 (package
114 (inherit base)
dfdaea32
HG
115 (native-inputs
116 `(;; Test requirements for Python 2 taken from
117 ;; tests/requirements/py3.txt: enum34 and mock.
d18197af
HG
118 ("python2-enum34" ,python2-enum34)
119 ("python2-mock" ,python2-mock)
120 ;; When adding memcached mind: for Python 2 memcached <= 1.53 is
121 ;; required.
cda5e76f 122 ,@(package-native-inputs base))))))
b53fc294 123
52c3cb26
S
124(define-public python-django-extensions
125 (package
126 (name "python-django-extensions")
127 (version "2.1.6")
128 (source
129 (origin
130 (method git-fetch)
131 ;; Fetch from the git repository, so that the tests can be run.
132 (uri (git-reference
133 (url "https://github.com/django-extensions/django-extensions.git")
134 (commit version)))
135 (file-name (string-append name "-" version))
136 (sha256
137 (base32
138 "0p4qrdinrv6indczlc8dcnm528i5fzmcn9xk1ja7ycfkyk5x6j5w"))))
139 (build-system python-build-system)
140 (arguments
141 '(#:tests? #f)) ;TODO collected 378 items / 3 errors / 1 skipped
142 (propagated-inputs
143 `(("python-six" ,python-six)
144 ("python-vobject" ,python-vobject)
145 ("python-werkzeug" ,python-werkzeug)
146 ("python-dateutil" ,python-dateutil)
147 ("python-django" ,python-django)))
148 (native-inputs
149 `(("python-mock" ,python-mock)
150 ("python-factory-boy" ,python-factory-boy)
151 ("python-tox" ,python-tox)
152 ("python-pytest" ,python-pytest)
153 ("python-pytest-cov" ,python-pytest-cov)
154 ("python-pytest-django" ,python-pytest-django)
155 ("python-shortuuid" , python-shortuuid)))
156 (home-page
157 "https://github.com/django-extensions/django-extensions")
158 (synopsis "Custom management extensions for Django")
159 (description
160 "Django-extensions extends Django providing, for example, management
161commands, additional database fields and admin extensions.")
162 (license license:expat)))
163
b53fc294
HG
164(define-public python-django-simple-math-captcha
165 (package
166 (name "python-django-simple-math-captcha")
167 (version "1.0.7")
168 (source (origin
169 (method url-fetch)
170 (uri (pypi-uri "django-simple-math-captcha" version))
171 (sha256
172 (base32
173 "0906hms6y6znjhpd0g4wmzv9vcla4brkdpsm4zha9zdj8g5vq2hd"))))
174 (build-system python-build-system)
281cc11c
MB
175 (arguments
176 ;; FIXME: Upstream uses a 'runtests.py' script that is not
177 ;; present in the pypi tarball.
178 '(#:tests? #f))
b53fc294
HG
179 (propagated-inputs
180 `(("python-django" ,python-django)))
b53fc294
HG
181 (home-page "https://github.com/alsoicode/django-simple-math-captcha")
182 (synopsis "Easy-to-use math field/widget captcha for Django forms")
183 (description
184 "A multi-value-field that presents a human answerable question,
185with no settings.py configuration necessary, but instead can be configured
186with arguments to the field constructor.")
187 (license license:asl2.0)))
188
189(define-public python2-django-simple-math-captcha
190 (package-with-python2 python-django-simple-math-captcha))
23b563dc 191
8d73558d
S
192(define-public python-django-taggit
193 (package
194 (name "python-django-taggit")
195 (version "1.1.0")
196 (source
197 (origin
198 (method url-fetch)
199 (uri (pypi-uri "django-taggit" version))
200 (sha256
201 (base32
202 "044fzcpmns90kaxdi49qczlam4xsi8rl73rpfwvxx1gkcqzidgq1"))))
203 (build-system python-build-system)
204 (arguments
205 '(#:phases
206 (modify-phases %standard-phases
207 (replace 'check
208 (lambda _
209 (invoke "python3" "-m" "django" "test" "--settings=tests.settings"))))))
210 (propagated-inputs
211 `(("python-django" ,python-django)
212 ("python-isort" ,python-isort)))
213 (native-inputs
214 `(("python-pytest" ,python-pytest)
215 ("python-mock" ,python-mock)))
216 (home-page
217 "https://github.com/jazzband/django-taggit")
218 (synopsis
219 "Reusable Django application for simple tagging")
220 (description
221 "Django-taggit is a reusable Django application for simple tagging.")
222 (license license:bsd-3)))
223
23b563dc
EF
224(define-public python-pytest-django
225 (package
226 (name "python-pytest-django")
919d4ad0 227 (version "3.1.2")
23b563dc
EF
228 (source (origin
229 (method url-fetch)
230 (uri (pypi-uri "pytest-django" version))
231 (sha256
232 (base32
919d4ad0 233 "02932m2sr8x22m4az8syr8g835g4ak77varrnw71n6xakmdcr303"))))
23b563dc
EF
234 (build-system python-build-system)
235 (arguments
1f31a5e0
MB
236 `(#:tests? #f ; FIXME: How to run tests?
237 #:phases
23b563dc
EF
238 (modify-phases %standard-phases
239 (add-after 'unpack 'patch-setuppy
240 (lambda _
241 (substitute* "setup.py"
919d4ad0 242 (("setuptools_scm==1.11.1") "setuptools_scm"))
23b563dc
EF
243 #t)))))
244 (native-inputs
d18c69aa
EF
245 `(("python-django" ,python-django)
246 ("python-setuptools-scm" ,python-setuptools-scm)))
f22efa01 247 (propagated-inputs
2dd12924 248 `(("python-pytest" ,python-pytest)))
23b563dc
EF
249 (home-page "http://pytest-django.readthedocs.org/")
250 (synopsis "Django plugin for py.test")
251 (description "Pytest-django is a plugin for py.test that provides a set of
252useful tools for testing Django applications and projects.")
23b563dc
EF
253 (license license:bsd-3)))
254
255(define-public python2-pytest-django
5c31f4aa 256 (package-with-python2 python-pytest-django))
894810c7
EF
257
258(define-public python-django-filter
259 (package
260 (name "python-django-filter")
da90f337 261 (version "1.1.0")
894810c7
EF
262 (source (origin
263 (method url-fetch)
264 (uri (pypi-uri "django-filter" version))
265 (sha256
266 (base32
da90f337 267 "0slpfqfhnjrzlrb6vmswyhrzn01p84s16j2x1xib35gg4fxg23pc"))))
894810c7 268 (build-system python-build-system)
55ab6451
MB
269 (arguments
270 '(#:phases
271 (modify-phases %standard-phases
272 (replace 'check
273 (lambda _
7b282105 274 (invoke "python" "runtests.py"))))))
fa7cd333
EF
275 (native-inputs
276 `(("python-django" ,python-django)
da90f337 277 ("python-djangorestframework" ,python-djangorestframework)
c695fb76 278 ("python-django-crispy-forms" ,python-django-crispy-forms)
fa7cd333 279 ("python-mock" ,python-mock)))
894810c7
EF
280 (home-page "https://django-filter.readthedocs.io/en/latest/")
281 (synopsis "Reusable Django application to filter querysets dynamically")
282 (description
283 "Django-filter is a generic, reusable application to alleviate writing
284some of the more mundane bits of view code. Specifically, it allows users to
285filter down a queryset based on a model’s fields, displaying the form to let
286them do this.")
894810c7
EF
287 (license license:bsd-3)))
288
289(define-public python2-django-filter
5c31f4aa 290 (package-with-python2 python-django-filter))
e1f06e11 291
292(define-public python-django-allauth
293 (package
294 (name "python-django-allauth")
add66352 295 (version "0.39.1")
e1f06e11 296 (source
297 (origin
298 (method url-fetch)
299 (uri (pypi-uri "django-allauth" version))
300 (sha256
301 (base32
add66352 302 "17l0acpr3cihdndzccjhgv58f9z170v2qwx7w0b8w6235x646i24"))))
e1f06e11 303 (build-system python-build-system)
17dc2a09
CB
304 (arguments
305 '(#:phases
306 (modify-phases %standard-phases
307 ;; TODO: Tagging the tests requiring the web could be done upstream.
308 (add-before 'check 'skip-test-requiring-network-access
309 (lambda _
310 (substitute* "allauth/socialaccount/providers/openid/tests.py"
add66352 311 (("import override_settings") "import tag, override_settings")
17dc2a09 312 (("def test_login")
add66352 313 "@tag('requires-web')
17dc2a09
CB
314 def test_login"))))
315 (replace 'check
316 (lambda _
add66352
JL
317 ;; TODO: investigate why this test fails
318 (delete-file "allauth/socialaccount/providers/cern/tests.py")
17dc2a09 319 (setenv "DJANGO_SETTINGS_MODULE" "test_settings")
add66352 320 (invoke "django-admin"
17dc2a09
CB
321 "test"
322 "allauth"
323 "--verbosity=2"
add66352 324 "--exclude-tag=requires-web"))))))
e1f06e11 325 (propagated-inputs
326 `(("python-openid" ,python-openid)
327 ("python-requests" ,python-requests)
328 ("python-requests-oauthlib" ,python-requests-oauthlib)))
329 (native-inputs
330 `(("python-mock" ,python-mock)))
331 (inputs
332 `(("python-django" ,python-django)))
333 (home-page "https://github.com/pennersr/django-allauth")
334 (synopsis "Set of Django applications addressing authentication")
335 (description
336 "Integrated set of Django applications addressing authentication,
337registration, account management as well as 3rd party (social)
338account authentication.")
339 (license license:expat)))
340
341(define-public python2-django-allauth
342 (package-with-python2 python-django-allauth))
14d8f653 343
be02d4df
CB
344(define-public python-django-debug-toolbar
345 (package
346 (name "python-django-debug-toolbar")
347 (version "1.10.1")
348 (source
349 (origin
350 (method url-fetch)
351 (uri (string-append
352 "https://github.com/jazzband/django-debug-toolbar/archive/"
353 version ".tar.gz"))
354 (file-name (string-append name "-" version ".tar.gz"))
355 (sha256
356 (base32
357 "1rww056hyzks8spbgf4h7kf6ybxlc5p08a2b6gn1nqrrzs4yx9sy"))))
358 (build-system python-build-system)
359 (propagated-inputs
360 `(("python-sqlparse" ,python-sqlparse)
361 ("python-django" ,python-django)))
362 (native-inputs
363 `(("python-django-jinja" ,python-django-jinja)
364 ("python-html5lib" ,python-html5lib)))
365 (arguments
366 '(#:phases
367 (modify-phases %standard-phases
368 (replace 'check
369 (lambda _
370 (invoke "make" "test"))))))
371 (home-page
372 "https://github.com/jazzband/django-debug-toolbar")
373 (synopsis "Toolbar to help with developing Django applications")
374 (description
375 "A configurable set of panels that display information about the current
376request and response as a toolbar on the rendered page.")
377 (license license:bsd-3)))
378
14d8f653 379(define-public python-django-gravatar2
380 (package
381 (name "python-django-gravatar2")
16bd3291 382 (version "1.4.2")
14d8f653 383 (source
384 (origin
385 (method url-fetch)
386 (uri (pypi-uri "django-gravatar2" version))
387 (sha256
388 (base32
16bd3291 389 "1qsv40xywbqsf4mkrmsswrpzqd7nfljxpfiim9an2z3dykn5rka6"))))
14d8f653 390 (build-system python-build-system)
16bd3291
CB
391 (arguments
392 '(;; TODO: The django project for the tests is missing from the release.
393 #:tests? #f))
14d8f653 394 (inputs
395 `(("python-django" ,python-django)))
396 (home-page "https://github.com/twaddington/django-gravatar")
397 (synopsis "Gravatar support for Django, improved version")
398 (description
399 "Essential Gravatar support for Django. Features helper methods,
400templatetags and a full test suite.")
401 (license license:expat)))
402
403(define-public python2-django-gravatar2
404 (package-with-python2 python-django-gravatar2))
01c64cb8
JL
405
406(define-public python-django-assets
407 (package
408 (name "python-django-assets")
409 (version "0.12")
410 (source (origin
411 (method url-fetch)
412 (uri (pypi-uri "django-assets" version))
413 (sha256
414 (base32
415 "0y0007fvkn1rdlj2g0y6k1cnkx53kxab3g8i85i0rd58k335p365"))))
416 (build-system python-build-system)
417 (arguments
418 `(#:phases
419 (modify-phases %standard-phases
420 (add-before 'check 'fix-tests
421 (lambda _
422 (begin
423 ;; https://github.com/miracle2k/django-assets/issues/87
424 (substitute* "tests/__init__.py"
425 (("settings.configure.*")
426 (string-append
427 "settings.configure(\n"
428 "INSTALLED_APPS=['django_assets', "
429 "'django.contrib.staticfiles'],\n"
430 "TEMPLATES=[{'BACKEND': "
431 "'django.template.backends.django.DjangoTemplates'}],\n"
432 ")\n")))
433 ;; These tests fail
434 (substitute* "tests/test_django.py"
435 (("TestLoader") "NoTestLoader"))))))))
436 (native-inputs
437 `(("python-nose" ,python-nose)))
438 (propagated-inputs
439 `(("python-django" ,python-django)
440 ("python-webassets" ,python-webassets)))
441 (home-page "https://github.com/miracle2k/django-assets")
442 (synopsis "Asset management for Django")
443 (description
444 "Asset management for Django, to compress and merge CSS and Javascript
445files. Integrates the webassets library with Django, adding support for
446merging, minifying and compiling CSS and Javascript files.")
447 (license license:bsd-2)))
448
449(define-public python2-django-assets
450 (package-with-python2 python-django-assets))
6c17e963 451
a2e92596
CB
452(define-public python-django-jinja
453 (package
454 (name "python-django-jinja")
455 (version "2.4.1")
456 (source
457 (origin
458 (method url-fetch)
459 (uri (string-append
460 "https://github.com/niwinz/django-jinja/archive/"
461 version ".tar.gz"))
462 (file-name (string-append name "-" version ".tar.gz"))
463 (sha256
464 (base32
465 "0bzrb4m6wx9ph5cpvz7wpvg5k6ksvj0dnxlg0nhhqskhvp46brs1"))))
466 (build-system python-build-system)
467 (propagated-inputs
468 `(("python-django" ,python-django)
469 ("python-jinja2" ,python-jinja2)
470 ("python-pytz" ,python-pytz)
471 ("python-django-pipeline" ,python-django-pipeline)))
472 (arguments
473 '(;; TODO Tests currently fail due to issues with the configuration for
474 ;; django-pipeline
475 #:tests? #f
476 #:phases
477 (modify-phases %standard-phases
478 (replace 'check
479 (lambda* (#:key tests? #:allow-other-keys)
480 (or
481 (not tests?)
482 (with-directory-excursion "testing"
483 (invoke "python" "runtests.py"))))))))
484 (home-page
485 "https://niwinz.github.io/django-jinja/latest/")
486 (synopsis "Simple jinja2 templating backend for Django")
487 (description
488 "This package provides a templating backend for Django, using Jinja2. It
489provides certain advantages over the builtin Jinja2 backend in Django, for
490example, explicit calls to callables from templates and better performance.")
491 (license license:bsd-3)))
492
6c17e963
JL
493(define-public python-django-jsonfield
494 (package
495 (name "python-django-jsonfield")
496 (version "1.0.3")
497 (source (origin
498 (method url-fetch)
499 (uri (pypi-uri "jsonfield" version))
500 (sha256
501 (base32
502 "19x4lak0hg9c20r7mvf27w7i8r6i4sg2g0ypmlmp2665fnk76zvy"))))
503 (build-system python-build-system)
504 (arguments
505 `(#:phases
506 (modify-phases %standard-phases
507 (add-before 'check 'fix-tests
508 (lambda _
509 (substitute* "jsonfield/tests.py"
510 (("django.forms.util") "django.forms.utils")))))))
511 (propagated-inputs
512 `(("python-django" ,python-django)))
513 (home-page "https://github.com/bradjasper/django-jsonfield")
514 (synopsis "Store validated JSON in your model")
515 (description
516 "Django-jsonfield is a reusable Django field that allows you to store
517validated JSON in your model. It silently takes care of serialization. To
518use, simply add the field to one of your models.")
519 (license license:expat)))
520
521(define-public python2-django-jsonfield
522 (package-with-python2 python-django-jsonfield))
a326384b
JL
523
524(define-public python-dj-database-url
525 (package
526 (name "python-dj-database-url")
527 (version "0.4.2")
528 (source (origin
529 (method url-fetch)
530 (uri (pypi-uri "dj-database-url" version))
531 (sha256
532 (base32
533 "024zbkc5rli4hia9lz9g8kf1zxhb2gwawj5abf67i7gf8n22v0x6"))))
534 (build-system python-build-system)
535 (home-page "https://github.com/kennethreitz/dj-database-url")
536 (synopsis "Use Database URLs in your Django Application")
537 (description
538 "This simple Django utility allows you to utilize the 12factor inspired
539DATABASE_URL environment variable to configure your Django application.
540
541The dj_database_url.config method returns a Django database connection
542dictionary, populated with all the data specified in your URL. There is also a
543conn_max_age argument to easily enable Django’s connection pool.")
544 (license license:bsd-2)))
545
546(define-public python2-dj-database-url
547 (package-with-python2 python-dj-database-url))
afbfe564
JL
548
549(define-public python-django-bulk-update
550 (package
551 (name "python-django-bulk-update")
552 (version "1.1.10")
553 (source (origin
554 (method url-fetch)
555 (uri (pypi-uri "django-bulk-update" version))
556 (sha256
557 (base32
558 "0mbng9m7swfc0dnidipbzlxfhlfjrv755dlnha5s4m9mgdxb1fhc"))))
559 (build-system python-build-system)
560 (arguments
561 ;; tests don't support django 1.10, but the module seems to work.
562 `(#:tests? #f))
563 (native-inputs
564 `(("six" ,python-six)
565 ("jsonfield" ,python-django-jsonfield)
566 ("python-dj-database-url" ,python-dj-database-url)))
567 (propagated-inputs
568 `(("python-django" ,python-django)))
569 (home-page "https://github.com/aykut/django-bulk-update")
570 (synopsis "Simple bulk update over Django ORM or with helper function")
571 (description
572 "Simple bulk update over Django ORM or with helper function. This
573project aims to bulk update given objects using one query over Django ORM.")
574 (license license:expat)))
575
576(define-public python2-django-bulk-update
577 (package-with-python2 python-django-bulk-update))
03a34e87
JL
578
579(define-public python-django-contact-form
580 (package
581 (name "python-django-contact-form")
582 (version "1.3")
583 (source (origin
584 (method url-fetch)
585 (uri (pypi-uri "django-contact-form" version))
586 (sha256
587 (base32
588 "0az590y56k5ahv4sixrkn54d3a8ig2q2z9pl6s3m4f533mx2gj17"))))
589 (build-system python-build-system)
590 (arguments
591 `(#:phases
592 (modify-phases %standard-phases
593 (replace 'check
594 (lambda _
595 ;; the next version will need "make test"
de6be023
RW
596 (invoke "flake8" "contact_form")
597 (invoke "coverage" "run" "contact_form/runtests.py")
598 (invoke "coverage" "report" "-m" "--fail-under" "0"))))))
03a34e87
JL
599 (native-inputs
600 `(("python-coverage" ,python-coverage)
601 ("python-flake8" ,python-flake8)))
602 (propagated-inputs
603 `(("python-django" ,python-django)))
604 (home-page "https://github.com/ubernostrum/django-contact-form")
605 (synopsis "Contact form for Django")
606 (description
607 "This application provides simple, extensible contact-form functionality
608for Django sites.")
609 (license license:bsd-3)))
610
611(define-public python2-django-contact-form
612 (package-with-python2 python-django-contact-form))
659692c0
JL
613
614(define-public python-django-contrib-comments
615 (package
616 (name "python-django-contrib-comments")
617 (version "1.8.0")
618 (source (origin
619 (method url-fetch)
620 (uri (pypi-uri "django-contrib-comments" version))
621 (sha256
622 (base32
623 "0bxsgw8jrkhg6r5s0z6ksfi4w8yknaqb1s9acmxd9pm3pnsnp5kx"))))
624 (build-system python-build-system)
625 (propagated-inputs
626 `(("python-django" ,python-django)))
627 (home-page "https://github.com/django/django-contrib-comments")
628 (synopsis "Comments framework")
629 (description
630 "Django used to include a comments framework; since Django 1.6 it's been
631separated to a separate project. This is that project. This framework can be
632used to attach comments to any model, so you can use it for comments on blog
633entries, photos, book chapters, or anything else.")
634 (license license:bsd-3)))
635
636(define-public python2-django-contrib-comments
637 (package-with-python2 python-django-contrib-comments))
93246253
JL
638
639(define-public python-django-overextends
640 (package
641 (name "python-django-overextends")
642 (version "0.4.3")
643 (source (origin
644 (method url-fetch)
645 (uri (pypi-uri "django-overextends" version))
646 (sha256
647 (base32
648 "0qc2pcf3i56pmfxh2jw7k3pgljd8xzficmkl2541n7bkcbngqfzm"))))
649 (build-system python-build-system)
650 (arguments
651 `(#:phases
652 (modify-phases %standard-phases
653 (replace 'check
dd2f0cdb 654 (lambda _ (invoke "./test_project/manage.py" "test"))))))
93246253
JL
655 (propagated-inputs
656 `(("python-django" ,python-django)))
657 (native-inputs
658 `(("sphinx-me" ,python-sphinx-me)))
659 (home-page "https://github.com/stephenmcd/django-overextends")
660 (synopsis "Circular template inheritance")
661 (description
662 "A Django reusable app providing the overextends template tag, a drop-in
663replacement for Django's extends tag, which allows you to use circular template
664inheritance. The primary use-case for overextends is to simultaneously
665override and extend templates from other reusable apps, in your own Django
666project.")
667 (license license:bsd-2)))
668
669(define-public python2-django-overextends
670 (package-with-python2 python-django-overextends))
b939953b 671
6cd1bbd0
CB
672(define-public python-django-pipeline
673 (package
674 (name "python-django-pipeline")
675 (version "1.6.14")
676 (source
677 (origin
678 (method url-fetch)
679 (uri (pypi-uri "django-pipeline" version))
680 (sha256
681 (base32
682 "1a207y71r7za033ira0qmh2yrgp5rq0l04gw2fg9b8jri7sslrzg"))))
683 (build-system python-build-system)
684 (arguments
685 '(#:phases
686 (modify-phases %standard-phases
687 (add-after 'unpack 'patch-source
688 (lambda _
689 (substitute* "tests/tests/test_compiler.py"
690 (("\\/usr\\/bin\\/env")
691 (which "env")))))
692 (replace 'check
693 (lambda*(#:key tests? #:allow-other-keys)
694 (or
695 (not tests?)
696 (begin
697 (setenv "DJANGO_SETTINGS_MODULE" "tests.settings")
698 (invoke "django-admin" "test" "tests"))))))))
699 (propagated-inputs
700 `(("python-django" ,python-django)
701 ("python-slimit" ,python-slimit)
702 ("python-jsmin" ,python-jsmin)))
703 (home-page
704 "https://github.com/jazzband/django-pipeline")
705 (synopsis "Asset packaging library for Django")
706 (description
707 "Pipeline is an asset packaging library for Django, providing both CSS
708and JavaScript concatenation and compression, built-in JavaScript template
709support, and optional data-URI image and font embedding.")
710 (license license:expat)))
711
b939953b
JL
712(define-public python-django-redis
713 (package
714 (name "python-django-redis")
f55fe42b 715 (version "4.10.0")
b939953b
JL
716 (source (origin
717 (method url-fetch)
718 (uri (pypi-uri "django-redis" version))
719 (sha256
720 (base32
f55fe42b 721 "1rxcwnv9ik0swkwvfqdi9i9baw6n8if5pj6q63fjh4p9chw3j2xg"))))
b939953b
JL
722 (build-system python-build-system)
723 (arguments
724 `(#:phases
725 (modify-phases %standard-phases
726 (replace 'check
727 (lambda _
f55fe42b
JL
728 (invoke "redis-server" "--daemonize" "yes")
729 (with-directory-excursion "tests"
730 (invoke "python" "runtests.py")))))))
b939953b
JL
731 (native-inputs
732 `(("python-fakeredis" ,python-fakeredis)
733 ("python-hiredis" ,python-hiredis)
734 ("python-mock" ,python-mock)
735 ("python-msgpack" ,python-msgpack)
736 ("redis" ,redis)))
737 (propagated-inputs
738 `(("python-django" ,python-django)
739 ("python-redis" ,python-redis)))
740 (home-page "https://github.com/niwibe/django-redis")
741 (synopsis "Full featured redis cache backend for Django")
742 (description
743 "Full featured redis cache backend for Django.")
744 (license license:bsd-3)))
745
746(define-public python2-django-redis
747 (package-with-python2 python-django-redis))
cb9b6095
JL
748
749(define-public python-django-rq
750 (package
751 (name "python-django-rq")
13968371 752 (version "1.3.0")
cb9b6095
JL
753 (source (origin
754 (method url-fetch)
755 (uri (pypi-uri "django-rq" version))
756 (sha256
757 (base32
13968371 758 "0xh6qa7i779vh58lwwv6yk0wx8bi38mvmpz79grnl2cl8531r928"))))
cb9b6095
JL
759 (build-system python-build-system)
760 (arguments
761 `(#:phases
762 (modify-phases %standard-phases
763 (replace 'check
764 (lambda _
13968371
JL
765 (invoke "redis-server" "--daemonize" "yes")
766 (invoke "django-admin.py" "test" "django_rq"
767 "--settings=django_rq.tests.settings"
768 "--pythonpath="))))))
cb9b6095 769 (native-inputs
13968371
JL
770 `(("python-mock" ,python-mock)
771 ("redis" ,redis)))
cb9b6095
JL
772 (propagated-inputs
773 `(("python-django" ,python-django)
774 ("python-rq" ,python-rq)))
775 (home-page "https://github.com/ui/django-rq")
776 (synopsis "Django integration with RQ")
777 (description
778 "Django integration with RQ, a Redis based Python queuing library.
779Django-RQ is a simple app that allows you to configure your queues in django's
780settings.py and easily use them in your project.")
781 (license license:expat)))
782
783(define-public python2-django-rq
784 (package-with-python2 python-django-rq))
b0395dd6
JL
785
786(define-public python-django-sortedm2m
787 (package
788 (name "python-django-sortedm2m")
789 (version "1.3.3")
790 (source (origin
791 (method url-fetch)
792 (uri (pypi-uri "django-sortedm2m" version))
793 (sha256
794 (base32
795 "0axf765i7b3c2s83nlph47asi8s071dhq8l7y382v1pw785s22vi"))))
796 (build-system python-build-system)
797 (arguments
798 ;; no tests.
799 `(#:tests? #f))
800 (propagated-inputs
801 `(("python-django" ,python-django)))
802 (home-page "https://github.com/gregmuellegger/django-sortedm2m")
803 (synopsis "Drop-in replacement for django's own ManyToManyField")
804 (description
805 "Sortedm2m is a drop-in replacement for django's own ManyToManyField.
806The provided SortedManyToManyField behaves like the original one but remembers
807the order of added relations.")
808 (license license:bsd-3)))
809
810(define-public python2-django-sortedm2m
811 (package-with-python2 python-django-sortedm2m))
9f4a3059
JL
812
813(define-public python-django-appconf
814 (package
815 (name "python-django-appconf")
ea282711 816 (version "1.0.3")
9f4a3059
JL
817 (source (origin
818 (method url-fetch)
819 (uri (pypi-uri "django-appconf" version))
820 (sha256
821 (base32
ea282711 822 "1qw0p9qh78bvkgi38ba58djwn0rd5j1lrkg2c2wk5wb7snj3rw9m"))))
9f4a3059
JL
823 (build-system python-build-system)
824 (propagated-inputs
ea282711
TGR
825 `(("python-django" ,python-django)
826 ("python-six" ,python-six)))
9f4a3059
JL
827 (home-page "https://github.com/django-compressor/django-appconf")
828 (synopsis "Handle configuration defaults of packaged Django apps")
829 (description
830 "This app precedes Django's own AppConfig classes that act as \"objects
831[to] store metadata for an application\" inside Django's app loading mechanism.
832In other words, they solve a related but different use case than
833django-appconf and can't easily be used as a replacement. The similarity in
834name is purely coincidental.")
835 (license license:bsd-3)))
836
837(define-public python2-django-appconf
838 (package-with-python2 python-django-appconf))
f77d82f1
JL
839
840(define-public python-django-statici18n
841 (package
842 (name "python-django-statici18n")
843 (version "1.3.0")
844 (source (origin
845 (method url-fetch)
846 (uri (pypi-uri "django-statici18n" version))
847 (sha256
848 (base32
849 "0alcf4g1nv69njhq5k3qw4mfl2k6dc18bik5nk0g1mnp3m8zyz7k"))))
850 (build-system python-build-system)
851 (propagated-inputs
852 `(("python-django" ,python-django)
853 ("django-appconf" ,python-django-appconf)))
854 (home-page "https://github.com/zyegfryed/django-statici18n")
855 (synopsis "Generate JavaScript catalog to static files")
856 (description
857 "A Django app that provides helper for generating JavaScript catalog to
858static files.")
859 (license license:bsd-3)))
860
861(define-public python2-django-statici18n
862 (package-with-python2 python-django-statici18n))
2601171e
JL
863
864(define-public pootle
865 (package
866 (name "pootle")
b95d758b 867 (version "2.8.2")
2601171e
JL
868 (source
869 (origin
870 (method url-fetch)
871 (uri (pypi-uri "Pootle" version ".tar.bz2"))
872 (sha256
873 (base32
b95d758b 874 "1ng8igq0alsqzasgxdh3fb23581anyzp121h9041pwdzzv98kn4m"))))
2601171e
JL
875 (build-system python-build-system)
876 (arguments
877 `(; pootle supports only python2.
878 #:python ,python-2
879 ;; tests are not run and fail with "pytest_pootle/data/po/.tmp: No such
880 ;; file or directory". If we create this directory,
881 ;; pytest_pootle/data/po/terminology.po is missing.
882 #:tests? #f
883 #:phases
884 (modify-phases %standard-phases
885 (add-before 'build 'fix-requirements
886 (lambda _
887 (substitute* "Pootle.egg-info/requires.txt"
888 (("1.7.3") "1.8.0")
889 (("2.0.0") "2.1.0"))
890 (substitute* "requirements/tests.txt"
891 (("==3.0.6") ">=3.0.6"))
892 (substitute* "requirements/base.txt"
893 (("1.7.3") "1.8.0")
894 (("2.0.0") "2.1.0")))))))
895 (propagated-inputs
896 `(("django-allauth" ,python2-django-allauth)
897 ("django-assets" ,python2-django-assets)
898 ("django-bulk-update" ,python2-django-bulk-update)
899 ("django-contact-form" ,python2-django-contact-form)
900 ("django-contrib-comments" ,python2-django-contrib-comments)
901 ("django-overextends" ,python2-django-overextends)
902 ("django-redis" ,python2-django-redis)
903 ("django-rq" ,python2-django-rq)
904 ("django-sortedm2m" ,python2-django-sortedm2m)
905 ("django-statici18n" ,python2-django-statici18n)
906 ("babel" ,python2-babel)
907 ("cssmin" ,python2-cssmin)
908 ("diff-match-patch" ,python2-diff-match-patch)
909 ("dirsync" ,python2-dirsync)
910 ("elasticsearch" ,python2-elasticsearch)
911 ("jsonfield" ,python2-django-jsonfield)
912 ("lxml" ,python2-lxml)
913 ("dateutil" ,python2-dateutil)
914 ("levenshtein" ,python2-levenshtein)
915 ("mysqlclient" ,python2-mysqlclient)
916 ("psycopg2" ,python2-psycopg2)
917 ("pytz" ,python2-pytz)
918 ("rq" ,python2-rq)
919 ("scandir" ,python2-scandir)
920 ("stemming" ,python2-stemming)
921 ("translate-toolkit" ,python2-translate-toolkit)))
922 (native-inputs
c8ccf7c5 923 `(("python2-pytest" ,python2-pytest)
2601171e
JL
924 ("python2-pytest-django" ,python2-pytest-django)
925 ("python2-pytest-catchlog" ,python2-pytest-catchlog)
926 ("python2-pytest-cov" ,python2-pytest-cov)
927 ("python2-factory-boy" ,python2-factory-boy)))
928 (home-page "http://pootle.translatehouse.org/")
929 (synopsis "Community localization server")
930 (description
931 "Pootle is an online translation and localization tool. It works to
932lower the barrier of entry, providing tools to enable teams to work towards
933higher quality while welcoming newcomers.")
934 (license license:gpl3+)))
40fac51a
RW
935
936(define-public python-django-tagging
937 (package
938 (name "python-django-tagging")
939 (version "0.4.6")
940 (source
941 (origin
942 (method url-fetch)
943 (uri (pypi-uri "django-tagging" version))
944 (sha256
945 (base32
946 "0s7b4v45j783yaxs7rni10k24san0ya77nqz4s7zdf3jhfpk42r1"))))
947 (build-system python-build-system)
948 (home-page "https://github.com/Fantomas42/django-tagging")
949 (synopsis "Generic tagging application for Django")
950 (description "This package provides a generic tagging application for
951Django projects, which allows association of a number of tags with any
952@code{Model} instance and makes retrieval of tags simple.")
953 (license license:bsd-3)))
954
955(define-public python2-django-tagging
956 (package-with-python2 python-django-tagging))
d5f56e90
CB
957
958(define-public python-djangorestframework
959 (package
960 (name "python-djangorestframework")
961 (version "3.7.7")
962 (source
963 (origin
964 (method url-fetch)
965 (uri (pypi-uri "djangorestframework" version))
966 (sha256
967 (base32
968 "11qv117gqwswxjljs7wafxg1hyzzlx3qrviwlk9hw41bsbl997lz"))))
969 (build-system python-build-system)
970 (arguments
971 '(;; No included tests
972 #:tests? #f))
973 (propagated-inputs
974 `(("python-django" ,python-django)))
975 (home-page "https://www.django-rest-framework.org")
976 (synopsis "Toolkit for building Web APIs with Django")
977 (description
978 "The Django REST framework is for building Web APIs with Django. It
979provides features like a web browseable API and authentication policies.")
980 (license license:bsd-2)))
cc534f0c
CB
981
982(define-public python-django-crispy-forms
983 (package
984 (name "python-django-crispy-forms")
65ff6ab9 985 (version "1.7.2")
cc534f0c
CB
986 (source
987 (origin
988 (method url-fetch)
989 (uri (pypi-uri "django-crispy-forms" version))
990 (sha256
991 (base32
65ff6ab9 992 "0pv7y648i8iz7mf64gkjizpbx5d01ap2s4vqqa30n38if6wvlljr"))))
cc534f0c
CB
993 (build-system python-build-system)
994 (arguments
995 '(;; No included tests
996 #:tests? #f))
997 (propagated-inputs
998 `(("python-django" ,python-django)))
999 (home-page
1000 "http://github.com/maraujop/django-crispy-forms")
1001 (synopsis "Tool to control Django forms without custom templates")
1002 (description
1003 "@code{django-crispy-forms} lets you easily build, customize and reuse
1004forms using your favorite CSS framework, without writing template code.")
1005 (license license:expat)))
8b209bb6
VV
1006
1007(define-public python-django-override-storage
1008 (package
1009 (name "python-django-override-storage")
1010 (version "0.1.4")
1011 (source
1012 (origin
1013 (method url-fetch)
1014 (uri (pypi-uri "django-override-storage" version))
1015 (sha256
1016 (base32
1017 "0sqz1mh0yn8b1bzz2gr2azfiynljigm5gkzavp5n17zd3j2jg57x"))))
1018 (build-system python-build-system)
1019 (propagated-inputs
1020 `(("python-django" ,python-django)))
1021 (home-page
1022 "https://github.com/danifus/django-override-storage")
1023 (synopsis "Django test helpers to manage file storage side effects")
1024 (description
1025 "This project provides tools to help reduce the side effects of using
1026FileFields during tests.")
1027 (license license:expat)))