c2cgeoportal-geoportal 2.5.0.100__py2.py3-none-any.whl → 2.7.1.83__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 (224) hide show
  1. c2cgeoportal_geoportal/__init__.py +261 -130
  2. c2cgeoportal_geoportal/lib/__init__.py +72 -120
  3. c2cgeoportal_geoportal/lib/authentication.py +170 -21
  4. c2cgeoportal_geoportal/lib/bashcolor.py +17 -13
  5. c2cgeoportal_geoportal/lib/cacheversion.py +19 -11
  6. c2cgeoportal_geoportal/lib/caching.py +66 -160
  7. c2cgeoportal_geoportal/lib/check_collector.py +17 -10
  8. c2cgeoportal_geoportal/lib/checker.py +62 -64
  9. c2cgeoportal_geoportal/lib/common_headers.py +170 -0
  10. c2cgeoportal_geoportal/lib/dbreflection.py +70 -31
  11. c2cgeoportal_geoportal/lib/filter_capabilities.py +124 -96
  12. c2cgeoportal_geoportal/lib/fulltextsearch.py +50 -0
  13. c2cgeoportal_geoportal/lib/functionality.py +36 -21
  14. c2cgeoportal_geoportal/lib/headers.py +14 -5
  15. c2cgeoportal_geoportal/lib/i18n.py +39 -0
  16. c2cgeoportal_geoportal/lib/layers.py +29 -10
  17. c2cgeoportal_geoportal/lib/lingua_extractor.py +408 -211
  18. c2cgeoportal_geoportal/lib/loader.py +18 -16
  19. c2cgeoportal_geoportal/lib/metrics.py +29 -18
  20. c2cgeoportal_geoportal/lib/oauth2.py +1036 -0
  21. c2cgeoportal_geoportal/lib/wmstparsing.py +115 -90
  22. c2cgeoportal_geoportal/lib/xsd.py +29 -19
  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/+dot+prospector.yaml → advance_create/{{cookiecutter.project}}/geoportal/.prospector.yaml} +8 -4
  29. c2cgeoportal_geoportal/scaffolds/{create/geoportal/Dockerfile_tmpl → advance_create/{{cookiecutter.project}}/geoportal/Dockerfile} +24 -15
  30. c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/alembic.ini +1 -0
  31. c2cgeoportal_geoportal/scaffolds/{create/geoportal/alembic.yaml_tmpl → advance_create/{{cookiecutter.project}}/geoportal/alembic.yaml} +1 -1
  32. c2cgeoportal_geoportal/scaffolds/{create/geoportal/development.ini_tmpl → advance_create/{{cookiecutter.project}}/geoportal/development.ini} +34 -15
  33. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/gunicorn.conf.py +104 -0
  34. c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/lingua-client.cfg +1 -0
  35. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/production.ini +38 -0
  36. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/requirements.txt +2 -0
  37. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/setup.py +25 -0
  38. c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/tools/extract-messages.js +8 -6
  39. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/tsconfig.json +8 -0
  40. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/webpack.api.js +75 -0
  41. c2cgeoportal_geoportal/scaffolds/{create/geoportal/webpack.apps.js_tmpl → advance_create/{{cookiecutter.project}}/geoportal/webpack.apps.js} +31 -28
  42. c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/webpack.commons.js +3 -7
  43. c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/webpack.config.js +4 -4
  44. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/__init__.py +47 -0
  45. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/authentication.py +10 -0
  46. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/dev.py +14 -0
  47. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/models.py +8 -0
  48. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/multi_organization.py +7 -0
  49. c2cgeoportal_geoportal/scaffolds/{create/geoportal/+package+_geoportal → advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/resources.py +4 -3
  50. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static-ngeo/api/index.js +12 -0
  51. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static-ngeo/js/{{cookiecutter.package}}module.js +25 -0
  52. c2cgeoportal_geoportal/scaffolds/{create/geoportal/+package+_geoportal/subscribers.py_tmpl → advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/subscribers.py} +3 -6
  53. c2cgeoportal_geoportal/scaffolds/advance_update/cookiecutter.json +18 -0
  54. c2cgeoportal_geoportal/scaffolds/{update/geoportal/CONST_Makefile_tmpl → advance_update/{{cookiecutter.project}}/geoportal/CONST_Makefile} +32 -20
  55. c2cgeoportal_geoportal/scaffolds/create/cookiecutter.json +18 -0
  56. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.dockerignore +14 -0
  57. c2cgeoportal_geoportal/scaffolds/create/{+dot+editorconfig → {{cookiecutter.project}}/.editorconfig} +4 -8
  58. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/main.yaml +43 -0
  59. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/rebuild.yaml +46 -0
  60. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/update_l10n.yaml +65 -0
  61. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.gitignore +16 -0
  62. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.prettierignore +1 -0
  63. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.prettierrc.yaml +2 -0
  64. c2cgeoportal_geoportal/scaffolds/create/{Dockerfile_tmpl → {{cookiecutter.project}}/Dockerfile} +34 -24
  65. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/Makefile +14 -0
  66. c2cgeoportal_geoportal/scaffolds/create/{README.rst_tmpl → {{cookiecutter.project}}/README.rst} +4 -4
  67. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/build +158 -0
  68. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/ci/config.yaml +25 -0
  69. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/ci/requirements.txt +1 -0
  70. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose-lib.yaml +474 -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} +43 -18
  73. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/env.default +82 -0
  74. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/env.project +60 -0
  75. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/vars.yaml +396 -0
  76. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/mobile.css +0 -0
  77. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/markers/marker-blue.png +0 -0
  78. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/markers/marker-gold.png +0 -0
  79. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/markers/marker-green.png +0 -0
  80. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/markers/marker.png +0 -0
  81. c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/data/Readme.txt +1 -1
  82. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/demo.map.tmpl +224 -0
  83. c2cgeoportal_geoportal/scaffolds/create/{mapserver/mapserver.map.tmpl_tmpl → {{cookiecutter.project}}/mapserver/mapserver.map.tmpl} +7 -15
  84. c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/A3_Landscape.jrxml +17 -9
  85. c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/A3_Portrait.jrxml +17 -9
  86. c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/A4_Landscape.jrxml +17 -9
  87. c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/A4_Portrait.jrxml +17 -9
  88. c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/config.yaml.tmpl +30 -27
  89. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/legend.jrxml +109 -0
  90. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/localisation.properties +4 -0
  91. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/localisation_fr.properties +4 -0
  92. c2cgeoportal_geoportal/scaffolds/create/{project.yaml_tmpl → {{cookiecutter.project}}/project.yaml} +6 -6
  93. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/pyproject.toml +3 -0
  94. c2cgeoportal_geoportal/scaffolds/create/{qgisserver/pg_service.conf.tmpl_tmpl → {{cookiecutter.project}}/qgisserver/pg_service.conf.tmpl} +2 -2
  95. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/scripts/db-backup +107 -0
  96. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/scripts/db-restore +111 -0
  97. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/setup.cfg +7 -0
  98. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/spell-ignore-words.txt +3 -0
  99. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/tilegeneration/config.yaml.tmpl +195 -0
  100. c2cgeoportal_geoportal/scaffolds/update/cookiecutter.json +18 -0
  101. c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/.upgrade.yaml +191 -0
  102. c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/CONST_CHANGELOG.txt +1153 -0
  103. c2cgeoportal_geoportal/scaffolds/update/{geoportal → {{cookiecutter.project}}/geoportal}/CONST_config-schema.yaml +99 -47
  104. c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/geoportal/CONST_vars.yaml +1412 -0
  105. c2cgeoportal_geoportal/scripts/__init__.py +17 -33
  106. c2cgeoportal_geoportal/scripts/c2cupgrade.py +295 -200
  107. c2cgeoportal_geoportal/scripts/create_demo_theme.py +5 -6
  108. c2cgeoportal_geoportal/scripts/manage_users.py +34 -37
  109. c2cgeoportal_geoportal/scripts/pcreate.py +312 -0
  110. c2cgeoportal_geoportal/scripts/theme2fts.py +92 -25
  111. c2cgeoportal_geoportal/scripts/urllogin.py +23 -17
  112. c2cgeoportal_geoportal/templates/login.html +88 -84
  113. c2cgeoportal_geoportal/templates/notlogin.html +62 -0
  114. c2cgeoportal_geoportal/templates/testi18n.html +6 -8
  115. c2cgeoportal_geoportal/views/__init__.py +23 -4
  116. c2cgeoportal_geoportal/views/dev.py +9 -7
  117. c2cgeoportal_geoportal/views/dynamic.py +70 -40
  118. c2cgeoportal_geoportal/views/entry.py +93 -24
  119. c2cgeoportal_geoportal/views/fulltextsearch.py +36 -29
  120. c2cgeoportal_geoportal/views/geometry_processing.py +15 -7
  121. c2cgeoportal_geoportal/views/i18n.py +91 -9
  122. c2cgeoportal_geoportal/views/layers.py +173 -134
  123. c2cgeoportal_geoportal/views/login.py +206 -87
  124. c2cgeoportal_geoportal/views/mapserverproxy.py +59 -35
  125. c2cgeoportal_geoportal/views/memory.py +13 -13
  126. c2cgeoportal_geoportal/views/ogcproxy.py +48 -30
  127. c2cgeoportal_geoportal/views/pdfreport.py +31 -27
  128. c2cgeoportal_geoportal/views/printproxy.py +67 -53
  129. c2cgeoportal_geoportal/views/profile.py +25 -24
  130. c2cgeoportal_geoportal/views/proxy.py +97 -68
  131. c2cgeoportal_geoportal/views/raster.py +47 -29
  132. c2cgeoportal_geoportal/views/resourceproxy.py +13 -11
  133. c2cgeoportal_geoportal/views/shortener.py +31 -24
  134. c2cgeoportal_geoportal/views/theme.py +475 -365
  135. c2cgeoportal_geoportal/views/tinyowsproxy.py +46 -39
  136. c2cgeoportal_geoportal/views/vector_tiles.py +80 -0
  137. {c2cgeoportal_geoportal-2.5.0.100.dist-info → c2cgeoportal_geoportal-2.7.1.83.dist-info}/METADATA +16 -11
  138. c2cgeoportal_geoportal-2.7.1.83.dist-info/RECORD +185 -0
  139. {c2cgeoportal_geoportal-2.5.0.100.dist-info → c2cgeoportal_geoportal-2.7.1.83.dist-info}/WHEEL +1 -1
  140. {c2cgeoportal_geoportal-2.5.0.100.dist-info → c2cgeoportal_geoportal-2.7.1.83.dist-info}/entry_points.txt +3 -1
  141. tests/__init__.py +24 -3
  142. tests/test_cachebuster.py +1 -3
  143. tests/test_caching.py +19 -26
  144. tests/test_checker.py +2 -3
  145. tests/test_decimaljson.py +4 -4
  146. tests/test_headerstween.py +0 -3
  147. tests/test_i18n.py +31 -0
  148. tests/test_init.py +12 -27
  149. tests/test_locale_negociator.py +6 -6
  150. tests/test_mapserverproxy_route_predicate.py +0 -2
  151. tests/test_raster.py +18 -5
  152. tests/test_wmstparsing.py +7 -8
  153. c2cgeoportal_geoportal/scaffolds/__init__.py +0 -226
  154. c2cgeoportal_geoportal/scaffolds/create/+dot+dockerignore_tmpl +0 -11
  155. c2cgeoportal_geoportal/scaffolds/create/+dot+github/workflows/ci.yaml_tmpl +0 -56
  156. c2cgeoportal_geoportal/scaffolds/create/+dot+gitignore_tmpl +0 -12
  157. c2cgeoportal_geoportal/scaffolds/create/build_tmpl +0 -144
  158. c2cgeoportal_geoportal/scaffolds/create/docker-compose-lib.yaml_tmpl +0 -302
  159. c2cgeoportal_geoportal/scaffolds/create/docker-compose.override.sample.yaml_tmpl +0 -54
  160. c2cgeoportal_geoportal/scaffolds/create/env.default_tmpl +0 -49
  161. c2cgeoportal_geoportal/scaffolds/create/env.project_tmpl +0 -39
  162. c2cgeoportal_geoportal/scaffolds/create/geoportal/+dot+dockerignore_tmpl +0 -5
  163. c2cgeoportal_geoportal/scaffolds/create/geoportal/+dot+eslintrc_tmpl +0 -19
  164. c2cgeoportal_geoportal/scaffolds/create/geoportal/+package+_geoportal/__init__.py_tmpl +0 -48
  165. c2cgeoportal_geoportal/scaffolds/create/geoportal/+package+_geoportal/models.py_tmpl +0 -10
  166. c2cgeoportal_geoportal/scaffolds/create/geoportal/+package+_geoportal/static/images/favicon.ico +0 -0
  167. c2cgeoportal_geoportal/scaffolds/create/geoportal/+package+_geoportal/static/robot.txt +0 -3
  168. c2cgeoportal_geoportal/scaffolds/create/geoportal/+package+_geoportal/static-ngeo/api/index.js_tmpl +0 -37
  169. c2cgeoportal_geoportal/scaffolds/create/geoportal/+package+_geoportal/static-ngeo/js/+package+module.js_tmpl +0 -22
  170. c2cgeoportal_geoportal/scaffolds/create/geoportal/production.ini_tmpl +0 -106
  171. c2cgeoportal_geoportal/scaffolds/create/geoportal/requirements.txt +0 -2
  172. c2cgeoportal_geoportal/scaffolds/create/geoportal/setup.py_tmpl +0 -18
  173. c2cgeoportal_geoportal/scaffolds/create/geoportal/tsconfig.json_tmpl +0 -9
  174. c2cgeoportal_geoportal/scaffolds/create/geoportal/vars.yaml_tmpl +0 -224
  175. c2cgeoportal_geoportal/scaffolds/create/geoportal/webpack.api.js_tmpl +0 -71
  176. c2cgeoportal_geoportal/scaffolds/create/mapserver/demo.map.tmpl_tmpl +0 -262
  177. c2cgeoportal_geoportal/scaffolds/create/mapserver/tinyows.xml +0 -36
  178. c2cgeoportal_geoportal/scaffolds/create/print/print-apps/+package+/config.yaml +0 -166
  179. c2cgeoportal_geoportal/scaffolds/create/print/print-apps/+package+/legend.jrxml +0 -27
  180. c2cgeoportal_geoportal/scaffolds/create/qgisserver/geomapfish.yaml.tmpl_tmpl +0 -29
  181. c2cgeoportal_geoportal/scaffolds/create/scripts/publish-docker +0 -124
  182. c2cgeoportal_geoportal/scaffolds/create/setup.cfg_tmpl +0 -3
  183. c2cgeoportal_geoportal/scaffolds/create/spell-ignore-words.txt +0 -1
  184. c2cgeoportal_geoportal/scaffolds/create/tilegeneration/config.yaml.tmpl_tmpl +0 -169
  185. c2cgeoportal_geoportal/scaffolds/create/yamllint.yaml +0 -11
  186. c2cgeoportal_geoportal/scaffolds/update/+dot+upgrade.yaml_tmpl +0 -171
  187. c2cgeoportal_geoportal/scaffolds/update/CONST_CHANGELOG.txt_tmpl +0 -64
  188. c2cgeoportal_geoportal/scaffolds/update/geoportal/CONST_vars.yaml_tmpl +0 -783
  189. c2cgeoportal_geoportal/templates/dynamic.js +0 -21
  190. c2cgeoportal_geoportal-2.5.0.100.dist-info/RECORD +0 -162
  191. tests/test_get_url.py +0 -96
  192. tests/test_lib.py +0 -77
  193. /c2cgeoportal_geoportal/{scaffolds/create/geoportal/+package+_geoportal/static/css/desktop.css → py.typed} +0 -0
  194. /c2cgeoportal_geoportal/scaffolds/{create/geoportal/Makefile_tmpl → advance_create/{{cookiecutter.project}}/geoportal/Makefile} +0 -0
  195. /c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/language_mapping +0 -0
  196. /c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/lingua-server.cfg +0 -0
  197. /c2cgeoportal_geoportal/scaffolds/{create/geoportal/+package+_geoportal → advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/views/__init__.py +0 -0
  198. /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
  199. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal/static/css/iframe_api.css → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/desktop.css} +0 -0
  200. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal/static/css/mobile.css → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/iframe_api.css} +0 -0
  201. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/banner_left.png +0 -0
  202. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/banner_right.png +0 -0
  203. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/blank.png +0 -0
  204. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/robot.txt.tmpl +0 -0
  205. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/data/TM_EUROPE_BORDERS-0.3.sql +0 -0
  206. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Arial.ttf +0 -0
  207. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Arialbd.ttf +0 -0
  208. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Arialbi.ttf +0 -0
  209. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Ariali.ttf +0 -0
  210. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/NotoSans-Bold.ttf +0 -0
  211. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/NotoSans-BoldItalic.ttf +0 -0
  212. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/NotoSans-Italic.ttf +0 -0
  213. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/NotoSans-Regular.ttf +0 -0
  214. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Verdana.ttf +0 -0
  215. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Verdanab.ttf +0 -0
  216. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Verdanai.ttf +0 -0
  217. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Verdanaz.ttf +0 -0
  218. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts.conf +0 -0
  219. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/tinyows.xml.tmpl +0 -0
  220. /c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/logo.png +0 -0
  221. /c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/north.svg +0 -0
  222. /c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/results.jrxml +0 -0
  223. /c2cgeoportal_geoportal/scaffolds/create/{run_alembic.sh → {{cookiecutter.project}}/run_alembic.sh} +0 -0
  224. {c2cgeoportal_geoportal-2.5.0.100.dist-info → c2cgeoportal_geoportal-2.7.1.83.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 \
@@ -26,27 +34,26 @@ RUN \
26
34
 
27
35
  WORKDIR /app
28
36
  COPY . /app
29
- COPY --from=builder /app/{{package}}_geoportal/locale/ /app/{{package}}_geoportal/locale/
37
+ # Workaround, see:https://github.com/moby/moby/issues/37965
38
+ RUN true
30
39
  COPY --from=builder /usr/lib/node_modules/ngeo/dist/* /etc/static-ngeo/
31
40
  COPY --from=builder /etc/static-ngeo/* /etc/static-ngeo/
32
41
  COPY --from=builder /app/alembic.ini /app/alembic.yaml ./
33
- RUN chmod go+w /etc/static-ngeo/ \
34
- /app/{{package}}_geoportal/locale/ \
35
- /app/{{package}}_geoportal/locale/*/LC_MESSAGES/{{package}}_geoportal-client.po
42
+ RUN chmod go+w /etc/static-ngeo/
36
43
 
37
- RUN pip install --disable-pip-version-check --no-cache-dir --editable=/app/ && \
38
- python3 -m compileall -q /usr/local/lib/python3.7 \
39
- -x '/usr/local/lib/python3.7/dist-packages/(pydevd|ptvsd|pipenv)/' && \
40
- python3 -m compileall -q /app/{{package}}_geoportal -x /app/{{package}}_geoportal/static.*
44
+ RUN python3 -m pip install --disable-pip-version-check --no-cache-dir --editable=/app/ && \
45
+ python3 -m compileall -q /usr/local/lib/python3.* \
46
+ -x '/(debugpy|pipenv|.*pydev.*|networkx)/' && \
47
+ python3 -m compileall -q /app/{{cookiecutter.package}}_geoportal -x /app/{{cookiecutter.package}}_geoportal/static.*
41
48
 
42
49
  ARG GIT_HASH
43
- RUN c2cwsgiutils_genversion.py ${GIT_HASH}
50
+ RUN c2cwsgiutils-genversion ${GIT_HASH}
44
51
 
45
52
  ARG PGSCHEMA
46
53
  ENV PGSCHEMA=${PGSCHEMA}
47
54
 
48
55
  ENTRYPOINT [ "/usr/bin/eval-templates" ]
49
- CMD ["c2cwsgiutils_run"]
56
+ CMD ["gunicorn", "--paste=/app/production.ini"]
50
57
 
51
58
  ENV VISIBLE_ENTRY_POINT=/ \
52
59
  AUTHTKT_TIMEOUT=86400 \
@@ -61,6 +68,8 @@ ENV VISIBLE_ENTRY_POINT=/ \
61
68
  C2CGEOPORTAL_LOG_LEVEL=INFO \
62
69
  C2CWSGIUTILS_LOG_LEVEL=INFO \
63
70
  GUNICORN_LOG_LEVEL=INFO \
64
- SQL_LOG_LEVEL=WARN \
71
+ SQL_LOG_LEVEL=WARNING \
65
72
  DOGPILECACHE_LOG_LEVEL=INFO \
66
- OTHER_LOG_LEVEL=WARN
73
+ OTHER_LOG_LEVEL=WARNING \
74
+ DEVELOPMENT=0 \
75
+ LOG_TYPE=console
@@ -14,6 +14,7 @@ version_locations = /opt/alembic/static/
14
14
  [getitfixed]
15
15
  script_location = getitfixed:alembic
16
16
  version_locations = getitfixed:alembic/versions/
17
+ schema = getitfixed
17
18
 
18
19
  # Logging configuration
19
20
  [loggers]
@@ -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,104 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ # Copyright (c) 2019-2023, 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
+ preload = "true"
53
+
54
+ accesslog = "-"
55
+ access_log_format = os.environ.get(
56
+ "GUNICORN_ACCESS_LOG_FORMAT",
57
+ '%(H)s %({Host}i)s %(m)s %(U)s?%(q)s "%(f)s" "%(a)s" %(s)s %(B)s %(D)s %(p)s',
58
+ )
59
+
60
+ ###
61
+ # logging configuration
62
+ # https://docs.python.org/3/library/logging.config.html#logging-config-dictschema
63
+ ###
64
+ logconfig_dict = {
65
+ "version": 1,
66
+ "root": {
67
+ "level": os.environ["OTHER_LOG_LEVEL"],
68
+ "handlers": [os.environ["LOG_TYPE"]],
69
+ },
70
+ "loggers": {
71
+ "gunicorn.error": {"level": os.environ["GUNICORN_LOG_LEVEL"]},
72
+ # "level = INFO" logs SQL queries.
73
+ # "level = DEBUG" logs SQL queries and results.
74
+ # "level = WARN" logs neither. (Recommended for production systems.)
75
+ "sqlalchemy.engine": {"level": os.environ["SQL_LOG_LEVEL"]},
76
+ "dogpile.cache": {"level": os.environ["DOGPILECACHE_LOG_LEVEL"]},
77
+ "c2cwsgiutils": {"level": os.environ["C2CWSGIUTILS_LOG_LEVEL"]},
78
+ "c2cgeoportal_commons": {"level": os.environ["C2CGEOPORTAL_LOG_LEVEL"]},
79
+ "c2cgeoportal_geoportal": {"level": os.environ["C2CGEOPORTAL_LOG_LEVEL"]},
80
+ "c2cgeoportal_admin": {"level": os.environ["C2CGEOPORTAL_LOG_LEVEL"]},
81
+ "{{cookiecutter.package}}_geoportal": {"level": os.environ["LOG_LEVEL"]},
82
+ },
83
+ "handlers": {
84
+ "console": {
85
+ "class": "logging.StreamHandler",
86
+ "formatter": "generic",
87
+ "stream": "ext://sys.stdout",
88
+ },
89
+ "json": {
90
+ "class": "c2cwsgiutils.pyramid_logging.JsonLogHandler",
91
+ "formatter": "generic",
92
+ "stream": "ext://sys.stdout",
93
+ },
94
+ },
95
+ "formatters": {
96
+ "generic": {
97
+ "format": "%(asctime)s [%(process)d] [%(levelname)-5.5s] %(message)s",
98
+ "datefmt": "[%Y-%m-%d %H:%M:%S %z]",
99
+ "class": "logging.Formatter",
100
+ }
101
+ },
102
+ }
103
+
104
+ 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
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env python3
2
+
3
+ from setuptools import find_packages, setup
4
+
5
+ setup(
6
+ name="{{cookiecutter.package}}_geoportal",
7
+ version="1.0",
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/",
12
+ install_requires=[
13
+ "c2cgeoportal_geoportal",
14
+ "c2cgeoportal_admin",
15
+ ],
16
+ packages=find_packages(),
17
+ include_package_data=True,
18
+ zip_safe=False,
19
+ entry_points={
20
+ "paste.app_factory": [
21
+ "main = {{cookiecutter.package}}_geoportal:main",
22
+ ],
23
+ "console_scripts": [],
24
+ },
25
+ )
@@ -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('@camptocamp/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 webpackMerge = 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
 
@@ -7,16 +7,16 @@ let config = commons();
7
7
  const nodeEnv = process.env['NODE_ENV'] || 'development';
8
8
  switch (nodeEnv) {
9
9
  case 'development':
10
- config = webpackMerge(config, require('ngeo/buildtools/webpack.dev')());
10
+ config = merge(config, require('ngeo/buildtools/webpack.dev')());
11
11
  break;
12
12
  case 'production':
13
- config = webpackMerge(config, require('ngeo/buildtools/webpack.prod')());
13
+ config = merge(config, require('ngeo/buildtools/webpack.prod')());
14
14
  break;
15
15
  default:
16
16
  console.log(`The 'NODE_ENV' environment variable is set to an invalid value: ${process.env.NODE_ENV}.`);
17
17
  process.exit(2);
18
18
  }
19
19
 
20
- config = webpackMerge(config, apps);
20
+ config = merge(config, apps);
21
21
 
22
22
  module.exports = config;