c2cgeoportal-geoportal 2.6.0__py2.py3-none-any.whl → 2.8.1.180__py2.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 (225) hide show
  1. c2cgeoportal_geoportal/__init__.py +245 -95
  2. c2cgeoportal_geoportal/lib/__init__.py +67 -43
  3. c2cgeoportal_geoportal/lib/authentication.py +50 -26
  4. c2cgeoportal_geoportal/lib/bashcolor.py +17 -13
  5. c2cgeoportal_geoportal/lib/cacheversion.py +16 -8
  6. c2cgeoportal_geoportal/lib/caching.py +65 -193
  7. c2cgeoportal_geoportal/lib/check_collector.py +17 -10
  8. c2cgeoportal_geoportal/lib/checker.py +67 -65
  9. c2cgeoportal_geoportal/lib/common_headers.py +167 -0
  10. c2cgeoportal_geoportal/lib/dbreflection.py +61 -46
  11. c2cgeoportal_geoportal/lib/filter_capabilities.py +126 -88
  12. c2cgeoportal_geoportal/lib/fulltextsearch.py +6 -5
  13. c2cgeoportal_geoportal/lib/functionality.py +20 -17
  14. c2cgeoportal_geoportal/lib/headers.py +14 -5
  15. c2cgeoportal_geoportal/lib/i18n.py +4 -4
  16. c2cgeoportal_geoportal/lib/layers.py +30 -11
  17. c2cgeoportal_geoportal/lib/lingua_extractor.py +363 -240
  18. c2cgeoportal_geoportal/lib/loader.py +11 -16
  19. c2cgeoportal_geoportal/lib/metrics.py +28 -17
  20. c2cgeoportal_geoportal/lib/oauth2.py +392 -206
  21. c2cgeoportal_geoportal/lib/wmstparsing.py +105 -84
  22. c2cgeoportal_geoportal/lib/xsd.py +26 -16
  23. c2cgeoportal_geoportal/resources.py +15 -9
  24. c2cgeoportal_geoportal/scaffolds/advance_create/ci/config.yaml +26 -0
  25. c2cgeoportal_geoportal/scaffolds/advance_create/cookiecutter.json +18 -0
  26. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/.dockerignore +6 -0
  27. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/.eslintrc.yaml +19 -0
  28. c2cgeoportal_geoportal/scaffolds/{create/geoportal/+dot+prospector.yaml → advance_create/{{cookiecutter.project}}/geoportal/.prospector.yaml} +8 -2
  29. c2cgeoportal_geoportal/scaffolds/{create/geoportal/Dockerfile_tmpl → advance_create/{{cookiecutter.project}}/geoportal/Dockerfile} +22 -15
  30. c2cgeoportal_geoportal/scaffolds/{create/geoportal/alembic.yaml_tmpl → advance_create/{{cookiecutter.project}}/geoportal/alembic.yaml} +1 -1
  31. c2cgeoportal_geoportal/scaffolds/{create/geoportal/development.ini_tmpl → advance_create/{{cookiecutter.project}}/geoportal/development.ini} +34 -15
  32. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/gunicorn.conf.py +100 -0
  33. c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/lingua-client.cfg +1 -0
  34. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/production.ini +38 -0
  35. c2cgeoportal_geoportal/scaffolds/{create/geoportal/setup.py_tmpl → advance_create/{{cookiecutter.project}}/geoportal/setup.py} +6 -7
  36. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/tsconfig.json +8 -0
  37. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/webpack.api.js +77 -0
  38. c2cgeoportal_geoportal/scaffolds/{create/geoportal/webpack.apps.js_tmpl → advance_create/{{cookiecutter.project}}/geoportal/webpack.apps.js} +29 -28
  39. c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/webpack.commons.js +4 -7
  40. c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/webpack.config.js +1 -1
  41. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/__init__.py +42 -0
  42. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/authentication.py +10 -0
  43. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/dev.py +14 -0
  44. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/models.py +8 -0
  45. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/multi_organization.py +7 -0
  46. c2cgeoportal_geoportal/scaffolds/{create/geoportal/+package+_geoportal → advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/resources.py +4 -3
  47. c2cgeoportal_geoportal/scaffolds/{create/geoportal/+package+_geoportal/static-ngeo/api/index.js_tmpl → advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static-ngeo/api/index.js} +1 -2
  48. c2cgeoportal_geoportal/scaffolds/{create/geoportal/+package+_geoportal/static-ngeo/js/+package+module.js_tmpl → advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static-ngeo/js/{{cookiecutter.package}}module.js} +4 -4
  49. c2cgeoportal_geoportal/scaffolds/{create/geoportal/+package+_geoportal/subscribers.py_tmpl → advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/subscribers.py} +1 -3
  50. c2cgeoportal_geoportal/scaffolds/advance_update/cookiecutter.json +18 -0
  51. c2cgeoportal_geoportal/scaffolds/{update/geoportal/CONST_Makefile_tmpl → advance_update/{{cookiecutter.project}}/geoportal/CONST_Makefile} +3 -27
  52. c2cgeoportal_geoportal/scaffolds/create/cookiecutter.json +18 -0
  53. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.dockerignore +14 -0
  54. c2cgeoportal_geoportal/scaffolds/create/{+dot+editorconfig → {{cookiecutter.project}}/.editorconfig} +2 -5
  55. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/main.yaml +57 -0
  56. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/rebuild.yaml +46 -0
  57. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/update_l10n.yaml +66 -0
  58. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.gitignore +16 -0
  59. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.prettierignore +1 -0
  60. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.prettierrc.yaml +2 -0
  61. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/Dockerfile +76 -0
  62. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/Makefile +70 -0
  63. c2cgeoportal_geoportal/scaffolds/create/{README.rst_tmpl → {{cookiecutter.project}}/README.rst} +4 -4
  64. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/build +186 -0
  65. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/ci/config.yaml +22 -0
  66. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/ci/docker-compose-check +25 -0
  67. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/ci/requirements.txt +1 -0
  68. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose-db.yaml +26 -0
  69. c2cgeoportal_geoportal/scaffolds/create/{docker-compose-lib.yaml → {{cookiecutter.project}}/docker-compose-lib.yaml} +165 -22
  70. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose-qgis.yaml +23 -0
  71. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose.override.sample.yaml +66 -0
  72. c2cgeoportal_geoportal/scaffolds/create/{docker-compose.yaml → {{cookiecutter.project}}/docker-compose.yaml} +20 -15
  73. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/env.default +101 -0
  74. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/env.project +69 -0
  75. c2cgeoportal_geoportal/scaffolds/create/{geoportal/vars.yaml_tmpl → {{cookiecutter.project}}/geoportal/vars.yaml} +126 -36
  76. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/mobile.css +0 -0
  77. c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/data/Readme.txt +3 -3
  78. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/demo.map.tmpl +224 -0
  79. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/mapserver.conf +15 -0
  80. c2cgeoportal_geoportal/scaffolds/create/{mapserver/mapserver.map.tmpl_tmpl → {{cookiecutter.project}}/mapserver/mapserver.map.tmpl} +9 -18
  81. c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/A3_Landscape.jrxml +13 -8
  82. c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/A3_Portrait.jrxml +13 -8
  83. c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/A4_Landscape.jrxml +13 -8
  84. c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/A4_Portrait.jrxml +13 -8
  85. c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/config.yaml.tmpl +11 -4
  86. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/localisation.properties +4 -0
  87. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/localisation_fr.properties +4 -0
  88. c2cgeoportal_geoportal/scaffolds/create/{project.yaml_tmpl → {{cookiecutter.project}}/project.yaml} +6 -6
  89. c2cgeoportal_geoportal/scaffolds/create/{pyproject.toml → {{cookiecutter.project}}/pyproject.toml} +4 -0
  90. c2cgeoportal_geoportal/scaffolds/create/{qgisserver/pg_service.conf.tmpl_tmpl → {{cookiecutter.project}}/qgisserver/pg_service.conf.tmpl} +2 -2
  91. c2cgeoportal_geoportal/scaffolds/create/{run_alembic.sh → {{cookiecutter.project}}/run_alembic.sh} +3 -5
  92. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/scripts/db-backup +110 -0
  93. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/scripts/db-restore +114 -0
  94. c2cgeoportal_geoportal/scaffolds/create/{setup.cfg_tmpl → {{cookiecutter.project}}/setup.cfg} +1 -1
  95. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/spell-ignore-words.txt +5 -0
  96. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/tests/__init__.py +0 -0
  97. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/tests/test_app.py +38 -0
  98. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/tilegeneration/config.yaml.tmpl +195 -0
  99. c2cgeoportal_geoportal/scaffolds/update/cookiecutter.json +18 -0
  100. c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/.upgrade.yaml +61 -0
  101. c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/CONST_CHANGELOG.txt +273 -0
  102. c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/CONST_create_template/tests/test_testapp.py +48 -0
  103. c2cgeoportal_geoportal/scaffolds/update/{geoportal → {{cookiecutter.project}}/geoportal}/CONST_config-schema.yaml +64 -17
  104. c2cgeoportal_geoportal/scaffolds/update/{geoportal/CONST_vars.yaml_tmpl → {{cookiecutter.project}}/geoportal/CONST_vars.yaml} +396 -19
  105. c2cgeoportal_geoportal/scripts/__init__.py +16 -30
  106. c2cgeoportal_geoportal/scripts/c2cupgrade.py +272 -234
  107. c2cgeoportal_geoportal/scripts/create_demo_theme.py +3 -6
  108. c2cgeoportal_geoportal/scripts/manage_users.py +34 -39
  109. c2cgeoportal_geoportal/scripts/pcreate.py +310 -0
  110. c2cgeoportal_geoportal/scripts/theme2fts.py +128 -24
  111. c2cgeoportal_geoportal/scripts/urllogin.py +19 -11
  112. c2cgeoportal_geoportal/templates/login.html +88 -84
  113. c2cgeoportal_geoportal/templates/notlogin.html +59 -59
  114. c2cgeoportal_geoportal/templates/testi18n.html +6 -8
  115. c2cgeoportal_geoportal/views/__init__.py +23 -6
  116. c2cgeoportal_geoportal/views/dev.py +9 -7
  117. c2cgeoportal_geoportal/views/dynamic.py +56 -19
  118. c2cgeoportal_geoportal/views/entry.py +85 -24
  119. c2cgeoportal_geoportal/views/fulltextsearch.py +29 -23
  120. c2cgeoportal_geoportal/views/geometry_processing.py +17 -9
  121. c2cgeoportal_geoportal/views/i18n.py +91 -9
  122. c2cgeoportal_geoportal/views/layers.py +166 -133
  123. c2cgeoportal_geoportal/views/login.py +161 -93
  124. c2cgeoportal_geoportal/views/mapserverproxy.py +47 -31
  125. c2cgeoportal_geoportal/views/memory.py +12 -12
  126. c2cgeoportal_geoportal/views/ogcproxy.py +52 -30
  127. c2cgeoportal_geoportal/views/pdfreport.py +30 -26
  128. c2cgeoportal_geoportal/views/printproxy.py +60 -52
  129. c2cgeoportal_geoportal/views/profile.py +24 -23
  130. c2cgeoportal_geoportal/views/proxy.py +88 -72
  131. c2cgeoportal_geoportal/views/raster.py +37 -26
  132. c2cgeoportal_geoportal/views/resourceproxy.py +13 -11
  133. c2cgeoportal_geoportal/views/shortener.py +27 -25
  134. c2cgeoportal_geoportal/views/theme.py +472 -332
  135. c2cgeoportal_geoportal/views/tinyowsproxy.py +42 -44
  136. c2cgeoportal_geoportal/views/vector_tiles.py +80 -0
  137. {c2cgeoportal_geoportal-2.6.0.dist-info → c2cgeoportal_geoportal-2.8.1.180.dist-info}/METADATA +19 -8
  138. c2cgeoportal_geoportal-2.8.1.180.dist-info/RECORD +191 -0
  139. {c2cgeoportal_geoportal-2.6.0.dist-info → c2cgeoportal_geoportal-2.8.1.180.dist-info}/WHEEL +1 -1
  140. {c2cgeoportal_geoportal-2.6.0.dist-info → c2cgeoportal_geoportal-2.8.1.180.dist-info}/entry_points.txt +3 -0
  141. tests/__init__.py +10 -5
  142. tests/test_cachebuster.py +3 -5
  143. tests/test_caching.py +18 -26
  144. tests/test_checker.py +1 -3
  145. tests/test_decimaljson.py +5 -5
  146. tests/test_headerstween.py +1 -3
  147. tests/test_i18n.py +2 -2
  148. tests/test_init.py +16 -20
  149. tests/test_locale_negociator.py +4 -6
  150. tests/test_mapserverproxy_route_predicate.py +1 -4
  151. tests/test_raster.py +15 -17
  152. tests/test_wmstparsing.py +10 -12
  153. tests/xmlstr.py +1 -3
  154. c2cgeoportal_geoportal/scaffolds/__init__.py +0 -227
  155. c2cgeoportal_geoportal/scaffolds/create/+dot+dockerignore_tmpl +0 -12
  156. c2cgeoportal_geoportal/scaffolds/create/+dot+github/workflows/main.yaml_tmpl +0 -89
  157. c2cgeoportal_geoportal/scaffolds/create/+dot+github/workflows/rebuild.yaml_tmpl +0 -78
  158. c2cgeoportal_geoportal/scaffolds/create/+dot+gitignore_tmpl +0 -16
  159. c2cgeoportal_geoportal/scaffolds/create/Dockerfile_tmpl +0 -67
  160. c2cgeoportal_geoportal/scaffolds/create/Makefile +0 -3
  161. c2cgeoportal_geoportal/scaffolds/create/build_tmpl +0 -167
  162. c2cgeoportal_geoportal/scaffolds/create/ci/config.yaml_tmpl +0 -23
  163. c2cgeoportal_geoportal/scaffolds/create/ci/requirements.txt +0 -1
  164. c2cgeoportal_geoportal/scaffolds/create/ci/trigger +0 -68
  165. c2cgeoportal_geoportal/scaffolds/create/docker-compose.override.sample.yaml +0 -54
  166. c2cgeoportal_geoportal/scaffolds/create/env.default_tmpl +0 -67
  167. c2cgeoportal_geoportal/scaffolds/create/env.project_tmpl +0 -48
  168. c2cgeoportal_geoportal/scaffolds/create/geoportal/+dot+dockerignore_tmpl +0 -6
  169. c2cgeoportal_geoportal/scaffolds/create/geoportal/+dot+eslintrc_tmpl +0 -15
  170. c2cgeoportal_geoportal/scaffolds/create/geoportal/+package+_geoportal/__init__.py_tmpl +0 -58
  171. c2cgeoportal_geoportal/scaffolds/create/geoportal/+package+_geoportal/models.py_tmpl +0 -10
  172. c2cgeoportal_geoportal/scaffolds/create/geoportal/+package+_geoportal/static/robot.txt +0 -3
  173. c2cgeoportal_geoportal/scaffolds/create/geoportal/production.ini_tmpl +0 -106
  174. c2cgeoportal_geoportal/scaffolds/create/geoportal/tools/extract-messages.js +0 -39
  175. c2cgeoportal_geoportal/scaffolds/create/geoportal/tsconfig.json_tmpl +0 -9
  176. c2cgeoportal_geoportal/scaffolds/create/geoportal/webpack.api.js_tmpl +0 -72
  177. c2cgeoportal_geoportal/scaffolds/create/mapserver/demo.map.tmpl_tmpl +0 -262
  178. c2cgeoportal_geoportal/scaffolds/create/mapserver/tinyows.xml +0 -36
  179. c2cgeoportal_geoportal/scaffolds/create/print/print-apps/+package+/config.yaml +0 -168
  180. c2cgeoportal_geoportal/scaffolds/create/qgisserver/geomapfish.yaml.tmpl_tmpl +0 -16
  181. c2cgeoportal_geoportal/scaffolds/create/spell-ignore-words.txt +0 -1
  182. c2cgeoportal_geoportal/scaffolds/create/tilegeneration/config.yaml.tmpl_tmpl +0 -185
  183. c2cgeoportal_geoportal/scaffolds/create/yamllint.yaml +0 -11
  184. c2cgeoportal_geoportal/scaffolds/update/+dot+upgrade.yaml_tmpl +0 -181
  185. c2cgeoportal_geoportal/scaffolds/update/CONST_CHANGELOG.txt_tmpl +0 -454
  186. c2cgeoportal_geoportal/templates/dynamic.js +0 -21
  187. c2cgeoportal_geoportal-2.6.0.dist-info/RECORD +0 -173
  188. /c2cgeoportal_geoportal/{scaffolds/create/geoportal/+package+_geoportal/static/css/desktop.css → py.typed} +0 -0
  189. /c2cgeoportal_geoportal/scaffolds/{create/geoportal/Makefile_tmpl → advance_create/{{cookiecutter.project}}/geoportal/Makefile} +0 -0
  190. /c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/alembic.ini +0 -0
  191. /c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/language_mapping +0 -0
  192. /c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/lingua-server.cfg +0 -0
  193. /c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/requirements.txt +0 -0
  194. /c2cgeoportal_geoportal/scaffolds/{create/geoportal/+package+_geoportal → advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/views/__init__.py +0 -0
  195. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal/locale/en/LC_MESSAGES/+package+_geoportal-client.po → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/locale/en/LC_MESSAGES/{{cookiecutter.package}}_geoportal-client.po} +0 -0
  196. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal/static/css/iframe_api.css → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/desktop.css} +0 -0
  197. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal/static/css/mobile.css → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/iframe_api.css} +0 -0
  198. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/banner_left.png +0 -0
  199. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/banner_right.png +0 -0
  200. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/blank.png +0 -0
  201. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/markers/marker-blue.png +0 -0
  202. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/markers/marker-gold.png +0 -0
  203. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/markers/marker-green.png +0 -0
  204. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/markers/marker.png +0 -0
  205. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/robot.txt.tmpl +0 -0
  206. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/data/TM_EUROPE_BORDERS-0.3.sql +0 -0
  207. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Arial.ttf +0 -0
  208. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Arialbd.ttf +0 -0
  209. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Arialbi.ttf +0 -0
  210. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Ariali.ttf +0 -0
  211. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/NotoSans-Bold.ttf +0 -0
  212. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/NotoSans-BoldItalic.ttf +0 -0
  213. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/NotoSans-Italic.ttf +0 -0
  214. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/NotoSans-Regular.ttf +0 -0
  215. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Verdana.ttf +0 -0
  216. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Verdanab.ttf +0 -0
  217. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Verdanai.ttf +0 -0
  218. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Verdanaz.ttf +0 -0
  219. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts.conf +0 -0
  220. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/tinyows.xml.tmpl +0 -0
  221. /c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/legend.jrxml +0 -0
  222. /c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/logo.png +0 -0
  223. /c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/north.svg +0 -0
  224. /c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/results.jrxml +0 -0
  225. {c2cgeoportal_geoportal-2.6.0.dist-info → c2cgeoportal_geoportal-2.8.1.180.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,186 @@
1
+ #!/usr/bin/env python3
2
+
3
+ import argparse
4
+ import os
5
+ import os.path
6
+ import platform
7
+ import re
8
+ import shlex
9
+ import shutil
10
+ import stat
11
+ import subprocess
12
+ import sys
13
+ import urllib.request
14
+ from typing import TYPE_CHECKING, Any, List, Optional
15
+
16
+ import yaml
17
+
18
+ CompletedProcess = subprocess.CompletedProcess[str] if TYPE_CHECKING else subprocess.CompletedProcess
19
+
20
+
21
+ def run(
22
+ args: argparse.Namespace, command: List[str], exit_on_error: bool = True, **kwargs: Any
23
+ ) -> Optional[CompletedProcess]:
24
+ if args.verbose or args.dry_run:
25
+ print(" ".join([shlex.quote(c) for c in command]))
26
+ if not args.dry_run or "stdout" in kwargs:
27
+ if args.stack_trace and exit_on_error and not "checks" in kwargs:
28
+ kwargs["check"] = True
29
+ process = subprocess.run(command, **kwargs) # nosec
30
+ if exit_on_error and process.returncode != 0:
31
+ print(
32
+ "An error occurred during execution of `{}`".format(
33
+ " ".join([shlex.quote(c) for c in command])
34
+ )
35
+ )
36
+ sys.exit(process.returncode)
37
+ return process
38
+ return None
39
+
40
+
41
+ def main() -> None:
42
+ parser = argparse.ArgumentParser(description="Build the project")
43
+ parser.add_argument("--verbose", action="store_true", help="Display the Docker build commands")
44
+ parser.add_argument(
45
+ "--dry-run", action="store_true", help="Display the docker build commands without executing them"
46
+ )
47
+ parser.add_argument("--service", help="Build only the specified service")
48
+ parser.add_argument("--env", action="store_true", help="Build only the .env file")
49
+ parser.add_argument("--simple", action="store_true", help="Force simple application mode")
50
+ parser.add_argument("--not-simple", action="store_true", help="Force not simple application mode")
51
+ parser.add_argument("--upgrade", help="Start upgrading the project to version")
52
+ parser.add_argument(
53
+ "--reload",
54
+ nargs="?",
55
+ action="store",
56
+ const="",
57
+ help="Comma separate list of services that will be reloaded after the build",
58
+ )
59
+ parser.add_argument(
60
+ "--no-pull",
61
+ action="store_true",
62
+ default=os.environ.get("CI", "FALSE").upper() == "TRUE",
63
+ help="Do not pull external or base images for faster rebuild during development.",
64
+ )
65
+ parser.add_argument(
66
+ "--debug", help="Path to c2cgeoportal source folder to be able to debug the upgrade procedure"
67
+ )
68
+ parser.add_argument("--stack-trace", action="store_true", help="Display the stack trace on error")
69
+ parser.add_argument(
70
+ "--docker-compose-version-2", action="store_true", help="Use Docker Compose version 2"
71
+ )
72
+ parser.add_argument("env_files", nargs="*", help="The environment config")
73
+ args = parser.parse_args()
74
+
75
+ if args.upgrade:
76
+ major_version = args.upgrade
77
+ match = re.match(r"^([0-9]+\.[0-9]+)\.[0-9]+$", args.upgrade)
78
+ if match is not None:
79
+ major_version = match.group(1)
80
+ match = re.match(r"^([0-9]+\.[0-9]+)\.[0-9a-z]+\.[0-9]+$", args.upgrade)
81
+ if match is not None:
82
+ major_version = match.group(1)
83
+ full_version = args.upgrade
84
+ with open("upgrade", "w", encoding="utf-8") as f:
85
+ with urllib.request.urlopen( # nosec
86
+ "https://raw.githubusercontent.com/camptocamp/c2cgeoportal/{major_version}/scripts/upgrade".format(
87
+ major_version=major_version
88
+ )
89
+ ) as result:
90
+ if result.code != 200:
91
+ print("ERROR:")
92
+ print(result.read())
93
+ sys.exit(1)
94
+ f.write(result.read().decode())
95
+ debug_args = []
96
+ if args.debug:
97
+ shutil.copyfile(os.path.join(args.debug, "scripts", "upgrade"), "upgrade")
98
+ debug_args = ["--debug", args.debug]
99
+ os.chmod("upgrade", os.stat("upgrade").st_mode | stat.S_IXUSR)
100
+ try:
101
+ if platform.system() == "Windows":
102
+ run(args, ["python", "upgrade", full_version] + debug_args)
103
+ else:
104
+ run(args, ["./upgrade", full_version] + debug_args)
105
+ except subprocess.CalledProcessError:
106
+ sys.exit(1)
107
+ sys.exit(0)
108
+
109
+ with open("project.yaml", encoding="utf-8") as project_file:
110
+ project_env = yaml.load(project_file, Loader=yaml.SafeLoader)["env"]
111
+ if len(args.env_files) != project_env["required_args"]:
112
+ print(project_env["help"])
113
+ sys.exit(1)
114
+ env_files = [e.format(*args.env_files) for e in project_env["files"]]
115
+ print("Use env files: {}".format(", ".join(env_files)))
116
+ for env_file in env_files:
117
+ if not os.path.exists(env_file):
118
+ print("Error: the env file '{env_file}' does not exist.".format(env_file=env_file))
119
+ sys.exit(1)
120
+
121
+ with open(".env", "w", encoding="utf-8") as dest:
122
+ for file_ in env_files:
123
+ with open(file_, encoding="utf-8") as src:
124
+ dest.write(src.read() + "\n")
125
+
126
+ simple = not os.path.exists("geoportal/Dockerfile")
127
+ if args.simple:
128
+ simple = True
129
+ if args.not_simple:
130
+ simple = False
131
+
132
+ git_hash = run(args, ["git", "rev-parse", "HEAD"], stdout=subprocess.PIPE).stdout.decode().strip()
133
+
134
+ dest.write("SIMPLE={}\n".format(str(simple).upper()))
135
+ dest.write("GIT_HASH={git_hash}\n".format(git_hash=git_hash))
136
+
137
+ dest.write("# Used env files: {}\n".format(", ".join(env_files)))
138
+
139
+ docker_compose = ["docker", "compose"] if args.docker_compose_version_2 else ["docker-compose"]
140
+ if not args.env:
141
+ docker_compose_build_cmd = [*docker_compose, "build"]
142
+
143
+ if not args.no_pull:
144
+ # Pull all the images
145
+ if not args.service:
146
+ run(args, [*docker_compose, "pull", "--ignore-pull-failures"]) # nosec
147
+ docker_compose_build_cmd.append("--pull")
148
+
149
+ if args.service:
150
+ docker_compose_build_cmd.append(args.service)
151
+
152
+ print_args = [a.replace(" ", "\\ ") for a in docker_compose_build_cmd]
153
+ print_args = [a.replace('"', '\\"') for a in print_args]
154
+ print_args = [a.replace("'", "\\'") for a in print_args]
155
+ try:
156
+ env = {"DOCKER_BUILDKIT": "1", "COMPOSE_DOCKER_CLI_BUILD": "1"}
157
+ env.update(os.environ)
158
+ run(args, docker_compose_build_cmd, env=env) # nosec
159
+ except subprocess.CalledProcessError as e:
160
+ print("Error with command: " + " ".join(print_args))
161
+ sys.exit(e.returncode)
162
+
163
+ if args.reload:
164
+ services = args.reload.split(",")
165
+ elif args.reload == "":
166
+ services = [
167
+ service
168
+ for service in run(
169
+ args,
170
+ [*docker_compose, "ps", "--services", "--all"],
171
+ stdout=subprocess.PIPE,
172
+ exit_on_error=True,
173
+ )
174
+ .stdout.decode()
175
+ .splitlines()
176
+ if not service.startswith("redis")
177
+ ]
178
+
179
+ if args.reload is not None:
180
+ run(args, [*docker_compose, "rm", "--force", "-v", "config"])
181
+ for service in services:
182
+ run(args, [*docker_compose, "up", "--detach", "--force-recreate", service])
183
+
184
+
185
+ if __name__ == "__main__":
186
+ main()
@@ -0,0 +1,22 @@
1
+ # yaml-language-server: $schema=https://raw.githubusercontent.com/camptocamp/c2cciutils/1.4/c2cciutils/schema.json
2
+
3
+ checks:
4
+ codespell: False
5
+ required_workflows: False
6
+ dependabot_config: False
7
+ prospector_config: False
8
+ setup: False
9
+
10
+ version:
11
+ branch_to_version_re:
12
+ - from: (prod-[0-9]+-[0-9]+)
13
+ to: \1
14
+ - from: (int-[0-9]+-[0-9]+)
15
+ to: \1
16
+
17
+ publish:
18
+ pypi: false
19
+ docker:
20
+ dispatch: {}
21
+ images:
22
+ - name: camptocamp/{{cookiecutter.package}}-config
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env python3
2
+
3
+ import argparse
4
+ import subprocess
5
+ import sys
6
+
7
+
8
+ def _main() -> None:
9
+ argparser = argparse.ArgumentParser("Tests that's all the services are running")
10
+ argparser.parse_args()
11
+
12
+ services = [
13
+ s.strip()
14
+ for s in subprocess.run(["docker", "compose", "ps"], check=True, stdout=subprocess.PIPE)
15
+ .stdout.decode("utf-8")
16
+ .splitlines()
17
+ ]
18
+ errors_statuses = [s for s in services if " Exit " in s and not s.endswith(" Exit 0")]
19
+ if errors_statuses:
20
+ print("\n".join(errors_statuses))
21
+ sys.exit(1)
22
+
23
+
24
+ if __name__ == "__main__":
25
+ _main()
@@ -0,0 +1 @@
1
+ c2cciutils[checks,publish]==1.4.21
@@ -0,0 +1,26 @@
1
+ # This file is used by the acceptance tests to have a local database.
2
+
3
+ version: '2.3'
4
+
5
+ volumes:
6
+ postgresql_data:
7
+
8
+ services:
9
+ config: &db-config
10
+ environment:
11
+ - PGHOST=db
12
+ - PGHOST_SLAVE=db
13
+ - PGSSLMODE=prefer
14
+ geoportal: *db-config
15
+ # geoportal-advance: *db-config
16
+ tools: *db-config
17
+ alembic: *db-config
18
+ # alembic-advance: *db-config
19
+ # webpack_dev_server: *db-config
20
+
21
+ db:
22
+ extends:
23
+ file: docker-compose-lib.yaml
24
+ service: db
25
+ volumes:
26
+ - postgresql_data:/var/lib/postgresql/data
@@ -1,9 +1,18 @@
1
- ---
2
- version: '2.0'
1
+ # This file is managed by c2cgeoportal, it contains the default services configuration
2
+
3
+ version: '2.3'
3
4
 
4
5
  services:
5
6
  config:
6
7
  image: ${DOCKER_BASE}-config:${DOCKER_TAG}
8
+ build:
9
+ context: .
10
+ args:
11
+ SIMPLE: ${SIMPLE}
12
+ PGSCHEMA: ${PGSCHEMA}
13
+ GEOMAPFISH_VERSION: ${GEOMAPFISH_VERSION}
14
+ GEOMAPFISH_MAIN_VERSION: ${GEOMAPFISH_MAIN_VERSION}
15
+ GEOMAPFISH_MAIN_MINOR_VERSION: ${GEOMAPFISH_MAIN_MINOR_VERSION}
7
16
  user: www-data
8
17
  environment:
9
18
  - VISIBLE_WEB_HOST
@@ -18,9 +27,13 @@ services:
18
27
  - PGDATABASE
19
28
  - PGSSLMODE
20
29
  - PGSCHEMA_STATIC
30
+ - SRID
21
31
  - SQLALCHEMY_POOL_RECYCLE
22
32
  - SQLALCHEMY_POOL_SIZE
23
33
  - SQLALCHEMY_MAX_OVERFLOW
34
+ - SQLALCHEMY_SLAVE_POOL_RECYCLE
35
+ - SQLALCHEMY_SLAVE_POOL_SIZE
36
+ - SQLALCHEMY_SLAVE_MAX_OVERFLOW
24
37
  - GEOPORTAL_INTERNAL_URL
25
38
  - GEOPORTAL_INTERNAL_HOST
26
39
  - GEOPORTAL_INTERNAL_PORT
@@ -30,7 +43,10 @@ services:
30
43
  - MUTUALIZED_PRINT_URL
31
44
  - DISABLE_MUTUALIZED_PRINT
32
45
  - DISABLE_LOCAL_PRINT
46
+ - DISABLE_MUTUALIZE
47
+ - DISABLE_LOCAL
33
48
  - MAPSERVER_URL
49
+ - QGISSERVER_URL
34
50
  - REDIS_HOST
35
51
  - REDIS_PORT
36
52
  - REDIS_DB
@@ -42,9 +58,18 @@ services:
42
58
  - AWS_SECRET_ACCESS_KEY
43
59
  - AWS_DEFAULT_REGION
44
60
  - AWS_S3_ENDPOINT
61
+ - AZURE_STORAGE_CONNECTION_STRING
62
+ - AZURE_STORAGE_ACCOUNT
63
+ - AZURE_STORAGE_ACCESS_TOKEN
64
+ - AZURE_STORAGE_ACCESS_KEY
65
+ - AZURE_STORAGE_SAS_TOKEN
66
+ - TILEGENERATION_AZURE_CONTAINER
67
+ - RASTER_BASE_PATH
68
+ - DISABLE_HAPROXY_LOGGING
69
+ - HAPROXY_LOGGING_OPTIONS
45
70
 
46
71
  print:
47
- image: camptocamp/mapfish_print:3.27
72
+ image: camptocamp/mapfish_print:3.30
48
73
  user: www-data
49
74
  restart: unless-stopped
50
75
  environment:
@@ -52,12 +77,26 @@ services:
52
77
  - PGOPTIONS
53
78
 
54
79
  mapserver:
55
- image: camptocamp/mapserver:7.6
80
+ image: camptocamp/mapserver:8.0-gdal3.7
56
81
  user: www-data
57
82
  restart: unless-stopped
58
83
  entrypoint: []
59
84
  environment:
60
85
  - PGOPTIONS
86
+ - MAPSERVER_CONFIG_FILE=/etc/mapserver/mapserver.conf
87
+ - AWS_ACCESS_KEY_ID
88
+ - AWS_SECRET_ACCESS_KEY
89
+ - AWS_DEFAULT_REGION
90
+ - AWS_S3_ENDPOINT
91
+ - AZURE_STORAGE_CONNECTION_STRING
92
+ - AZURE_STORAGE_ACCOUNT
93
+ - AZURE_STORAGE_ACCESS_TOKEN
94
+ - AZURE_STORAGE_ACCESS_KEY
95
+ - AZURE_STORAGE_SAS_TOKEN
96
+ - CPL_VSIL_CURL_USE_CACHE
97
+ - CPL_VSIL_CURL_CACHE_SIZE
98
+ - CPL_VSIL_CURL_USE_HEAD
99
+ - GDAL_DISABLE_READDIR_ON_OPEN
61
100
 
62
101
  qgisserver:
63
102
  image: camptocamp/geomapfish-qgisserver:gmf${GEOMAPFISH_MAIN_VERSION}-qgis${QGIS_VERSION}
@@ -75,16 +114,35 @@ services:
75
114
  - AWS_SECRET_ACCESS_KEY
76
115
  - AWS_DEFAULT_REGION
77
116
  - AWS_S3_ENDPOINT
117
+ - AZURE_STORAGE_CONNECTION_STRING
118
+ - AZURE_STORAGE_ACCOUNT
119
+ - AZURE_STORAGE_ACCESS_TOKEN
120
+ - AZURE_STORAGE_ACCESS_KEY
121
+ - AZURE_STORAGE_SAS_TOKEN
78
122
  - CPL_VSIL_CURL_USE_CACHE
79
123
  - CPL_VSIL_CURL_CACHE_SIZE
80
124
  - CPL_VSIL_CURL_USE_HEAD
81
125
  - GDAL_DISABLE_READDIR_ON_OPEN
82
- - QGIS_SERVER_LOG_LEVEL=2
83
- - LOG_LEVEL=INFO
126
+ - QGIS_SERVER_LOG_LEVEL
127
+ - QGIS_AUTH_DB_DIR_PATH
128
+ - QGIS_SERVER_IGNORE_BAD_LAYERS
129
+ - QGIS_SERVER_DISABLE_GETPRINT
130
+ - PGSERVICEFILE
131
+ - LOG_LEVEL=${QGIS_LOG_LEVEL}
84
132
  - LOG_TYPE
85
133
  - C2CGEOPORTAL_LOG_LEVEL
86
134
  - SQL_LOG_LEVEL
87
135
  - OTHER_LOG_LEVEL
136
+ - GEOMAPFISH_ACCESSCONTROL_BASE_URL=${QGISSERVER_URL}
137
+ - QGIS_SERVER_TRUST_LAYER_METADATA
138
+ - QGIS_SERVER_PARALLEL_RENDERING
139
+ - MAX_CACHE_LAYERS
140
+ - QGIS_SERVER_CACHE_SIZE
141
+ - QGIS_SERVER_WMS_MAX_HEIGHT
142
+ - QGIS_SERVER_WMS_MAX_WIDTH
143
+ - QGIS_SERVER_API_WFS3_MAX_LIMIT
144
+ - QGIS_SERVER_LANDING_PAGE_PROJECTS_DIRECTORIES
145
+ - QGIS_SERVER_OVERRIDE_SYSTEM_LOCALE
88
146
 
89
147
  tinyows:
90
148
  image: camptocamp/tinyows:master
@@ -92,7 +150,7 @@ services:
92
150
  restart: unless-stopped
93
151
 
94
152
  redis:
95
- image: redis:6
153
+ image: &redis-image redis:7.0
96
154
  user: www-data
97
155
  restart: unless-stopped
98
156
  command:
@@ -109,10 +167,10 @@ services:
109
167
  - '30'
110
168
 
111
169
  redis_master:
112
- image: redis:6
170
+ image: *redis-image
113
171
 
114
172
  redis_slave:
115
- image: redis:6
173
+ image: *redis-image
116
174
  command: redis-server --slaveof redis_master 6379
117
175
 
118
176
  redis_sentinel:
@@ -123,16 +181,21 @@ services:
123
181
  - MASTER=redis_master
124
182
 
125
183
  tilecloudchain:
126
- image: camptocamp/tilecloud-chain:1.15
184
+ image: &tilecloudchain-image camptocamp/tilecloud-chain:1.17
127
185
  user: www-data
128
186
  restart: unless-stopped
129
187
  environment:
130
188
  - DEVELOPMENT
131
- - GUNICORN_PARAMS
132
189
  - VISIBLE_ENTRY_POINT
133
190
  - TILEGENERATION_CONFIGFILE=/etc/tilegeneration/config.yaml
134
191
  - AWS_ACCESS_KEY_ID
135
192
  - AWS_SECRET_ACCESS_KEY
193
+ - AZURE_STORAGE_CONNECTION_STRING
194
+ - AZURE_STORAGE_ACCOUNT
195
+ - AZURE_STORAGE_ACCESS_TOKEN
196
+ - AZURE_STORAGE_ACCESS_KEY
197
+ - AZURE_STORAGE_SAS_TOKEN
198
+ - AZURE_STORAGE_ACCOUNT_URL
136
199
  - C2C_BASE_PATH
137
200
  - C2C_REDIS_URL
138
201
  - C2C_REDIS_SENTINELS
@@ -148,6 +211,14 @@ services:
148
211
  - C2C_PROFILER_PATH
149
212
  - C2C_PROFILER_MODULES
150
213
  - C2C_SECRET
214
+ - C2C_AUTH_GITHUB_REPOSITORY
215
+ - C2C_AUTH_GITHUB_ACCESS_TYPE
216
+ - C2C_AUTH_GITHUB_CLIENT_ID
217
+ - C2C_AUTH_GITHUB_CLIENT_SECRET
218
+ - C2C_AUTH_GITHUB_SCOPE
219
+ - C2C_AUTH_GITHUB_SECRET
220
+ - C2C_AUTH_GITHUB_PROXY_URL
221
+ - C2C_USE_SESSION=true
151
222
  - TILECLOUD_LOG_LEVEL
152
223
  - TILECLOUD_CHAIN_LOG_LEVEL
153
224
  - C2CWSGI_LOG_LEVEL
@@ -155,7 +226,7 @@ services:
155
226
  - LOG_TYPE
156
227
 
157
228
  tilegeneration_slave:
158
- image: camptocamp/tilecloud-chain:1.15
229
+ image: *tilecloudchain-image
159
230
  user: www-data
160
231
  restart: unless-stopped
161
232
  entrypoint:
@@ -165,12 +236,18 @@ services:
165
236
  environment:
166
237
  - AWS_ACCESS_KEY_ID
167
238
  - AWS_SECRET_ACCESS_KEY
239
+ - AZURE_STORAGE_CONNECTION_STRING
240
+ - AZURE_STORAGE_ACCOUNT
241
+ - AZURE_STORAGE_ACCESS_TOKEN
242
+ - AZURE_STORAGE_ACCESS_KEY
243
+ - AZURE_STORAGE_SAS_TOKEN
244
+ - AZURE_STORAGE_ACCOUNT_URL
168
245
 
169
246
  geoportal:
170
- image: ${DOCKER_BASE}-geoportal:${DOCKER_TAG}
247
+ image: camptocamp/geomapfishapp-geoportal:${GEOMAPFISH_MAIN_MINOR_VERSION}
171
248
  user: www-data
172
249
  restart: unless-stopped
173
- environment:
250
+ environment: &geoportal-env
174
251
  - DEVELOPMENT
175
252
  - VISIBLE_ENTRY_POINT
176
253
  - PACKAGE
@@ -182,16 +259,28 @@ services:
182
259
  - PGPASSWORD
183
260
  - PGDATABASE
184
261
  - PGSSLMODE
262
+ - PGSCHEMA
185
263
  - PGSCHEMA_STATIC
186
264
  - PGOPTIONS
187
265
  - SQLALCHEMY_POOL_RECYCLE
188
266
  - SQLALCHEMY_POOL_SIZE
189
267
  - SQLALCHEMY_MAX_OVERFLOW
268
+ - SQLALCHEMY_SLAVE_POOL_RECYCLE
269
+ - SQLALCHEMY_SLAVE_POOL_SIZE
270
+ - SQLALCHEMY_SLAVE_MAX_OVERFLOW
190
271
  - AWS_ACCESS_KEY_ID
191
272
  - AWS_SECRET_ACCESS_KEY
192
273
  - AWS_DEFAULT_REGION
193
274
  - AWS_S3_ENDPOINT
194
- - GUNICORN_PARAMS
275
+ - AZURE_STORAGE_CONNECTION_STRING
276
+ - AZURE_STORAGE_ACCOUNT
277
+ - AZURE_STORAGE_ACCESS_TOKEN
278
+ - AZURE_STORAGE_ACCESS_KEY
279
+ - AZURE_STORAGE_SAS_TOKEN
280
+ - CPL_VSIL_CURL_USE_CACHE
281
+ - CPL_VSIL_CURL_CACHE_SIZE
282
+ - CPL_VSIL_CURL_USE_HEAD
283
+ - GDAL_DISABLE_READDIR_ON_OPEN
195
284
  - VISIBLE_WEB_HOST
196
285
  - VISIBLE_WEB_PROTOCOL
197
286
  - AUTHTKT_TIMEOUT
@@ -227,19 +316,43 @@ services:
227
316
  - C2C_PROFILER_MODULES
228
317
  - C2C_DEBUG_VIEW_ENABLED=TRUE
229
318
  - C2C_SECRET
319
+ - C2C_AUTH_GITHUB_REPOSITORY
320
+ - C2C_AUTH_GITHUB_ACCESS_TYPE
321
+ - C2C_AUTH_GITHUB_CLIENT_ID
322
+ - C2C_AUTH_GITHUB_CLIENT_SECRET
323
+ - C2C_AUTH_GITHUB_SCOPE
324
+ - C2C_AUTH_GITHUB_SECRET
325
+ - C2C_AUTH_GITHUB_PROXY_URL
230
326
  - LOG_LEVEL
231
327
  - C2CGEOPORTAL_LOG_LEVEL
232
328
  - SQL_LOG_LEVEL
233
329
  - GUNICORN_LOG_LEVEL
234
330
  - OTHER_LOG_LEVEL
235
331
  - DOGPILECACHE_LOG_LEVEL
332
+ - C2CWSGIUTILS_LOG_LEVEL
236
333
  - LOG_TYPE
334
+ - C2CGEOPORTAL_THEME_TIMEOUT=300
335
+
336
+ geoportal-advance:
337
+ image: ${DOCKER_BASE}-geoportal:${DOCKER_TAG}
338
+ build: &geoportal-build
339
+ context: geoportal
340
+ args:
341
+ GIT_HASH: ${GIT_HASH}
342
+ PGSCHEMA: ${PGSCHEMA}
343
+ GEOMAPFISH_VERSION: ${GEOMAPFISH_VERSION}
344
+ GEOMAPFISH_MAIN_VERSION: ${GEOMAPFISH_MAIN_VERSION}
345
+ GEOMAPFISH_MAIN_MINOR_VERSION: ${GEOMAPFISH_MAIN_MINOR_VERSION}
346
+ user: www-data
347
+ restart: unless-stopped
348
+ environment: *geoportal-env
237
349
 
238
350
  tools:
239
351
  image: camptocamp/geomapfish-tools:${GEOMAPFISH_VERSION}
240
352
  restart: unless-stopped
353
+ volumes:
354
+ - .:/src
241
355
  environment:
242
- - PGSCHEMA
243
356
  # From geoportal
244
357
  - DEVELOPMENT
245
358
  - VISIBLE_ENTRY_POINT
@@ -252,13 +365,18 @@ services:
252
365
  - PGPASSWORD
253
366
  - PGDATABASE
254
367
  - PGSSLMODE
368
+ - PGSCHEMA
255
369
  - PGSCHEMA_STATIC
256
370
  - PGOPTIONS
257
371
  - AWS_ACCESS_KEY_ID
258
372
  - AWS_SECRET_ACCESS_KEY
259
373
  - AWS_DEFAULT_REGION
260
374
  - AWS_S3_ENDPOINT
261
- - GUNICORN_PARAMS
375
+ - AZURE_STORAGE_CONNECTION_STRING
376
+ - AZURE_STORAGE_ACCOUNT
377
+ - AZURE_STORAGE_ACCESS_TOKEN
378
+ - AZURE_STORAGE_ACCESS_KEY
379
+ - AZURE_STORAGE_SAS_TOKEN
262
380
  - VISIBLE_WEB_HOST
263
381
  - VISIBLE_WEB_PROTOCOL
264
382
  - AUTHTKT_TIMEOUT
@@ -293,17 +411,18 @@ services:
293
411
  - C2C_PROFILER_PATH
294
412
  - C2C_PROFILER_MODULES
295
413
  - C2C_DEBUG_VIEW_ENABLED=TRUE
296
- - C2C_SECRET
297
414
  - LOG_LEVEL
298
415
  - C2CGEOPORTAL_LOG_LEVEL
299
416
  - SQL_LOG_LEVEL
300
417
  - GUNICORN_LOG_LEVEL
301
418
  - OTHER_LOG_LEVEL
302
419
  - DOGPILECACHE_LOG_LEVEL
420
+ - C2CWSGIUTILS_LOG_LEVEL
303
421
  - LOG_TYPE
422
+ - SUFFIX=
304
423
 
305
- alembic:
306
- image: ${DOCKER_BASE}-geoportal:${DOCKER_TAG}
424
+ alembic: &alembic
425
+ image: camptocamp/geomapfishapp-geoportal:${GEOMAPFISH_MAIN_VERSION}
307
426
  user: www-data
308
427
  entrypoint: []
309
428
  command:
@@ -323,11 +442,16 @@ services:
323
442
  - PGSCHEMA_STATIC
324
443
  - LOG_TYPE
325
444
 
445
+ alembic-advance:
446
+ <<: *alembic
447
+ image: ${DOCKER_BASE}-geoportal:${DOCKER_TAG}
448
+ build: *geoportal-build
449
+
326
450
  front:
327
- image: haproxy:2.2
451
+ image: haproxy:2.6.7
328
452
  restart: unless-stopped
329
453
  volumes:
330
- - /dev/log:/dev/log:rw
454
+ - ${FRONT_LOG_DIRECTORY}:/dev/log:rw
331
455
  command:
332
456
  - haproxy
333
457
  - -f
@@ -337,6 +461,13 @@ services:
337
461
 
338
462
  webpack_dev_server:
339
463
  image: ${DOCKER_BASE}-geoportal-dev:${DOCKER_TAG}
464
+ build:
465
+ context: geoportal
466
+ target: builder
467
+ args:
468
+ GEOMAPFISH_VERSION: ${GEOMAPFISH_VERSION}
469
+ GEOMAPFISH_MAIN_VERSION: ${GEOMAPFISH_MAIN_VERSION}
470
+ GEOMAPFISH_MAIN_MINOR_VERSION: ${GEOMAPFISH_MAIN_MINOR_VERSION}
340
471
  volumes:
341
472
  - ./geoportal/${PACKAGE}_geoportal/static-ngeo:/app/${PACKAGE}_geoportal/static-ngeo
342
473
  environment:
@@ -356,3 +487,15 @@ services:
356
487
  - AWS_SECRET_ACCESS_KEY
357
488
  - AWS_DEFAULT_REGION
358
489
  - AWS_S3_ENDPOINT
490
+ - AZURE_STORAGE_CONNECTION_STRING
491
+ - AZURE_STORAGE_ACCOUNT
492
+ - AZURE_STORAGE_ACCESS_TOKEN
493
+ - AZURE_STORAGE_ACCESS_KEY
494
+ - AZURE_STORAGE_SAS_TOKEN
495
+
496
+ db:
497
+ image: camptocamp/postgres:${POSTGRES_TAG}
498
+ environment:
499
+ - POSTGRES_PASSWORD=${PGPASSWORD}
500
+ - POSTGRES_DB=${PGDATABASE}
501
+ - POSTGRES_USER=${PGUSER}
@@ -0,0 +1,23 @@
1
+ # This file is used to run QGIS client from the Docker image
2
+
3
+ version: '2'
4
+
5
+ services:
6
+ qgis:
7
+ extends:
8
+ file: docker-compose-lib.yaml
9
+ service: qgisserver
10
+ image: camptocamp/qgis-server:${QGIS_VERSION}-desktop
11
+ user: root
12
+ volumes_from:
13
+ - config
14
+ volumes:
15
+ - ${HOME}:${HOME}
16
+ - /tmp/.X11-unix:/tmp/.X11-unix
17
+ environment:
18
+ - PGSERVICEFILE=/etc/qgisserver/pg_service.conf
19
+ - DISPLAY=unix${DISPLAY}
20
+ - QGIS_DEBUG=0
21
+ - QGIS_LOG_FILE=/dev/null
22
+ - PGOPTIONS=-c statement_timeout=30000
23
+ - AZURE_STORAGE_CONNECTION_STRING