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,6 +1,4 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- # Copyright (c) 2015-2021, Camptocamp SA
1
+ # Copyright (c) 2015-2023, Camptocamp SA
4
2
  # All rights reserved.
5
3
 
6
4
  # Redistribution and use in source and binary forms, with or without
@@ -29,14 +27,17 @@
29
27
 
30
28
 
31
29
  import logging
30
+ from typing import Any, Dict, Set, Tuple
32
31
 
32
+ import pyramid.request
33
33
  from defusedxml import ElementTree
34
- from pyramid.httpexceptions import HTTPBadRequest, HTTPForbidden, HTTPUnauthorized
34
+ from pyramid.httpexceptions import HTTPBadRequest, HTTPForbidden, HTTPInternalServerError, HTTPUnauthorized
35
35
  from pyramid.view import view_config
36
36
 
37
37
  from c2cgeoportal_commons import models
38
+ from c2cgeoportal_commons.lib.url import Url
38
39
  from c2cgeoportal_commons.models import main
39
- from c2cgeoportal_geoportal.lib.caching import NO_CACHE, PRIVATE_CACHE
40
+ from c2cgeoportal_geoportal.lib.common_headers import Cache
40
41
  from c2cgeoportal_geoportal.lib.filter_capabilities import (
41
42
  filter_wfst_capabilities,
42
43
  normalize_tag,
@@ -49,7 +50,9 @@ LOG = logging.getLogger(__name__)
49
50
 
50
51
 
51
52
  class TinyOWSProxy(OGCProxy):
52
- def __init__(self, request):
53
+ """Proxy for the tiny OWN server."""
54
+
55
+ def __init__(self, request: pyramid.request.Request):
53
56
  OGCProxy.__init__(self, request, has_default_ogc_server=True)
54
57
  self.settings = request.registry.settings.get("tinyowsproxy", {})
55
58
 
@@ -65,11 +68,8 @@ class TinyOWSProxy(OGCProxy):
65
68
  # params hold the parameters we are going to send to TinyOWS
66
69
  self.lower_params = self._get_lower_params(dict(self.request.params))
67
70
 
68
- def _get_wfs_url(self):
69
- return self.settings.get("tinyows_url")
70
-
71
- @view_config(route_name="tinyowsproxy")
72
- def proxy(self):
71
+ @view_config(route_name="tinyowsproxy") # type: ignore
72
+ def proxy(self) -> pyramid.response.Response:
73
73
  if self.user is None:
74
74
  raise HTTPUnauthorized(
75
75
  "Authentication required", headers=[("WWW-Authenticate", 'Basic realm="TinyOWS"')]
@@ -77,19 +77,18 @@ class TinyOWSProxy(OGCProxy):
77
77
 
78
78
  operation = self.lower_params.get("request")
79
79
  typenames = (
80
- set([normalize_typename(self.lower_params.get("typename"))])
81
- if "typename" in self.lower_params
82
- else set()
80
+ {normalize_typename(self.lower_params["typename"])} if "typename" in self.lower_params else set()
83
81
  )
84
82
 
85
83
  method = self.request.method
86
84
  if method == "POST":
87
85
  try:
88
86
  (operation, typenames_post) = self._parse_body(self.request.body)
89
- except Exception as exception:
90
- LOG.error("Error while parsing POST request body")
91
- LOG.exception(exception)
92
- raise HTTPBadRequest("Error parsing the request (see logs for more details)")
87
+ except Exception:
88
+ LOG.exception("Error while parsing POST request body")
89
+ raise HTTPBadRequest( # pylint: disable=raise-missing-from
90
+ "Error parsing the request (see logs for more details)"
91
+ )
93
92
 
94
93
  typenames = typenames.union(typenames_post)
95
94
 
@@ -100,78 +99,77 @@ class TinyOWSProxy(OGCProxy):
100
99
  # for DescribeFeatureType we require that exactly one type-name
101
100
  # is given, otherwise we would have to filter the result
102
101
  if len(typenames) != 1:
103
- raise HTTPBadRequest(
104
- "Exactly one type-name must be given for " "DescribeFeatureType requests"
105
- )
102
+ raise HTTPBadRequest("Exactly one type-name must be given for DescribeFeatureType requests")
106
103
 
107
104
  if not self._is_allowed(typenames):
108
105
  raise HTTPForbidden("No access rights for at least one of the given type-names")
109
106
 
110
107
  # we want clients to cache GetCapabilities and DescribeFeatureType req.
111
108
  use_cache = method == "GET" and operation in ("getcapabilities", "describefeaturetype")
112
- cache_control = PRIVATE_CACHE if use_cache else NO_CACHE
109
+ cache_control = Cache.PRIVATE if use_cache else Cache.PRIVATE_NO
110
+
111
+ url = Url(self.settings.get("tinyows_url"))
113
112
 
114
113
  response = self._proxy_callback(
115
114
  operation,
116
115
  cache_control,
117
- url=self._get_wfs_url(),
118
- params={k: v for k, v in self.request.params.items() if "_" not in k},
116
+ url=url,
117
+ params=dict(self.request.params),
119
118
  cache=use_cache,
120
119
  headers=self._get_headers(),
121
120
  body=self.request.body,
122
121
  )
123
122
  return response
124
123
 
125
- def _is_allowed(self, typenames):
126
- """
127
- Checks if the current user has the rights to access the given
128
- type-names.
129
- """
130
-
124
+ def _is_allowed(self, typenames: Set[str]) -> bool:
125
+ """Check if the current user has the rights to access the given type-names."""
131
126
  writable_layers = set()
132
127
  for gmflayer in list(get_writable_layers(self.request, [self.ogc_server.id]).values()):
133
128
  for ogclayer in gmflayer.layer.split(","):
134
129
  writable_layers.add(ogclayer.lower())
135
130
  return typenames.issubset(writable_layers)
136
131
 
137
- def _get_headers(self):
138
- headers = OGCProxy._get_headers(self)
132
+ def _get_headers(self) -> Dict[str, str]:
133
+ headers = OGCProxy.get_headers(self)
139
134
  if "tinyows_host" in self.settings:
140
135
  headers["Host"] = self.settings.get("tinyows_host")
141
136
  return headers
142
137
 
143
- def _proxy_callback(self, operation, cache_control, *args, **kwargs):
138
+ def _proxy_callback(
139
+ self, operation: str, cache_control: Cache, *args: Any, **kwargs: Any
140
+ ) -> pyramid.response.Response:
144
141
  response = self._proxy(*args, **kwargs)
145
142
  content = response.content.decode()
146
143
 
144
+ errors: Set[str] = set()
145
+ url = super()._get_wfs_url(errors)
146
+ if url is None:
147
+ LOG.error("Error getting the URL:\n%s", "\n".join(errors))
148
+ raise HTTPInternalServerError()
149
+
147
150
  if operation == "getcapabilities":
148
- content = filter_wfst_capabilities(
149
- content, super(TinyOWSProxy, self)._get_wfs_url(), self.request
150
- )
151
+ content = filter_wfst_capabilities(content, url, self.request)
151
152
 
152
153
  content = self._filter_urls(
153
154
  content, self.settings.get("online_resource"), self.settings.get("proxy_online_resource")
154
155
  )
155
156
 
156
- return self._build_response(response, content, cache_control, "tinyows")
157
+ return self._build_response(response, content.encode(), cache_control, "tinyows")
157
158
 
158
159
  @staticmethod
159
- def _filter_urls(content, online_resource, proxy_online_resource):
160
+ def _filter_urls(content: str, online_resource: str, proxy_online_resource: str) -> str:
160
161
  if online_resource is not None and proxy_online_resource is not None:
161
162
  return content.replace(online_resource, proxy_online_resource)
162
163
  return content
163
164
 
164
165
  @staticmethod
165
- def _parse_body(body):
166
- """
167
- Read the WFS-T request body and extract the referenced type-names
168
- and request method.
169
- """
166
+ def _parse_body(body: str) -> Tuple[str, Set[str]]:
167
+ """Read the WFS-T request body and extract the referenced type-names and request method."""
170
168
  xml = ElementTree.fromstring(body)
171
169
  wfs_request = normalize_tag(xml.tag)
172
170
 
173
171
  # get the type names
174
- typenames = set()
172
+ typenames: Set[str] = set()
175
173
  for child in xml:
176
174
  tag = normalize_tag(child.tag)
177
175
  if tag == "typename":
@@ -0,0 +1,80 @@
1
+ # Copyright (c) 2021-2023, 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
+ import logging
29
+
30
+ from pyramid.httpexceptions import HTTPNotFound
31
+ from pyramid.request import Request
32
+ from pyramid.response import Response
33
+ from pyramid.view import view_config
34
+ from tilecloud import TileCoord
35
+ from tilecloud.grid.free import FreeTileGrid
36
+
37
+ from c2cgeoportal_commons.models import DBSession, main
38
+ from c2cgeoportal_geoportal.lib.common_headers import Cache, set_common_headers
39
+
40
+ LOG = logging.getLogger(__name__)
41
+
42
+
43
+ class VectorTilesViews:
44
+ """All the views concerning the vector tiles."""
45
+
46
+ def __init__(self, request: Request) -> None:
47
+ self.request = request
48
+
49
+ @view_config(route_name="vector_tiles") # type: ignore
50
+ def vector_tiles(self) -> Response:
51
+ settings = self.request.registry.settings["vector_tiles"]
52
+ grid = FreeTileGrid(settings["resolutions"], max_extent=settings["extent"], tile_size=256)
53
+
54
+ layer_name = self.request.matchdict["layer_name"]
55
+
56
+ z = int(self.request.matchdict["z"])
57
+ x = int(self.request.matchdict["x"])
58
+ y = int(self.request.matchdict["y"])
59
+ coord = TileCoord(z, x, y)
60
+ minx, miny, maxx, maxy = grid.extent(coord, 0)
61
+
62
+ layer = (
63
+ DBSession.query(main.LayerVectorTiles.sql)
64
+ .filter(main.LayerVectorTiles.name == layer_name)
65
+ .one_or_none()
66
+ )
67
+ if layer is None:
68
+ raise HTTPNotFound(f"Not found any vector tile layer named {layer_name}")
69
+
70
+ raw_sql = layer[0].format(
71
+ envelope=f"ST_MakeEnvelope({minx}, {miny}, {maxx}, {maxy}, {settings['srid']})"
72
+ )
73
+
74
+ result = DBSession.execute(raw_sql)
75
+ for row in result:
76
+ set_common_headers(self.request, "vector_tiles", Cache.PUBLIC)
77
+ response = self.request.response
78
+ response.content_type = "application/vnd.mapbox-vector-tile"
79
+ response.body = row[0].tobytes()
80
+ return response
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: c2cgeoportal-geoportal
3
- Version: 2.6.0
3
+ Version: 2.8.1.180
4
4
  Summary: c2cgeoportal geoportal
5
5
  Home-page: https://github.com/camptocamp/c2cgeoportal/
6
6
  Author: Camptocamp
@@ -8,14 +8,17 @@ Author-email: info@camptocamp.com
8
8
  License: UNKNOWN
9
9
  Keywords: web gis geoportail c2cgeoportal geocommune pyramid
10
10
  Platform: UNKNOWN
11
- Classifier: Programming Language :: Python
12
- Classifier: Programming Language :: Python :: 3
13
- Classifier: Programming Language :: Python :: 3.7
11
+ Classifier: Development Status :: 6 - Mature
12
+ Classifier: Environment :: Web Environment
14
13
  Classifier: Framework :: Pyramid
15
- Classifier: Topic :: Internet :: WWW/HTTP
16
- Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
14
+ Classifier: Intended Audience :: Other Audience
17
15
  Classifier: License :: OSI Approved :: BSD License
18
- Classifier: Development Status :: 6 - Mature
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.8
20
+ Classifier: Topic :: Scientific/Engineering :: GIS
21
+ Classifier: Typing :: Typed
19
22
  Requires-Dist: Fiona
20
23
  Requires-Dist: GeoAlchemy2
21
24
  Requires-Dist: Mako
@@ -28,14 +31,19 @@ Requires-Dist: bottle
28
31
  Requires-Dist: c2c.template (>=2.0.7)
29
32
  Requires-Dist: c2cgeoportal-commons[upgrade]
30
33
  Requires-Dist: c2cwsgiutils
34
+ Requires-Dist: certifi (>=2022.12.7)
31
35
  Requires-Dist: defusedxml
32
36
  Requires-Dist: dogpile.cache (>=0.6)
37
+ Requires-Dist: fiona (>=1.10b2)
33
38
  Requires-Dist: geojson
39
+ Requires-Dist: idna (>=3.7)
34
40
  Requires-Dist: isodate
41
+ Requires-Dist: jinja2 (>=3.1.3)
35
42
  Requires-Dist: lingua
36
43
  Requires-Dist: papyrus
37
- Requires-Dist: psycopg2-binary
44
+ Requires-Dist: psycopg2
38
45
  Requires-Dist: pycryptodome
46
+ Requires-Dist: pygments (>=2.15.0)
39
47
  Requires-Dist: pyotp
40
48
  Requires-Dist: pyramid
41
49
  Requires-Dist: pyramid-debugtoolbar
@@ -46,7 +54,10 @@ Requires-Dist: python-dateutil
46
54
  Requires-Dist: rasterio
47
55
  Requires-Dist: redis
48
56
  Requires-Dist: requests
57
+ Requires-Dist: requests (>=2.31.0)
58
+ Requires-Dist: setuptools (>=65.5.1)
49
59
  Requires-Dist: transaction
60
+ Requires-Dist: urllib3 (>=1.26.17)
50
61
 
51
62
  c2cgeoportal is the server part of `GeoMapFish <http://geomapfish.org/>`_,
52
63
  the client part is `ngeo <https://github.com/camptocamp/ngeo/>`_.
@@ -0,0 +1,191 @@
1
+ c2cgeoportal_geoportal/__init__.py,sha256=kXC5nxJa8-sSmZH60XEaoYnYngLSCZF_-14vUSetUso,32870
2
+ c2cgeoportal_geoportal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ c2cgeoportal_geoportal/resources.py,sha256=6CMHJveA-nDBNHBO0MudHCu2tn0AdKXmLKrTv8Ulz08,2182
4
+ c2cgeoportal_geoportal/lib/__init__.py,sha256=d0Z_99AxtbdZAtSUT8iOpRg5_ZV0lnERmkamri5x6TM,10374
5
+ c2cgeoportal_geoportal/lib/authentication.py,sha256=5P4NWcmTDiZgSKvUbidzSHax-6ufwrIER2NBR7aP1UE,8911
6
+ c2cgeoportal_geoportal/lib/bashcolor.py,sha256=LQgOgtFUvgJ4Ed3-YW3RPjvhBMZBbXBBkUZKE4unRCI,1889
7
+ c2cgeoportal_geoportal/lib/cacheversion.py,sha256=M_0Ci0HPQASkcHbnvG33G9SOsFdRMKSHUP5G5Yt1yvI,2948
8
+ c2cgeoportal_geoportal/lib/caching.py,sha256=3tcz5ZCsdL0ByINiNFux3--zoqQbJVuYalhTPYrIDvE,6713
9
+ c2cgeoportal_geoportal/lib/check_collector.py,sha256=-x5iFUMw0NfPalG1RI6WoKTiW1BlUvHTiAJy_2mMu2s,3414
10
+ c2cgeoportal_geoportal/lib/checker.py,sha256=RdcGWUjDHowaxl5OZGM5uNrG-K5v4P5BtnfANJO3lfY,12549
11
+ c2cgeoportal_geoportal/lib/common_headers.py,sha256=sa3FqwE5_1G0heJu8ep9cZImoBqndITLA405IivY_Dc,6318
12
+ c2cgeoportal_geoportal/lib/dbreflection.py,sha256=TL5xovttqEKkkjKTgOaS1IRtrUp4pY1H8l8XIjC8l_g,9638
13
+ c2cgeoportal_geoportal/lib/filter_capabilities.py,sha256=JVx0nBWDdLMCfd0GwG7AdE4tb26DEuimkP87XEEQbXg,14434
14
+ c2cgeoportal_geoportal/lib/fulltextsearch.py,sha256=6mUdf4EydFiI7gjx2vmcc4yyRRFs4cH3gg_XdBePAww,2271
15
+ c2cgeoportal_geoportal/lib/functionality.py,sha256=DqqLx3dwBY7QxpQgcDGh8NuxE1-sWVuSPk5k3bNE2bM,6293
16
+ c2cgeoportal_geoportal/lib/headers.py,sha256=d6lelDs1fDh5xO8Dz34r-TRgSETY2bb1eEIDuk6FJHM,2622
17
+ c2cgeoportal_geoportal/lib/i18n.py,sha256=VB1xn7c_jV-E10vvphM_h14gzSk1q5_G26BcJDSOtfE,1876
18
+ c2cgeoportal_geoportal/lib/layers.py,sha256=P-ZMC63gKdGmiTDn0WP2ZB3AJGGL05YhuckVzaayXTY,4655
19
+ c2cgeoportal_geoportal/lib/lingua_extractor.py,sha256=a2diXad0FfEFcwrwOWEv_YxxPwyXvYI6Mx-A7WEdodQ,36944
20
+ c2cgeoportal_geoportal/lib/loader.py,sha256=EPaxEYoiG_oZJYVSpCr22bhGzw8wuxfkL_Oz53dKEQg,2546
21
+ c2cgeoportal_geoportal/lib/metrics.py,sha256=j1vmGEqV7RtIwk2w83bUHvAnkk_nSPDsoFHjqDsLiSU,4524
22
+ c2cgeoportal_geoportal/lib/oauth2.py,sha256=JiL7yi8JuvABfXS3H1St9kdtXnF9XrU1xyTYK5ydxA4,40555
23
+ c2cgeoportal_geoportal/lib/wmstparsing.py,sha256=e4bkKn4dowZNvHJufyal47E-kTgKzTk9xB4DKQhnAp4,12343
24
+ c2cgeoportal_geoportal/lib/xsd.py,sha256=vInVayMaucYZx9Hz4TBSN1jlSNza4H6hpPI0_W6-k0o,6043
25
+ c2cgeoportal_geoportal/scaffolds/advance_create/cookiecutter.json,sha256=1LVOM-j_nd00J89q0EI3bQUvIysbidApaVHDibA2ydk,524
26
+ c2cgeoportal_geoportal/scaffolds/advance_create/ci/config.yaml,sha256=LiDYqdnRyOXmGoSuvjMBxwfL7tYd1i1PXx5u8TU-Hs8,592
27
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/.dockerignore,sha256=rPtGQNYXYoj-D94VwnVT_x-HvqldTNoz2oT7DjGpyqk,147
28
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/.eslintrc.yaml,sha256=txdVU8ikuADtWxCHWjyOBtT8wiXzf-LhT9ZMVtBiwhY,241
29
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/.prospector.yaml,sha256=OI6NLGh_3tp2-GOvcX2mzVKGwnHU-KG8S8p-BGt_zmY,325
30
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/Dockerfile,sha256=qarLuvU0G8qNZXwxxH92O9PxYeA6Gb-Mnqb4mD3v_XY,2498
31
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/Makefile,sha256=ctHZV0-kh9voLpmgVK_ya68GI5VAKmxN9UiZVZKPyBo,147
32
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/alembic.ini,sha256=KpgEj3uVRBdgiTjaQDqUjy_C0z5s8t2DUPFPTUSm7_w,985
33
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/alembic.yaml,sha256=9HMFJ_UekLUzXM5bPtixNNkeHMalo50hKjkxM_2tG2E,458
34
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/development.ini,sha256=NNBSPTGrK9D5kwR1WV1yV1wXQuPFBSQG5QkW16-OcVo,3042
35
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/gunicorn.conf.py,sha256=7SrEUSeEsDT5UoxpA87yQJbqH-4hayNS8L9Ur5fSkKs,4086
36
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/language_mapping,sha256=jZNiCuWh5-LsU0oDmNviVfNyNqZibBXNc_rsv_OpUuE,27
37
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/lingua-client.cfg,sha256=Q5OugT3Ns7HEFxcBCejDHEkMtEUGhk__6-yONGg2ImM,117
38
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/lingua-server.cfg,sha256=1mRNwhmqmxlJwKucLauitmY9MHgWAyCr4N6TaqHkKsU,107
39
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/production.ini,sha256=ptWxF3jAE1A3IAQ7KdYSpGbPdAm3g-S-SIFXdZuFk3o,1137
40
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/requirements.txt,sha256=n6hSj_r5f8NmSamv1Jo7Ly6bxby8ziEeXoMmY_psgtY,55
41
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/setup.py,sha256=dZ-f23wZNh4TuHXCmyHRrlWR0kTVN3PKTT1FQilDeDk,694
42
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/tsconfig.json,sha256=NBfOaqGnwNeVW7Z9Yk3eHeX9NhqA7MteCb3oS3DKJXk,186
43
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/webpack.api.js,sha256=Y0x1YePxOBdTu3UzmxEMJySstqU_uzFxCqkEGCUM1J8,1981
44
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/webpack.apps.js,sha256=YMb7W8f0cu9y7voYCMnHKwtHoiJWcA6S0vsAab4jbMg,2453
45
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/webpack.commons.js,sha256=JG0whugNLn1N33A2TDOabuXuT4y-p7FAwpJagy31qcA,658
46
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/webpack.config.js,sha256=IFHj1YVu2aitTtQWVV6E5BaU0YDHz1qeoixaLbtRXPA,643
47
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/__init__.py,sha256=GEqdw3Q7gov4KlUsZNcEIbk86HipezUMVHTzzQJSdBk,1282
48
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/authentication.py,sha256=mjPjpZfgPPeMneKe4u95aPYIJlWcUpbSsR5-3ObWirA,426
49
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/dev.py,sha256=2Et_4LUWO_82DAYsPxEnH5yCX0YVY2XPhv9pzOTl8Zs,387
50
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/models.py,sha256=_IYgNpp7ZRKcH30eo-d--qbb11ojx7Tv2qJdVGIlsjQ,284
51
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/multi_organization.py,sha256=qNxledzv8JeIWTFFF8-XO163qmxztiBY_NhxLvEOCAM,158
52
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/resources.py,sha256=8Ey8_zvzge1A9yid7LDggHZlulbWsm21gM6Mf9LgzlI,270
53
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/subscribers.py,sha256=8ChZ7xVzcaOqRXIErrO4JtJqEnGWJ3y1C6Tu0ExjwGs,1352
54
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static-ngeo/api/index.js,sha256=rxXFRQeGxBTLmhOUmFpIaGZda1Gk5Qi_VsXdbaOfwXo,260
55
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static-ngeo/js/{{cookiecutter.package}}module.js,sha256=TYZUcLOinHKhzn-l35pwqe0kNOhX90TzFOVj1KyaVaI,614
56
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
+ c2cgeoportal_geoportal/scaffolds/advance_update/cookiecutter.json,sha256=1LVOM-j_nd00J89q0EI3bQUvIysbidApaVHDibA2ydk,524
58
+ c2cgeoportal_geoportal/scaffolds/advance_update/{{cookiecutter.project}}/geoportal/CONST_Makefile,sha256=0s9CTP21J_Y5bBuCoGZKEvSI4PPrmguf66UCN2WP6KI,3993
59
+ c2cgeoportal_geoportal/scaffolds/create/cookiecutter.json,sha256=1LVOM-j_nd00J89q0EI3bQUvIysbidApaVHDibA2ydk,524
60
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.dockerignore,sha256=aU-IzKK1qmFAJNiCLYT6yB6LVTEsDBcO5nBW3q8M-MQ,351
61
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.editorconfig,sha256=cpHwgH23FLEQ6gV2O0Xa-iKxCaaVHhTKiFA91moh1sQ,297
62
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.gitignore,sha256=NNaSfLn7_4sIXta39BzRfGQJfUqBq-U4lbgtkXStgkY,449
63
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.prettierignore,sha256=PcDfauWwzv1pnJgC9HR1zvv06Q01CwzGzzc0iLSNcZk,9
64
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.prettierrc.yaml,sha256=WbjZCtw0hBlDB2FYJanFJzAvUsNTxgwn62YBZ-Xbwkw,43
65
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/Dockerfile,sha256=zJzSNMMy78GdhegVkwEj0jSIU-r_bu9i0_e9-c25MU0,3194
66
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/Makefile,sha256=uypJUSISjWZ74-j38d2-45ld7SsfFfAGzHsqythL6mY,3087
67
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/README.rst,sha256=PvydIFv4NS8CMqmLrCTm2TvIS0GNkWgiI-VwQvWBF5o,423
68
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/build,sha256=QPDeazuKeoh0POcQPInNkubIGjq7tpDx9xV-hW35D5c,7331
69
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose-db.yaml,sha256=JE5fBz3d3kYoBeUbCDvbKYNhu8QOzD0KLDeJD8AKMZI,534
70
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose-lib.yaml,sha256=1S7LhxJ-Ow8M4ylubR4_V9wT3DPcms8XE1Iig_oI9l0,13247
71
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose-qgis.yaml,sha256=jllE7NrAnwljsyknDZWYl2FA9s-R-K_KBaJS3ubhJZE,590
72
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose.override.sample.yaml,sha256=ZJ-ea8rBeVU5HvlxCpCnzJBdxruYexgCtjDLmQWAs0g,2561
73
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose.yaml,sha256=jUpbs89PVJCRTQ6KFSUnfFE_RxHt9r787lIFtbmi_aQ,2396
74
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/env.default,sha256=ThvJkKm-Q1pWoC9bOyutULthuKFR90v0d0LoB5xpy-Y,3129
75
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/env.project,sha256=EoeIag5EnozSNMSETW7G9-dGPnG5NIfRhcxU5ihM_rU,2070
76
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/project.yaml,sha256=3tNtVcoIug5LNZoZsUpjm_YRCZQMAKzYWNL9ZdjkPC8,495
77
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/pyproject.toml,sha256=aE-mE3kOcc7pgCU9KimHBWtTsBLCdlbtjxc1f4jEcLg,107
78
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/run_alembic.sh,sha256=VcrDFPAGlrxXtn4N8RcPhI90uZ8shDrGowALuwx8gnM,235
79
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/setup.cfg,sha256=_Oj7PwahkYUSneIrjn2mXwo0m6b27dTCZhAwWXFWqUA,221
80
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/spell-ignore-words.txt,sha256=xREYVDbYmOz5vpSU0A6Lijb_I--zz6JSTmirxyX0dwI,30
81
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/main.yaml,sha256=AlYwOIOPjoroT75_EIm0OZwkpIF39sliNqTfjIE9T2k,1594
82
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/rebuild.yaml,sha256=mPS3D0gwSPasPwEARAbHhUwDYJHND7D3fewoiBtvU-8,1314
83
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/update_l10n.yaml,sha256=AQZvF8Jc-R6IQtMXOsKlTj6CcCgqY-Y3CvlXy4HNDGQ,2335
84
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/ci/config.yaml,sha256=wYdG43pQEqgOvrNQQdENe5vnD7Y1wbXt4G2N43l4b5A,485
85
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/ci/docker-compose-check,sha256=7lnVTaaoUrC5MPGpwH2IWbzYc2KaeQMWguahsoY9Rf8,615
86
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/ci/requirements.txt,sha256=HtayxIhr_FBCf2wz0nTt6QOH_nLhs1quNvhKyBFpBkI,35
87
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/vars.yaml,sha256=fj2cC59FhAQeE7TDSpX0ZNY-XOksOolt3r7bRknisio,11635
88
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/locale/en/LC_MESSAGES/{{cookiecutter.package}}_geoportal-client.po,sha256=hKLs5f7EJz05ACRtyTlCtssCo99PMuj-FfOJXchMZFk,162
89
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/robot.txt.tmpl,sha256=JR_vIqMlHq1oSgyWPN2mtZyEpsqhjKQQecaW2pxvK54,88
90
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/desktop.css,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/iframe_api.css,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
92
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/mobile.css,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/banner_left.png,sha256=ExK_hOKzWaD4rgrSFy3xw88JrJai5n8JEXy-dEmvSLo,13799
94
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/banner_right.png,sha256=t65I5iM-wl_7a6k3NLbVT5d725siXigH2dsOhtmC3PU,6018
95
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/blank.png,sha256=zp8uuLPeZ13bYveFL5dI20zQMqzo_0SSMZGNV49JZfI,259
96
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/markers/marker-blue.png,sha256=aALxnIGsafvssGB3fEmLWUNb7X3xz7JQlnoxUJhkNgg,758
97
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/markers/marker-gold.png,sha256=O5qV6Vb1Y9QMiszH34x5PA1wX_SnVZ6Qhv7vsy8zr-g,703
98
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/markers/marker-green.png,sha256=ucJpwxgJnaA4dUnDk779X1ZLxnYowMOTAq_CMeGw8PQ,753
99
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/markers/marker.png,sha256=wj0-D2abaL-A-OIoUbEeuSwMc_e1zf8zE4lVpra9xYY,601
100
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/demo.map.tmpl,sha256=mFtC2pzbN3-KQpZxQbhV8fMeQaZikMyZ5N-A9RXaxYE,7269
101
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts.conf,sha256=uG3B6GUKIvTRVLO025Ecm5lh27sEMpmmzWUzFjNh8Qg,351
102
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/mapserver.conf,sha256=xRv4CqlYGLUm5t2y4G2PVCQKMRgufX0snvNz2-uBJVY,187
103
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/mapserver.map.tmpl,sha256=1kpzZv7rME0MbXw-2rQAvoh1_AshvbVFTzMqb6bXAnc,2698
104
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/tinyows.xml.tmpl,sha256=hI6mHamiwQW40t2Rf-NRHwOtkPdxL4YrkVS7MlUYPb8,816
105
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/data/Readme.txt,sha256=cOp2unb8vqlUqADg501IDzQbyLGZodCXyGH19fCEVUo,2891
106
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/data/TM_EUROPE_BORDERS-0.3.sql,sha256=pYpbBi2P61thQtpochj_-tl_kQIIVAJgZsemTYdRUBo,1588593
107
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Arial.ttf,sha256=NcDzVZ2NtWnjbDEJW4pg1EFkPZX1kTneQOI_ragZuDM,275572
108
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Arialbd.ttf,sha256=QESqa1vrvDaYAga0WwqqqlaBVSpIvK20F0bV0dcf17Q,286620
109
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Arialbi.ttf,sha256=Lzcc2dlrOsVEUZ2FwW3EPOrN_Oo1CQ7o3fPsWFfFAyg,224692
110
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Ariali.ttf,sha256=cK3iMxdaamZ15FAUYa-TJub3ix_994fKDaWrD8jJz9Y,206132
111
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/NotoSans-Bold.ttf,sha256=aL3Veh4eYmY6CzcsciQgS4KomCC5zzA5Ezf2HwxecSM,415132
112
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/NotoSans-BoldItalic.ttf,sha256=i-2wEn6RSsOt4je0AtM-VzrMS9ugueOYEnLK40_5hXo,290436
113
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/NotoSans-Italic.ttf,sha256=fWFOfubTLPuiYxv5hrx-xlodmXO7QUy55a632thch4c,279268
114
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/NotoSans-Regular.ttf,sha256=nptMU70lytnATTcPEzpeMtFm0NVOKprWy6SjH804LVs,414820
115
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Verdana.ttf,sha256=lu0UlJyktzks_yNbnEHVXBJTgqu-DA08K53WaJfK4Ms,139640
116
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Verdanab.ttf,sha256=yPUGW6kWgPWWrzsDeOLD5xO5WlI749Vq4YXKK49fCyM,136032
117
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Verdanai.ttf,sha256=kbWRhmVvUpclMaEUM8hm_VbmLsTmHiYhotunDI8ZqCg,154264
118
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Verdanaz.ttf,sha256=aY4iD0j0pA53r36zSVjI_QLx4Yw7o_Nl2Tv6LtRHTIA,153324
119
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/A3_Landscape.jrxml,sha256=LWasD8pgHCedWvKcByvnzzASgae3XzNH3MGqG-rEpSM,10262
120
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/A3_Portrait.jrxml,sha256=WVXAQAvaKYDEFE3cS6gwEeHsN_n-EKmsq9y0oiu05HU,8967
121
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/A4_Landscape.jrxml,sha256=eO4CQt8iCyWVDs2pGPm6dYEQtjA6PADcqe0t5tagR1Y,9822
122
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/A4_Portrait.jrxml,sha256=pNgpWqChIMOVP9AEcloSRlNjgWRaxtgCRMxNyRDP9Bw,7096
123
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/config.yaml.tmpl,sha256=QxH5xgjetuB_d3z0ktD5ZKctyNDAb8K9Ku0Y6yaOO24,4914
124
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/legend.jrxml,sha256=qRxN0MC4KIyxxLNiCdriO0FEUZerzrkTu-cSjexx7dE,5310
125
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/localisation.properties,sha256=n7F7W9ELl53JsNCDMwoFIlWravXB-K4VCQdo_Yjanx8,98
126
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/localisation_fr.properties,sha256=OBh4sWxMNW8dNgcXr7VpTW8HemJIQoxRmPBLZ9MDVmI,102
127
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/logo.png,sha256=ExK_hOKzWaD4rgrSFy3xw88JrJai5n8JEXy-dEmvSLo,13799
128
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/north.svg,sha256=rnHO-cNiy9ZyfwvI-o2dYipzuu-vh9rn0nE45FjfOPo,2925
129
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/results.jrxml,sha256=gf5grUvt-oG_H0LnsNvBWMDGqvH3uuW_wfy0O-n5ui4,1309
130
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/qgisserver/pg_service.conf.tmpl,sha256=WcjfsfsfNLHAfbg84HgEIb64EDnnJJWGnyAdPTXD0PI,296
131
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/scripts/db-backup,sha256=nE7vMj42Eoi3A2HivX9b9KSjioKrG9sksWOJy0Je36Q,4446
132
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/scripts/db-restore,sha256=_AeXNkjTmhsBPJ4JrGzbl3uEpQw0VLVAIqLBOFJ6t1A,4637
133
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
134
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/tests/test_app.py,sha256=VBcCdHJokg4UKA2hzM_xVElQCnBqJ7O8NVO1Iro7-t0,1564
135
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/tilegeneration/config.yaml.tmpl,sha256=y-X8uAZP9mEq3k6NygBI_FynZeEQ_IatFPXkzWs5UAQ,6181
136
+ c2cgeoportal_geoportal/scaffolds/update/cookiecutter.json,sha256=x3FFn3b67GPGCsjg36iGXCudjaTSfwGHcwHS6HHVpPQ,539
137
+ c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/.upgrade.yaml,sha256=_ctFv4lgUP4_7LozPND8jKwixN5jeaiB0bGSrnH4jV4,2559
138
+ c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/CONST_CHANGELOG.txt,sha256=2vZ20rEGchwMzvvFMBsbY2glEZsYBItm9l5llbWMec4,8617
139
+ c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/CONST_create_template/tests/test_testapp.py,sha256=Mxx4z7TnM3VHF8xxEorZjIw9uQRNGM7y5EHW7VYaEb8,1796
140
+ c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/geoportal/CONST_config-schema.yaml,sha256=bjpHnvjPDNr-wVodb3NC9XkCcr-hnJo8JhirX2t38MU,21183
141
+ c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/geoportal/CONST_vars.yaml,sha256=gQOPZqPUitn674cVrf-DonrRWZmZ7sLAE1NL9YXfBms,47538
142
+ c2cgeoportal_geoportal/scripts/__init__.py,sha256=elsD0ciAiyAmJKSfNzx67ZhA74QQIJ6R34zgp3Ac7Yw,2935
143
+ c2cgeoportal_geoportal/scripts/c2cupgrade.py,sha256=j2dl2bBTpSIT6J0JG6nz7PbjOl8_Umm3lnH3x8wnXsA,36311
144
+ c2cgeoportal_geoportal/scripts/create_demo_theme.py,sha256=3RmUnFj1V9A3KMCCSYplhemN4faNQbnJgDmeunQ_VSo,3081
145
+ c2cgeoportal_geoportal/scripts/manage_users.py,sha256=-9ExER-kYHh6OMsoOAuLhnjEOLoAjzzbGEcVZoZwnSg,5468
146
+ c2cgeoportal_geoportal/scripts/pcreate.py,sha256=e1_1E5kZr4n_r2ac97Xdu1oMX8uZ8E-KVtcAuNmQDAY,11482
147
+ c2cgeoportal_geoportal/scripts/theme2fts.py,sha256=MIPG37lcgQODLFqgBifttIJJtotpNRQkGPLill8WD7g,13727
148
+ c2cgeoportal_geoportal/scripts/urllogin.py,sha256=qGOOvx2ZN3qnENGzo8NScRqfFC06l1yc48vU6Qx3MBo,3319
149
+ c2cgeoportal_geoportal/templates/login.html,sha256=0xcwQQDM2uv3Li0qnS91eyjsVtK0ZGiPNld7DXKadco,2475
150
+ c2cgeoportal_geoportal/templates/notlogin.html,sha256=cJx7z50IKQl7Fb9KXv03iSxh6pgff0dbnxa9FIHNkxM,1528
151
+ c2cgeoportal_geoportal/templates/testi18n.html,sha256=Br6Vf5zTDdaH0L07saV_8dIIT3C9xnSqh4quzTELo2s,369
152
+ c2cgeoportal_geoportal/views/__init__.py,sha256=dRkrULopklvgOGEH481Sv381VcwBt9dgwevn8m_QQ0g,2669
153
+ c2cgeoportal_geoportal/views/dev.py,sha256=e1oZkKwwQvssMOzg3Zao3Jm4WNIFVwEI3EOR1Xj3-_Y,2533
154
+ c2cgeoportal_geoportal/views/dynamic.py,sha256=dwT2yIBnZYxt7jq3jg5oodU_1MZtjJea0K608lGefhU,8613
155
+ c2cgeoportal_geoportal/views/entry.py,sha256=eeJ2xpohmG6F9Ujw5L81oD4q8Lu3rWtja3ScO0Mvsfs,5780
156
+ c2cgeoportal_geoportal/views/fulltextsearch.py,sha256=0-KA3Pyx52cZWx46uw84jfBM9EOjUx4bMMZkBgEsKFI,8330
157
+ c2cgeoportal_geoportal/views/geometry_processing.py,sha256=LpzAR6RgGS9XfsGLmNqD3dq7ghhZ5Q_eSZgiD8f3XZU,2946
158
+ c2cgeoportal_geoportal/views/i18n.py,sha256=7Avpt-aVEVlS3SrwtZkvuJ8_0gBZvVrCviyaIZBx7jY,5292
159
+ c2cgeoportal_geoportal/views/layers.py,sha256=obRfvJE_IhqT0oQdyjv1Lce_KZVb8GWDrkpMZNYqZH0,28773
160
+ c2cgeoportal_geoportal/views/login.py,sha256=H4BCgOrhlbx34g5J1Sx8SdpoEoRCyL6PFRv19du_Vdo,21302
161
+ c2cgeoportal_geoportal/views/mapserverproxy.py,sha256=b4c0-uuoBk8YVccpQ_6UVVqUzenrV-2edfBE0Q4c9Bw,8167
162
+ c2cgeoportal_geoportal/views/memory.py,sha256=nb2repOnil0PdziEjCLOZ-84LFKLkdAlKTnnMQoXDdA,3627
163
+ c2cgeoportal_geoportal/views/ogcproxy.py,sha256=xnbrLpB8ZZSU-P1_aM_9LZeFr7GJzbePB05Ls6tluTU,5231
164
+ c2cgeoportal_geoportal/views/pdfreport.py,sha256=jRXOZxNwB2uMsFFNaUOb3Axc1W_ZW00mQ9EYRoENppE,9595
165
+ c2cgeoportal_geoportal/views/printproxy.py,sha256=rsNXmZ1IBv9rXaCrCVRcc9cWkHOa3rX9NJgNFDNIp4A,5977
166
+ c2cgeoportal_geoportal/views/profile.py,sha256=WOjnkLcL3nakQG0t2Zj6M0FWyG3T874nn7MXaa1Dl18,5394
167
+ c2cgeoportal_geoportal/views/proxy.py,sha256=dQ5Xot1R4FKH-zkGPei5mKUzYqguYztrgo1v93qJ1_k,10458
168
+ c2cgeoportal_geoportal/views/raster.py,sha256=zdwXumFZZNx1Gxlqy_s_6Cm8l50vN6CUMkXYHsbWIdI,7567
169
+ c2cgeoportal_geoportal/views/resourceproxy.py,sha256=Wxzb0HkWQtL5JZmbNFfTP9-m83vKImsURGIotC3qbXc,3181
170
+ c2cgeoportal_geoportal/views/shortener.py,sha256=EP2geo-9hfce0ZQ6kzwpwnOb3ruGY2KwxBDtepJKYQI,6205
171
+ c2cgeoportal_geoportal/views/theme.py,sha256=BHsvtuWqTqlpy1eyvOH5h9oGLYgdo4cuf1qdJTAiBTQ,52696
172
+ c2cgeoportal_geoportal/views/tinyowsproxy.py,sha256=cfWyZc4mn003TF7XY03NC2S8svZoUWHScrIaS9i99Cc,7831
173
+ c2cgeoportal_geoportal/views/vector_tiles.py,sha256=jerhFjx3_qImXz0a3eQI4FLSSe0CGmkjSt6pAXzzxUg,3460
174
+ tests/__init__.py,sha256=KxmbgvRWDSJoEDH1cXnDIjbfBsgCzs2KdkTPuzYMq84,3826
175
+ tests/test_cachebuster.py,sha256=asI1X_qI0MGklYuKuWyqvCPVbvhQcUe4fX91Dk-hUsE,2923
176
+ tests/test_caching.py,sha256=8mHfSvQPEBq6sT6wvHC5Hk3mpJsyHBuOVMp4w0k37j8,12499
177
+ tests/test_checker.py,sha256=NaU6Ejg9XbwS2cwqXCtz5mJPRdBIPZb3d1MkXVufr0k,3638
178
+ tests/test_decimaljson.py,sha256=CQrkqWs66kmq1iYur5kjzKhvdhw9b4TMcKEsuVayxA4,2223
179
+ tests/test_headerstween.py,sha256=3PkfTbsUq2C7fEsckO_4aYu9-XGBSeOgf86ENSqx76o,2524
180
+ tests/test_i18n.py,sha256=-mAW0UyeNF9uqkq6O_Z0mK8gGwlHlTWI0gb9Ri_bk1M,994
181
+ tests/test_init.py,sha256=TfALiPg0pVdp7EoBDwZTMNBPWK1cyXG1H3p3hwUwVAU,7279
182
+ tests/test_locale_negociator.py,sha256=JDRzF8_yzsgYOWHlyd_7ezOqSCvudKjeN2QjExS0a4A,3044
183
+ tests/test_mapserverproxy_route_predicate.py,sha256=SzILSSzIuilzIkUYVPZiVzLwW1duQvCxxEvxSLk4p1o,3043
184
+ tests/test_raster.py,sha256=82NJ2MXgZlMqs0ytN-VgNw376iURdk4PkAg__dyh5ns,11948
185
+ tests/test_wmstparsing.py,sha256=xjA8nJuXFl3H5Bfs4sJw_8qX8E8qvAALK7Hs2-DTP2A,9054
186
+ tests/xmlstr.py,sha256=rkTKSU4FGjupBKLx75H8o-goB0KbQrxDvdpc6xVX_uQ,5985
187
+ c2cgeoportal_geoportal-2.8.1.180.dist-info/METADATA,sha256=Xpb1Xha982XJ0WLvd825UoaPfcEaKXKl9N7Z5BJR7VI,2172
188
+ c2cgeoportal_geoportal-2.8.1.180.dist-info/WHEEL,sha256=a-zpFRIJzOq5QfuhBzbhiA1eHTzNCJn8OdRvhdNX0Rk,110
189
+ c2cgeoportal_geoportal-2.8.1.180.dist-info/entry_points.txt,sha256=w0xGr1Bo8q5GBFiP4JgqbSIg-bNhG7bsGoEaGSTfzaE,1415
190
+ c2cgeoportal_geoportal-2.8.1.180.dist-info/top_level.txt,sha256=PJIbY7Nx51dDrJ052f5mDA7c6Tehm5aD-Gb32L_CtJA,29
191
+ c2cgeoportal_geoportal-2.8.1.180.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.34.2)
2
+ Generator: bdist_wheel (0.40.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py2-none-any
5
5
  Tag: py3-none-any
@@ -2,6 +2,7 @@
2
2
  c2cupgrade = c2cgeoportal_geoportal.scripts.c2cupgrade:main
3
3
  create-demo-theme = c2cgeoportal_geoportal.scripts.create_demo_theme:main
4
4
  manage-users = c2cgeoportal_geoportal.scripts.manage_users:main
5
+ pcreate = c2cgeoportal_geoportal.scripts.pcreate:main
5
6
  theme2fts = c2cgeoportal_geoportal.scripts.theme2fts:main
6
7
  urllogin = c2cgeoportal_geoportal.scripts.urllogin:main
7
8
 
@@ -21,6 +22,8 @@ c2cgeoportal+egg = c2cgeoportal_geoportal.lib.loader:Loader
21
22
  c2cgeoportal+ini = c2cgeoportal_geoportal.lib.loader:Loader
22
23
 
23
24
  [pyramid.scaffold]
25
+ c2cgeoportal_advance_create = c2cgeoportal_geoportal.scaffolds:TemplateAdvanceCreate
26
+ c2cgeoportal_advance_update = c2cgeoportal_geoportal.scaffolds:TemplateAdvanceUpdate
24
27
  c2cgeoportal_create = c2cgeoportal_geoportal.scaffolds:TemplateCreate
25
28
  c2cgeoportal_update = c2cgeoportal_geoportal.scaffolds:TemplateUpdate
26
29
 
tests/__init__.py CHANGED
@@ -1,6 +1,4 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- # Copyright (c) 2011-2019, Camptocamp SA
1
+ # Copyright (c) 2011-2023, Camptocamp SA
4
2
  # All rights reserved.
5
3
 
6
4
  # Redistribution and use in source and binary forms, with or without
@@ -28,23 +26,29 @@
28
26
  # either expressed or implied, of the FreeBSD Project.
29
27
 
30
28
 
31
- """Pyramid application test package
29
+ """
30
+ Pyramid application test package.
32
31
  """
33
32
 
34
33
  import logging
35
34
  import os
36
35
  import urllib.parse
36
+ import warnings
37
37
 
38
+ import sqlalchemy.exc
38
39
  from pyramid.testing import DummyRequest as PyramidDummyRequest
39
40
 
40
41
  from c2cgeoportal_geoportal.lib import caching
41
42
 
43
+ with warnings.catch_warnings():
44
+ warnings.simplefilter("ignore", category=sqlalchemy.exc.SAWarning)
45
+
42
46
 
43
47
  class DummyRequest(PyramidDummyRequest):
44
48
  def __init__(self, *args, **kwargs):
45
49
  super().__init__(*args, **kwargs)
46
50
  self.client_addr = "1.1.1.1"
47
- self.referer = None
51
+ self.referrer = None
48
52
  if self.registry.settings is None:
49
53
  self.registry.settings = {}
50
54
 
@@ -54,6 +58,7 @@ def setup_common():
54
58
 
55
59
  caching.init_region({"backend": "dogpile.cache.null"}, "std")
56
60
  caching.init_region({"backend": "dogpile.cache.null"}, "obj")
61
+ caching.init_region({"backend": "dogpile.cache.null"}, "ogc-server")
57
62
 
58
63
 
59
64
  def create_dummy_request(additional_settings=None, *args, **kargs):
tests/test_cachebuster.py CHANGED
@@ -1,6 +1,4 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- # Copyright (c) 2011-2019, Camptocamp SA
1
+ # Copyright (c) 2011-2023, Camptocamp SA
4
2
  # All rights reserved.
5
3
 
6
4
  # Redistribution and use in source and binary forms, with or without
@@ -60,7 +58,7 @@ class TestCacheBuster(TestCase):
60
58
  ctf = CachebusterTween(handler, registry)
61
59
  request = MyRequest("/test/123456/build.css")
62
60
  ctf(request)
63
- self.assertEqual(request.path_info, "/test/build.css")
61
+ assert request.path_info == "/test/build.css"
64
62
 
65
63
  def test_noreplace(self):
66
64
  from c2cgeoportal_geoportal.lib.cacheversion import CachebusterTween
@@ -70,4 +68,4 @@ class TestCacheBuster(TestCase):
70
68
  ctf = CachebusterTween(handler, registry)
71
69
  request = MyRequest("/test2/123456/build.css")
72
70
  ctf(request)
73
- self.assertEqual(request.path_info, "/test2/123456/build.css")
71
+ assert request.path_info == "/test2/123456/build.css"