Commit | Line | Data |
---|---|---|
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> |
e1f06e11 | 4 | ;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net> |
f737d9f2 | 5 | ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> |
40fac51a | 6 | ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> |
d18197af HG |
7 | ;;; |
8 | ;;; This file is part of GNU Guix. | |
9 | ;;; | |
10 | ;;; GNU Guix is free software; you can redistribute it and/or modify it | |
11 | ;;; under the terms of the GNU General Public License as published by | |
12 | ;;; the Free Software Foundation; either version 3 of the License, or (at | |
13 | ;;; your option) any later version. | |
14 | ;;; | |
15 | ;;; GNU Guix is distributed in the hope that it will be useful, but | |
16 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 | ;;; GNU General Public License for more details. | |
19 | ;;; | |
20 | ;;; You should have received a copy of the GNU General Public License | |
21 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | |
22 | ||
23 | (define-module (gnu packages django) | |
24 | #:use-module ((guix licenses) #:prefix license:) | |
25 | #:use-module (guix packages) | |
26 | #:use-module (guix download) | |
27 | #:use-module (guix build-system python) | |
28 | #:use-module (gnu packages) | |
29 | #:use-module (gnu packages base) | |
b939953b | 30 | #:use-module (gnu packages databases) |
ac257f12 | 31 | #:use-module (gnu packages check) |
1b2f753d | 32 | #:use-module (gnu packages python) |
33dc54b0 RW |
33 | #:use-module (gnu packages python-web) |
34 | #:use-module (gnu packages time)) | |
d18197af HG |
35 | |
36 | (define-public python-django | |
37 | (package | |
38 | (name "python-django") | |
777f485e | 39 | (version "1.10.8") |
d18197af HG |
40 | (source (origin |
41 | (method url-fetch) | |
42 | (uri (pypi-uri "Django" version)) | |
43 | (sha256 | |
44 | (base32 | |
777f485e | 45 | "1fwqqh2zbcy9dy0lnvk338s11llnnfz2k56bf84w0wv56ayq7vyl")))) |
d18197af HG |
46 | (build-system python-build-system) |
47 | (arguments | |
48 | '(#:phases | |
49 | (modify-phases %standard-phases | |
50 | (add-before 'check 'set-tzdir | |
51 | (lambda* (#:key inputs #:allow-other-keys) | |
52 | ;; The test-suite tests timezone-dependent functions, thus tzdata | |
53 | ;; needs to be available. | |
54 | (setenv "TZDIR" | |
55 | (string-append (assoc-ref inputs "tzdata") | |
56 | "/share/zoneinfo")) | |
57 | #t)) | |
58 | (replace 'check | |
59 | (lambda _ | |
60 | (setenv "PYTHONPATH" | |
61 | (string-append ".:" (getenv "PYTHONPATH"))) | |
62 | (zero? (system* "python" "tests/runtests.py"))))))) | |
63 | ;; TODO: Install extras/django_bash_completion. | |
dfdaea32 | 64 | (native-inputs |
04941fc5 | 65 | `(("tzdata", tzdata-for-tests) |
dfdaea32 | 66 | ;; bcrypt and argon2-cffi are extra requirements not yet in guix |
d18197af HG |
67 | ;;("python-argon2-cffi" ,python-argon2-cffi) ; >= 16.1.0 |
68 | ;;("python-bcrypt" ,python-bcrypt) ; not py-bcrypt! | |
dfdaea32 HG |
69 | ;; Remaining packages are test requirements taken from |
70 | ;; tests/requirements/py3.txt | |
d18197af HG |
71 | ("python-docutils" ,python-docutils) |
72 | ;; optional for tests: ("python-geoip2" ,python-geoip2) | |
73 | ("python-jinja2" ,python-jinja2) ; >= 2.7 | |
74 | ;; optional for tests: ("python-memcached" ,python-memcached) | |
75 | ("python-numpy" ,python-numpy) | |
76 | ("python-pillow" ,python-pillow) | |
77 | ("python-pyyaml" ,python-pyyaml) | |
78 | ("python-pytz" ,python-pytz) | |
79 | ;; optional for tests: ("python-selenium" ,python-selenium) | |
80 | ("python-sqlparse" ,python-sqlparse) | |
81 | ("python-tblib" ,python-tblib))) | |
82 | (home-page "http://www.djangoproject.com/") | |
83 | (synopsis "High-level Python Web framework") | |
84 | (description | |
85 | "Django is a high-level Python Web framework that encourages rapid | |
86 | development and clean, pragmatic design. It provides many tools for building | |
87 | any Web site. Django focuses on automating as much as possible and adhering | |
88 | to the @dfn{don't repeat yourself} (DRY) principle.") | |
89 | (license license:bsd-3) | |
33b25201 MB |
90 | (properties `((python2-variant . ,(delay python2-django)) |
91 | (cpe-name . "django"))))) | |
d18197af HG |
92 | |
93 | (define-public python2-django | |
94 | (let ((base (package-with-python2 (strip-python2-variant python-django)))) | |
95 | (package | |
96 | (inherit base) | |
dfdaea32 HG |
97 | (native-inputs |
98 | `(;; Test requirements for Python 2 taken from | |
99 | ;; tests/requirements/py3.txt: enum34 and mock. | |
d18197af HG |
100 | ("python2-enum34" ,python2-enum34) |
101 | ("python2-mock" ,python2-mock) | |
102 | ;; When adding memcached mind: for Python 2 memcached <= 1.53 is | |
103 | ;; required. | |
cda5e76f | 104 | ,@(package-native-inputs base)))))) |
b53fc294 HG |
105 | |
106 | (define-public python-django-simple-math-captcha | |
107 | (package | |
108 | (name "python-django-simple-math-captcha") | |
109 | (version "1.0.7") | |
110 | (source (origin | |
111 | (method url-fetch) | |
112 | (uri (pypi-uri "django-simple-math-captcha" version)) | |
113 | (sha256 | |
114 | (base32 | |
115 | "0906hms6y6znjhpd0g4wmzv9vcla4brkdpsm4zha9zdj8g5vq2hd")))) | |
116 | (build-system python-build-system) | |
281cc11c MB |
117 | (arguments |
118 | ;; FIXME: Upstream uses a 'runtests.py' script that is not | |
119 | ;; present in the pypi tarball. | |
120 | '(#:tests? #f)) | |
b53fc294 HG |
121 | (propagated-inputs |
122 | `(("python-django" ,python-django))) | |
b53fc294 HG |
123 | (home-page "https://github.com/alsoicode/django-simple-math-captcha") |
124 | (synopsis "Easy-to-use math field/widget captcha for Django forms") | |
125 | (description | |
126 | "A multi-value-field that presents a human answerable question, | |
127 | with no settings.py configuration necessary, but instead can be configured | |
128 | with arguments to the field constructor.") | |
129 | (license license:asl2.0))) | |
130 | ||
131 | (define-public python2-django-simple-math-captcha | |
132 | (package-with-python2 python-django-simple-math-captcha)) | |
23b563dc EF |
133 | |
134 | (define-public python-pytest-django | |
135 | (package | |
136 | (name "python-pytest-django") | |
919d4ad0 | 137 | (version "3.1.2") |
23b563dc EF |
138 | (source (origin |
139 | (method url-fetch) | |
140 | (uri (pypi-uri "pytest-django" version)) | |
141 | (sha256 | |
142 | (base32 | |
919d4ad0 | 143 | "02932m2sr8x22m4az8syr8g835g4ak77varrnw71n6xakmdcr303")))) |
23b563dc EF |
144 | (build-system python-build-system) |
145 | (arguments | |
1f31a5e0 MB |
146 | `(#:tests? #f ; FIXME: How to run tests? |
147 | #:phases | |
23b563dc EF |
148 | (modify-phases %standard-phases |
149 | (add-after 'unpack 'patch-setuppy | |
150 | (lambda _ | |
151 | (substitute* "setup.py" | |
919d4ad0 | 152 | (("setuptools_scm==1.11.1") "setuptools_scm")) |
23b563dc EF |
153 | #t))))) |
154 | (native-inputs | |
d18c69aa EF |
155 | `(("python-django" ,python-django) |
156 | ("python-setuptools-scm" ,python-setuptools-scm))) | |
f22efa01 | 157 | (propagated-inputs |
2dd12924 | 158 | `(("python-pytest" ,python-pytest))) |
23b563dc EF |
159 | (home-page "http://pytest-django.readthedocs.org/") |
160 | (synopsis "Django plugin for py.test") | |
161 | (description "Pytest-django is a plugin for py.test that provides a set of | |
162 | useful tools for testing Django applications and projects.") | |
23b563dc EF |
163 | (license license:bsd-3))) |
164 | ||
165 | (define-public python2-pytest-django | |
5c31f4aa | 166 | (package-with-python2 python-pytest-django)) |
894810c7 EF |
167 | |
168 | (define-public python-django-filter | |
169 | (package | |
170 | (name "python-django-filter") | |
171 | (version "0.14.0") | |
172 | (source (origin | |
173 | (method url-fetch) | |
174 | (uri (pypi-uri "django-filter" version)) | |
175 | (sha256 | |
176 | (base32 | |
177 | "0f78hmk8c903zwfzlsiw7ivgag81ymmb5hi73rzxbhnlg2v0l3fx")))) | |
178 | (build-system python-build-system) | |
55ab6451 MB |
179 | (arguments |
180 | '(#:phases | |
181 | (modify-phases %standard-phases | |
182 | (replace 'check | |
183 | (lambda _ | |
184 | (zero? (system* "python" "runtests.py"))))))) | |
fa7cd333 EF |
185 | (native-inputs |
186 | `(("python-django" ,python-django) | |
187 | ("python-mock" ,python-mock))) | |
894810c7 EF |
188 | (home-page "https://django-filter.readthedocs.io/en/latest/") |
189 | (synopsis "Reusable Django application to filter querysets dynamically") | |
190 | (description | |
191 | "Django-filter is a generic, reusable application to alleviate writing | |
192 | some of the more mundane bits of view code. Specifically, it allows users to | |
193 | filter down a queryset based on a model’s fields, displaying the form to let | |
194 | them do this.") | |
894810c7 EF |
195 | (license license:bsd-3))) |
196 | ||
197 | (define-public python2-django-filter | |
5c31f4aa | 198 | (package-with-python2 python-django-filter)) |
e1f06e11 | 199 | |
200 | (define-public python-django-allauth | |
201 | (package | |
202 | (name "python-django-allauth") | |
203 | (version "0.30.0") | |
204 | (source | |
205 | (origin | |
206 | (method url-fetch) | |
207 | (uri (pypi-uri "django-allauth" version)) | |
208 | (sha256 | |
209 | (base32 | |
210 | "1fslqc5qqb0b66yscvkyjwfv8cnbfx5nlkpnwimyb3pf1nc1w7r3")))) | |
211 | (build-system python-build-system) | |
17dc2a09 CB |
212 | (arguments |
213 | '(#:phases | |
214 | (modify-phases %standard-phases | |
215 | ;; TODO: Tagging the tests requiring the web could be done upstream. | |
216 | (add-before 'check 'skip-test-requiring-network-access | |
217 | (lambda _ | |
218 | (substitute* "allauth/socialaccount/providers/openid/tests.py" | |
219 | (("def test_login") | |
220 | "from django.test import tag | |
221 | @tag('requires-web') | |
222 | def test_login")))) | |
223 | (replace 'check | |
224 | (lambda _ | |
225 | (setenv "DJANGO_SETTINGS_MODULE" "test_settings") | |
226 | (zero? (system* | |
227 | "django-admin" | |
228 | "test" | |
229 | "allauth" | |
230 | "--verbosity=2" | |
231 | "--exclude-tag=requires-web"))))))) | |
e1f06e11 | 232 | (propagated-inputs |
233 | `(("python-openid" ,python-openid) | |
234 | ("python-requests" ,python-requests) | |
235 | ("python-requests-oauthlib" ,python-requests-oauthlib))) | |
236 | (native-inputs | |
237 | `(("python-mock" ,python-mock))) | |
238 | (inputs | |
239 | `(("python-django" ,python-django))) | |
240 | (home-page "https://github.com/pennersr/django-allauth") | |
241 | (synopsis "Set of Django applications addressing authentication") | |
242 | (description | |
243 | "Integrated set of Django applications addressing authentication, | |
244 | registration, account management as well as 3rd party (social) | |
245 | account authentication.") | |
246 | (license license:expat))) | |
247 | ||
248 | (define-public python2-django-allauth | |
249 | (package-with-python2 python-django-allauth)) | |
14d8f653 | 250 | |
251 | (define-public python-django-gravatar2 | |
252 | (package | |
253 | (name "python-django-gravatar2") | |
254 | (version "1.4.0") | |
255 | (source | |
256 | (origin | |
257 | (method url-fetch) | |
258 | (uri (pypi-uri "django-gravatar2" version)) | |
259 | (sha256 | |
260 | (base32 | |
261 | "1v4qyj6kms321yw0z2g1kch6b2dskmv6fjd6sfxzwr4xshq9mccl")))) | |
262 | (build-system python-build-system) | |
263 | (inputs | |
264 | `(("python-django" ,python-django))) | |
265 | (home-page "https://github.com/twaddington/django-gravatar") | |
266 | (synopsis "Gravatar support for Django, improved version") | |
267 | (description | |
268 | "Essential Gravatar support for Django. Features helper methods, | |
269 | templatetags and a full test suite.") | |
270 | (license license:expat))) | |
271 | ||
272 | (define-public python2-django-gravatar2 | |
273 | (package-with-python2 python-django-gravatar2)) | |
01c64cb8 JL |
274 | |
275 | (define-public python-django-assets | |
276 | (package | |
277 | (name "python-django-assets") | |
278 | (version "0.12") | |
279 | (source (origin | |
280 | (method url-fetch) | |
281 | (uri (pypi-uri "django-assets" version)) | |
282 | (sha256 | |
283 | (base32 | |
284 | "0y0007fvkn1rdlj2g0y6k1cnkx53kxab3g8i85i0rd58k335p365")))) | |
285 | (build-system python-build-system) | |
286 | (arguments | |
287 | `(#:phases | |
288 | (modify-phases %standard-phases | |
289 | (add-before 'check 'fix-tests | |
290 | (lambda _ | |
291 | (begin | |
292 | ;; https://github.com/miracle2k/django-assets/issues/87 | |
293 | (substitute* "tests/__init__.py" | |
294 | (("settings.configure.*") | |
295 | (string-append | |
296 | "settings.configure(\n" | |
297 | "INSTALLED_APPS=['django_assets', " | |
298 | "'django.contrib.staticfiles'],\n" | |
299 | "TEMPLATES=[{'BACKEND': " | |
300 | "'django.template.backends.django.DjangoTemplates'}],\n" | |
301 | ")\n"))) | |
302 | ;; These tests fail | |
303 | (substitute* "tests/test_django.py" | |
304 | (("TestLoader") "NoTestLoader")))))))) | |
305 | (native-inputs | |
306 | `(("python-nose" ,python-nose))) | |
307 | (propagated-inputs | |
308 | `(("python-django" ,python-django) | |
309 | ("python-webassets" ,python-webassets))) | |
310 | (home-page "https://github.com/miracle2k/django-assets") | |
311 | (synopsis "Asset management for Django") | |
312 | (description | |
313 | "Asset management for Django, to compress and merge CSS and Javascript | |
314 | files. Integrates the webassets library with Django, adding support for | |
315 | merging, minifying and compiling CSS and Javascript files.") | |
316 | (license license:bsd-2))) | |
317 | ||
318 | (define-public python2-django-assets | |
319 | (package-with-python2 python-django-assets)) | |
6c17e963 JL |
320 | |
321 | (define-public python-django-jsonfield | |
322 | (package | |
323 | (name "python-django-jsonfield") | |
324 | (version "1.0.3") | |
325 | (source (origin | |
326 | (method url-fetch) | |
327 | (uri (pypi-uri "jsonfield" version)) | |
328 | (sha256 | |
329 | (base32 | |
330 | "19x4lak0hg9c20r7mvf27w7i8r6i4sg2g0ypmlmp2665fnk76zvy")))) | |
331 | (build-system python-build-system) | |
332 | (arguments | |
333 | `(#:phases | |
334 | (modify-phases %standard-phases | |
335 | (add-before 'check 'fix-tests | |
336 | (lambda _ | |
337 | (substitute* "jsonfield/tests.py" | |
338 | (("django.forms.util") "django.forms.utils"))))))) | |
339 | (propagated-inputs | |
340 | `(("python-django" ,python-django))) | |
341 | (home-page "https://github.com/bradjasper/django-jsonfield") | |
342 | (synopsis "Store validated JSON in your model") | |
343 | (description | |
344 | "Django-jsonfield is a reusable Django field that allows you to store | |
345 | validated JSON in your model. It silently takes care of serialization. To | |
346 | use, simply add the field to one of your models.") | |
347 | (license license:expat))) | |
348 | ||
349 | (define-public python2-django-jsonfield | |
350 | (package-with-python2 python-django-jsonfield)) | |
a326384b JL |
351 | |
352 | (define-public python-dj-database-url | |
353 | (package | |
354 | (name "python-dj-database-url") | |
355 | (version "0.4.2") | |
356 | (source (origin | |
357 | (method url-fetch) | |
358 | (uri (pypi-uri "dj-database-url" version)) | |
359 | (sha256 | |
360 | (base32 | |
361 | "024zbkc5rli4hia9lz9g8kf1zxhb2gwawj5abf67i7gf8n22v0x6")))) | |
362 | (build-system python-build-system) | |
363 | (home-page "https://github.com/kennethreitz/dj-database-url") | |
364 | (synopsis "Use Database URLs in your Django Application") | |
365 | (description | |
366 | "This simple Django utility allows you to utilize the 12factor inspired | |
367 | DATABASE_URL environment variable to configure your Django application. | |
368 | ||
369 | The dj_database_url.config method returns a Django database connection | |
370 | dictionary, populated with all the data specified in your URL. There is also a | |
371 | conn_max_age argument to easily enable Django’s connection pool.") | |
372 | (license license:bsd-2))) | |
373 | ||
374 | (define-public python2-dj-database-url | |
375 | (package-with-python2 python-dj-database-url)) | |
afbfe564 JL |
376 | |
377 | (define-public python-django-bulk-update | |
378 | (package | |
379 | (name "python-django-bulk-update") | |
380 | (version "1.1.10") | |
381 | (source (origin | |
382 | (method url-fetch) | |
383 | (uri (pypi-uri "django-bulk-update" version)) | |
384 | (sha256 | |
385 | (base32 | |
386 | "0mbng9m7swfc0dnidipbzlxfhlfjrv755dlnha5s4m9mgdxb1fhc")))) | |
387 | (build-system python-build-system) | |
388 | (arguments | |
389 | ;; tests don't support django 1.10, but the module seems to work. | |
390 | `(#:tests? #f)) | |
391 | (native-inputs | |
392 | `(("six" ,python-six) | |
393 | ("jsonfield" ,python-django-jsonfield) | |
394 | ("python-dj-database-url" ,python-dj-database-url))) | |
395 | (propagated-inputs | |
396 | `(("python-django" ,python-django))) | |
397 | (home-page "https://github.com/aykut/django-bulk-update") | |
398 | (synopsis "Simple bulk update over Django ORM or with helper function") | |
399 | (description | |
400 | "Simple bulk update over Django ORM or with helper function. This | |
401 | project aims to bulk update given objects using one query over Django ORM.") | |
402 | (license license:expat))) | |
403 | ||
404 | (define-public python2-django-bulk-update | |
405 | (package-with-python2 python-django-bulk-update)) | |
03a34e87 JL |
406 | |
407 | (define-public python-django-contact-form | |
408 | (package | |
409 | (name "python-django-contact-form") | |
410 | (version "1.3") | |
411 | (source (origin | |
412 | (method url-fetch) | |
413 | (uri (pypi-uri "django-contact-form" version)) | |
414 | (sha256 | |
415 | (base32 | |
416 | "0az590y56k5ahv4sixrkn54d3a8ig2q2z9pl6s3m4f533mx2gj17")))) | |
417 | (build-system python-build-system) | |
418 | (arguments | |
419 | `(#:phases | |
420 | (modify-phases %standard-phases | |
421 | (replace 'check | |
422 | (lambda _ | |
423 | ;; the next version will need "make test" | |
424 | (and (zero? (system* "flake8" "contact_form")) | |
425 | (zero? (system* "coverage" "run" "contact_form/runtests.py")) | |
426 | (zero? (system* "coverage" "report" "-m" "--fail-under" "0")))))))) | |
427 | (native-inputs | |
428 | `(("python-coverage" ,python-coverage) | |
429 | ("python-flake8" ,python-flake8))) | |
430 | (propagated-inputs | |
431 | `(("python-django" ,python-django))) | |
432 | (home-page "https://github.com/ubernostrum/django-contact-form") | |
433 | (synopsis "Contact form for Django") | |
434 | (description | |
435 | "This application provides simple, extensible contact-form functionality | |
436 | for Django sites.") | |
437 | (license license:bsd-3))) | |
438 | ||
439 | (define-public python2-django-contact-form | |
440 | (package-with-python2 python-django-contact-form)) | |
659692c0 JL |
441 | |
442 | (define-public python-django-contrib-comments | |
443 | (package | |
444 | (name "python-django-contrib-comments") | |
445 | (version "1.8.0") | |
446 | (source (origin | |
447 | (method url-fetch) | |
448 | (uri (pypi-uri "django-contrib-comments" version)) | |
449 | (sha256 | |
450 | (base32 | |
451 | "0bxsgw8jrkhg6r5s0z6ksfi4w8yknaqb1s9acmxd9pm3pnsnp5kx")))) | |
452 | (build-system python-build-system) | |
453 | (propagated-inputs | |
454 | `(("python-django" ,python-django))) | |
455 | (home-page "https://github.com/django/django-contrib-comments") | |
456 | (synopsis "Comments framework") | |
457 | (description | |
458 | "Django used to include a comments framework; since Django 1.6 it's been | |
459 | separated to a separate project. This is that project. This framework can be | |
460 | used to attach comments to any model, so you can use it for comments on blog | |
461 | entries, photos, book chapters, or anything else.") | |
462 | (license license:bsd-3))) | |
463 | ||
464 | (define-public python2-django-contrib-comments | |
465 | (package-with-python2 python-django-contrib-comments)) | |
93246253 JL |
466 | |
467 | (define-public python-django-overextends | |
468 | (package | |
469 | (name "python-django-overextends") | |
470 | (version "0.4.3") | |
471 | (source (origin | |
472 | (method url-fetch) | |
473 | (uri (pypi-uri "django-overextends" version)) | |
474 | (sha256 | |
475 | (base32 | |
476 | "0qc2pcf3i56pmfxh2jw7k3pgljd8xzficmkl2541n7bkcbngqfzm")))) | |
477 | (build-system python-build-system) | |
478 | (arguments | |
479 | `(#:phases | |
480 | (modify-phases %standard-phases | |
481 | (replace 'check | |
482 | (lambda _ | |
483 | (zero? (system* "./test_project/manage.py" "test"))))))) | |
484 | (propagated-inputs | |
485 | `(("python-django" ,python-django))) | |
486 | (native-inputs | |
487 | `(("sphinx-me" ,python-sphinx-me))) | |
488 | (home-page "https://github.com/stephenmcd/django-overextends") | |
489 | (synopsis "Circular template inheritance") | |
490 | (description | |
491 | "A Django reusable app providing the overextends template tag, a drop-in | |
492 | replacement for Django's extends tag, which allows you to use circular template | |
493 | inheritance. The primary use-case for overextends is to simultaneously | |
494 | override and extend templates from other reusable apps, in your own Django | |
495 | project.") | |
496 | (license license:bsd-2))) | |
497 | ||
498 | (define-public python2-django-overextends | |
499 | (package-with-python2 python-django-overextends)) | |
b939953b JL |
500 | |
501 | (define-public python-django-redis | |
502 | (package | |
503 | (name "python-django-redis") | |
504 | (version "4.7.0") | |
505 | (source (origin | |
506 | (method url-fetch) | |
507 | (uri (pypi-uri "django-redis" version)) | |
508 | (sha256 | |
509 | (base32 | |
510 | "0yyyxv8n9l9dhs893jsqwg2cxqkkc79g719n9dzzzqgkzialv1c1")))) | |
511 | (build-system python-build-system) | |
512 | (arguments | |
513 | `(#:phases | |
514 | (modify-phases %standard-phases | |
515 | (replace 'check | |
516 | (lambda _ | |
517 | (and (zero? (system* "redis-server" "--daemonize" "yes")) | |
518 | (with-directory-excursion "tests" | |
519 | (zero? (system* "python" "runtests.py"))))))))) | |
520 | (native-inputs | |
521 | `(("python-fakeredis" ,python-fakeredis) | |
522 | ("python-hiredis" ,python-hiredis) | |
523 | ("python-mock" ,python-mock) | |
524 | ("python-msgpack" ,python-msgpack) | |
525 | ("redis" ,redis))) | |
526 | (propagated-inputs | |
527 | `(("python-django" ,python-django) | |
528 | ("python-redis" ,python-redis))) | |
529 | (home-page "https://github.com/niwibe/django-redis") | |
530 | (synopsis "Full featured redis cache backend for Django") | |
531 | (description | |
532 | "Full featured redis cache backend for Django.") | |
533 | (license license:bsd-3))) | |
534 | ||
535 | (define-public python2-django-redis | |
536 | (package-with-python2 python-django-redis)) | |
cb9b6095 JL |
537 | |
538 | (define-public python-django-rq | |
539 | (package | |
540 | (name "python-django-rq") | |
541 | (version "0.9.4") | |
542 | (source (origin | |
543 | (method url-fetch) | |
544 | (uri (pypi-uri "django-rq" version)) | |
545 | (sha256 | |
546 | (base32 | |
547 | "04v8ilfdp10bk31fxgh4cn083gsn5m06342cnpm5d10nd8hc0vky")))) | |
548 | (build-system python-build-system) | |
549 | (arguments | |
550 | `(#:phases | |
551 | (modify-phases %standard-phases | |
552 | (replace 'check | |
553 | (lambda _ | |
554 | (and (zero? (system* "redis-server" "--daemonize" "yes")) | |
555 | (zero? (system* "django-admin.py" "test" "django_rq" | |
556 | "--settings=django_rq.test_settings" | |
557 | "--pythonpath=")))))))) | |
558 | (native-inputs | |
559 | `(("redis" ,redis))) | |
560 | (propagated-inputs | |
561 | `(("python-django" ,python-django) | |
562 | ("python-rq" ,python-rq))) | |
563 | (home-page "https://github.com/ui/django-rq") | |
564 | (synopsis "Django integration with RQ") | |
565 | (description | |
566 | "Django integration with RQ, a Redis based Python queuing library. | |
567 | Django-RQ is a simple app that allows you to configure your queues in django's | |
568 | settings.py and easily use them in your project.") | |
569 | (license license:expat))) | |
570 | ||
571 | (define-public python2-django-rq | |
572 | (package-with-python2 python-django-rq)) | |
b0395dd6 JL |
573 | |
574 | (define-public python-django-sortedm2m | |
575 | (package | |
576 | (name "python-django-sortedm2m") | |
577 | (version "1.3.3") | |
578 | (source (origin | |
579 | (method url-fetch) | |
580 | (uri (pypi-uri "django-sortedm2m" version)) | |
581 | (sha256 | |
582 | (base32 | |
583 | "0axf765i7b3c2s83nlph47asi8s071dhq8l7y382v1pw785s22vi")))) | |
584 | (build-system python-build-system) | |
585 | (arguments | |
586 | ;; no tests. | |
587 | `(#:tests? #f)) | |
588 | (propagated-inputs | |
589 | `(("python-django" ,python-django))) | |
590 | (home-page "https://github.com/gregmuellegger/django-sortedm2m") | |
591 | (synopsis "Drop-in replacement for django's own ManyToManyField") | |
592 | (description | |
593 | "Sortedm2m is a drop-in replacement for django's own ManyToManyField. | |
594 | The provided SortedManyToManyField behaves like the original one but remembers | |
595 | the order of added relations.") | |
596 | (license license:bsd-3))) | |
597 | ||
598 | (define-public python2-django-sortedm2m | |
599 | (package-with-python2 python-django-sortedm2m)) | |
9f4a3059 JL |
600 | |
601 | (define-public python-django-appconf | |
602 | (package | |
603 | (name "python-django-appconf") | |
604 | (version "1.0.2") | |
605 | (source (origin | |
606 | (method url-fetch) | |
607 | (uri (pypi-uri "django-appconf" version)) | |
608 | (sha256 | |
609 | (base32 | |
610 | "0qdjdx35g66xjsc50v0c5h3kg6njs8df33mbjx6j4k1vd3m9lkba")))) | |
611 | (build-system python-build-system) | |
612 | (propagated-inputs | |
613 | `(("python-django" ,python-django))) | |
614 | (home-page "https://github.com/django-compressor/django-appconf") | |
615 | (synopsis "Handle configuration defaults of packaged Django apps") | |
616 | (description | |
617 | "This app precedes Django's own AppConfig classes that act as \"objects | |
618 | [to] store metadata for an application\" inside Django's app loading mechanism. | |
619 | In other words, they solve a related but different use case than | |
620 | django-appconf and can't easily be used as a replacement. The similarity in | |
621 | name is purely coincidental.") | |
622 | (license license:bsd-3))) | |
623 | ||
624 | (define-public python2-django-appconf | |
625 | (package-with-python2 python-django-appconf)) | |
f77d82f1 JL |
626 | |
627 | (define-public python-django-statici18n | |
628 | (package | |
629 | (name "python-django-statici18n") | |
630 | (version "1.3.0") | |
631 | (source (origin | |
632 | (method url-fetch) | |
633 | (uri (pypi-uri "django-statici18n" version)) | |
634 | (sha256 | |
635 | (base32 | |
636 | "0alcf4g1nv69njhq5k3qw4mfl2k6dc18bik5nk0g1mnp3m8zyz7k")))) | |
637 | (build-system python-build-system) | |
638 | (propagated-inputs | |
639 | `(("python-django" ,python-django) | |
640 | ("django-appconf" ,python-django-appconf))) | |
641 | (home-page "https://github.com/zyegfryed/django-statici18n") | |
642 | (synopsis "Generate JavaScript catalog to static files") | |
643 | (description | |
644 | "A Django app that provides helper for generating JavaScript catalog to | |
645 | static files.") | |
646 | (license license:bsd-3))) | |
647 | ||
648 | (define-public python2-django-statici18n | |
649 | (package-with-python2 python-django-statici18n)) | |
2601171e JL |
650 | |
651 | (define-public pootle | |
652 | (package | |
653 | (name "pootle") | |
654 | (version "2.8.0rc5") | |
655 | (source | |
656 | (origin | |
657 | (method url-fetch) | |
658 | (uri (pypi-uri "Pootle" version ".tar.bz2")) | |
659 | (sha256 | |
660 | (base32 | |
661 | "0m6qcpkcy22dk3ad5y2k8851kqg2w6vrkywgy4vabwbacd7r1mvn")))) | |
662 | (build-system python-build-system) | |
663 | (arguments | |
664 | `(; pootle supports only python2. | |
665 | #:python ,python-2 | |
666 | ;; tests are not run and fail with "pytest_pootle/data/po/.tmp: No such | |
667 | ;; file or directory". If we create this directory, | |
668 | ;; pytest_pootle/data/po/terminology.po is missing. | |
669 | #:tests? #f | |
670 | #:phases | |
671 | (modify-phases %standard-phases | |
672 | (add-before 'build 'fix-requirements | |
673 | (lambda _ | |
674 | (substitute* "Pootle.egg-info/requires.txt" | |
675 | (("1.7.3") "1.8.0") | |
676 | (("2.0.0") "2.1.0")) | |
677 | (substitute* "requirements/tests.txt" | |
678 | (("==3.0.6") ">=3.0.6")) | |
679 | (substitute* "requirements/base.txt" | |
680 | (("1.7.3") "1.8.0") | |
681 | (("2.0.0") "2.1.0"))))))) | |
682 | (propagated-inputs | |
683 | `(("django-allauth" ,python2-django-allauth) | |
684 | ("django-assets" ,python2-django-assets) | |
685 | ("django-bulk-update" ,python2-django-bulk-update) | |
686 | ("django-contact-form" ,python2-django-contact-form) | |
687 | ("django-contrib-comments" ,python2-django-contrib-comments) | |
688 | ("django-overextends" ,python2-django-overextends) | |
689 | ("django-redis" ,python2-django-redis) | |
690 | ("django-rq" ,python2-django-rq) | |
691 | ("django-sortedm2m" ,python2-django-sortedm2m) | |
692 | ("django-statici18n" ,python2-django-statici18n) | |
693 | ("babel" ,python2-babel) | |
694 | ("cssmin" ,python2-cssmin) | |
695 | ("diff-match-patch" ,python2-diff-match-patch) | |
696 | ("dirsync" ,python2-dirsync) | |
697 | ("elasticsearch" ,python2-elasticsearch) | |
698 | ("jsonfield" ,python2-django-jsonfield) | |
699 | ("lxml" ,python2-lxml) | |
700 | ("dateutil" ,python2-dateutil) | |
701 | ("levenshtein" ,python2-levenshtein) | |
702 | ("mysqlclient" ,python2-mysqlclient) | |
703 | ("psycopg2" ,python2-psycopg2) | |
704 | ("pytz" ,python2-pytz) | |
705 | ("rq" ,python2-rq) | |
706 | ("scandir" ,python2-scandir) | |
707 | ("stemming" ,python2-stemming) | |
708 | ("translate-toolkit" ,python2-translate-toolkit))) | |
709 | (native-inputs | |
c8ccf7c5 | 710 | `(("python2-pytest" ,python2-pytest) |
2601171e JL |
711 | ("python2-pytest-django" ,python2-pytest-django) |
712 | ("python2-pytest-catchlog" ,python2-pytest-catchlog) | |
713 | ("python2-pytest-cov" ,python2-pytest-cov) | |
714 | ("python2-factory-boy" ,python2-factory-boy))) | |
715 | (home-page "http://pootle.translatehouse.org/") | |
716 | (synopsis "Community localization server") | |
717 | (description | |
718 | "Pootle is an online translation and localization tool. It works to | |
719 | lower the barrier of entry, providing tools to enable teams to work towards | |
720 | higher quality while welcoming newcomers.") | |
721 | (license license:gpl3+))) | |
40fac51a RW |
722 | |
723 | (define-public python-django-tagging | |
724 | (package | |
725 | (name "python-django-tagging") | |
726 | (version "0.4.6") | |
727 | (source | |
728 | (origin | |
729 | (method url-fetch) | |
730 | (uri (pypi-uri "django-tagging" version)) | |
731 | (sha256 | |
732 | (base32 | |
733 | "0s7b4v45j783yaxs7rni10k24san0ya77nqz4s7zdf3jhfpk42r1")))) | |
734 | (build-system python-build-system) | |
735 | (home-page "https://github.com/Fantomas42/django-tagging") | |
736 | (synopsis "Generic tagging application for Django") | |
737 | (description "This package provides a generic tagging application for | |
738 | Django projects, which allows association of a number of tags with any | |
739 | @code{Model} instance and makes retrieval of tags simple.") | |
740 | (license license:bsd-3))) | |
741 | ||
742 | (define-public python2-django-tagging | |
743 | (package-with-python2 python-django-tagging)) |