Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: epfl-si/infoscience-exports
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 0.5.11
Choose a base ref
...
head repository: epfl-si/infoscience-exports
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
Loading
Showing with 17,565 additions and 8,043 deletions.
  1. +9 −5 CHANGELOG.md
  2. +46 −31 Dockerfile
  3. +48 −54 Makefile
  4. +7 −6 Pipfile
  5. +1,359 −668 Pipfile.lock
  6. +34 −9 README.md
  7. +4 −1 ansible/exportsible
  8. +4 −3 ansible/roles/epfl.infoscience-exports/tasks/configMaps.yml
  9. +42 −0 ansible/roles/epfl.infoscience-exports/tasks/cron.yml
  10. +2 −2 ansible/roles/epfl.infoscience-exports/tasks/deploy.yml
  11. +11 −0 ansible/roles/epfl.infoscience-exports/tasks/image.yml
  12. +14 −0 ansible/roles/epfl.infoscience-exports/tasks/main.yml
  13. +2 −2 ansible/roles/epfl.infoscience-exports/tasks/secrets.yml
  14. +5 −2 ansible/roles/epfl.infoscience-exports/vars/main.yml
  15. BIN doc/INF_Export-Rendu-Champs.docx
  16. +71 −58 docker-compose-dev.yml
  17. +32 −19 docker-compose.yml
  18. 0 { → docker_volumes}/logs/.gitignore
  19. +5 −3 env/django.env
  20. +1 −2 infoscience_exports/exporter/migrations/0001_initial.py
  21. +414 −414 infoscience_exports/exporter/models.py
  22. +17 −2 infoscience_exports/exports/admin.py
  23. +15 −0 infoscience_exports/exports/forms.py
  24. +90 −0 infoscience_exports/exports/management/commands/forcerenderall.py
  25. +20 −30 infoscience_exports/exports/marc21xml.py
  26. +8 −3 infoscience_exports/exports/middleware.py
  27. +41 −0 infoscience_exports/exports/migrations/0020_set_engine_name_and_dbcache_20240514_1657.py
  28. +18 −0 infoscience_exports/exports/migrations/0021_alter_user_first_name.py
  29. +44 −1 infoscience_exports/exports/models/export.py
  30. +2 −1 infoscience_exports/exports/models/settings.py
  31. +69 −0 infoscience_exports/exports/options.py
  32. +31 −53 infoscience_exports/exports/options_notices.py
  33. +104 −1 infoscience_exports/exports/static/css/export.css
  34. +22 −0 infoscience_exports/exports/static/css/invenio.css
  35. +1,314 −0 infoscience_exports/exports/static/css/jquery-ui.css
  36. +446 −0 infoscience_exports/exports/static/css/theme.css
  37. BIN infoscience_exports/exports/static/css/user-blank.png
  38. +1 −0 infoscience_exports/exports/static/img/epfl-logo.svg
  39. +20 −0 infoscience_exports/exports/static/img/logo_icon.svg
  40. +11 −9 infoscience_exports/exports/static/js/export.js
  41. +65 −128 infoscience_exports/exports/templates/base/base.html
  42. +0 −185 infoscience_exports/exports/templates/base/en/base.html
  43. +7 −51 infoscience_exports/exports/templates/base/footer.html
  44. +0 −167 infoscience_exports/exports/templates/base/fr/base.html
  45. +6 −2 infoscience_exports/exports/templates/exports/export.html
  46. +26 −0 infoscience_exports/exports/templates/exports/export_compare.html
  47. +1 −1 infoscience_exports/exports/templates/exports/export_complete.html
  48. +1 −1 infoscience_exports/exports/templates/exports/export_detailed.html
  49. +12 −14 infoscience_exports/exports/templates/exports/export_form.html
  50. +46 −4 infoscience_exports/exports/templates/exports/export_list.html
  51. +89 −0 infoscience_exports/exports/templates/exports/export_migrate.html
  52. +1 −1 infoscience_exports/exports/templates/exports/export_short.html
  53. +1 −1 infoscience_exports/exports/templates/exports/include_doctype/article_detailed.html
  54. +1 −1 infoscience_exports/exports/templates/exports/include_doctype/article_short.html
  55. +2 −2 infoscience_exports/exports/templates/exports/include_doctype/book_chapter_detailed.html
  56. +1 −1 infoscience_exports/exports/templates/exports/include_doctype/book_chapter_short.html
  57. +1 −1 infoscience_exports/exports/templates/exports/include_doctype/book_detailed.html
  58. +1 −1 infoscience_exports/exports/templates/exports/include_doctype/book_short.html
  59. +2 −2 infoscience_exports/exports/templates/exports/include_doctype/common/authors.html
  60. +1 −1 infoscience_exports/exports/templates/exports/include_doctype/conference_paper_detailed.html
  61. +36 −38 infoscience_exports/exports/templates/exports/include_doctype/conference_paper_short.html
  62. +1 −1 infoscience_exports/exports/templates/exports/include_doctype/conference_proceeding_detailed.html
  63. +1 −1 infoscience_exports/exports/templates/exports/include_doctype/conference_proceeding_short.html
  64. +1 −1 infoscience_exports/exports/templates/exports/include_doctype/patent_detailed.html
  65. +1 −1 infoscience_exports/exports/templates/exports/include_doctype/patent_short.html
  66. +1 −1 infoscience_exports/exports/templates/exports/include_doctype/poster_and_talks_detailed.html
  67. +1 −1 infoscience_exports/exports/templates/exports/include_doctype/poster_and_talks_short.html
  68. +1 −1 infoscience_exports/exports/templates/exports/include_doctype/report_and_working_paper_detailed.html
  69. +1 −1 infoscience_exports/exports/templates/exports/include_doctype/report_and_working_paper_short.html
  70. +8 −2 infoscience_exports/exports/templates/exports/include_doctype/student_project_detailed.html
  71. +1 −1 infoscience_exports/exports/templates/exports/include_doctype/student_project_short.html
  72. +1 −1 infoscience_exports/exports/templates/exports/include_doctype/thesis_detailed.html
  73. +1 −1 infoscience_exports/exports/templates/exports/include_doctype/thesis_short.html
  74. +1 −1 infoscience_exports/exports/templates/exports_2010/export.html
  75. +1 −1 infoscience_exports/exports/templates/exports_2010/export_detailed.html
  76. +1 −1 infoscience_exports/exports/templates/exports_2010/export_short.html
  77. +1 −1 infoscience_exports/exports/templates/exports_2010/include_doctype/article_detailed.html
  78. +1 −1 infoscience_exports/exports/templates/exports_2010/include_doctype/article_short.html
  79. +1 −1 infoscience_exports/exports/templates/exports_2010/include_doctype/book_chapter_detailed.html
  80. +1 −1 infoscience_exports/exports/templates/exports_2010/include_doctype/book_chapter_short.html
  81. +1 −1 infoscience_exports/exports/templates/exports_2010/include_doctype/book_detailed.html
  82. +1 −1 infoscience_exports/exports/templates/exports_2010/include_doctype/book_short.html
  83. +1 −1 infoscience_exports/exports/templates/exports_2010/include_doctype/common/authors.html
  84. +1 −1 infoscience_exports/exports/templates/exports_2010/include_doctype/conference_paper_detailed.html
  85. +1 −1 infoscience_exports/exports/templates/exports_2010/include_doctype/conference_paper_short.html
  86. +1 −1 ...cience_exports/exports/templates/exports_2010/include_doctype/conference_proceeding_detailed.html
  87. +1 −1 infoscience_exports/exports/templates/exports_2010/include_doctype/conference_proceeding_short.html
  88. +1 −1 infoscience_exports/exports/templates/exports_2010/include_doctype/patent_detailed.html
  89. +1 −1 infoscience_exports/exports/templates/exports_2010/include_doctype/patent_short.html
  90. +1 −1 infoscience_exports/exports/templates/exports_2010/include_doctype/poster_and_talks_detailed.html
  91. +1 −1 infoscience_exports/exports/templates/exports_2010/include_doctype/poster_and_talks_short.html
  92. +1 −1 ...nce_exports/exports/templates/exports_2010/include_doctype/report_and_working_paper_detailed.html
  93. +1 −1 ...cience_exports/exports/templates/exports_2010/include_doctype/report_and_working_paper_short.html
  94. +1 −1 infoscience_exports/exports/templates/exports_2010/include_doctype/student_project_detailed.html
  95. +1 −1 infoscience_exports/exports/templates/exports_2010/include_doctype/student_project_short.html
  96. +1 −1 infoscience_exports/exports/templates/exports_2010/include_doctype/thesis_detailed.html
  97. +1 −1 infoscience_exports/exports/templates/exports_2010/include_doctype/thesis_short.html
  98. +138 −0 infoscience_exports/exports/url_validator.py
  99. +13 −10 infoscience_exports/exports/urls.py
  100. +9 −0 infoscience_exports/exports/utils.py
  101. +3 −3 infoscience_exports/exports/versions.py
  102. +83 −67 infoscience_exports/exports/views.py
  103. +206 −195 infoscience_exports/locale/en/LC_MESSAGES/django.po
  104. +255 −180 infoscience_exports/locale/fr/LC_MESSAGES/django.po
  105. +6 −2 infoscience_exports/settings/base.py
  106. +18 −3 infoscience_exports/settings/dev.py
  107. +2 −0 infoscience_exports/settings/prod.py
  108. +0 −1 infoscience_exports/settings/test-silent-coverage.py
  109. +11 −9 infoscience_exports/settings/test.py
  110. +9 −17 infoscience_exports/urls.py
  111. +3 −3 migrate_db/HOWTO.MD
  112. +2 −2 migrate_db/command_to_start_from_scratch.sh
  113. +1 −1 nginx/sites-enabled/web.template
  114. +0 −80 requirements-dev.txt
  115. +0 −26 requirements.txt
  116. +36 −21 staticfiles/admin/css/autocomplete.css
  117. +354 −196 staticfiles/admin/css/base.css
  118. +121 −137 staticfiles/admin/css/changelists.css
  119. +137 −0 staticfiles/admin/css/dark_mode.css
  120. +3 −1 staticfiles/admin/css/dashboard.css
  121. +93 −91 staticfiles/admin/css/forms.css
  122. +13 −31 staticfiles/admin/css/login.css
  123. +144 −0 staticfiles/admin/css/nav_sidebar.css
  124. +111 −104 staticfiles/admin/css/responsive.css
  125. +13 −13 staticfiles/admin/css/responsive_rtl.css
  126. +91 −62 staticfiles/admin/css/rtl.css
  127. +1 −1 staticfiles/admin/css/vendor/select2/LICENSE-SELECT2.md
  128. +8 −11 staticfiles/admin/css/vendor/select2/select2.css
  129. +1 −1 staticfiles/admin/css/vendor/select2/select2.min.css
  130. +107 −68 staticfiles/admin/css/widgets.css
  131. +42 −70 staticfiles/admin/js/SelectBox.js
  132. +128 −91 staticfiles/admin/js/SelectFilter2.js
  133. +182 −134 staticfiles/admin/js/actions.js
  134. +66 −81 staticfiles/admin/js/admin/DateTimeShortcuts.js
  135. +111 −54 staticfiles/admin/js/admin/RelatedObjectLookups.js
  136. +21 −25 staticfiles/admin/js/autocomplete.js
  137. +38 −25 staticfiles/admin/js/calendar.js
  138. +25 −9 staticfiles/admin/js/cancel.js
  139. +14 −18 staticfiles/admin/js/change_form.js
  140. +29 −38 staticfiles/admin/js/collapse.js
  141. +3 −2 staticfiles/admin/js/collapse.min.js
  142. +46 −88 staticfiles/admin/js/core.js
  143. +30 −0 staticfiles/admin/js/filters.js
  144. +187 −126 staticfiles/admin/js/inlines.js
  145. +3 −3 staticfiles/admin/js/jquery.init.js
  146. +79 −0 staticfiles/admin/js/nav_sidebar.js
  147. +4 −4 staticfiles/admin/js/popup_response.js
  148. +7 −6 staticfiles/admin/js/prepopulate.js
  149. +10 −5 staticfiles/admin/js/prepopulate_init.js
  150. +56 −0 staticfiles/admin/js/theme.js
  151. +31 −57 staticfiles/admin/js/urlify.js
  152. +1 −7 staticfiles/admin/js/vendor/jquery/LICENSE.txt
  153. +1,400 −799 staticfiles/admin/js/vendor/jquery/jquery.js
  154. +2 −2 staticfiles/admin/js/vendor/jquery/jquery.min.js
  155. +1 −1 staticfiles/admin/js/vendor/select2/LICENSE.md
  156. +3 −0 staticfiles/admin/js/vendor/select2/i18n/af.js
  157. +2 −2 staticfiles/admin/js/vendor/select2/i18n/ar.js
  158. +2 −2 staticfiles/admin/js/vendor/select2/i18n/az.js
  159. +2 −2 staticfiles/admin/js/vendor/select2/i18n/bg.js
  160. +3 −0 staticfiles/admin/js/vendor/select2/i18n/bn.js
  161. +3 −0 staticfiles/admin/js/vendor/select2/i18n/bs.js
  162. +2 −2 staticfiles/admin/js/vendor/select2/i18n/ca.js
  163. +2 −2 staticfiles/admin/js/vendor/select2/i18n/cs.js
  164. +2 −2 staticfiles/admin/js/vendor/select2/i18n/da.js
  165. +2 −2 staticfiles/admin/js/vendor/select2/i18n/de.js
  166. +3 −0 staticfiles/admin/js/vendor/select2/i18n/dsb.js
  167. +2 −2 staticfiles/admin/js/vendor/select2/i18n/el.js
  168. +2 −2 staticfiles/admin/js/vendor/select2/i18n/en.js
  169. +2 −2 staticfiles/admin/js/vendor/select2/i18n/es.js
  170. +2 −2 staticfiles/admin/js/vendor/select2/i18n/et.js
  171. +2 −2 staticfiles/admin/js/vendor/select2/i18n/eu.js
  172. +2 −2 staticfiles/admin/js/vendor/select2/i18n/fa.js
  173. +2 −2 staticfiles/admin/js/vendor/select2/i18n/fi.js
  174. +2 −2 staticfiles/admin/js/vendor/select2/i18n/fr.js
  175. +2 −2 staticfiles/admin/js/vendor/select2/i18n/gl.js
  176. +2 −2 staticfiles/admin/js/vendor/select2/i18n/he.js
  177. +2 −2 staticfiles/admin/js/vendor/select2/i18n/hi.js
  178. +2 −2 staticfiles/admin/js/vendor/select2/i18n/hr.js
  179. +3 −0 staticfiles/admin/js/vendor/select2/i18n/hsb.js
  180. +2 −2 staticfiles/admin/js/vendor/select2/i18n/hu.js
  181. +3 −0 staticfiles/admin/js/vendor/select2/i18n/hy.js
  182. +2 −2 staticfiles/admin/js/vendor/select2/i18n/id.js
  183. +2 −2 staticfiles/admin/js/vendor/select2/i18n/is.js
  184. +2 −2 staticfiles/admin/js/vendor/select2/i18n/it.js
  185. +2 −2 staticfiles/admin/js/vendor/select2/i18n/ja.js
  186. +3 −0 staticfiles/admin/js/vendor/select2/i18n/ka.js
  187. +2 −2 staticfiles/admin/js/vendor/select2/i18n/km.js
  188. +2 −2 staticfiles/admin/js/vendor/select2/i18n/ko.js
  189. +2 −2 staticfiles/admin/js/vendor/select2/i18n/lt.js
  190. +2 −2 staticfiles/admin/js/vendor/select2/i18n/lv.js
  191. +2 −2 staticfiles/admin/js/vendor/select2/i18n/mk.js
  192. +2 −2 staticfiles/admin/js/vendor/select2/i18n/ms.js
  193. +2 −2 staticfiles/admin/js/vendor/select2/i18n/nb.js
  194. +3 −0 staticfiles/admin/js/vendor/select2/i18n/ne.js
  195. +2 −2 staticfiles/admin/js/vendor/select2/i18n/nl.js
  196. +2 −2 staticfiles/admin/js/vendor/select2/i18n/pl.js
  197. +3 −0 staticfiles/admin/js/vendor/select2/i18n/ps.js
  198. +2 −2 staticfiles/admin/js/vendor/select2/i18n/pt-BR.js
  199. +2 −2 staticfiles/admin/js/vendor/select2/i18n/pt.js
  200. +2 −2 staticfiles/admin/js/vendor/select2/i18n/ro.js
  201. +2 −2 staticfiles/admin/js/vendor/select2/i18n/ru.js
  202. +2 −2 staticfiles/admin/js/vendor/select2/i18n/sk.js
  203. +3 −0 staticfiles/admin/js/vendor/select2/i18n/sl.js
  204. +3 −0 staticfiles/admin/js/vendor/select2/i18n/sq.js
  205. +2 −2 staticfiles/admin/js/vendor/select2/i18n/sr-Cyrl.js
  206. +2 −2 staticfiles/admin/js/vendor/select2/i18n/sr.js
  207. +2 −2 staticfiles/admin/js/vendor/select2/i18n/sv.js
  208. +2 −2 staticfiles/admin/js/vendor/select2/i18n/th.js
  209. +3 −0 staticfiles/admin/js/vendor/select2/i18n/tk.js
  210. +2 −2 staticfiles/admin/js/vendor/select2/i18n/tr.js
  211. +2 −2 staticfiles/admin/js/vendor/select2/i18n/uk.js
  212. +2 −2 staticfiles/admin/js/vendor/select2/i18n/vi.js
  213. +2 −2 staticfiles/admin/js/vendor/select2/i18n/zh-CN.js
  214. +2 −2 staticfiles/admin/js/vendor/select2/i18n/zh-TW.js
  215. +670 −286 staticfiles/admin/js/vendor/select2/select2.full.js
  216. +2 −3 staticfiles/admin/js/vendor/select2/select2.full.min.js
  217. +1 −1 staticfiles/admin/js/vendor/xregexp/LICENSE.txt
  218. +4,218 −1,874 staticfiles/admin/js/vendor/xregexp/xregexp.js
  219. +160 −18 staticfiles/admin/js/vendor/xregexp/xregexp.min.js
  220. +104 −1 staticfiles/css/export.css
  221. +22 −0 staticfiles/css/invenio.css
  222. +1,314 −0 staticfiles/css/jquery-ui.css
  223. +446 −0 staticfiles/css/theme.css
  224. BIN staticfiles/css/user-blank.png
  225. +1 −1 staticfiles/debug_toolbar/css/print.css
  226. +531 −438 staticfiles/debug_toolbar/css/toolbar.css
  227. +109 −0 staticfiles/debug_toolbar/js/history.js
  228. +1 −1 staticfiles/debug_toolbar/js/redirect.js
  229. +88 −0 staticfiles/debug_toolbar/js/timer.js
  230. +355 −287 staticfiles/debug_toolbar/js/toolbar.js
  231. +2 −20 staticfiles/debug_toolbar/js/toolbar.profiling.js
  232. +2 −7 staticfiles/debug_toolbar/js/toolbar.sql.js
  233. +142 −0 staticfiles/debug_toolbar/js/utils.js
  234. +0 −3 staticfiles/django_extensions/js/jquery.ajaxQueue.js
  235. +1 −1 staticfiles/django_extensions/js/jquery.bgiframe.js
  236. +1 −0 staticfiles/img/epfl-logo.svg
  237. +20 −0 staticfiles/img/logo_icon.svg
  238. +11 −9 staticfiles/js/export.js
14 changes: 9 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
# Changelog

## [0.5.10](https://github.com/epfl-si/infoscience-exports/tree/0.5.10) (2020-07-22)
## [0.5.11](https://github.com/epfl-si/infoscience-exports/tree/0.5.11) (2020-07-24)

[Full Changelog](https://github.com/epfl-si/infoscience-exports/compare/qa-release...0.5.11)

## [qa-release](https://github.com/epfl-si/infoscience-exports/tree/qa-release) (2020-07-24)

[Full Changelog](https://github.com/epfl-si/infoscience-exports/compare/qa-release...0.5.10)
[Full Changelog](https://github.com/epfl-si/infoscience-exports/compare/0.5.10...qa-release)

## [qa-release](https://github.com/epfl-si/infoscience-exports/tree/qa-release) (2020-07-22)
## [0.5.10](https://github.com/epfl-si/infoscience-exports/tree/0.5.10) (2020-07-22)

[Full Changelog](https://github.com/epfl-si/infoscience-exports/compare/0.5.9...qa-release)
[Full Changelog](https://github.com/epfl-si/infoscience-exports/compare/0.5.9...0.5.10)

## [0.5.9](https://github.com/epfl-si/infoscience-exports/tree/0.5.9) (2020-07-21)

@@ -144,7 +148,6 @@
- Reduce docker image size [\#88](https://github.com/epfl-si/infoscience-exports/pull/88) ([dabelenda](https://github.com/dabelenda))
- Translated in French [\#87](https://github.com/epfl-si/infoscience-exports/pull/87) ([ebreton](https://github.com/ebreton))
- Removed useless spaces [\#86](https://github.com/epfl-si/infoscience-exports/pull/86) ([dragonleman](https://github.com/dragonleman))
- Added cors headers [\#85](https://github.com/epfl-si/infoscience-exports/pull/85) ([ebreton](https://github.com/ebreton))
- Update django.po [\#84](https://github.com/epfl-si/infoscience-exports/pull/84) ([tommybeck](https://github.com/tommybeck))
- don't translate 'et al.' [\#83](https://github.com/epfl-si/infoscience-exports/pull/83) ([dragonleman](https://github.com/dragonleman))
- Per object caching [\#82](https://github.com/epfl-si/infoscience-exports/pull/82) ([jdelasoie](https://github.com/jdelasoie))
@@ -155,6 +158,7 @@

**Merged pull requests:**

- Added cors headers [\#85](https://github.com/epfl-si/infoscience-exports/pull/85) ([ebreton](https://github.com/ebreton))
- Better display of doc\_types [\#80](https://github.com/epfl-si/infoscience-exports/pull/80) ([dragonleman](https://github.com/dragonleman))
- Fix loggout process on dev [\#79](https://github.com/epfl-si/infoscience-exports/pull/79) ([jdelasoie](https://github.com/jdelasoie))
- activated detailed forms + added summary [\#78](https://github.com/epfl-si/infoscience-exports/pull/78) ([dragonleman](https://github.com/dragonleman))
77 changes: 46 additions & 31 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,28 +1,47 @@
FROM python:3.8
FROM python:3.12-slim

ARG DJANGO_ENV

ENV DJANGO_ENV=${DJANGO_ENV} \
PYTHONFAULTHANDLER=1 \
PYTHONUNBUFFERED=1 \
PYTHONHASHSEED=random \
PIP_NO_CACHE_DIR=off \
PIP_DISABLE_PIP_VERSION_CHECK=on \
PIP_DEFAULT_TIMEOUT=100 \
PIPENV_HIDE_EMOJIS=true \
NO_COLOR=true \
PIPENV_NOSPIN=true \
DEBIAN_FRONTEND=noninteractive

# install gettext
RUN apt-get update && apt-get install -y --no-install-recommends \
gettext \
tree \
curl \
libevent-dev \
rsync \
nano \
&& rm -rf /var/cache/apt/ \
&& rm -rf /var/lib/apt/lists/*
build-essential \
bash \
gettext \
postgresql-client \
tree \
curl \
libevent-dev \
rsync \
cron \
nano \
git \
&& rm -rf /var/cache/apt/ \
&& rm -rf /var/lib/apt/lists/*

# create directories
RUN mkdir -p /usr/src/app && \
mkdir -p /usr/src/app/staticfiles && \
mkdir -p /usr/src/app/infoscience_exports && \
mkdir -p /var/log/django
mkdir -p /usr/src/app/staticfiles && \
mkdir -p /usr/src/app/infoscience_exports && \
mkdir -p /var/log/django

WORKDIR /usr/src/app

# install requirements
# (asap to make cache more efficent)
COPY ./requirements*.txt /usr/src/app/
RUN pip install --no-cache-dir -r requirements-dev.txt
COPY ./Pipfile /usr/src/app/Pipfile
COPY ./Pipfile.lock /usr/src/app/Pipfile.lock
RUN pip install pipenv
RUN /bin/bash -c 'pipenv install $(test "$DJANGO_ENV" == production || echo "--dev") --deploy --system --ignore-pipfile'

# copy project files
COPY ./update_release.py /usr/src/app/update_release.py
@@ -32,29 +51,25 @@ COPY ./infoscience_exports /usr/src/app/infoscience_exports

# collectstatic
RUN DJANGO_SETTINGS_MODULE=settings.prod \
SECRET_KEY="not needed to collectstaticfiles" \
ALLOWED_HOSTS="not needed to collectstaticfiles" \
SITE_URL="not needed to collectstaticfiles" \
DATABASE_URL="not needed to collectstaticfiles" \
python infoscience_exports/manage.py collectstatic
SECRET_KEY="not needed to collectstaticfiles" \
ALLOWED_HOSTS="not needed to collectstaticfiles" \
SITE_URL="not needed to collectstaticfiles" \
DATABASE_URL="not needed to collectstaticfiles" \
python infoscience_exports/manage.py collectstatic

# compilemessages
RUN DJANGO_SETTINGS_MODULE=settings.prod \
SECRET_KEY="not needed to compilemessages" \
ALLOWED_HOSTS="not needed to compilemessages" \
SITE_URL="not needed to compilemessages" \
DATABASE_URL="not needed to compilemessages" \
python infoscience_exports/manage.py compilemessages
SECRET_KEY="not needed to compilemessages" \
ALLOWED_HOSTS="not needed to compilemessages" \
SITE_URL="not needed to compilemessages" \
DATABASE_URL="not needed to compilemessages" \
python infoscience_exports/manage.py compilemessages

VOLUME ["/usr/src/app/staticfiles", "/var/log/django", "/usr/src/app/coverage.xml"]

WORKDIR /usr/src/app/infoscience_exports

# set the root group advanced permissions, in case of live change
RUN chmod g+rwx -R /usr/src/app

WORKDIR /usr/src/app

EXPOSE 3000

CMD ["gunicorn", "--bind", ":3000", "--workers", "4", "wsgi:application"]
CMD ["gunicorn", "--bind", ":3000", "--workers", "2", "--chdir", "/usr/src/app/infoscience_exports", "wsgi:application"]
102 changes: 48 additions & 54 deletions Makefile
Original file line number Diff line number Diff line change
@@ -54,33 +54,27 @@ endif

build:
# udpating requirements
pipenv lock --requirements > requirements.txt
echo "-r requirements.txt" > requirements-dev.txt
pipenv lock --requirements --dev >> requirements-dev.txt
# clean up requirements
sed -i "s/# -e git/-e git/g" requirements.txt
sed -i -r "s/--hash=[^ ]+//g" requirements.txt
sed -i -r "s/--hash=[^ ]+//g" requirements-dev.txt
pipenv lock
# build docker image
docker-compose -f docker-compose-dev.yml down
docker-compose -f docker-compose-dev.yml build
docker compose -f docker-compose-dev.yml stop
docker compose -f docker-compose-dev.yml build

init-db:
# create DB
docker-compose -f docker-compose-dev.yml exec postgres \
docker compose -f docker-compose-dev.yml exec postgres \
psql -c 'CREATE DATABASE "${DB_NAME}";' -U postgres
# create DB user for app
docker-compose -f docker-compose-dev.yml exec postgres \
docker compose -f docker-compose-dev.yml exec postgres \
psql ${DB_NAME} -c "CREATE USER ${DATABASE_USER} WITH PASSWORD '${DATABASE_PASSWORD}';" -U postgres
docker-compose -f docker-compose-dev.yml exec postgres \
docker compose -f docker-compose-dev.yml exec postgres \
psql ${DB_NAME} -c "ALTER ROLE ${DATABASE_USER} WITH CREATEDB;" -U postgres
# initialize DBs executing migration scripts
docker-compose -f docker-compose-dev.yml exec web \
docker compose -f docker-compose-dev.yml exec web \
python infoscience_exports/manage.py makemigrations
docker-compose -f docker-compose-dev.yml exec web \
docker compose -f docker-compose-dev.yml exec web \
python infoscience_exports/manage.py migrate
# make a room for the cache
docker-compose -f docker-compose-dev.yml exec web \
docker compose -f docker-compose-dev.yml exec web \
python infoscience_exports/manage.py createcachetable
# create super admin in app
make superadmin
@@ -89,66 +83,63 @@ init-db:
init: reset

reset: build up
@echo ''
@echo "! sleeping 6secs, time for postgres container to be available"
@echo ''
sleep 6
sleep 3
make init-db
make collectstatic
make compilemessages

up:
docker-compose -f docker-compose-dev.yml up -d
docker compose -f docker-compose-dev.yml up -d

stop:
docker-compose -f docker-compose-dev.yml stop
docker compose -f docker-compose-dev.yml stop

down:
docker-compose -f docker-compose-dev.yml down
@echo -n "Are you sure? The db will be lost [y/N] " && read ans && [ $${ans:-N} = y ]
docker compose -f docker-compose-dev.yml down

logs:
docker-compose -f docker-compose-dev.yml logs -f
docker compose -f docker-compose-dev.yml logs -f

restart:
# FIXME: OperationalError at / FATAL: role "django" does not exist
# docker-compose -f docker-compose-dev.yml down
docker-compose -f docker-compose-dev.yml up -d
docker-compose -f docker-compose-dev.yml logs
docker compose -f docker-compose-dev.yml stop
docker compose -f docker-compose-dev.yml up -d
docker compose -f docker-compose-dev.yml logs

restart-web:
docker-compose -f docker-compose-dev.yml stop web
docker-compose -f docker-compose-dev.yml start web
docker compose -f docker-compose-dev.yml stop web
docker compose -f docker-compose-dev.yml start web

superadmin:
docker-compose -f docker-compose-dev.yml exec web \
docker compose -f docker-compose-dev.yml exec web \
python infoscience_exports/manage.py shell -c "from django.contrib.auth import get_user_model; \
User = get_user_model(); \
User.objects.filter(email='${SUPER_ADMIN_EMAIL}').delete(); \
User.objects.create_superuser('${SUPER_ADMIN_USERNAME}', '${SUPER_ADMIN_EMAIL}', '${SUPER_ADMIN_PASSWORD}');"

collectstatic: up
docker-compose -f docker-compose-dev.yml exec web \
docker compose -f docker-compose-dev.yml exec web \
python infoscience_exports/manage.py collectstatic --noinput

migrations: up
docker-compose -f docker-compose-dev.yml exec web \
docker compose -f docker-compose-dev.yml exec web \
python infoscience_exports/manage.py makemigrations

migrate: up
docker-compose -f docker-compose-dev.yml exec web \
docker compose -f docker-compose-dev.yml exec web \
python infoscience_exports/manage.py migrate

messages: up
docker-compose -f docker-compose-dev.yml exec web \
docker compose -f docker-compose-dev.yml exec web \
python infoscience_exports/manage.py makemessages --all

compilemessages: up
docker-compose -f docker-compose-dev.yml exec web \
docker compose -f docker-compose-dev.yml exec web \
python infoscience_exports/manage.py compilemessages

dump:
@echo dumping DB on last commit `git rev-parse --verify HEAD`
docker-compose -f docker-compose-dev.yml run --rm \
docker compose -f docker-compose-dev.yml run --rm \
-v $(shell pwd)/backup/:/backup \
postgres sh -c 'exec pg_dump -C -hpostgres -Upostgres -Ox -Ft \
-f/backup/$(shell date +"%F:%T")-$(shell git rev-parse --verify HEAD).sql.tar -d${DB_NAME}'
@@ -159,7 +150,7 @@ restore:
git checkout $(shell ls -t backup/*.sql.tar | head -1 | cut -d'-' -f4 | cut -d '.' -f1)

# restore DB
docker-compose -f docker-compose-dev.yml run --rm \
docker compose -f docker-compose-dev.yml run --rm \
-v $(shell pwd)/backup/:/backup \
postgres sh -c 'exec pg_restore -c -hpostgres -U${DATABASE_USER} -Ox -Ft -d${DB_NAME} `ls -t /backup/*.sql.tar | head -1`'

@@ -229,11 +220,11 @@ update-changelog:
deploy: dump
git pull
# update docker images
docker-compose -f docker-compose-dev.yml build
docker compose -f docker-compose-dev.yml build
# restart containers
make restart
# update DB
docker-compose -f docker-compose-dev.yml exec web \
docker compose -f docker-compose-dev.yml exec web \
python infoscience_exports/manage.py migrate
# update languages
make collectstatic
@@ -242,25 +233,25 @@ deploy: dump
make restart-web

fast-test: check-env
docker-compose -f docker-compose-dev.yml exec web \
docker compose -f docker-compose-dev.yml exec web \
python infoscience_exports/manage.py test exports --settings=settings.test --noinput --failfast --keepdb

test: check-env
docker-compose -f docker-compose-dev.yml exec web \
docker compose -f docker-compose-dev.yml exec web \
flake8 infoscience_exports/exports --max-line-length=120 --exclude=migrations
docker-compose -f docker-compose-dev.yml exec web \
docker compose -f docker-compose-dev.yml exec web \
python infoscience_exports/manage.py test exports --settings=settings.test --noinput

test-render: check-env
docker-compose -f docker-compose-dev.yml exec web \
docker compose -f docker-compose-dev.yml exec web \
python infoscience_exports/manage.py test --failfast exports.test.test_crud_views:ExportRenderTest --settings=settings.test-silent-coverage --noinput

shell:
docker-compose -f docker-compose-dev.yml exec web \
docker compose -f docker-compose-dev.yml exec web \
python infoscience_exports/manage.py shell_plus

bash:
docker-compose -f docker-compose-dev.yml exec web \
docker compose -f docker-compose-dev.yml exec web \
bash

coverage: check-env
@@ -270,49 +261,49 @@ coverage: check-env
open htmlcov/index.html

build-travis:
docker-compose -f docker-compose-dev.yml build
docker-compose -f docker-compose-dev.yml up -d
docker compose -f docker-compose-dev.yml build
docker compose -f docker-compose-dev.yml up -d

test-travis:
flake8 infoscience_exports/exports --max-line-length=120 --exclude=migrations
python infoscience_exports/manage.py test exports --settings=settings.test --noinput
coverage xml

migration-load-dump:
docker-compose -f docker-compose-dev.yml exec web \
docker compose -f docker-compose-dev.yml exec web \
python infoscience_exports/manage.py loaddata --app exporter exports_from_32

migration-build-delta:
docker-compose -f docker-compose-dev.yml exec web python infoscience_exports/manage.py add_quality_content_comparaison
docker compose -f docker-compose-dev.yml exec web python infoscience_exports/manage.py add_quality_content_comparaison

migration-migrate:
docker-compose -f docker-compose-dev.yml exec web python infoscience_exports/manage.py \
docker compose -f docker-compose-dev.yml exec web python infoscience_exports/manage.py \
migrate_from_legacy --jahia_csv_path /usr/src/app/infoscience_exports/exporter/fixtures/infoscience-prod-jahia.csv.extended.csv \
--people_csv_path /usr/src/app/infoscience_exports/exporter/fixtures/infoscience-people-actif-only.csv.extended.csv \
--ids_csv_path /usr/src/app/infoscience_exports/exporter/fixtures/ids_to_migrate.csv

migration-migrate-selective-with-subset:
docker-compose -f docker-compose-dev.yml exec web python infoscience_exports/manage.py \
docker compose -f docker-compose-dev.yml exec web python infoscience_exports/manage.py \
migrate_from_legacy --jahia_csv_path /usr/src/app/infoscience_exports/exporter/fixtures/infoscience-prod-jahia.csv.extended.csv \
--people_csv_path /usr/src/app/infoscience_exports/exporter/fixtures/infoscience-people-actif-only.csv.extended.csv \
--ids_csv_path /usr/src/app/infoscience_exports/exporter/fixtures/ids_to_migrate.csv \
--subset_only 1

migration-migrate-all:
docker-compose -f docker-compose-dev.yml exec web python infoscience_exports/manage.py \
docker compose -f docker-compose-dev.yml exec web python infoscience_exports/manage.py \
migrate_from_legacy --jahia_csv_path /usr/src/app/infoscience_exports/exporter/fixtures/infoscience-prod-jahia.csv.extended.csv \
--people_csv_path /usr/src/app/infoscience_exports/exporter/fixtures/infoscience-people-actif-only.csv.extended.csv \
--migrate_all 1

migration-post-generate-csv:
docker-compose -f docker-compose-dev.yml exec web python infoscience_exports/manage.py legacy_url_old_to_new \
docker compose -f docker-compose-dev.yml exec web python infoscience_exports/manage.py legacy_url_old_to_new \
--ids_csv_path "/usr/src/app/infoscience_exports/exporter/fixtures/ids_to_migrate.csv" \
--jahia_csv_path "/var/log/django/infoscience_exports_new_url_jahia.csv" \
--people_csv_path "/var/log/django/infoscience_exports_new_url_people.csv " \
--all_csv_path "/var/log/django/infoscience_exports_all_new_url.csv"

migration-post-generate-csv-all:
docker-compose -f docker-compose-dev.yml exec web python infoscience_exports/manage.py legacy_url_old_to_new \
docker compose -f docker-compose-dev.yml exec web python infoscience_exports/manage.py legacy_url_old_to_new \
--jahia_csv_path "/var/log/django/infoscience_exports_new_url_jahia.csv" \
--people_csv_path "/var/log/django/infoscience_exports_new_url_people.csv " \
--all_csv_path "/var/log/django/infoscience_exports_all_new_url.csv"
@@ -328,3 +319,6 @@ else
include .env
export
endif

show-app-url:
@echo '${SITE_URL}'
Loading