c2cgeoportal-geoportal 2.3.5.80__py3-none-any.whl → 2.9rc1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. c2cgeoportal_geoportal/__init__.py +960 -0
  2. c2cgeoportal_geoportal/lib/__init__.py +256 -0
  3. c2cgeoportal_geoportal/lib/authentication.py +250 -0
  4. c2cgeoportal_geoportal/lib/bashcolor.py +46 -0
  5. c2cgeoportal_geoportal/lib/cacheversion.py +75 -0
  6. c2cgeoportal_geoportal/lib/caching.py +176 -0
  7. c2cgeoportal_geoportal/lib/check_collector.py +80 -0
  8. c2cgeoportal_geoportal/lib/checker.py +295 -0
  9. c2cgeoportal_geoportal/lib/common_headers.py +170 -0
  10. c2cgeoportal_geoportal/lib/dbreflection.py +266 -0
  11. c2cgeoportal_geoportal/lib/filter_capabilities.py +360 -0
  12. c2cgeoportal_geoportal/lib/fulltextsearch.py +50 -0
  13. c2cgeoportal_geoportal/lib/functionality.py +166 -0
  14. c2cgeoportal_geoportal/lib/headers.py +62 -0
  15. c2cgeoportal_geoportal/lib/i18n.py +38 -0
  16. c2cgeoportal_geoportal/lib/layers.py +132 -0
  17. c2cgeoportal_geoportal/lib/lingva_extractor.py +937 -0
  18. c2cgeoportal_geoportal/lib/loader.py +57 -0
  19. c2cgeoportal_geoportal/lib/metrics.py +117 -0
  20. c2cgeoportal_geoportal/lib/oauth2.py +1186 -0
  21. c2cgeoportal_geoportal/lib/oidc.py +302 -0
  22. c2cgeoportal_geoportal/lib/wmstparsing.py +353 -0
  23. c2cgeoportal_geoportal/lib/xsd.py +166 -0
  24. c2cgeoportal_geoportal/py.typed +0 -0
  25. c2cgeoportal_geoportal/resources.py +49 -0
  26. c2cgeoportal_geoportal/scaffolds/advance_create/ci/config.yaml +26 -0
  27. c2cgeoportal_geoportal/scaffolds/advance_create/cookiecutter.json +18 -0
  28. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/.dockerignore +6 -0
  29. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/.eslintrc.yaml +19 -0
  30. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/.prospector.yaml +30 -0
  31. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/Dockerfile +75 -0
  32. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/Makefile +6 -0
  33. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/alembic.ini +58 -0
  34. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/alembic.yaml +19 -0
  35. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/development.ini +121 -0
  36. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/gunicorn.conf.py +139 -0
  37. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/language_mapping +3 -0
  38. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/lingva-client.cfg +5 -0
  39. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/lingva-server.cfg +6 -0
  40. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/production.ini +38 -0
  41. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/requirements.txt +2 -0
  42. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/setup.py +25 -0
  43. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/webpack.api.js +41 -0
  44. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/webpack.apps.js +64 -0
  45. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/webpack.commons.js +11 -0
  46. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/webpack.config.js +22 -0
  47. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/__init__.py +42 -0
  48. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/authentication.py +10 -0
  49. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/dev.py +14 -0
  50. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/models.py +8 -0
  51. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/multi_organization.py +7 -0
  52. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/resources.py +11 -0
  53. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static-ngeo/api/index.js +12 -0
  54. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static-ngeo/js/{{cookiecutter.package}}module.js +25 -0
  55. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/subscribers.py +39 -0
  56. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/views/__init__.py +0 -0
  57. c2cgeoportal_geoportal/scaffolds/advance_update/cookiecutter.json +18 -0
  58. c2cgeoportal_geoportal/scaffolds/advance_update/{{cookiecutter.project}}/geoportal/CONST_Makefile +121 -0
  59. c2cgeoportal_geoportal/scaffolds/create/cookiecutter.json +18 -0
  60. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.dockerignore +14 -0
  61. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.editorconfig +17 -0
  62. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/main.yaml +73 -0
  63. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/rebuild.yaml +50 -0
  64. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/update_l10n.yaml +66 -0
  65. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.gitignore +16 -0
  66. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.pre-commit-config.yaml +35 -0
  67. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.prettierignore +1 -0
  68. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.prettierrc.yaml +2 -0
  69. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/Dockerfile +75 -0
  70. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/Makefile +70 -0
  71. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/README.rst +29 -0
  72. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/build +179 -0
  73. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/ci/config.yaml +22 -0
  74. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/ci/docker-compose-check +25 -0
  75. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/ci/requirements.txt +2 -0
  76. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose-db.yaml +24 -0
  77. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose-lib.yaml +511 -0
  78. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose-qgis.yaml +21 -0
  79. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose.override.sample.yaml +59 -0
  80. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose.yaml +121 -0
  81. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/env.default +102 -0
  82. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/env.project +69 -0
  83. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/vars.yaml +430 -0
  84. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/locale/en/LC_MESSAGES/{{cookiecutter.package}}_geoportal-client.po +6 -0
  85. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/desktop.css +0 -0
  86. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/iframe_api.css +0 -0
  87. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/mobile.css +0 -0
  88. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/banner_left.png +0 -0
  89. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/banner_right.png +0 -0
  90. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/blank.png +0 -0
  91. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/markers/marker-blue.png +0 -0
  92. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/markers/marker-gold.png +0 -0
  93. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/markers/marker-green.png +0 -0
  94. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/markers/marker.png +0 -0
  95. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/robot.txt.tmpl +3 -0
  96. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/data/Readme.txt +69 -0
  97. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/data/TM_EUROPE_BORDERS-0.3.sql +70 -0
  98. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/demo.map.tmpl +224 -0
  99. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Arial.ttf +0 -0
  100. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Arialbd.ttf +0 -0
  101. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Arialbi.ttf +0 -0
  102. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Ariali.ttf +0 -0
  103. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/NotoSans-Bold.ttf +0 -0
  104. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/NotoSans-BoldItalic.ttf +0 -0
  105. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/NotoSans-Italic.ttf +0 -0
  106. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/NotoSans-Regular.ttf +0 -0
  107. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Verdana.ttf +0 -0
  108. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Verdanab.ttf +0 -0
  109. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Verdanai.ttf +0 -0
  110. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Verdanaz.ttf +0 -0
  111. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts.conf +12 -0
  112. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/mapserver.conf +15 -0
  113. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/mapserver.map.tmpl +87 -0
  114. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/tinyows.xml.tmpl +36 -0
  115. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/A3_Landscape.jrxml +207 -0
  116. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/A3_Portrait.jrxml +185 -0
  117. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/A4_Landscape.jrxml +200 -0
  118. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/A4_Portrait.jrxml +170 -0
  119. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/config.yaml.tmpl +175 -0
  120. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/legend.jrxml +109 -0
  121. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/localisation.properties +4 -0
  122. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/localisation_fr.properties +4 -0
  123. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/logo.png +0 -0
  124. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/north.svg +93 -0
  125. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/results.jrxml +25 -0
  126. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/project.yaml +18 -0
  127. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/pyproject.toml +7 -0
  128. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/qgisserver/pg_service.conf.tmpl +15 -0
  129. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/run_alembic.sh +11 -0
  130. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/scripts/db-backup +126 -0
  131. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/scripts/db-restore +132 -0
  132. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/setup.cfg +7 -0
  133. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/spell-ignore-words.txt +5 -0
  134. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/tests/__init__.py +0 -0
  135. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/tests/test_app.py +43 -0
  136. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/tilegeneration/config.yaml.tmpl +195 -0
  137. c2cgeoportal_geoportal/scaffolds/update/cookiecutter.json +18 -0
  138. c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/.upgrade.yaml +67 -0
  139. c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/CONST_CHANGELOG.txt +295 -0
  140. c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/CONST_create_template/tests/test_testapp.py +48 -0
  141. c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/geoportal/CONST_config-schema.yaml +922 -0
  142. c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/geoportal/CONST_vars.yaml +1503 -0
  143. c2cgeoportal_geoportal/scripts/__init__.py +64 -0
  144. c2cgeoportal_geoportal/scripts/c2cupgrade.py +879 -0
  145. c2cgeoportal_geoportal/scripts/create_demo_theme.py +80 -0
  146. c2cgeoportal_geoportal/scripts/manage_users.py +140 -0
  147. c2cgeoportal_geoportal/scripts/pcreate.py +314 -0
  148. c2cgeoportal_geoportal/scripts/theme2fts.py +347 -0
  149. c2cgeoportal_geoportal/scripts/urllogin.py +81 -0
  150. c2cgeoportal_geoportal/templates/login.html +90 -0
  151. c2cgeoportal_geoportal/templates/notlogin.html +62 -0
  152. c2cgeoportal_geoportal/templates/testi18n.html +12 -0
  153. c2cgeoportal_geoportal/views/__init__.py +59 -0
  154. c2cgeoportal_geoportal/views/dev.py +57 -0
  155. c2cgeoportal_geoportal/views/dynamic.py +208 -0
  156. c2cgeoportal_geoportal/views/entry.py +174 -0
  157. c2cgeoportal_geoportal/views/fulltextsearch.py +189 -0
  158. c2cgeoportal_geoportal/views/geometry_processing.py +75 -0
  159. c2cgeoportal_geoportal/views/i18n.py +129 -0
  160. c2cgeoportal_geoportal/views/layers.py +713 -0
  161. c2cgeoportal_geoportal/views/login.py +679 -0
  162. c2cgeoportal_geoportal/views/mapserverproxy.py +191 -0
  163. c2cgeoportal_geoportal/views/memory.py +90 -0
  164. c2cgeoportal_geoportal/views/ogcproxy.py +120 -0
  165. c2cgeoportal_geoportal/views/pdfreport.py +245 -0
  166. c2cgeoportal_geoportal/views/printproxy.py +143 -0
  167. c2cgeoportal_geoportal/views/profile.py +127 -0
  168. c2cgeoportal_geoportal/views/proxy.py +259 -0
  169. c2cgeoportal_geoportal/views/raster.py +193 -0
  170. c2cgeoportal_geoportal/views/resourceproxy.py +73 -0
  171. c2cgeoportal_geoportal/views/shortener.py +152 -0
  172. c2cgeoportal_geoportal/views/theme.py +1322 -0
  173. c2cgeoportal_geoportal/views/tinyowsproxy.py +189 -0
  174. c2cgeoportal_geoportal/views/vector_tiles.py +83 -0
  175. {c2cgeoportal_geoportal-2.3.5.80.dist-info → c2cgeoportal_geoportal-2.9rc1.dist-info}/METADATA +21 -24
  176. c2cgeoportal_geoportal-2.9rc1.dist-info/RECORD +192 -0
  177. {c2cgeoportal_geoportal-2.3.5.80.dist-info → c2cgeoportal_geoportal-2.9rc1.dist-info}/WHEEL +1 -1
  178. c2cgeoportal_geoportal-2.9rc1.dist-info/entry_points.txt +28 -0
  179. c2cgeoportal_geoportal-2.9rc1.dist-info/top_level.txt +2 -0
  180. tests/__init__.py +100 -0
  181. tests/test_cachebuster.py +71 -0
  182. tests/test_caching.py +275 -0
  183. tests/test_checker.py +85 -0
  184. tests/test_decimaljson.py +47 -0
  185. tests/test_headerstween.py +64 -0
  186. tests/test_i18n.py +31 -0
  187. tests/test_init.py +193 -0
  188. tests/test_locale_negociator.py +69 -0
  189. tests/test_mapserverproxy_route_predicate.py +64 -0
  190. tests/test_raster.py +267 -0
  191. tests/test_wmstparsing.py +238 -0
  192. tests/xmlstr.py +103 -0
  193. c2cgeoportal_geoportal-2.3.5.80.dist-info/DESCRIPTION.rst +0 -8
  194. c2cgeoportal_geoportal-2.3.5.80.dist-info/RECORD +0 -7
  195. c2cgeoportal_geoportal-2.3.5.80.dist-info/entry_points.txt +0 -22
  196. c2cgeoportal_geoportal-2.3.5.80.dist-info/metadata.json +0 -1
  197. c2cgeoportal_geoportal-2.3.5.80.dist-info/top_level.txt +0 -1
@@ -0,0 +1,121 @@
1
+ export PACKAGE = {{cookiecutter.package}}
2
+
3
+ TEMPLATE_EXCLUDE += $(PACKAGE)_geoportal/static/lib
4
+ FIND_OPTS = $(foreach ELEM, $(TEMPLATE_EXCLUDE),-path ./$(ELEM) -prune -o) -type f
5
+
6
+ ifneq ($(NGEO_INTERFACES), "")
7
+ DEFAULT_WEB_RULE += $(NGEO_OUTPUT_FILES)
8
+ endif
9
+ ifneq ($(NGEO_API), "")
10
+ DEFAULT_WEB_RULE += $(NGEO_API_OUTPUT_FILES)
11
+ endif
12
+
13
+ WEB_RULE ?= $(DEFAULT_WEB_RULE)
14
+
15
+ DEFAULT_BUILD_RULES ?= $(WEB_RULE) \
16
+ alembic.ini \
17
+ alembic.yaml \
18
+ build-api
19
+
20
+
21
+ # Make rules
22
+ BUILD_RULES ?= $(filter-out $(DISABLE_BUILD_RULES),$(DEFAULT_BUILD_RULES))
23
+
24
+ OUTPUT_DIR = $(PACKAGE)_geoportal/static/build
25
+
26
+ # ngeo
27
+ NODE_ENV ?= production
28
+ export NODE_ENV
29
+ NO_DEV_SERVER ?= TRUE
30
+ export NO_DEV_SERVER
31
+ APP_OUTPUT_DIR = /etc/static-ngeo
32
+ APP_JS_FILES = $(shell find $(PACKAGE)_geoportal/static-ngeo/js -type f -name '*.js' 2> /dev/null)
33
+ ANGULAR_LOCALES_FILES = $(addprefix $(APP_OUTPUT_DIR)/angular-locale_, $(addsuffix .js, $(LANGUAGES)))
34
+ NGEO_OUTPUT_FILES = $(ANGULAR_LOCALES_FILES)
35
+
36
+ NGEO_API_OUTPUT_JS_FILE ?= $(APP_OUTPUT_DIR)/api.js.tmpl
37
+ NGEO_API_OUTPUT_FILES += $(NGEO_API_OUTPUT_JS_FILE) $(APP_OUTPUT_DIR)/api.css
38
+
39
+ WEBPACK_ARGS ?=
40
+
41
+ VALIDATE_PY_FOLDERS = admin/$(PACKAGE)_admin \
42
+ $(PACKAGE)_geoportal/*.py $(PACKAGE)_geoportal/lib \
43
+ $(PACKAGE)_geoportal/scripts $(PACKAGE)_geoportal/views
44
+ VALIDATE_PY_TEST_FOLDERS = $(PACKAGE)_geoportal/tests
45
+
46
+ # Disabling Make built-in rules to speed up execution time
47
+ .SUFFIXES:
48
+
49
+ .PHONY: build
50
+ build: $(BUILD_RULES)
51
+
52
+ # Server localisation
53
+
54
+ PO_FILES = $(addprefix $(PACKAGE)_geoportal/locale/, $(addsuffix /LC_MESSAGES/$(PACKAGE)_geoportal-server.po, $(LANGUAGES)))
55
+
56
+ .INTERMEDIATE: $(PACKAGE)_geoportal/locale/$(PACKAGE)_geoportal-server.pot
57
+ $(PACKAGE)_geoportal/locale/$(PACKAGE)_geoportal-server.pot: lingva-server.cfg $(SRC_FILES)
58
+ mkdir --parent $(dir $@)
59
+ [ -z "$(SRC_FILES)" ] || pot-create --width=110 --config=$< --keyword=_ --output=$@ $(SRC_FILES)
60
+
61
+ .PRECIOUS: $(PACKAGE)_geoportal/locale/%/LC_MESSAGES/$(PACKAGE)_geoportal-server.po
62
+ $(PACKAGE)_geoportal/locale/%/LC_MESSAGES/$(PACKAGE)_geoportal-server.po: \
63
+ $(PACKAGE)_geoportal/locale/$(PACKAGE)_geoportal-server.pot
64
+ mkdir --parent $(dir $@)
65
+ [ ! -f $< ] || [ -f $@ ] || msginit --no-translator --input=$< --output-file=$@ -l $*
66
+ touch --no-create $@
67
+ [ ! -f $< ] || msgmerge --backup=none --update --sort-output --no-location $@ $<
68
+ touch $@
69
+ chown $(USER_ID):$(GROUP_ID) $@
70
+
71
+ .PHONY: update-server-po
72
+ update-server-po: $(PO_FILES)
73
+
74
+ .PHONY: update-client-po
75
+ update-client-po:
76
+ cd .. && SUFFIX= update-po $(USER_ID) $(GROUP_ID) $(LANGUAGES)
77
+
78
+ .PHONY: update-po
79
+ update-po: update-server-po update-client-po
80
+
81
+ # ngeo
82
+
83
+ .PHONY: build-ngeo
84
+ build-ngeo: $(NGEO_OUTPUT_FILES)
85
+
86
+ $(APP_OUTPUT_DIR)/angular-locale_%.js: /opt/c2cgeoportal/geoportal/node_modules/ngeo/package.json language_mapping
87
+ mkdir --parent $(dir $@)
88
+ rm --force $@
89
+ cp /opt/angular-locale/angular-locale_`(grep $* language_mapping || echo $*) | cut --delimiter = --fields 2 | tr --delete '\r\n'`.js $@
90
+
91
+ $(APP_OUTPUT_DIR)/images/: /opt/c2cgeoportal/geoportal/node_modules/jquery-ui/themes/base/images
92
+ mkdir --parent $@
93
+ cp -r $</* $@
94
+
95
+ .PRECIOUS: $(APP_OUTPUT_DIR)/vendor%
96
+ $(APP_OUTPUT_DIR)/vendor%: /opt/vendor%
97
+ cp $< $@
98
+
99
+ apps: webpack.apps.js
100
+ rm --force $(addprefix $(APP_OUTPUT_DIR)/, $(addsuffix .*, $(NGEO_INTERFACES)))
101
+ webpack $(WEBPACK_ARGS)
102
+ for interface in $(NGEO_INTERFACES); \
103
+ do \
104
+ mv $(APP_OUTPUT_DIR)/$${interface}.html $(APP_OUTPUT_DIR)/$${interface}.html.tmpl; \
105
+ done
106
+
107
+ # API
108
+
109
+ .PHONY: build-api
110
+ build-api: $(NGEO_API_OUTPUT_FILES)
111
+
112
+ $(APP_OUTPUT_DIR)/api.js.tmpl: webpack.api.js $(PACKAGE)_geoportal/static-ngeo/api/index.js
113
+ webpack --config=webpack.api.js $(WEBPACK_ARGS)
114
+ cp $(APP_OUTPUT_DIR)/api.js $(APP_OUTPUT_DIR)/api.js_
115
+ sed --in-place --expression='s/\$$/$${DOLLAR}/g' $(APP_OUTPUT_DIR)/api.js
116
+ sed --in-place --expression='s#{FULL_ENTRY_POINT}#$${VISIBLE_WEB_PROTOCOL}://$${VISIBLE_WEB_HOST}$${VISIBLE_ENTRY_POINT}#g' $(APP_OUTPUT_DIR)/api.js
117
+ mv $(APP_OUTPUT_DIR)/api.js $@
118
+
119
+
120
+ $(APP_OUTPUT_DIR)/api.css: $(PACKAGE)_geoportal/static-ngeo/api/api.css
121
+ cp $< $@
@@ -0,0 +1,18 @@
1
+ {
2
+ "project": "test_project",
3
+ "package": "test_project",
4
+ "srid": "2056",
5
+ "extent": "",
6
+ "extent_mapserver": "",
7
+ "authtkt_secret": "",
8
+ "unsafe_long_version": false,
9
+ "geomapfish_version": "",
10
+ "geomapfish_main_version": "",
11
+ "geomapfish_main_version_dash": "",
12
+ "geomapfish_main_minor_version": "",
13
+ "geomapfish_version_tag": "",
14
+ "geomapfish_version_tag_env": "",
15
+ "geomapfish_major_version_tag": "",
16
+ "geomapfish_major_version_tag_env": "",
17
+ "_copy_without_render": ["*.po", "*/contextualdata.html"]
18
+ }
@@ -0,0 +1,14 @@
1
+ *
2
+ !bin/
3
+ !mapserver/
4
+ !qgisserver/
5
+ !tilegeneration/
6
+ !haproxy/
7
+ !print/print-apps/
8
+ !geoportal/vars*.yaml
9
+ !geoportal/interfaces/
10
+ !geoportal/CONST_vars.yaml
11
+ !geoportal/CONST_config-schema.yaml
12
+ !geoportal/{{cookiecutter.package}}_geoportal/static
13
+ !geoportal/{{cookiecutter.package}}_geoportal/locale
14
+ geoportal/{{cookiecutter.package}}_geoportal/locale/*.pot
@@ -0,0 +1,17 @@
1
+ root = true
2
+
3
+ [*]
4
+ end_of_line = lf
5
+ insert_final_newline = true
6
+ charset = utf-8
7
+ indent_style = space
8
+ indent_size = 4
9
+ trim_trailing_whitespace = true
10
+ max_line_length = 110
11
+ quote_type = single
12
+
13
+ [*.{js,ts,css,scss,yaml,yml,json,html,md,yaml.tmpl}]
14
+ indent_size = 2
15
+
16
+ [{Makefile,*.mk}]
17
+ indent_style = tab
@@ -0,0 +1,73 @@
1
+ ---
2
+ name: Continuous integration
3
+
4
+ on:
5
+ push:
6
+
7
+ # To publish the images to be used on Kubernetes
8
+ # env:
9
+ # PROJECT: {{cookiecutter.package}}
10
+ # HAS_SECRETS: ${{'{{'}} secrets.HAS_SECRETS }}
11
+
12
+ jobs:
13
+ main:
14
+ runs-on: ubuntu-24.04
15
+ name: Continuous integration
16
+ timeout-minutes: 10
17
+
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+
21
+ # To publish the images to be used on Kubernetes
22
+ # - uses: camptocamp/initialise-gopass-summon-action@v2
23
+ # with:
24
+ # ci-gpg-private-key: ${{'{{'}} secrets.CI_GPG_PRIVATE_KEY }}
25
+ # github-gopass-ci-token: ${{'{{'}} secrets.GOPASS_CI_GITHUB_TOKEN }}
26
+ # patterns: docker
27
+ # if: env.HAS_SECRETS == 'HAS_SECRETS'
28
+
29
+ - uses: actions/setup-python@v5
30
+ with:
31
+ python-version: '3.11'
32
+ - run: python3 -m pip install --requirement=ci/requirements.txt
33
+ - name: Environment information
34
+ run: c2cciutils-env
35
+
36
+ - uses: actions/cache@v4
37
+ with:
38
+ path: ~/.cache/pre-commit
39
+ key: pre-commit-${{'{{'}} hashFiles('.pre-commit-config.yaml') }}
40
+ restore-keys: "pre-commit-${{'{{'}} hashFiles('.pre-commit-config.yaml') }}\npre-commit-"
41
+ - run: pre-commit run --all-files
42
+ - run: git diff --exit-code --patch > /tmp/pre-commit.patch || true
43
+ if: failure()
44
+ - uses: actions/upload-artifact@v4
45
+ with:
46
+ name: Apply pre-commit fix.patch
47
+ path: /tmp/pre-commit.patch
48
+ retention-days: 1
49
+ if: failure()
50
+
51
+ # Can be used to have some secrets (with mask)
52
+ # - run: make secrets
53
+ # - run: cat env.secrets |grep '^[# A-Z0-9_]\+='|sed -e 's/^[# A-Z0-9_]\+=\(.*\)/::add-mask::\1/g'
54
+
55
+ # - name: Initialize the acceptance tests
56
+ # run: make acceptance-init
57
+ # - run: c2cciutils-docker-logs
58
+ # if: always()
59
+
60
+ # - name: Run the acceptance tests
61
+ # run: make acceptance
62
+ # - run: c2cciutils-docker-logs
63
+ # if: always()
64
+
65
+ - name: Build
66
+ run: ./build
67
+
68
+ - name: Application checks
69
+ run: make checks
70
+
71
+ # To publish the images to be used on Kubernetes
72
+ # - name: Publish
73
+ # run: c2cciutils-publish
@@ -0,0 +1,50 @@
1
+ ---
2
+ name: Rebuild
3
+
4
+ on:
5
+ schedule:
6
+ - cron: '30 2 * * *'
7
+
8
+ env:
9
+ PROJECT: {{cookiecutter.package}}
10
+ # Requires CI_GPG_PRIVATE_KEY and GOPASS_CI_GITHUB_TOKEN secrets.
11
+ # OPENSHIFT_PROJECT: gs-gmf-{{cookiecutter.package}}
12
+ # The release branches
13
+ HELM_RELEASE_NAMES: int-{{cookiecutter.geomapfish_main_version_dash}},prod-{{cookiecutter.geomapfish_main_version_dash}}
14
+
15
+ jobs:
16
+ rebuild:
17
+ runs-on: ubuntu-24.04
18
+ name: Rebuild
19
+ timeout-minutes: 10
20
+
21
+ strategy:
22
+ fail-fast: false
23
+ matrix:
24
+ branch:
25
+ - int-{{cookiecutter.geomapfish_main_version_dash}}
26
+ - prod-{{cookiecutter.geomapfish_main_version_dash}}
27
+
28
+ steps:
29
+ - uses: actions/checkout@v4
30
+ with:
31
+ ref: ${{'{{'}} matrix.branch }}
32
+
33
+ - uses: camptocamp/initialise-gopass-summon-action@v2
34
+ with:
35
+ ci-gpg-private-key: ${{'{{'}} secrets.CI_GPG_PRIVATE_KEY }}
36
+ github-gopass-ci-token: ${{'{{'}} secrets.GOPASS_CI_GITHUB_TOKEN }}
37
+ patterns: docker
38
+
39
+ - uses: actions/setup-python@v5
40
+ with:
41
+ python-version: '3.11'
42
+ - run: python3 -m pip install --requirement=ci/requirements.txt
43
+ - name: Environment information
44
+ run: c2cciutils-env
45
+
46
+ - name: Build
47
+ run: ./build
48
+
49
+ - name: Publish
50
+ run: c2cciutils-publish --branch=${{'{{'}} matrix.branch }} --type=rebuild
@@ -0,0 +1,66 @@
1
+ ---
2
+ name: Update l10n cron job
3
+
4
+ on:
5
+ schedule:
6
+ - cron: '0 3 * * *'
7
+
8
+ jobs:
9
+ l10n:
10
+ runs-on: ubuntu-24.04
11
+ name: Update l10n cron job
12
+ timeout-minutes: 10
13
+
14
+ strategy:
15
+ fail-fast: false
16
+ matrix:
17
+ include:
18
+ - branch: int-{{cookiecutter.geomapfish_main_version_dash}}
19
+ base_url: int.customer.ch
20
+ - branch: prod-{{cookiecutter.geomapfish_main_version_dash}}
21
+ base_url: prod.customer.ch
22
+
23
+ steps:
24
+ - uses: actions/checkout@v4
25
+ with:
26
+ ref: ${{'{{'}} matrix.branch {{'}}'}}
27
+ token: ${{'{{'}} secrets.GOPASS_CI_GITHUB_TOKEN {{'}}'}}
28
+
29
+ - run: ./build --env
30
+ - run: PROJECT_PUBLIC_URL=${{'{{'}} matrix.base_url {{'}}'}} make -e update-po-from-url
31
+
32
+ - name: Init Git
33
+ run: |
34
+ git config --global user.email "geospatial-bot@camptocamp.com"
35
+ git config --global user.name CI
36
+
37
+ - id: status
38
+ run: echo "status=$(git diff --exit-code --quiet && echo 'unchanged' || echo 'changed')" >> $GITHUB_OUTPUT
39
+
40
+ - name: Push l10n branch and create pull request
41
+ run: |
42
+ sudo chown -R $(id -u) .
43
+ git add --all || true
44
+ git status
45
+ git commit -m "Update the l10n files"
46
+ git push --force origin HEAD:l10n-${{'{{'}} matrix.branch {{'}}'}}
47
+ python3 -c "import requests
48
+ response = requests.post(
49
+ 'https://api.github.com/repos/${GITHUB_REPOSITORY}/pulls',
50
+ json={
51
+ 'title': 'Update the l10n files on ${{'{{'}} matrix.branch {{'}}'}}',
52
+ 'body': '',
53
+ 'head': 'l10n-${{'{{'}} matrix.branch {{'}}'}}',
54
+ 'base': '${{'{{'}} matrix.branch {{'}}'}}',
55
+ 'maintainer_can_modify': True
56
+ },
57
+ headers={
58
+ 'Accept': 'application/vnd.github.v3+json',
59
+ 'Authorization': 'Bearer ${{'{{'}} secrets.GOPASS_CI_GITHUB_TOKEN {{'}}'}}',
60
+ 'Content-Type': 'application/json',
61
+ },
62
+ timeout=120,
63
+ )
64
+ # 422 is the return code when the pull request already exists
65
+ assert response.status_code < 300 or response.status_code == 422, f'{response.status_code} - {response.text}'"
66
+ if: steps.status.outputs.status != 'unchanged'
@@ -0,0 +1,16 @@
1
+ *.pyc
2
+ *.pyo
3
+ __pycache__/
4
+ /.env
5
+ /env.personal
6
+ /docker-compose.override.yaml
7
+ /upgrade
8
+ /.upgrade.yaml
9
+ /.UPGRADE*
10
+ /geoportal/{{cookiecutter.package}}_geoportal/locale/{{cookiecutter.package}}_geoportal-client.pot
11
+
12
+ # Generated with dev mode
13
+ /geoportal/{{cookiecutter.package}}_geoportal/static/apihelp/index.html
14
+ /geoportal/{{cookiecutter.package}}_geoportal/static/robot.txt
15
+ /print/print-apps/{{cookiecutter.package}}/config.yaml
16
+ /mapserver/tinyows.xml
@@ -0,0 +1,35 @@
1
+ # https://pre-commit.com/hooks.html
2
+
3
+ ci:
4
+ autoupdate_schedule: quarterly
5
+ skip:
6
+ - ripsecrets
7
+
8
+ repos:
9
+ - repo: https://github.com/pre-commit/pre-commit-hooks
10
+ rev: v5.0.0
11
+ hooks:
12
+ - id: detect-private-key
13
+ - id: end-of-file-fixer
14
+ - id: trailing-whitespace
15
+ args:
16
+ - --markdown-linebreak-ext=.md
17
+ - id: mixed-line-ending
18
+ args:
19
+ - --fix=lf
20
+ - repo: https://github.com/pre-commit/mirrors-prettier
21
+ rev: v3.1.0
22
+ hooks:
23
+ - id: prettier
24
+ - repo: https://github.com/PyCQA/autoflake
25
+ rev: v2.3.1
26
+ hooks:
27
+ - id: autoflake
28
+ - repo: https://github.com/PyCQA/isort
29
+ rev: 5.13.2
30
+ hooks:
31
+ - id: isort
32
+ - repo: https://github.com/psf/black
33
+ rev: 24.10.0
34
+ hooks:
35
+ - id: black
@@ -0,0 +1,2 @@
1
+ bracketSpacing: false
2
+ quoteProps: preserve
@@ -0,0 +1,75 @@
1
+ ARG {{cookiecutter.geomapfish_version_tag}}
2
+ ARG {{cookiecutter.geomapfish_major_version_tag}}
3
+
4
+ FROM camptocamp/geomapfish-tools:{{cookiecutter.geomapfish_version_tag_env}} AS builder
5
+
6
+ ENV VARS_FILE=vars.yaml
7
+ ENV CONFIG_VARS sqlalchemy.url sqlalchemy.pool_recycle sqlalchemy.pool_size sqlalchemy.max_overflow \
8
+ sqlalchemy.executemany_mode sqlalchemy_slave.url sqlalchemy_slave.pool_recycle sqlalchemy_slave.pool_size \
9
+ sqlalchemy_slave.max_overflow sqlalchemy_slave.executemany_mode schema schema_static enable_admin_interface \
10
+ default_locale_name servers layers cache admin_interface getitfixed functionalities \
11
+ raster shortener hide_capabilities tinyowsproxy resourceproxy print_url print_get_redirect \
12
+ checker check_collector default_max_age package srid \
13
+ reset_password fulltextsearch global_headers headers authorized_referers hooks stats db_chooser \
14
+ dbsessions urllogin host_forward_host headers_whitelist headers_blacklist \
15
+ smtp c2c.base_path welcome_email \
16
+ lingva_extractor interfaces_config interfaces devserver_url api authentication intranet metrics pdfreport \
17
+ vector_tiles i18next main_ogc_server static_files
18
+
19
+ COPY . /tmp/config/
20
+
21
+ ARG SIMPLE
22
+ ENV SIMPLE=$SIMPLE
23
+
24
+ RUN build-l10n "{{cookiecutter.package}}"
25
+
26
+ ARG PGSCHEMA
27
+ ENV PGSCHEMA=$PGSCHEMA
28
+
29
+ RUN \
30
+ cd /tmp/config/geoportal/ \
31
+ && c2c-template --vars ${VARS_FILE} \
32
+ --get-config {{cookiecutter.package}}_geoportal/config.yaml \
33
+ ${CONFIG_VARS} \
34
+ && pykwalify --data-file {{cookiecutter.package}}_geoportal/config.yaml \
35
+ --schema-file CONST_config-schema.yaml \
36
+ && rm CONST_* vars.yaml \
37
+ && qgisserver-plugin-config {{cookiecutter.package}}_geoportal/config.yaml ../qgisserver/geomapfish.yaml.tmpl
38
+
39
+ ###############################################################################
40
+
41
+ FROM camptocamp/geomapfish-config:{{cookiecutter.geomapfish_major_version_tag_env}} AS gmf_config
42
+
43
+ ARG PGSCHEMA
44
+ ENV PGSCHEMA=$PGSCHEMA
45
+
46
+ COPY --from=builder /tmp/config/ /tmp/config/
47
+
48
+ RUN \
49
+ mvif /tmp/config/mapserver /etc/ \
50
+ && mvif /tmp/config/tilegeneration /etc/ \
51
+ && mvif /tmp/config/qgisserver /etc/qgisserver \
52
+ && mvif /tmp/config/haproxy/* /etc/haproxy/ \
53
+ && mkdir --parent /usr/local/tomcat/webapps/ROOT/ \
54
+ && mvif /tmp/config/print /tmp/config/print/print-apps /usr/local/tomcat/webapps/ROOT/ \
55
+ && mv /tmp/config/geoportal/{{cookiecutter.package}}_geoportal/ /etc/geomapfish/ \
56
+ && mv /tmp/config/geoportal/* /etc/geomapfish/ || true \
57
+ && chmod g+w -R \
58
+ /etc/geomapfish \
59
+ /etc/mapserver \
60
+ /etc/qgisserver \
61
+ /etc/tilegeneration \
62
+ /usr/local/tomcat/webapps/ROOT/print-apps \
63
+ /etc/haproxy_dev \
64
+ /etc/haproxy \
65
+ && sed 's#bind :80#bind *:443 ssl crt /etc/haproxy_dev/localhost.pem#g' /etc/haproxy/haproxy.cfg.tmpl \
66
+ > /etc/haproxy_dev/haproxy.cfg.tmpl \
67
+ && echo ' http-request set-header X-Forwarded-Proto https' >> /etc/haproxy_dev/haproxy.cfg.tmpl
68
+
69
+ VOLUME /etc/geomapfish \
70
+ /etc/mapserver \
71
+ /etc/qgisserver \
72
+ /etc/tilegeneration \
73
+ /usr/local/tomcat/webapps/ROOT/print-apps \
74
+ /etc/haproxy_dev \
75
+ /etc/haproxy
@@ -0,0 +1,70 @@
1
+ PROJECT_PUBLIC_URL=https://example.camptocamp.com/
2
+ DUMP_FILE=dump.backup
3
+ PACKAGE={{cookiecutter.package}}
4
+ LANGUAGES=en fr de it
5
+
6
+ .PHONY: help
7
+ help: ## Display this help message
8
+ @echo "Usage: make <target>"
9
+ @echo
10
+ @echo "Available targets:"
11
+ @grep --extended-regexp --no-filename '^[a-zA-Z_-]+:.*## ' $(MAKEFILE_LIST) | sort | \
12
+ awk 'BEGIN {FS = ":.*?## "}; {printf " %-20s%s\n", $$1, $$2}'
13
+
14
+ .PHONY: update-po-from-url
15
+ update-po-from-url: ## Update the po files from the URL provide by PROJECT_PUBLIC_URL
16
+ curl --fail --retry 5 --retry-delay 1 \
17
+ $(PROJECT_PUBLIC_URL)locale.pot > geoportal/${PACKAGE}_geoportal/locale/${PACKAGE}_geoportal-client${SUFFIX}.pot
18
+ sed -i '/^"POT-Creation-Date: /d' geoportal/${PACKAGE}_geoportal/locale/${PACKAGE}_geoportal-client${SUFFIX}.pot
19
+ docker compose run --rm -T tools update-po-only `id --user` `id --group` $(LANGUAGES)
20
+
21
+ .PHONY: update-po
22
+ update-po: ## Update the po files from the running composition
23
+ docker compose exec -T tools sh -c "USER_ID=`id --user` GROUP_ID=`id --group` make --directory=geoportal update-po"
24
+
25
+ .PHONY: checks
26
+ checks: prospector eslint ## Runs the checks
27
+
28
+ .PHONY: prospector
29
+ prospector: ## Runs the Prospector checks
30
+ docker compose run --entrypoint= --no-deps --rm --volume=$(CURDIR)/geoportal:/app geoportal \
31
+ prospector --output-format=pylint --die-on-tool-error
32
+
33
+ .PHONY: eslint
34
+ eslint: ## Runs the eslint checks
35
+ docker compose run --entrypoint= --no-deps --rm --volume=$(CURDIR)/geoportal:/app geoportal \
36
+ eslint $(find {{cookiecutter.package}} -type f -name '*.js' -print 2> /dev/null)
37
+ docker compose run --entrypoint= --no-deps --rm --volume=$(CURDIR)/geoportal:/app geoportal \
38
+ eslint $(find {{cookiecutter.package}} -type f -name '*.ts' -print 2> /dev/null)
39
+
40
+ .PHONY: qgis
41
+ qgis: ## Run QGIS desktop
42
+ docker compose -f docker-compose.yaml -f docker-compose-qgis.yaml run --rm qgis
43
+
44
+ secrets.tar.bz2.gpg: env.secrets ## Encrypt the secrets for committing changes
45
+ tar -jcf secrets.tar.bz2 $^
46
+ rm -f $@
47
+ gpg --symmetric --cipher-algo AES256 --batch \
48
+ --passphrase=$(shell gopass show gs/ci/large-secret-passphrase) secrets.tar.bz2
49
+ rm secrets.tar.bz2
50
+
51
+ .PHONY: secrets
52
+ secrets: ## Decrypt the secrets.tar.bz2.gpg file
53
+ gpg --quiet --batch --yes --decrypt --passphrase=$(shell gopass show gs/ci/large-secret-passphrase) \
54
+ --output secrets.tar.bz2 secrets.tar.bz2.gpg
55
+ tar --touch -jxf secrets.tar.bz2
56
+ rm secrets.tar.bz2
57
+
58
+ .PHONY: acceptance-init
59
+ acceptance-init: ## Initialize the acceptance tests
60
+ docker compose --file=docker-compose.yaml --file=docker-compose-db.yaml up -d db tools
61
+ docker compose exec -T tools wait-db
62
+ docker compose exec -T tools psql --command="DROP EXTENSION IF EXISTS postgis CASCADE"
63
+ scripts/db-restore --docker-compose-file=docker-compose.yaml --docker-compose-file=docker-compose-db.yaml \
64
+ --arg=--clean --arg=--if-exists --arg=--verbose $(DUMP_FILE) || true
65
+ docker compose --file=docker-compose.yaml --file=docker-compose-db.yaml up -d
66
+
67
+ .PHONY: acceptance
68
+ acceptance: ## Run the acceptance tests
69
+ docker compose exec -T tools pytest -vv tests/
70
+ ci/docker-compose-check
@@ -0,0 +1,29 @@
1
+ {{cookiecutter.project}} project
2
+ ===================
3
+
4
+ Read the `Documentation <https://camptocamp.github.io/c2cgeoportal/{{cookiecutter.geomapfish_main_version}}/>`_
5
+
6
+ Checkout
7
+ --------
8
+
9
+ .. code::
10
+
11
+ git clone git@github.com:camptocamp/{{cookiecutter.project}}.git
12
+
13
+ cd {{cookiecutter.project}}
14
+
15
+ Build
16
+ -----
17
+
18
+ .. code::
19
+
20
+ ./build
21
+
22
+ Run
23
+ ---
24
+
25
+ .. code::
26
+
27
+ docker compose up -d
28
+
29
+ .. Feel free to add project-specific things.