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
@@ -1,14 +1,20 @@
1
- FROM camptocamp/geomapfish-tools:{{geomapfish_version}} as builder
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
2
5
  LABEL maintainer Camptocamp "info@camptocamp.com"
3
6
 
7
+ COPY requirements.txt /tmp/requirements.txt
8
+ RUN --mount=type=cache,target=/root/.cache \
9
+ python3 -m pip install --disable-pip-version-check --requirement=/tmp/requirements.txt
10
+
4
11
  WORKDIR /app
5
12
  COPY webpack.*.js Makefile CONST_Makefile /app/
6
- COPY {{package}}_geoportal/static-ngeo /app/{{package}}_geoportal/static-ngeo
13
+ COPY {{cookiecutter.package}}_geoportal/static-ngeo /app/{{cookiecutter.package}}_geoportal/static-ngeo
7
14
  RUN make apps
8
15
 
9
16
  COPY . /app
10
17
 
11
- RUN make checks
12
18
  RUN make build
13
19
  RUN mv webpack.apps.js webpack.apps.js.tmpl
14
20
 
@@ -17,12 +23,11 @@ CMD [ "webpack-dev-server", "--mode=development", "--debug", "--watch", "--no-in
17
23
 
18
24
  ###############################################################################
19
25
 
20
- FROM camptocamp/geomapfish:{{geomapfish_main_version}} as runner
26
+ FROM camptocamp/geomapfish:{{cookiecutter.geomapfish_major_version_tag_env}} as runner
21
27
 
22
28
  COPY requirements.txt /tmp/requirements.txt
23
- RUN \
24
- python3 -m pip install --disable-pip-version-check --no-cache-dir --requirement=/tmp/requirements.txt && \
25
- rm --recursive --force /tmp/* /var/tmp/* /root/.cache/*
29
+ RUN --mount=type=cache,target=/root/.cache \
30
+ python3 -m pip install --disable-pip-version-check --requirement=/tmp/requirements.txt
26
31
 
27
32
  WORKDIR /app
28
33
  COPY . /app
@@ -33,10 +38,11 @@ COPY --from=builder /etc/static-ngeo/* /etc/static-ngeo/
33
38
  COPY --from=builder /app/alembic.ini /app/alembic.yaml ./
34
39
  RUN chmod go+w /etc/static-ngeo/
35
40
 
36
- RUN python3 -m pip install --disable-pip-version-check --no-cache-dir --editable=/app/ && \
37
- python3 -m compileall -q /usr/local/lib/python3.* \
38
- -x '/(ptvsd|pipenv|.*pydev.*|networkx)/' && \
39
- python3 -m compileall -q /app/{{package}}_geoportal -x /app/{{package}}_geoportal/static.*
41
+ RUN --mount=type=cache,target=/root/.cache \
42
+ python3 -m pip install --disable-pip-version-check --editable=/app/ \
43
+ && python3 -m compileall -q /usr/local/lib/python3.* \
44
+ -x '/(ptvsd|.*pydev.*|networkx)/' \
45
+ && python3 -m compileall -q /app/{{cookiecutter.package}}_geoportal -x /app/{{cookiecutter.package}}_geoportal/static.*
40
46
 
41
47
  ARG GIT_HASH
42
48
  RUN c2cwsgiutils-genversion ${GIT_HASH}
@@ -45,7 +51,7 @@ ARG PGSCHEMA
45
51
  ENV PGSCHEMA=${PGSCHEMA}
46
52
 
47
53
  ENTRYPOINT [ "/usr/bin/eval-templates" ]
48
- CMD ["c2cwsgiutils-run"]
54
+ CMD ["gunicorn", "--paste=/app/production.ini"]
49
55
 
50
56
  ENV VISIBLE_ENTRY_POINT=/ \
51
57
  AUTHTKT_TIMEOUT=86400 \
@@ -60,7 +66,8 @@ ENV VISIBLE_ENTRY_POINT=/ \
60
66
  C2CGEOPORTAL_LOG_LEVEL=INFO \
61
67
  C2CWSGIUTILS_LOG_LEVEL=INFO \
62
68
  GUNICORN_LOG_LEVEL=INFO \
63
- SQL_LOG_LEVEL=WARN \
69
+ SQL_LOG_LEVEL=WARNING \
64
70
  DOGPILECACHE_LOG_LEVEL=INFO \
65
- OTHER_LOG_LEVEL=WARN \
66
- DEVELOPMENT=False
71
+ OTHER_LOG_LEVEL=WARNING \
72
+ DEVELOPMENT=0 \
73
+ LOG_TYPE=console
@@ -3,7 +3,7 @@ vars:
3
3
  schema: '{PGSCHEMA}'
4
4
  schema_static: '{PGSCHEMA_STATIC}'
5
5
  sqlalchemy.url: postgresql://{PGUSER}:{PGPASSWORD}@{PGHOST}:{PGPORT}/{PGDATABASE}?sslmode={PGSSLMODE}
6
- srid: {{srid}}
6
+ srid: {{cookiecutter.srid}}
7
7
  environment:
8
8
  - name: PGHOST
9
9
  - name: PGPORT
@@ -1,16 +1,30 @@
1
+ ###
2
+ # app configuration
3
+ # https://docs.pylonsproject.org/projects/pyramid/en/1.6-branch/narr/environment.html
4
+ # this file consider that you use paste.
5
+ ###
6
+
1
7
  [app:app]
2
- use = egg:{{package}}_geoportal
8
+ use = egg:{{cookiecutter.package}}_geoportal
3
9
  filter-with = proxy-prefix
4
- pyramid.reload_templates = true
5
- pyramid.debug_authorization = false
6
- pyramid.debug_notfound = true
7
- pyramid.debug_routematch = false
8
- pyramid.debug_templates = true
9
- pyramid.includes =
10
- pyramid_debugtoolbar
11
- debugtoolbar.hosts = 0.0.0.0/0
12
- mako.directories = {{package}}_geoportal:templates
10
+
11
+ pyramid.reload_templates = %(DEVELOPMENT)s
12
+ pyramid.debug_authorization = %(DEVELOPMENT)s
13
+ pyramid.debug_notfound = %(DEVELOPMENT)s
14
+ pyramid.debug_routematch = %(DEVELOPMENT)s
15
+ pyramid.debug_templates = %(DEVELOPMENT)s
16
+
17
+ pyramid.includes = pyramid_debugtoolbar
18
+ # Be careful when manipulate this,
19
+ # if a hacker has access to the debug toolbar,
20
+ # it's a severe security issue
21
+ # With the provided values, the debug toolbar is only available from the Docker network
22
+ debugtoolbar.hosts = 172.17.0.0/16
23
+ 172.18.0.0/16
24
+ 172.19.0.0/16
25
+ mako.directories = {{cookiecutter.package}}_geoportal:templates
13
26
  c2cgeoportal_geoportal:templates
27
+
14
28
  authtkt_secret = %(AUTHTKT_SECRET)s
15
29
  authtkt_cookie_name = %(AUTHTKT_COOKIENAME)s
16
30
  authtkt_timeout = %(AUTHTKT_TIMEOUT)s
@@ -23,13 +37,18 @@ basicauth = %(BASICAUTH)s
23
37
 
24
38
  app.cfg = /etc/geomapfish/config.yaml
25
39
 
40
+ tm.annotate_user = false
41
+
42
+ [server:main]
43
+ use = egg:waitress#main
44
+ listen = *:8080
45
+
26
46
  [filter:proxy-prefix]
27
47
  use = egg:PasteDeploy#prefix
28
48
  prefix = %(VISIBLE_ENTRY_POINT)s
29
49
 
30
50
  [pipeline:main]
31
- pipeline =
32
- app
51
+ pipeline = egg:c2cwsgiutils#client_info egg:c2cwsgiutils#sentry app
33
52
 
34
53
  ###
35
54
  # logging configuration
@@ -37,7 +56,7 @@ pipeline =
37
56
  ###
38
57
 
39
58
  [loggers]
40
- keys = root, sqlalchemy, gunicorn, c2cgeoportal_commons, c2cgeoportal_geoportal, c2cgeoportal_admin, {{package}}_geoportal, c2cwsgiutils, dogpilecache
59
+ keys = root, sqlalchemy, gunicorn, c2cgeoportal_commons, c2cgeoportal_geoportal, c2cgeoportal_admin, {{cookiecutter.package}}_geoportal, c2cwsgiutils, dogpilecache
41
60
 
42
61
  [handlers]
43
62
  keys = console
@@ -64,10 +83,10 @@ level = %(C2CGEOPORTAL_LOG_LEVEL)s
64
83
  handlers =
65
84
  qualname = c2cgeoportal_admin
66
85
 
67
- [logger_{{package}}_geoportal]
86
+ [logger_{{cookiecutter.package}}_geoportal]
68
87
  level = %(LOG_LEVEL)s
69
88
  handlers =
70
- qualname = {{package}}_geoportal
89
+ qualname = {{cookiecutter.package}}_geoportal
71
90
 
72
91
  [logger_c2cwsgiutils]
73
92
  level = %(C2CWSGIUTILS_LOG_LEVEL)s
@@ -0,0 +1,100 @@
1
+ # Copyright (c) 2019-2024, Camptocamp SA
2
+ # All rights reserved.
3
+
4
+ # Redistribution and use in source and binary forms, with or without
5
+ # modification, are permitted provided that the following conditions are met:
6
+
7
+ # 1. Redistributions of source code must retain the above copyright notice, this
8
+ # list of conditions and the following disclaimer.
9
+ # 2. Redistributions in binary form must reproduce the above copyright notice,
10
+ # this list of conditions and the following disclaimer in the documentation
11
+ # and/or other materials provided with the distribution.
12
+
13
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
14
+ # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15
+ # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
17
+ # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
18
+ # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19
+ # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
20
+ # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
22
+ # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23
+
24
+ # The views and conclusions contained in the software and documentation are those
25
+ # of the authors and should not be interpreted as representing official policies,
26
+ # either expressed or implied, of the FreeBSD Project.
27
+
28
+ ###
29
+ # app configuration
30
+ # https://docs.gunicorn.org/en/stable/settings.html
31
+ ###
32
+
33
+ import os
34
+
35
+ from c2cwsgiutils import get_config_defaults
36
+
37
+ bind = ":8080"
38
+
39
+ worker_class = "gthread"
40
+ workers = int(os.environ.get("GUNICORN_WORKERS", 2))
41
+ threads = int(os.environ.get("GUNICORN_THREADS", 10))
42
+
43
+ timeout = int(os.environ.get("GUNICORN_TIMEOUT", 120))
44
+
45
+ max_requests = int(os.environ.get("GUNICORN_MAX_REQUESTS", 1000))
46
+ max_requests_jitter = int(os.environ.get("GUNICORN_MAX_REQUESTS_JITTER", 100))
47
+ worker_tmp_dir = "/dev/shm" # nosec
48
+ limit_request_line = int(os.environ.get("GUNICORN_LIMIT_REQUEST_LINE", 8190))
49
+
50
+ accesslog = "-"
51
+ access_log_format = os.environ.get(
52
+ "GUNICORN_ACCESS_LOG_FORMAT",
53
+ '%(H)s %({Host}i)s %(m)s %(U)s?%(q)s "%(f)s" "%(a)s" %(s)s %(B)s %(D)s %(p)s',
54
+ )
55
+
56
+ ###
57
+ # logging configuration
58
+ # https://docs.python.org/3/library/logging.config.html#logging-config-dictschema
59
+ ###
60
+ logconfig_dict = {
61
+ "version": 1,
62
+ "root": {
63
+ "level": os.environ["OTHER_LOG_LEVEL"],
64
+ "handlers": [os.environ["LOG_TYPE"]],
65
+ },
66
+ "loggers": {
67
+ "gunicorn.error": {"level": os.environ["GUNICORN_LOG_LEVEL"]},
68
+ # "level = INFO" logs SQL queries.
69
+ # "level = DEBUG" logs SQL queries and results.
70
+ # "level = WARN" logs neither. (Recommended for production systems.)
71
+ "sqlalchemy.engine": {"level": os.environ["SQL_LOG_LEVEL"]},
72
+ "dogpile.cache": {"level": os.environ["DOGPILECACHE_LOG_LEVEL"]},
73
+ "c2cwsgiutils": {"level": os.environ["C2CWSGIUTILS_LOG_LEVEL"]},
74
+ "c2cgeoportal_commons": {"level": os.environ["C2CGEOPORTAL_LOG_LEVEL"]},
75
+ "c2cgeoportal_geoportal": {"level": os.environ["C2CGEOPORTAL_LOG_LEVEL"]},
76
+ "c2cgeoportal_admin": {"level": os.environ["C2CGEOPORTAL_LOG_LEVEL"]},
77
+ "{{cookiecutter.package}}_geoportal": {"level": os.environ["LOG_LEVEL"]},
78
+ },
79
+ "handlers": {
80
+ "console": {
81
+ "class": "logging.StreamHandler",
82
+ "formatter": "generic",
83
+ "stream": "ext://sys.stdout",
84
+ },
85
+ "json": {
86
+ "class": "c2cwsgiutils.pyramid_logging.JsonLogHandler",
87
+ "formatter": "generic",
88
+ "stream": "ext://sys.stdout",
89
+ },
90
+ },
91
+ "formatters": {
92
+ "generic": {
93
+ "format": "%(asctime)s [%(process)d] [%(levelname)-5.5s] %(message)s",
94
+ "datefmt": "[%Y-%m-%d %H:%M:%S %z]",
95
+ "class": "logging.Formatter",
96
+ }
97
+ },
98
+ }
99
+
100
+ raw_paste_global_conf = ["=".join(e) for e in get_config_defaults().items()]
@@ -2,3 +2,4 @@
2
2
  .js = geomapfish-angular
3
3
  .html = geomapfish-angular
4
4
  .ejs = geomapfish-angular
5
+ .yaml = geomapfish-config
@@ -0,0 +1,38 @@
1
+ ###
2
+ # app configuration
3
+ # http://docs.pylonsproject.org/projects/pyramid/en/1.6-branch/narr/environment.html
4
+ # this file should be used by gunicorn.
5
+ ###
6
+ [app:app]
7
+ use = egg:{{cookiecutter.package}}_geoportal
8
+ filter-with = proxy-prefix
9
+
10
+ pyramid.reload_templates = %(DEVELOPMENT)s
11
+ pyramid.debug_authorization = %(DEVELOPMENT)s
12
+ pyramid.debug_notfound = %(DEVELOPMENT)s
13
+ pyramid.debug_routematch = %(DEVELOPMENT)s
14
+ pyramid.debug_templates = %(DEVELOPMENT)s
15
+
16
+ mako.directories = {{cookiecutter.package}}_geoportal:templates
17
+ c2cgeoportal_geoportal:templates
18
+
19
+ authtkt_secret = %(AUTHTKT_SECRET)s
20
+ authtkt_cookie_name = %(AUTHTKT_COOKIENAME)s
21
+ authtkt_timeout = %(AUTHTKT_TIMEOUT)s
22
+ authtkt_max_age = %(AUTHTKT_MAXAGE)s
23
+ authtkt_reissue_time = %(AUTHTKT_REISSUE_TIME)s
24
+ authtkt_http_only = %(AUTHTKT_HTTP_ONLY)s
25
+ authtkt_secure = %(AUTHTKT_SECURE)s
26
+ authtkt_samesite = %(AUTHTKT_SAMESITE)s
27
+ basicauth = %(BASICAUTH)s
28
+
29
+ app.cfg = /etc/geomapfish/config.yaml
30
+
31
+ tm.annotate_user = false
32
+
33
+ [filter:proxy-prefix]
34
+ use = egg:PasteDeploy#prefix
35
+ prefix = %(VISIBLE_ENTRY_POINT)s
36
+
37
+ [pipeline:main]
38
+ pipeline = egg:c2cwsgiutils#client_info egg:c2cwsgiutils#sentry app
@@ -1,15 +1,14 @@
1
1
  #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
2
 
4
3
  from setuptools import find_packages, setup
5
4
 
6
5
  setup(
7
- name="{{package}}_geoportal",
6
+ name="{{cookiecutter.package}}_geoportal",
8
7
  version="1.0",
9
- description="{{package}}, a c2cgeoportal project",
10
- author="{{package}}",
11
- author_email="info@{{package}}.com",
12
- url="https://www.{{package}}.com/",
8
+ description="{{cookiecutter.package}}, a c2cgeoportal project",
9
+ author="{{cookiecutter.package}}",
10
+ author_email="info@{{cookiecutter.package}}.com",
11
+ url="https://www.{{cookiecutter.package}}.com/",
13
12
  install_requires=[
14
13
  "c2cgeoportal_geoportal",
15
14
  "c2cgeoportal_admin",
@@ -19,7 +18,7 @@ setup(
19
18
  zip_safe=False,
20
19
  entry_points={
21
20
  "paste.app_factory": [
22
- "main = {{package}}_geoportal:main",
21
+ "main = {{cookiecutter.package}}_geoportal:main",
23
22
  ],
24
23
  "console_scripts": [],
25
24
  },
@@ -0,0 +1,8 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "module": "commonjs",
5
+ "lib": ["es2020", "dom"]
6
+ },
7
+ "include": ["{{cookiecutter.package}}_geoportal/static-ngeo/js/**/*.js"]
8
+ }
@@ -0,0 +1,77 @@
1
+ const path = require('path');
2
+ const TerserPlugin = require('terser-webpack-plugin');
3
+
4
+ const destDir = '/etc/static-ngeo/';
5
+
6
+ const babelPresets = [
7
+ [
8
+ require.resolve('@babel/preset-env'),
9
+ {
10
+ targets: 'defaults, > 0.1% in CH, > 0.1% in FR, Firefox ESR and supports es6-class and not iOS < 10',
11
+ modules: false,
12
+ loose: true,
13
+ },
14
+ ],
15
+ ];
16
+
17
+ module.exports = (env, argv) => {
18
+ const library = argv.library ? argv.library : '{{cookiecutter.package}}';
19
+ return {
20
+ entry: path.resolve(__dirname, '{{cookiecutter.package}}_geoportal/static-ngeo/api/index.js'),
21
+ devtool: 'source-map',
22
+ mode: 'production',
23
+ module: {
24
+ rules: [
25
+ {
26
+ test: /\.js$/,
27
+ use: {
28
+ loader: 'babel-loader',
29
+ options: {
30
+ presets: babelPresets,
31
+ babelrc: false,
32
+ comments: false,
33
+ plugins: [
34
+ require.resolve('babel-plugin-angularjs-annotate'),
35
+ require.resolve('@babel/plugin-proposal-nullish-coalescing-operator'),
36
+ require.resolve('@babel/plugin-proposal-optional-chaining'),
37
+ ],
38
+ },
39
+ },
40
+ },
41
+ ],
42
+ },
43
+ output: {
44
+ filename: 'api.js',
45
+ path: destDir,
46
+ libraryTarget: 'umd',
47
+ globalObject: 'this',
48
+ libraryExport: 'default',
49
+ library: library,
50
+ },
51
+ optimization: {
52
+ minimizer: [
53
+ new TerserPlugin({
54
+ parallel: true,
55
+ sourceMap: true,
56
+ terserOptions: {
57
+ compress: false,
58
+ },
59
+ }),
60
+ ],
61
+ },
62
+ resolve: {
63
+ modules: [
64
+ '/usr/lib/node_modules',
65
+ '/usr/lib/node_modules/ol/node_modules',
66
+ '/usr/lib/node_modules/proj4/node_modules',
67
+ ],
68
+ alias: {
69
+ api: '/usr/lib/node_modules/ngeo/api/src',
70
+ ngeo: '/usr/lib/node_modules/ngeo/src',
71
+ },
72
+ },
73
+ resolveLoader: {
74
+ modules: ['/usr/lib/node_modules'],
75
+ },
76
+ };
77
+ };
@@ -7,11 +7,13 @@ const entry = {};
7
7
 
8
8
  // The dev mode will be used for builds on local machine outside docker
9
9
  const nodeEnv = process.env['NODE_ENV'] || 'development';
10
- const dev = nodeEnv == 'development'
10
+ const dev = nodeEnv == 'development';
11
11
 
12
- for (const filename of ls(path.resolve(__dirname, '{{package}}_geoportal/static-ngeo/js/apps/*.html.ejs'))) {
12
+ for (const filename of ls(
13
+ path.resolve(__dirname, '{{cookiecutter.package}}_geoportal/static-ngeo/js/apps/*.html.ejs')
14
+ )) {
13
15
  const name = filename.file.substr(0, filename.file.length - '.html.ejs'.length);
14
- entry[name] = '{{package}}/apps/Controller' + name + '.js';
16
+ entry[name] = '{{cookiecutter.package}}/apps/Controller' + name + '.js';
15
17
  plugins.push(
16
18
  new HtmlWebpackPlugin({
17
19
  template: filename.full,
@@ -21,53 +23,49 @@ for (const filename of ls(path.resolve(__dirname, '{{package}}_geoportal/static-
21
23
  chunks: [name],
22
24
  vars: {
23
25
  entry_point: '${VISIBLE_ENTRY_POINT}',
24
- version: '{{geomapfish_version}}',
26
+ version: '{{cookiecutter.geomapfish_version}}',
25
27
  cache_version: '${CACHE_VERSION}',
26
- },
28
+ },
27
29
  })
28
30
  );
29
31
  }
30
32
 
31
- const babelPresets = [[require.resolve('@babel/preset-env'), {
32
- targets: {
33
- browsers: ['> 0.5% in CH', '> 0.5% in FR', 'Firefox ESR', 'ie 11'],
34
- },
35
- modules: false,
36
- loose: true,
37
- }]]
33
+ const babelPresets = [
34
+ [
35
+ require.resolve('@babel/preset-env'),
36
+ {
37
+ targets: 'defaults, > 0.1% in CH, > 0.1% in FR, Firefox ESR and supports es6-class and not iOS < 10',
38
+ modules: false,
39
+ loose: true,
40
+ },
41
+ ],
42
+ ];
38
43
 
39
44
  // Transform code to ES2015 and annotate injectable functions with an $inject array.
40
45
  const projectRule = {
41
- test: /{{package}}_geoportal\/static-ngeo\/js\/.*\.js$/,
46
+ test: /{{cookiecutter.package}}_geoportal\/static-ngeo\/js\/.*\.js$/,
42
47
  use: {
43
48
  loader: 'babel-loader',
44
49
  options: {
45
50
  presets: babelPresets,
46
51
  babelrc: false,
47
52
  comments: false,
48
- plugins: [
49
- require.resolve('@babel/plugin-syntax-object-rest-spread'),
50
- require.resolve('@babel/plugin-transform-spread'),
51
- require.resolve('babel-plugin-angularjs-annotate'),
52
- ],
53
- }
53
+ plugins: [require.resolve('babel-plugin-angularjs-annotate')],
54
+ },
54
55
  },
55
56
  };
56
-
57
- const rules = [
58
- projectRule,
59
- ];
57
+ const rules = [projectRule];
60
58
 
61
59
  const noDevServer = process.env['NO_DEV_SERVER'] == 'TRUE';
62
60
  const devServer = dev && !noDevServer;
63
61
 
64
- console.log("Use dev mode: " + dev)
65
- console.log("Use dev server mode: " + devServer)
62
+ console.log('Use dev mode: ' + dev);
63
+ console.log('Use dev server mode: ' + devServer);
66
64
 
67
65
  module.exports = {
68
66
  output: {
69
67
  path: '/etc/static-ngeo/',
70
- publicPath: devServer ? '${VISIBLE_ENTRY_POINT}dev/' : '.__ENTRY_POINT__static-ngeo/'
68
+ publicPath: devServer ? '${VISIBLE_ENTRY_POINT}dev/' : '.__ENTRY_POINT__static-ngeo/',
71
69
  },
72
70
  devServer: {
73
71
  publicPath: '${VISIBLE_WEB_PROTOCOL}://${VISIBLE_WEB_HOST}${VISIBLE_ENTRY_POINT}dev/',
@@ -77,13 +75,16 @@ module.exports = {
77
75
  },
78
76
  entry: entry,
79
77
  module: {
80
- rules
78
+ rules,
81
79
  },
82
80
  plugins: plugins,
83
81
  resolve: {
84
82
  modules: ['/usr/lib/node_modules'],
85
83
  alias: {
86
- {{package}}: path.resolve(__dirname, '{{package}}_geoportal/static-ngeo/js'),
84
+ '{{cookiecutter.package}}': path.resolve(
85
+ __dirname,
86
+ '{{cookiecutter.package}}_geoportal/static-ngeo/js'
87
+ ),
87
88
  },
88
89
  },
89
90
  };
@@ -4,17 +4,14 @@ const SassPlugin = require('ngeo/buildtools/webpack.plugin.js');
4
4
  const config = commons({
5
5
  DllReferencePluginOptions: {
6
6
  context: '/usr/lib/',
7
- }
7
+ },
8
+ browsers: 'defaults, > 0.1% in CH, > 0.1% in FR, Firefox ESR and supports es6-class and not iOS < 10',
8
9
  });
9
10
 
10
11
  for (const plugin of config.plugins) {
11
12
  if (plugin instanceof SassPlugin) {
12
- plugin.options.preReplacements = [
13
- [new RegExp('\\${VISIBLE_ENTRY_POINT}', 'g'), 'visible-entry-point'],
14
- ];
15
- plugin.options.postReplacements = [
16
- [new RegExp('visible-entry-point', 'g'), '${VISIBLE_ENTRY_POINT}'],
17
- ];
13
+ plugin.options.preReplacements = [[new RegExp('\\${VISIBLE_ENTRY_POINT}', 'g'), 'visible-entry-point']];
14
+ plugin.options.postReplacements = [[new RegExp('visible-entry-point', 'g'), '${VISIBLE_ENTRY_POINT}']];
18
15
  }
19
16
  }
20
17
 
@@ -1,4 +1,4 @@
1
- const { merge } = require('webpack-merge');
1
+ const {merge} = require('webpack-merge');
2
2
  const apps = require('./webpack.apps.js');
3
3
  const commons = require('./webpack.commons.js');
4
4
 
@@ -0,0 +1,42 @@
1
+ from pyramid.config import Configurator
2
+
3
+ import {{cookiecutter.package}}_geoportal.authentication
4
+ import {{cookiecutter.package}}_geoportal.dev
5
+ import {{cookiecutter.package}}_geoportal.multi_organization
6
+ from c2cgeoportal_geoportal import add_interface_config, locale_negotiator
7
+ from c2cgeoportal_geoportal.lib.i18n import LOCALE_PATH
8
+ from {{cookiecutter.package}}_geoportal.resources import Root
9
+
10
+
11
+ def main(global_config, **settings):
12
+ """
13
+ This function returns a Pyramid WSGI application.
14
+ """
15
+ del global_config # Unused
16
+
17
+ config = Configurator(
18
+ root_factory=Root,
19
+ settings=settings,
20
+ locale_negotiator=locale_negotiator,
21
+ )
22
+
23
+ config.include("c2cgeoportal_commons")
24
+
25
+ config.include({{cookiecutter.package}}_geoportal.authentication.includeme)
26
+
27
+ config.add_translation_dirs(LOCALE_PATH)
28
+
29
+ config.include("c2cgeoportal_geoportal")
30
+
31
+ config.include({{cookiecutter.package}}_geoportal.multi_organization.includeme)
32
+
33
+ # Scan view decorator for adding routes
34
+ config.scan()
35
+
36
+ # Add the interfaces
37
+ for interface in config.get_settings().get("interfaces", []):
38
+ add_interface_config(config, interface)
39
+
40
+ config.include({{cookiecutter.package}}_geoportal.dev.includeme)
41
+
42
+ return config.make_wsgi_app()
@@ -0,0 +1,10 @@
1
+ from pyramid.authorization import ACLAuthorizationPolicy
2
+ from pyramid.config import Configurator
3
+
4
+ from c2cgeoportal_geoportal.lib.authentication import create_authentication
5
+
6
+
7
+ def includeme(config: Configurator) -> None:
8
+ """Initialize the authentication( for a Pyramid app."""
9
+ config.set_authorization_policy(ACLAuthorizationPolicy())
10
+ config.set_authentication_policy(create_authentication(config.get_settings()))
@@ -0,0 +1,14 @@
1
+ from pyramid.config import Configurator
2
+
3
+
4
+ def includeme(config: Configurator) -> None:
5
+ """Initialize the development tools for a Pyramid app."""
6
+ del config # Unused.
7
+
8
+ try:
9
+ import ptvsd # pylint: disable=import-outside-toplevel
10
+
11
+ ptvsd.enable_attach(address=("172.17.0.1", 5678))
12
+ # ptvsd.wait_for_attach()
13
+ except ModuleNotFoundError:
14
+ pass
@@ -0,0 +1,8 @@
1
+ import logging
2
+
3
+ from pyramid.i18n import TranslationStringFactory
4
+
5
+ from c2cgeoportal_commons.models.main import * # noqa: ignore=F401, pylint: disable=unused-wildcard-import
6
+
7
+ _ = TranslationStringFactory("{{cookiecutter.package}}_geoportal-server")
8
+ LOG = logging.getLogger(__name__)
@@ -0,0 +1,7 @@
1
+ from pyramid.config import Configurator
2
+
3
+
4
+ def includeme(config: Configurator) -> None:
5
+ """Initialize the multi organization."""
6
+
7
+ del config # Unused