c2cgeoportal-geoportal 2.6.0__py2.py3-none-any.whl → 2.7.1.156__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 (212) hide show
  1. c2cgeoportal_geoportal/__init__.py +224 -84
  2. c2cgeoportal_geoportal/lib/__init__.py +67 -43
  3. c2cgeoportal_geoportal/lib/authentication.py +50 -22
  4. c2cgeoportal_geoportal/lib/bashcolor.py +17 -13
  5. c2cgeoportal_geoportal/lib/cacheversion.py +16 -8
  6. c2cgeoportal_geoportal/lib/caching.py +61 -191
  7. c2cgeoportal_geoportal/lib/check_collector.py +17 -10
  8. c2cgeoportal_geoportal/lib/checker.py +61 -63
  9. c2cgeoportal_geoportal/lib/common_headers.py +170 -0
  10. c2cgeoportal_geoportal/lib/dbreflection.py +54 -39
  11. c2cgeoportal_geoportal/lib/filter_capabilities.py +122 -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 +361 -237
  18. c2cgeoportal_geoportal/lib/loader.py +10 -15
  19. c2cgeoportal_geoportal/lib/metrics.py +28 -17
  20. c2cgeoportal_geoportal/lib/oauth2.py +214 -145
  21. c2cgeoportal_geoportal/lib/wmstparsing.py +115 -90
  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} +18 -9
  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 +102 -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/advance_create/{{cookiecutter.project}}/geoportal/requirements.txt +2 -0
  36. c2cgeoportal_geoportal/scaffolds/{create/geoportal/setup.py_tmpl → advance_create/{{cookiecutter.project}}/geoportal/setup.py} +6 -7
  37. c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/tools/extract-messages.js +8 -6
  38. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/tsconfig.json +8 -0
  39. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/webpack.api.js +75 -0
  40. c2cgeoportal_geoportal/scaffolds/{create/geoportal/webpack.apps.js_tmpl → advance_create/{{cookiecutter.project}}/geoportal/webpack.apps.js} +31 -28
  41. c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/webpack.commons.js +3 -7
  42. c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/webpack.config.js +1 -1
  43. c2cgeoportal_geoportal/scaffolds/{create/geoportal/+package+_geoportal/__init__.py_tmpl → advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/__init__.py} +11 -22
  44. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/authentication.py +10 -0
  45. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/dev.py +14 -0
  46. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/models.py +8 -0
  47. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/multi_organization.py +7 -0
  48. c2cgeoportal_geoportal/scaffolds/{create/geoportal/+package+_geoportal → advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/resources.py +4 -3
  49. 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
  50. 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
  51. c2cgeoportal_geoportal/scaffolds/{create/geoportal/+package+_geoportal/subscribers.py_tmpl → advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/subscribers.py} +1 -3
  52. c2cgeoportal_geoportal/scaffolds/advance_update/cookiecutter.json +18 -0
  53. c2cgeoportal_geoportal/scaffolds/{update/geoportal/CONST_Makefile_tmpl → advance_update/{{cookiecutter.project}}/geoportal/CONST_Makefile} +3 -7
  54. c2cgeoportal_geoportal/scaffolds/create/cookiecutter.json +18 -0
  55. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.dockerignore +14 -0
  56. c2cgeoportal_geoportal/scaffolds/create/{+dot+editorconfig → {{cookiecutter.project}}/.editorconfig} +2 -5
  57. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/main.yaml +43 -0
  58. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/rebuild.yaml +46 -0
  59. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/update_l10n.yaml +65 -0
  60. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.gitignore +16 -0
  61. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.prettierignore +1 -0
  62. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.prettierrc.yaml +2 -0
  63. c2cgeoportal_geoportal/scaffolds/create/{Dockerfile_tmpl → {{cookiecutter.project}}/Dockerfile} +20 -11
  64. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/Makefile +14 -0
  65. c2cgeoportal_geoportal/scaffolds/create/{README.rst_tmpl → {{cookiecutter.project}}/README.rst} +4 -4
  66. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/build +162 -0
  67. c2cgeoportal_geoportal/scaffolds/create/{ci/config.yaml_tmpl → {{cookiecutter.project}}/ci/config.yaml} +7 -5
  68. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/ci/requirements.txt +1 -0
  69. c2cgeoportal_geoportal/scaffolds/create/{docker-compose-lib.yaml → {{cookiecutter.project}}/docker-compose-lib.yaml} +133 -17
  70. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose.override.sample.yaml +67 -0
  71. c2cgeoportal_geoportal/scaffolds/create/{docker-compose.yaml → {{cookiecutter.project}}/docker-compose.yaml} +17 -12
  72. c2cgeoportal_geoportal/scaffolds/create/{env.default_tmpl → {{cookiecutter.project}}/env.default} +29 -14
  73. c2cgeoportal_geoportal/scaffolds/create/{env.project_tmpl → {{cookiecutter.project}}/env.project} +16 -4
  74. c2cgeoportal_geoportal/scaffolds/create/{geoportal/vars.yaml_tmpl → {{cookiecutter.project}}/geoportal/vars.yaml} +93 -27
  75. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/mobile.css +0 -0
  76. c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/data/Readme.txt +1 -1
  77. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/demo.map.tmpl +224 -0
  78. c2cgeoportal_geoportal/scaffolds/create/{mapserver/mapserver.map.tmpl_tmpl → {{cookiecutter.project}}/mapserver/mapserver.map.tmpl} +7 -15
  79. c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/A3_Landscape.jrxml +8 -8
  80. c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/A3_Portrait.jrxml +8 -8
  81. c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/A4_Landscape.jrxml +8 -8
  82. c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/A4_Portrait.jrxml +8 -8
  83. c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/config.yaml.tmpl +5 -4
  84. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/localisation.properties +4 -0
  85. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/localisation_fr.properties +4 -0
  86. c2cgeoportal_geoportal/scaffolds/create/{project.yaml_tmpl → {{cookiecutter.project}}/project.yaml} +6 -6
  87. c2cgeoportal_geoportal/scaffolds/create/{qgisserver/pg_service.conf.tmpl_tmpl → {{cookiecutter.project}}/qgisserver/pg_service.conf.tmpl} +2 -2
  88. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/scripts/db-backup +110 -0
  89. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/scripts/db-restore +114 -0
  90. c2cgeoportal_geoportal/scaffolds/create/{setup.cfg_tmpl → {{cookiecutter.project}}/setup.cfg} +1 -1
  91. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/spell-ignore-words.txt +3 -0
  92. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/tilegeneration/config.yaml.tmpl +195 -0
  93. c2cgeoportal_geoportal/scaffolds/update/cookiecutter.json +18 -0
  94. c2cgeoportal_geoportal/scaffolds/update/{+dot+upgrade.yaml_tmpl → {{cookiecutter.project}}/.upgrade.yaml} +49 -39
  95. c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/CONST_CHANGELOG.txt +1160 -0
  96. c2cgeoportal_geoportal/scaffolds/update/{geoportal → {{cookiecutter.project}}/geoportal}/CONST_config-schema.yaml +47 -2
  97. c2cgeoportal_geoportal/scaffolds/update/{geoportal/CONST_vars.yaml_tmpl → {{cookiecutter.project}}/geoportal/CONST_vars.yaml} +350 -17
  98. c2cgeoportal_geoportal/scripts/__init__.py +16 -30
  99. c2cgeoportal_geoportal/scripts/c2cupgrade.py +271 -232
  100. c2cgeoportal_geoportal/scripts/create_demo_theme.py +3 -6
  101. c2cgeoportal_geoportal/scripts/manage_users.py +34 -39
  102. c2cgeoportal_geoportal/scripts/pcreate.py +312 -0
  103. c2cgeoportal_geoportal/scripts/theme2fts.py +72 -23
  104. c2cgeoportal_geoportal/scripts/urllogin.py +19 -11
  105. c2cgeoportal_geoportal/templates/login.html +88 -84
  106. c2cgeoportal_geoportal/templates/notlogin.html +59 -59
  107. c2cgeoportal_geoportal/templates/testi18n.html +6 -8
  108. c2cgeoportal_geoportal/views/__init__.py +23 -4
  109. c2cgeoportal_geoportal/views/dev.py +9 -7
  110. c2cgeoportal_geoportal/views/dynamic.py +56 -19
  111. c2cgeoportal_geoportal/views/entry.py +93 -24
  112. c2cgeoportal_geoportal/views/fulltextsearch.py +28 -22
  113. c2cgeoportal_geoportal/views/geometry_processing.py +15 -7
  114. c2cgeoportal_geoportal/views/i18n.py +91 -9
  115. c2cgeoportal_geoportal/views/layers.py +160 -126
  116. c2cgeoportal_geoportal/views/login.py +106 -93
  117. c2cgeoportal_geoportal/views/mapserverproxy.py +46 -29
  118. c2cgeoportal_geoportal/views/memory.py +12 -12
  119. c2cgeoportal_geoportal/views/ogcproxy.py +48 -30
  120. c2cgeoportal_geoportal/views/pdfreport.py +26 -22
  121. c2cgeoportal_geoportal/views/printproxy.py +60 -52
  122. c2cgeoportal_geoportal/views/profile.py +24 -23
  123. c2cgeoportal_geoportal/views/proxy.py +87 -69
  124. c2cgeoportal_geoportal/views/raster.py +35 -24
  125. c2cgeoportal_geoportal/views/resourceproxy.py +13 -11
  126. c2cgeoportal_geoportal/views/shortener.py +27 -24
  127. c2cgeoportal_geoportal/views/theme.py +427 -321
  128. c2cgeoportal_geoportal/views/tinyowsproxy.py +46 -39
  129. c2cgeoportal_geoportal/views/vector_tiles.py +80 -0
  130. {c2cgeoportal_geoportal-2.6.0.dist-info → c2cgeoportal_geoportal-2.7.1.156.dist-info}/METADATA +25 -20
  131. c2cgeoportal_geoportal-2.7.1.156.dist-info/RECORD +185 -0
  132. {c2cgeoportal_geoportal-2.6.0.dist-info → c2cgeoportal_geoportal-2.7.1.156.dist-info}/WHEEL +1 -1
  133. {c2cgeoportal_geoportal-2.6.0.dist-info → c2cgeoportal_geoportal-2.7.1.156.dist-info}/entry_points.txt +3 -1
  134. tests/__init__.py +7 -3
  135. tests/test_cachebuster.py +0 -2
  136. tests/test_caching.py +17 -25
  137. tests/test_checker.py +0 -2
  138. tests/test_decimaljson.py +4 -4
  139. tests/test_headerstween.py +0 -2
  140. tests/test_i18n.py +1 -1
  141. tests/test_init.py +4 -7
  142. tests/test_locale_negociator.py +0 -2
  143. tests/test_mapserverproxy_route_predicate.py +0 -2
  144. tests/test_raster.py +0 -2
  145. tests/test_wmstparsing.py +0 -2
  146. c2cgeoportal_geoportal/scaffolds/__init__.py +0 -227
  147. c2cgeoportal_geoportal/scaffolds/create/+dot+dockerignore_tmpl +0 -12
  148. c2cgeoportal_geoportal/scaffolds/create/+dot+github/workflows/main.yaml_tmpl +0 -89
  149. c2cgeoportal_geoportal/scaffolds/create/+dot+github/workflows/rebuild.yaml_tmpl +0 -78
  150. c2cgeoportal_geoportal/scaffolds/create/+dot+gitignore_tmpl +0 -16
  151. c2cgeoportal_geoportal/scaffolds/create/Makefile +0 -3
  152. c2cgeoportal_geoportal/scaffolds/create/build_tmpl +0 -167
  153. c2cgeoportal_geoportal/scaffolds/create/ci/requirements.txt +0 -1
  154. c2cgeoportal_geoportal/scaffolds/create/ci/trigger +0 -68
  155. c2cgeoportal_geoportal/scaffolds/create/docker-compose.override.sample.yaml +0 -54
  156. c2cgeoportal_geoportal/scaffolds/create/geoportal/+dot+dockerignore_tmpl +0 -6
  157. c2cgeoportal_geoportal/scaffolds/create/geoportal/+dot+eslintrc_tmpl +0 -15
  158. c2cgeoportal_geoportal/scaffolds/create/geoportal/+package+_geoportal/models.py_tmpl +0 -10
  159. c2cgeoportal_geoportal/scaffolds/create/geoportal/+package+_geoportal/static/robot.txt +0 -3
  160. c2cgeoportal_geoportal/scaffolds/create/geoportal/production.ini_tmpl +0 -106
  161. c2cgeoportal_geoportal/scaffolds/create/geoportal/requirements.txt +0 -2
  162. c2cgeoportal_geoportal/scaffolds/create/geoportal/tsconfig.json_tmpl +0 -9
  163. c2cgeoportal_geoportal/scaffolds/create/geoportal/webpack.api.js_tmpl +0 -72
  164. c2cgeoportal_geoportal/scaffolds/create/mapserver/demo.map.tmpl_tmpl +0 -262
  165. c2cgeoportal_geoportal/scaffolds/create/mapserver/tinyows.xml +0 -36
  166. c2cgeoportal_geoportal/scaffolds/create/print/print-apps/+package+/config.yaml +0 -168
  167. c2cgeoportal_geoportal/scaffolds/create/qgisserver/geomapfish.yaml.tmpl_tmpl +0 -16
  168. c2cgeoportal_geoportal/scaffolds/create/spell-ignore-words.txt +0 -1
  169. c2cgeoportal_geoportal/scaffolds/create/tilegeneration/config.yaml.tmpl_tmpl +0 -185
  170. c2cgeoportal_geoportal/scaffolds/create/yamllint.yaml +0 -11
  171. c2cgeoportal_geoportal/scaffolds/update/CONST_CHANGELOG.txt_tmpl +0 -454
  172. c2cgeoportal_geoportal/templates/dynamic.js +0 -21
  173. c2cgeoportal_geoportal-2.6.0.dist-info/RECORD +0 -173
  174. /c2cgeoportal_geoportal/{scaffolds/create/geoportal/+package+_geoportal/static/css/desktop.css → py.typed} +0 -0
  175. /c2cgeoportal_geoportal/scaffolds/{create/geoportal/Makefile_tmpl → advance_create/{{cookiecutter.project}}/geoportal/Makefile} +0 -0
  176. /c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/alembic.ini +0 -0
  177. /c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/language_mapping +0 -0
  178. /c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/lingua-server.cfg +0 -0
  179. /c2cgeoportal_geoportal/scaffolds/{create/geoportal/+package+_geoportal → advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/views/__init__.py +0 -0
  180. /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
  181. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal/static/css/iframe_api.css → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/desktop.css} +0 -0
  182. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal/static/css/mobile.css → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/iframe_api.css} +0 -0
  183. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/banner_left.png +0 -0
  184. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/banner_right.png +0 -0
  185. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/blank.png +0 -0
  186. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/markers/marker-blue.png +0 -0
  187. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/markers/marker-gold.png +0 -0
  188. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/markers/marker-green.png +0 -0
  189. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/markers/marker.png +0 -0
  190. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/robot.txt.tmpl +0 -0
  191. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/data/TM_EUROPE_BORDERS-0.3.sql +0 -0
  192. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Arial.ttf +0 -0
  193. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Arialbd.ttf +0 -0
  194. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Arialbi.ttf +0 -0
  195. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Ariali.ttf +0 -0
  196. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/NotoSans-Bold.ttf +0 -0
  197. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/NotoSans-BoldItalic.ttf +0 -0
  198. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/NotoSans-Italic.ttf +0 -0
  199. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/NotoSans-Regular.ttf +0 -0
  200. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Verdana.ttf +0 -0
  201. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Verdanab.ttf +0 -0
  202. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Verdanai.ttf +0 -0
  203. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Verdanaz.ttf +0 -0
  204. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts.conf +0 -0
  205. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/tinyows.xml.tmpl +0 -0
  206. /c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/legend.jrxml +0 -0
  207. /c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/logo.png +0 -0
  208. /c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/north.svg +0 -0
  209. /c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/results.jrxml +0 -0
  210. /c2cgeoportal_geoportal/scaffolds/create/{pyproject.toml → {{cookiecutter.project}}/pyproject.toml} +0 -0
  211. /c2cgeoportal_geoportal/scaffolds/create/{run_alembic.sh → {{cookiecutter.project}}/run_alembic.sh} +0 -0
  212. {c2cgeoportal_geoportal-2.6.0.dist-info → c2cgeoportal_geoportal-2.7.1.156.dist-info}/top_level.txt +0 -0
@@ -1,9 +1,17 @@
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 \
9
+ python3 -m pip install --disable-pip-version-check --no-cache-dir --requirement=/tmp/requirements.txt && \
10
+ rm --recursive --force /tmp/* /var/tmp/* /root/.cache/*
11
+
4
12
  WORKDIR /app
5
13
  COPY webpack.*.js Makefile CONST_Makefile /app/
6
- COPY {{package}}_geoportal/static-ngeo /app/{{package}}_geoportal/static-ngeo
14
+ COPY {{cookiecutter.package}}_geoportal/static-ngeo /app/{{cookiecutter.package}}_geoportal/static-ngeo
7
15
  RUN make apps
8
16
 
9
17
  COPY . /app
@@ -17,7 +25,7 @@ CMD [ "webpack-dev-server", "--mode=development", "--debug", "--watch", "--no-in
17
25
 
18
26
  ###############################################################################
19
27
 
20
- FROM camptocamp/geomapfish:{{geomapfish_main_version}} as runner
28
+ FROM camptocamp/geomapfish:{{cookiecutter.geomapfish_major_version_tag_env}} as runner
21
29
 
22
30
  COPY requirements.txt /tmp/requirements.txt
23
31
  RUN \
@@ -35,8 +43,8 @@ RUN chmod go+w /etc/static-ngeo/
35
43
 
36
44
  RUN python3 -m pip install --disable-pip-version-check --no-cache-dir --editable=/app/ && \
37
45
  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.*
46
+ -x '/(debugpy|pipenv|.*pydev.*|networkx)/' && \
47
+ python3 -m compileall -q /app/{{cookiecutter.package}}_geoportal -x /app/{{cookiecutter.package}}_geoportal/static.*
40
48
 
41
49
  ARG GIT_HASH
42
50
  RUN c2cwsgiutils-genversion ${GIT_HASH}
@@ -45,7 +53,7 @@ ARG PGSCHEMA
45
53
  ENV PGSCHEMA=${PGSCHEMA}
46
54
 
47
55
  ENTRYPOINT [ "/usr/bin/eval-templates" ]
48
- CMD ["c2cwsgiutils-run"]
56
+ CMD ["gunicorn", "--paste=/app/production.ini"]
49
57
 
50
58
  ENV VISIBLE_ENTRY_POINT=/ \
51
59
  AUTHTKT_TIMEOUT=86400 \
@@ -60,7 +68,8 @@ ENV VISIBLE_ENTRY_POINT=/ \
60
68
  C2CGEOPORTAL_LOG_LEVEL=INFO \
61
69
  C2CWSGIUTILS_LOG_LEVEL=INFO \
62
70
  GUNICORN_LOG_LEVEL=INFO \
63
- SQL_LOG_LEVEL=WARN \
71
+ SQL_LOG_LEVEL=WARNING \
64
72
  DOGPILECACHE_LOG_LEVEL=INFO \
65
- OTHER_LOG_LEVEL=WARN \
66
- DEVELOPMENT=False
73
+ OTHER_LOG_LEVEL=WARNING \
74
+ DEVELOPMENT=0 \
75
+ 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#profiler 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,102 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ # Copyright (c) 2019-2024, Camptocamp SA
4
+ # All rights reserved.
5
+
6
+ # Redistribution and use in source and binary forms, with or without
7
+ # modification, are permitted provided that the following conditions are met:
8
+
9
+ # 1. Redistributions of source code must retain the above copyright notice, this
10
+ # list of conditions and the following disclaimer.
11
+ # 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ # this list of conditions and the following disclaimer in the documentation
13
+ # and/or other materials provided with the distribution.
14
+
15
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16
+ # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17
+ # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
19
+ # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
+ # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
+ # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22
+ # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
+ # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
+
26
+ # The views and conclusions contained in the software and documentation are those
27
+ # of the authors and should not be interpreted as representing official policies,
28
+ # either expressed or implied, of the FreeBSD Project.
29
+
30
+ ###
31
+ # app configuration
32
+ # https://docs.gunicorn.org/en/stable/settings.html
33
+ ###
34
+
35
+ import os
36
+
37
+ from c2cwsgiutils import get_config_defaults
38
+
39
+ bind = ":8080"
40
+
41
+ worker_class = "gthread"
42
+ workers = int(os.environ.get("GUNICORN_WORKERS", 2))
43
+ threads = int(os.environ.get("GUNICORN_THREADS", 10))
44
+
45
+ timeout = int(os.environ.get("GUNICORN_TIMEOUT", 120))
46
+
47
+ max_requests = int(os.environ.get("GUNICORN_MAX_REQUESTS", 1000))
48
+ max_requests_jitter = int(os.environ.get("GUNICORN_MAX_REQUESTS_JITTER", 100))
49
+ worker_tmp_dir = "/dev/shm" # nosec
50
+ limit_request_line = int(os.environ.get("GUNICORN_LIMIT_REQUEST_LINE", 8190))
51
+
52
+ accesslog = "-"
53
+ access_log_format = os.environ.get(
54
+ "GUNICORN_ACCESS_LOG_FORMAT",
55
+ '%(H)s %({Host}i)s %(m)s %(U)s?%(q)s "%(f)s" "%(a)s" %(s)s %(B)s %(D)s %(p)s',
56
+ )
57
+
58
+ ###
59
+ # logging configuration
60
+ # https://docs.python.org/3/library/logging.config.html#logging-config-dictschema
61
+ ###
62
+ logconfig_dict = {
63
+ "version": 1,
64
+ "root": {
65
+ "level": os.environ["OTHER_LOG_LEVEL"],
66
+ "handlers": [os.environ["LOG_TYPE"]],
67
+ },
68
+ "loggers": {
69
+ "gunicorn.error": {"level": os.environ["GUNICORN_LOG_LEVEL"]},
70
+ # "level = INFO" logs SQL queries.
71
+ # "level = DEBUG" logs SQL queries and results.
72
+ # "level = WARN" logs neither. (Recommended for production systems.)
73
+ "sqlalchemy.engine": {"level": os.environ["SQL_LOG_LEVEL"]},
74
+ "dogpile.cache": {"level": os.environ["DOGPILECACHE_LOG_LEVEL"]},
75
+ "c2cwsgiutils": {"level": os.environ["C2CWSGIUTILS_LOG_LEVEL"]},
76
+ "c2cgeoportal_commons": {"level": os.environ["C2CGEOPORTAL_LOG_LEVEL"]},
77
+ "c2cgeoportal_geoportal": {"level": os.environ["C2CGEOPORTAL_LOG_LEVEL"]},
78
+ "c2cgeoportal_admin": {"level": os.environ["C2CGEOPORTAL_LOG_LEVEL"]},
79
+ "{{cookiecutter.package}}_geoportal": {"level": os.environ["LOG_LEVEL"]},
80
+ },
81
+ "handlers": {
82
+ "console": {
83
+ "class": "logging.StreamHandler",
84
+ "formatter": "generic",
85
+ "stream": "ext://sys.stdout",
86
+ },
87
+ "json": {
88
+ "class": "c2cwsgiutils.pyramid_logging.JsonLogHandler",
89
+ "formatter": "generic",
90
+ "stream": "ext://sys.stdout",
91
+ },
92
+ },
93
+ "formatters": {
94
+ "generic": {
95
+ "format": "%(asctime)s [%(process)d] [%(levelname)-5.5s] %(message)s",
96
+ "datefmt": "[%Y-%m-%d %H:%M:%S %z]",
97
+ "class": "logging.Formatter",
98
+ }
99
+ },
100
+ }
101
+
102
+ 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
@@ -0,0 +1,2 @@
1
+ #debugpy # Remote debugging
2
+ #wsgi-lineprof # Profiling
@@ -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
  },
@@ -7,16 +7,18 @@ function main(inputs) {
7
7
 
8
8
  const promises = [];
9
9
  inputs.forEach((input) => {
10
- promises.push(new Promise((resolve) => {
11
- fs.readFile(input, 'utf-8', (error, content) => {
12
- resolve(error ? undefined : {input, content});
13
- });
14
- }));
10
+ promises.push(
11
+ new Promise((resolve) => {
12
+ fs.readFile(input, 'utf-8', (error, content) => {
13
+ resolve(error ? undefined : {input, content});
14
+ });
15
+ })
16
+ );
15
17
  });
16
18
 
17
19
  const messages = [];
18
20
  Promise.all(promises).then((contents) => {
19
- contents = contents.filter(content => content !== undefined);
21
+ contents = contents.filter((content) => content !== undefined);
20
22
  contents.forEach(({input, content}) => extractor.parse(input, content));
21
23
  for (const msgstr in extractor.strings) {
22
24
  if (extractor.strings.hasOwnProperty(msgstr)) {
@@ -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,75 @@
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: {
11
+ browsers: ['> 0.7% in CH', '> 0.7% in FR', 'Firefox ESR'],
12
+ },
13
+ modules: false,
14
+ loose: true,
15
+ },
16
+ ],
17
+ ];
18
+
19
+ module.exports = (env, argv) => {
20
+ const library = argv.library ? argv.library : '{{cookiecutter.package}}';
21
+ return {
22
+ entry: path.resolve(__dirname, '{{cookiecutter.package}}_geoportal/static-ngeo/api/index.js'),
23
+ devtool: 'source-map',
24
+ mode: 'production',
25
+ module: {
26
+ rules: [
27
+ {
28
+ test: /\.js$/,
29
+ use: {
30
+ loader: 'babel-loader',
31
+ options: {
32
+ presets: babelPresets,
33
+ babelrc: false,
34
+ comments: false,
35
+ plugins: [require.resolve('babel-plugin-angularjs-annotate')],
36
+ },
37
+ },
38
+ },
39
+ ],
40
+ },
41
+ output: {
42
+ filename: 'api.js',
43
+ path: destDir,
44
+ libraryTarget: 'umd',
45
+ globalObject: 'this',
46
+ libraryExport: 'default',
47
+ library: library,
48
+ },
49
+ optimization: {
50
+ minimizer: [
51
+ new TerserPlugin({
52
+ parallel: true,
53
+ sourceMap: true,
54
+ terserOptions: {
55
+ compress: false,
56
+ },
57
+ }),
58
+ ],
59
+ },
60
+ resolve: {
61
+ modules: [
62
+ '/usr/lib/node_modules',
63
+ '/usr/lib/node_modules/ol/node_modules',
64
+ '/usr/lib/node_modules/proj4/node_modules',
65
+ ],
66
+ alias: {
67
+ api: '/usr/lib/node_modules/ngeo/api/src',
68
+ ngeo: '/usr/lib/node_modules/ngeo/src',
69
+ },
70
+ },
71
+ resolveLoader: {
72
+ modules: ['/usr/lib/node_modules'],
73
+ },
74
+ };
75
+ };
@@ -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,51 @@ 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: {
38
+ browsers: ['> 0.7% in CH', '> 0.7% in FR', 'Firefox ESR'],
39
+ },
40
+ modules: false,
41
+ loose: true,
42
+ },
43
+ ],
44
+ ];
38
45
 
39
46
  // Transform code to ES2015 and annotate injectable functions with an $inject array.
40
47
  const projectRule = {
41
- test: /{{package}}_geoportal\/static-ngeo\/js\/.*\.js$/,
48
+ test: /{{cookiecutter.package}}_geoportal\/static-ngeo\/js\/.*\.js$/,
42
49
  use: {
43
50
  loader: 'babel-loader',
44
51
  options: {
45
52
  presets: babelPresets,
46
53
  babelrc: false,
47
54
  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
- }
55
+ plugins: [require.resolve('babel-plugin-angularjs-annotate')],
56
+ },
54
57
  },
55
58
  };
56
-
57
- const rules = [
58
- projectRule,
59
- ];
59
+ const rules = [projectRule];
60
60
 
61
61
  const noDevServer = process.env['NO_DEV_SERVER'] == 'TRUE';
62
62
  const devServer = dev && !noDevServer;
63
63
 
64
- console.log("Use dev mode: " + dev)
65
- console.log("Use dev server mode: " + devServer)
64
+ console.log('Use dev mode: ' + dev);
65
+ console.log('Use dev server mode: ' + devServer);
66
66
 
67
67
  module.exports = {
68
68
  output: {
69
69
  path: '/etc/static-ngeo/',
70
- publicPath: devServer ? '${VISIBLE_ENTRY_POINT}dev/' : '.__ENTRY_POINT__static-ngeo/'
70
+ publicPath: devServer ? '${VISIBLE_ENTRY_POINT}dev/' : '.__ENTRY_POINT__static-ngeo/',
71
71
  },
72
72
  devServer: {
73
73
  publicPath: '${VISIBLE_WEB_PROTOCOL}://${VISIBLE_WEB_HOST}${VISIBLE_ENTRY_POINT}dev/',
@@ -77,13 +77,16 @@ module.exports = {
77
77
  },
78
78
  entry: entry,
79
79
  module: {
80
- rules
80
+ rules,
81
81
  },
82
82
  plugins: plugins,
83
83
  resolve: {
84
84
  modules: ['/usr/lib/node_modules'],
85
85
  alias: {
86
- {{package}}: path.resolve(__dirname, '{{package}}_geoportal/static-ngeo/js'),
86
+ '{{cookiecutter.package}}': path.resolve(
87
+ __dirname,
88
+ '{{cookiecutter.package}}_geoportal/static-ngeo/js'
89
+ ),
87
90
  },
88
91
  },
89
92
  };
@@ -4,17 +4,13 @@ const SassPlugin = require('ngeo/buildtools/webpack.plugin.js');
4
4
  const config = commons({
5
5
  DllReferencePluginOptions: {
6
6
  context: '/usr/lib/',
7
- }
7
+ },
8
8
  });
9
9
 
10
10
  for (const plugin of config.plugins) {
11
11
  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
- ];
12
+ plugin.options.preReplacements = [[new RegExp('\\${VISIBLE_ENTRY_POINT}', 'g'), 'visible-entry-point']];
13
+ plugin.options.postReplacements = [[new RegExp('visible-entry-point', 'g'), '${VISIBLE_ENTRY_POINT}']];
18
14
  }
19
15
  }
20
16
 
@@ -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
 
@@ -1,14 +1,13 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  import distutils.core
4
2
 
5
- from pyramid.authorization import ACLAuthorizationPolicy
6
3
  from pyramid.config import Configurator
7
4
 
8
- from c2cgeoportal_geoportal import INTERFACE_TYPE_NGEO, add_interface, locale_negotiator
9
- from c2cgeoportal_geoportal.lib.authentication import create_authentication
5
+ import {{cookiecutter.package}}_geoportal.authentication
6
+ import {{cookiecutter.package}}_geoportal.dev
7
+ import {{cookiecutter.package}}_geoportal.multi_organization
8
+ from c2cgeoportal_geoportal import INTERFACE_TYPE_NGEO, add_interface_config, locale_negotiator
10
9
  from c2cgeoportal_geoportal.lib.i18n import LOCALE_PATH
11
- from {{package}}_geoportal.resources import Root
10
+ from {{cookiecutter.package}}_geoportal.resources import Root
12
11
 
13
12
 
14
13
  def main(global_config, **settings):
@@ -25,8 +24,7 @@ def main(global_config, **settings):
25
24
 
26
25
  config.include("c2cgeoportal_commons")
27
26
 
28
- config.set_authorization_policy(ACLAuthorizationPolicy())
29
- config.set_authentication_policy(create_authentication(config.get_settings()))
27
+ config.include({{cookiecutter.package}}_geoportal.authentication.includeme)
30
28
 
31
29
  config.add_translation_dirs(LOCALE_PATH)
32
30
 
@@ -35,24 +33,15 @@ def main(global_config, **settings):
35
33
  config.include("c2cgeoportal_geoportal")
36
34
  distutils.core._setup_stop_after = None # pylint: disable=protected-access
37
35
 
36
+ config.include({{cookiecutter.package}}_geoportal.multi_organization.includeme)
37
+
38
38
  # Scan view decorator for adding routes
39
39
  config.scan()
40
40
 
41
41
  # Add the interfaces
42
42
  for interface in config.get_settings().get("interfaces", []):
43
- add_interface(
44
- config,
45
- interface["name"],
46
- interface.get("type", INTERFACE_TYPE_NGEO),
47
- default=interface.get("default", False),
48
- )
49
-
50
- try:
51
- import ptvsd # pylint: disable=import-error,import-outside-toplevel
52
-
53
- ptvsd.enable_attach(address=("172.17.0.1", 5678))
54
- # ptvsd.wait_for_attach()
55
- except ModuleNotFoundError:
56
- pass
43
+ add_interface_config(config, interface)
44
+
45
+ config.include({{cookiecutter.package}}_geoportal.dev.includeme)
57
46
 
58
47
  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()))