c2cgeoportal-geoportal 2.6.0__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 (212) hide show
  1. c2cgeoportal_geoportal/__init__.py +224 -84
  2. c2cgeoportal_geoportal/lib/__init__.py +64 -42
  3. c2cgeoportal_geoportal/lib/authentication.py +50 -22
  4. c2cgeoportal_geoportal/lib/bashcolor.py +17 -13
  5. c2cgeoportal_geoportal/lib/cacheversion.py +16 -8
  6. c2cgeoportal_geoportal/lib/caching.py +61 -191
  7. c2cgeoportal_geoportal/lib/check_collector.py +17 -10
  8. c2cgeoportal_geoportal/lib/checker.py +61 -63
  9. c2cgeoportal_geoportal/lib/common_headers.py +170 -0
  10. c2cgeoportal_geoportal/lib/dbreflection.py +54 -39
  11. c2cgeoportal_geoportal/lib/filter_capabilities.py +119 -87
  12. c2cgeoportal_geoportal/lib/fulltextsearch.py +6 -5
  13. c2cgeoportal_geoportal/lib/functionality.py +20 -17
  14. c2cgeoportal_geoportal/lib/headers.py +14 -5
  15. c2cgeoportal_geoportal/lib/i18n.py +4 -4
  16. c2cgeoportal_geoportal/lib/layers.py +30 -11
  17. c2cgeoportal_geoportal/lib/lingua_extractor.py +361 -237
  18. c2cgeoportal_geoportal/lib/loader.py +10 -15
  19. c2cgeoportal_geoportal/lib/metrics.py +28 -17
  20. c2cgeoportal_geoportal/lib/oauth2.py +214 -145
  21. c2cgeoportal_geoportal/lib/wmstparsing.py +115 -90
  22. c2cgeoportal_geoportal/lib/xsd.py +26 -16
  23. c2cgeoportal_geoportal/resources.py +15 -9
  24. c2cgeoportal_geoportal/scaffolds/advance_create/ci/config.yaml +26 -0
  25. c2cgeoportal_geoportal/scaffolds/advance_create/cookiecutter.json +18 -0
  26. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/.dockerignore +6 -0
  27. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/.eslintrc.yaml +19 -0
  28. c2cgeoportal_geoportal/scaffolds/{create/geoportal/+dot+prospector.yaml → advance_create/{{cookiecutter.project}}/geoportal/.prospector.yaml} +8 -2
  29. c2cgeoportal_geoportal/scaffolds/{create/geoportal/Dockerfile_tmpl → advance_create/{{cookiecutter.project}}/geoportal/Dockerfile} +18 -9
  30. c2cgeoportal_geoportal/scaffolds/{create/geoportal/alembic.yaml_tmpl → advance_create/{{cookiecutter.project}}/geoportal/alembic.yaml} +1 -1
  31. c2cgeoportal_geoportal/scaffolds/{create/geoportal/development.ini_tmpl → advance_create/{{cookiecutter.project}}/geoportal/development.ini} +34 -15
  32. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/gunicorn.conf.py +104 -0
  33. c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/lingua-client.cfg +1 -0
  34. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/production.ini +38 -0
  35. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/requirements.txt +2 -0
  36. c2cgeoportal_geoportal/scaffolds/{create/geoportal/setup.py_tmpl → advance_create/{{cookiecutter.project}}/geoportal/setup.py} +6 -7
  37. c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/tools/extract-messages.js +8 -6
  38. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/tsconfig.json +8 -0
  39. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/webpack.api.js +75 -0
  40. c2cgeoportal_geoportal/scaffolds/{create/geoportal/webpack.apps.js_tmpl → advance_create/{{cookiecutter.project}}/geoportal/webpack.apps.js} +31 -28
  41. c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/webpack.commons.js +3 -7
  42. c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/webpack.config.js +1 -1
  43. c2cgeoportal_geoportal/scaffolds/{create/geoportal/+package+_geoportal/__init__.py_tmpl → advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/__init__.py} +11 -22
  44. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/authentication.py +10 -0
  45. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/dev.py +14 -0
  46. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/models.py +8 -0
  47. c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/multi_organization.py +7 -0
  48. c2cgeoportal_geoportal/scaffolds/{create/geoportal/+package+_geoportal → advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/resources.py +4 -3
  49. c2cgeoportal_geoportal/scaffolds/{create/geoportal/+package+_geoportal/static-ngeo/api/index.js_tmpl → advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static-ngeo/api/index.js} +1 -2
  50. c2cgeoportal_geoportal/scaffolds/{create/geoportal/+package+_geoportal/static-ngeo/js/+package+module.js_tmpl → advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static-ngeo/js/{{cookiecutter.package}}module.js} +4 -4
  51. c2cgeoportal_geoportal/scaffolds/{create/geoportal/+package+_geoportal/subscribers.py_tmpl → advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/subscribers.py} +1 -3
  52. c2cgeoportal_geoportal/scaffolds/advance_update/cookiecutter.json +18 -0
  53. c2cgeoportal_geoportal/scaffolds/{update/geoportal/CONST_Makefile_tmpl → advance_update/{{cookiecutter.project}}/geoportal/CONST_Makefile} +3 -7
  54. c2cgeoportal_geoportal/scaffolds/create/cookiecutter.json +18 -0
  55. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.dockerignore +14 -0
  56. c2cgeoportal_geoportal/scaffolds/create/{+dot+editorconfig → {{cookiecutter.project}}/.editorconfig} +2 -5
  57. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/main.yaml +43 -0
  58. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/rebuild.yaml +46 -0
  59. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/update_l10n.yaml +65 -0
  60. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.gitignore +16 -0
  61. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.prettierignore +1 -0
  62. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.prettierrc.yaml +2 -0
  63. c2cgeoportal_geoportal/scaffolds/create/{Dockerfile_tmpl → {{cookiecutter.project}}/Dockerfile} +20 -11
  64. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/Makefile +14 -0
  65. c2cgeoportal_geoportal/scaffolds/create/{README.rst_tmpl → {{cookiecutter.project}}/README.rst} +4 -4
  66. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/build +158 -0
  67. c2cgeoportal_geoportal/scaffolds/create/{ci/config.yaml_tmpl → {{cookiecutter.project}}/ci/config.yaml} +7 -5
  68. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/ci/requirements.txt +1 -0
  69. c2cgeoportal_geoportal/scaffolds/create/{docker-compose-lib.yaml → {{cookiecutter.project}}/docker-compose-lib.yaml} +133 -17
  70. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose.override.sample.yaml +66 -0
  71. c2cgeoportal_geoportal/scaffolds/create/{docker-compose.yaml → {{cookiecutter.project}}/docker-compose.yaml} +17 -12
  72. c2cgeoportal_geoportal/scaffolds/create/{env.default_tmpl → {{cookiecutter.project}}/env.default} +29 -14
  73. c2cgeoportal_geoportal/scaffolds/create/{env.project_tmpl → {{cookiecutter.project}}/env.project} +16 -4
  74. c2cgeoportal_geoportal/scaffolds/create/{geoportal/vars.yaml_tmpl → {{cookiecutter.project}}/geoportal/vars.yaml} +93 -27
  75. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/mobile.css +0 -0
  76. c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/data/Readme.txt +1 -1
  77. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/demo.map.tmpl +224 -0
  78. c2cgeoportal_geoportal/scaffolds/create/{mapserver/mapserver.map.tmpl_tmpl → {{cookiecutter.project}}/mapserver/mapserver.map.tmpl} +7 -15
  79. c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/A3_Landscape.jrxml +8 -8
  80. c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/A3_Portrait.jrxml +8 -8
  81. c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/A4_Landscape.jrxml +8 -8
  82. c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/A4_Portrait.jrxml +8 -8
  83. c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/config.yaml.tmpl +5 -4
  84. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/localisation.properties +4 -0
  85. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/localisation_fr.properties +4 -0
  86. c2cgeoportal_geoportal/scaffolds/create/{project.yaml_tmpl → {{cookiecutter.project}}/project.yaml} +6 -6
  87. c2cgeoportal_geoportal/scaffolds/create/{qgisserver/pg_service.conf.tmpl_tmpl → {{cookiecutter.project}}/qgisserver/pg_service.conf.tmpl} +2 -2
  88. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/scripts/db-backup +107 -0
  89. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/scripts/db-restore +111 -0
  90. c2cgeoportal_geoportal/scaffolds/create/{setup.cfg_tmpl → {{cookiecutter.project}}/setup.cfg} +1 -1
  91. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/spell-ignore-words.txt +3 -0
  92. c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/tilegeneration/config.yaml.tmpl +195 -0
  93. c2cgeoportal_geoportal/scaffolds/update/cookiecutter.json +18 -0
  94. c2cgeoportal_geoportal/scaffolds/update/{+dot+upgrade.yaml_tmpl → {{cookiecutter.project}}/.upgrade.yaml} +49 -39
  95. c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/CONST_CHANGELOG.txt +1153 -0
  96. c2cgeoportal_geoportal/scaffolds/update/{geoportal → {{cookiecutter.project}}/geoportal}/CONST_config-schema.yaml +47 -2
  97. c2cgeoportal_geoportal/scaffolds/update/{geoportal/CONST_vars.yaml_tmpl → {{cookiecutter.project}}/geoportal/CONST_vars.yaml} +350 -15
  98. c2cgeoportal_geoportal/scripts/__init__.py +15 -31
  99. c2cgeoportal_geoportal/scripts/c2cupgrade.py +271 -232
  100. c2cgeoportal_geoportal/scripts/create_demo_theme.py +3 -6
  101. c2cgeoportal_geoportal/scripts/manage_users.py +34 -39
  102. c2cgeoportal_geoportal/scripts/pcreate.py +312 -0
  103. c2cgeoportal_geoportal/scripts/theme2fts.py +72 -23
  104. c2cgeoportal_geoportal/scripts/urllogin.py +17 -9
  105. c2cgeoportal_geoportal/templates/login.html +88 -84
  106. c2cgeoportal_geoportal/templates/notlogin.html +59 -59
  107. c2cgeoportal_geoportal/templates/testi18n.html +6 -8
  108. c2cgeoportal_geoportal/views/__init__.py +23 -4
  109. c2cgeoportal_geoportal/views/dev.py +9 -7
  110. c2cgeoportal_geoportal/views/dynamic.py +54 -18
  111. c2cgeoportal_geoportal/views/entry.py +93 -24
  112. c2cgeoportal_geoportal/views/fulltextsearch.py +28 -22
  113. c2cgeoportal_geoportal/views/geometry_processing.py +15 -7
  114. c2cgeoportal_geoportal/views/i18n.py +91 -9
  115. c2cgeoportal_geoportal/views/layers.py +160 -126
  116. c2cgeoportal_geoportal/views/login.py +106 -93
  117. c2cgeoportal_geoportal/views/mapserverproxy.py +45 -28
  118. c2cgeoportal_geoportal/views/memory.py +12 -12
  119. c2cgeoportal_geoportal/views/ogcproxy.py +48 -30
  120. c2cgeoportal_geoportal/views/pdfreport.py +26 -22
  121. c2cgeoportal_geoportal/views/printproxy.py +56 -50
  122. c2cgeoportal_geoportal/views/profile.py +24 -23
  123. c2cgeoportal_geoportal/views/proxy.py +84 -67
  124. c2cgeoportal_geoportal/views/raster.py +35 -24
  125. c2cgeoportal_geoportal/views/resourceproxy.py +13 -11
  126. c2cgeoportal_geoportal/views/shortener.py +27 -24
  127. c2cgeoportal_geoportal/views/theme.py +427 -321
  128. c2cgeoportal_geoportal/views/tinyowsproxy.py +46 -39
  129. c2cgeoportal_geoportal/views/vector_tiles.py +80 -0
  130. {c2cgeoportal_geoportal-2.6.0.dist-info → c2cgeoportal_geoportal-2.7.1.83.dist-info}/METADATA +24 -20
  131. c2cgeoportal_geoportal-2.7.1.83.dist-info/RECORD +185 -0
  132. {c2cgeoportal_geoportal-2.6.0.dist-info → c2cgeoportal_geoportal-2.7.1.83.dist-info}/WHEEL +1 -1
  133. {c2cgeoportal_geoportal-2.6.0.dist-info → c2cgeoportal_geoportal-2.7.1.83.dist-info}/entry_points.txt +3 -1
  134. tests/__init__.py +7 -3
  135. tests/test_cachebuster.py +0 -2
  136. tests/test_caching.py +17 -25
  137. tests/test_checker.py +0 -2
  138. tests/test_decimaljson.py +4 -4
  139. tests/test_headerstween.py +0 -2
  140. tests/test_i18n.py +1 -1
  141. tests/test_init.py +4 -7
  142. tests/test_locale_negociator.py +0 -2
  143. tests/test_mapserverproxy_route_predicate.py +0 -2
  144. tests/test_raster.py +0 -2
  145. tests/test_wmstparsing.py +0 -2
  146. c2cgeoportal_geoportal/scaffolds/__init__.py +0 -227
  147. c2cgeoportal_geoportal/scaffolds/create/+dot+dockerignore_tmpl +0 -12
  148. c2cgeoportal_geoportal/scaffolds/create/+dot+github/workflows/main.yaml_tmpl +0 -89
  149. c2cgeoportal_geoportal/scaffolds/create/+dot+github/workflows/rebuild.yaml_tmpl +0 -78
  150. c2cgeoportal_geoportal/scaffolds/create/+dot+gitignore_tmpl +0 -16
  151. c2cgeoportal_geoportal/scaffolds/create/Makefile +0 -3
  152. c2cgeoportal_geoportal/scaffolds/create/build_tmpl +0 -167
  153. c2cgeoportal_geoportal/scaffolds/create/ci/requirements.txt +0 -1
  154. c2cgeoportal_geoportal/scaffolds/create/ci/trigger +0 -68
  155. c2cgeoportal_geoportal/scaffolds/create/docker-compose.override.sample.yaml +0 -54
  156. c2cgeoportal_geoportal/scaffolds/create/geoportal/+dot+dockerignore_tmpl +0 -6
  157. c2cgeoportal_geoportal/scaffolds/create/geoportal/+dot+eslintrc_tmpl +0 -15
  158. c2cgeoportal_geoportal/scaffolds/create/geoportal/+package+_geoportal/models.py_tmpl +0 -10
  159. c2cgeoportal_geoportal/scaffolds/create/geoportal/+package+_geoportal/static/robot.txt +0 -3
  160. c2cgeoportal_geoportal/scaffolds/create/geoportal/production.ini_tmpl +0 -106
  161. c2cgeoportal_geoportal/scaffolds/create/geoportal/requirements.txt +0 -2
  162. c2cgeoportal_geoportal/scaffolds/create/geoportal/tsconfig.json_tmpl +0 -9
  163. c2cgeoportal_geoportal/scaffolds/create/geoportal/webpack.api.js_tmpl +0 -72
  164. c2cgeoportal_geoportal/scaffolds/create/mapserver/demo.map.tmpl_tmpl +0 -262
  165. c2cgeoportal_geoportal/scaffolds/create/mapserver/tinyows.xml +0 -36
  166. c2cgeoportal_geoportal/scaffolds/create/print/print-apps/+package+/config.yaml +0 -168
  167. c2cgeoportal_geoportal/scaffolds/create/qgisserver/geomapfish.yaml.tmpl_tmpl +0 -16
  168. c2cgeoportal_geoportal/scaffolds/create/spell-ignore-words.txt +0 -1
  169. c2cgeoportal_geoportal/scaffolds/create/tilegeneration/config.yaml.tmpl_tmpl +0 -185
  170. c2cgeoportal_geoportal/scaffolds/create/yamllint.yaml +0 -11
  171. c2cgeoportal_geoportal/scaffolds/update/CONST_CHANGELOG.txt_tmpl +0 -454
  172. c2cgeoportal_geoportal/templates/dynamic.js +0 -21
  173. c2cgeoportal_geoportal-2.6.0.dist-info/RECORD +0 -173
  174. /c2cgeoportal_geoportal/{scaffolds/create/geoportal/+package+_geoportal/static/css/desktop.css → py.typed} +0 -0
  175. /c2cgeoportal_geoportal/scaffolds/{create/geoportal/Makefile_tmpl → advance_create/{{cookiecutter.project}}/geoportal/Makefile} +0 -0
  176. /c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/alembic.ini +0 -0
  177. /c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/language_mapping +0 -0
  178. /c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/lingua-server.cfg +0 -0
  179. /c2cgeoportal_geoportal/scaffolds/{create/geoportal/+package+_geoportal → advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/views/__init__.py +0 -0
  180. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal/locale/en/LC_MESSAGES/+package+_geoportal-client.po → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/locale/en/LC_MESSAGES/{{cookiecutter.package}}_geoportal-client.po} +0 -0
  181. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal/static/css/iframe_api.css → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/desktop.css} +0 -0
  182. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal/static/css/mobile.css → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/iframe_api.css} +0 -0
  183. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/banner_left.png +0 -0
  184. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/banner_right.png +0 -0
  185. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/blank.png +0 -0
  186. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/markers/marker-blue.png +0 -0
  187. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/markers/marker-gold.png +0 -0
  188. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/markers/marker-green.png +0 -0
  189. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/markers/marker.png +0 -0
  190. /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/robot.txt.tmpl +0 -0
  191. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/data/TM_EUROPE_BORDERS-0.3.sql +0 -0
  192. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Arial.ttf +0 -0
  193. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Arialbd.ttf +0 -0
  194. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Arialbi.ttf +0 -0
  195. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Ariali.ttf +0 -0
  196. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/NotoSans-Bold.ttf +0 -0
  197. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/NotoSans-BoldItalic.ttf +0 -0
  198. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/NotoSans-Italic.ttf +0 -0
  199. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/NotoSans-Regular.ttf +0 -0
  200. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Verdana.ttf +0 -0
  201. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Verdanab.ttf +0 -0
  202. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Verdanai.ttf +0 -0
  203. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Verdanaz.ttf +0 -0
  204. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts.conf +0 -0
  205. /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/tinyows.xml.tmpl +0 -0
  206. /c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/legend.jrxml +0 -0
  207. /c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/logo.png +0 -0
  208. /c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/north.svg +0 -0
  209. /c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/results.jrxml +0 -0
  210. /c2cgeoportal_geoportal/scaffolds/create/{pyproject.toml → {{cookiecutter.project}}/pyproject.toml} +0 -0
  211. /c2cgeoportal_geoportal/scaffolds/create/{run_alembic.sh → {{cookiecutter.project}}/run_alembic.sh} +0 -0
  212. {c2cgeoportal_geoportal-2.6.0.dist-info → c2cgeoportal_geoportal-2.7.1.83.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (c) 2015-2021, Camptocamp SA
4
2
  # All rights reserved.
5
3
 
@@ -29,14 +27,17 @@
29
27
 
30
28
 
31
29
  import logging
30
+ from typing import Any, Dict, Optional, 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,11 @@ 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")
71
+ def _get_wfs_url(self, errors: Set[str]) -> Optional[Url]:
72
+ return Url(self.settings.get("tinyows_url"))
70
73
 
71
- @view_config(route_name="tinyowsproxy")
72
- def proxy(self):
74
+ @view_config(route_name="tinyowsproxy") # type: ignore
75
+ def proxy(self) -> pyramid.response.Response:
73
76
  if self.user is None:
74
77
  raise HTTPUnauthorized(
75
78
  "Authentication required", headers=[("WWW-Authenticate", 'Basic realm="TinyOWS"')]
@@ -77,19 +80,18 @@ class TinyOWSProxy(OGCProxy):
77
80
 
78
81
  operation = self.lower_params.get("request")
79
82
  typenames = (
80
- set([normalize_typename(self.lower_params.get("typename"))])
81
- if "typename" in self.lower_params
82
- else set()
83
+ {normalize_typename(self.lower_params["typename"])} if "typename" in self.lower_params else set()
83
84
  )
84
85
 
85
86
  method = self.request.method
86
87
  if method == "POST":
87
88
  try:
88
89
  (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)")
90
+ except Exception:
91
+ LOG.exception("Error while parsing POST request body")
92
+ raise HTTPBadRequest( # pylint: disable=raise-missing-from
93
+ "Error parsing the request (see logs for more details)"
94
+ )
93
95
 
94
96
  typenames = typenames.union(typenames_post)
95
97
 
@@ -109,69 +111,74 @@ class TinyOWSProxy(OGCProxy):
109
111
 
110
112
  # we want clients to cache GetCapabilities and DescribeFeatureType req.
111
113
  use_cache = method == "GET" and operation in ("getcapabilities", "describefeaturetype")
112
- cache_control = PRIVATE_CACHE if use_cache else NO_CACHE
114
+ cache_control = Cache.PRIVATE if use_cache else Cache.PRIVATE_NO
115
+
116
+ errors: Set[str] = set()
117
+ url = Url(self.settings.get("tinyows_url"))
118
+ if url is None:
119
+ LOG.error("Error getting the URL:\n%s", "\n".join(errors))
120
+ raise HTTPInternalServerError()
113
121
 
114
122
  response = self._proxy_callback(
115
123
  operation,
116
124
  cache_control,
117
- url=self._get_wfs_url(),
118
- params={k: v for k, v in self.request.params.items() if "_" not in k},
125
+ url=url,
126
+ params=dict(self.request.params),
119
127
  cache=use_cache,
120
128
  headers=self._get_headers(),
121
129
  body=self.request.body,
122
130
  )
123
131
  return response
124
132
 
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
-
133
+ def _is_allowed(self, typenames: Set[str]) -> bool:
134
+ """Check if the current user has the rights to access the given type-names."""
131
135
  writable_layers = set()
132
136
  for gmflayer in list(get_writable_layers(self.request, [self.ogc_server.id]).values()):
133
137
  for ogclayer in gmflayer.layer.split(","):
134
138
  writable_layers.add(ogclayer.lower())
135
139
  return typenames.issubset(writable_layers)
136
140
 
137
- def _get_headers(self):
138
- headers = OGCProxy._get_headers(self)
141
+ def _get_headers(self) -> Dict[str, str]:
142
+ headers = OGCProxy.get_headers(self)
139
143
  if "tinyows_host" in self.settings:
140
144
  headers["Host"] = self.settings.get("tinyows_host")
141
145
  return headers
142
146
 
143
- def _proxy_callback(self, operation, cache_control, *args, **kwargs):
147
+ def _proxy_callback(
148
+ self, operation: str, cache_control: Cache, *args: Any, **kwargs: Any
149
+ ) -> pyramid.response.Response:
144
150
  response = self._proxy(*args, **kwargs)
145
151
  content = response.content.decode()
146
152
 
153
+ errors: Set[str] = set()
154
+ url = super()._get_wfs_url(errors)
155
+ if url is None:
156
+ LOG.error("Error getting the URL:\n%s", "\n".join(errors))
157
+ raise HTTPInternalServerError()
158
+
147
159
  if operation == "getcapabilities":
148
- content = filter_wfst_capabilities(
149
- content, super(TinyOWSProxy, self)._get_wfs_url(), self.request
150
- )
160
+ content = filter_wfst_capabilities(content, url, self.request)
151
161
 
152
162
  content = self._filter_urls(
153
163
  content, self.settings.get("online_resource"), self.settings.get("proxy_online_resource")
154
164
  )
155
165
 
156
- return self._build_response(response, content, cache_control, "tinyows")
166
+ return self._build_response(response, content.encode(), cache_control, "tinyows")
157
167
 
158
168
  @staticmethod
159
- def _filter_urls(content, online_resource, proxy_online_resource):
169
+ def _filter_urls(content: str, online_resource: str, proxy_online_resource: str) -> str:
160
170
  if online_resource is not None and proxy_online_resource is not None:
161
171
  return content.replace(online_resource, proxy_online_resource)
162
172
  return content
163
173
 
164
174
  @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
- """
175
+ def _parse_body(body: str) -> Tuple[str, Set[str]]:
176
+ """Read the WFS-T request body and extract the referenced type-names and request method."""
170
177
  xml = ElementTree.fromstring(body)
171
178
  wfs_request = normalize_tag(xml.tag)
172
179
 
173
180
  # get the type names
174
- typenames = set()
181
+ typenames: Set[str] = set()
175
182
  for child in xml:
176
183
  tag = normalize_tag(child.tag)
177
184
  if tag == "typename":
@@ -0,0 +1,80 @@
1
+ # Copyright (c) 2021, 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,40 +1,38 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: c2cgeoportal-geoportal
3
- Version: 2.6.0
3
+ Version: 2.7.1.83
4
4
  Summary: c2cgeoportal geoportal
5
5
  Home-page: https://github.com/camptocamp/c2cgeoportal/
6
6
  Author: Camptocamp
7
7
  Author-email: info@camptocamp.com
8
- License: UNKNOWN
9
8
  Keywords: web gis geoportail c2cgeoportal geocommune pyramid
10
- Platform: UNKNOWN
11
- Classifier: Programming Language :: Python
12
- Classifier: Programming Language :: Python :: 3
13
- Classifier: Programming Language :: Python :: 3.7
9
+ Classifier: Development Status :: 6 - Mature
10
+ Classifier: Environment :: Web Environment
14
11
  Classifier: Framework :: Pyramid
15
- Classifier: Topic :: Internet :: WWW/HTTP
16
- Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
12
+ Classifier: Intended Audience :: Other Audience
17
13
  Classifier: License :: OSI Approved :: BSD License
18
- Classifier: Development Status :: 6 - Mature
19
- Requires-Dist: Fiona
20
- Requires-Dist: GeoAlchemy2
21
- Requires-Dist: Mako
22
- Requires-Dist: OWSLib (>=0.6.0)
23
- Requires-Dist: PyYAML
24
- Requires-Dist: SQLAlchemy
25
- Requires-Dist: Shapely
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.8
18
+ Classifier: Topic :: Scientific/Engineering :: GIS
19
+ Classifier: Typing :: Typed
26
20
  Requires-Dist: alembic
27
21
  Requires-Dist: bottle
28
- Requires-Dist: c2c.template (>=2.0.7)
29
22
  Requires-Dist: c2cgeoportal-commons[upgrade]
30
23
  Requires-Dist: c2cwsgiutils
24
+ Requires-Dist: c2c.template (>=2.0.7)
31
25
  Requires-Dist: defusedxml
32
26
  Requires-Dist: dogpile.cache (>=0.6)
27
+ Requires-Dist: Fiona
28
+ Requires-Dist: GeoAlchemy2
33
29
  Requires-Dist: geojson
34
30
  Requires-Dist: isodate
35
31
  Requires-Dist: lingua
32
+ Requires-Dist: Mako
33
+ Requires-Dist: OWSLib (>=0.6.0)
36
34
  Requires-Dist: papyrus
37
- Requires-Dist: psycopg2-binary
35
+ Requires-Dist: psycopg2
38
36
  Requires-Dist: pycryptodome
39
37
  Requires-Dist: pyotp
40
38
  Requires-Dist: pyramid
@@ -43,10 +41,17 @@ Requires-Dist: pyramid-mako
43
41
  Requires-Dist: pyramid-multiauth
44
42
  Requires-Dist: pyramid-tm
45
43
  Requires-Dist: python-dateutil
44
+ Requires-Dist: PyYAML
46
45
  Requires-Dist: rasterio
47
- Requires-Dist: redis
48
46
  Requires-Dist: requests
47
+ Requires-Dist: redis
48
+ Requires-Dist: Shapely
49
+ Requires-Dist: SQLAlchemy
49
50
  Requires-Dist: transaction
51
+ Requires-Dist: jinja2 (>=2.11.3)
52
+ Requires-Dist: pygments (>=2.7.4)
53
+ Requires-Dist: setuptools (>=65.5.1)
54
+ Requires-Dist: requests (>=2.31.0)
50
55
 
51
56
  c2cgeoportal is the server part of `GeoMapFish <http://geomapfish.org/>`_,
52
57
  the client part is `ngeo <https://github.com/camptocamp/ngeo/>`_.
@@ -54,4 +59,3 @@ the client part is `ngeo <https://github.com/camptocamp/ngeo/>`_.
54
59
  Read the `Documentation <https://camptocamp.github.io/c2cgeoportal/master/>`_.
55
60
 
56
61
  `Sources <https://github.com/camptocamp/c2cgeoportal/>`_
57
-
@@ -0,0 +1,185 @@
1
+ c2cgeoportal_geoportal/__init__.py,sha256=9s5YOvb5qlaQf_TmonFKXMwx6a-pLAG2brbRrb4Kbuc,32401
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=jsDLoTJT5ZTZuXB7tuAgprayqzzORyC3dbGyqNQnbvE,10290
5
+ c2cgeoportal_geoportal/lib/authentication.py,sha256=OlqVnfzNeSrA7cnCTk3hPkSNEWBBrTtwb2KifcsLSU4,8997
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=rA-WnWgkX_iBmxhoz_WdDL37VSjjSXsLnRqdgKx1QFU,6688
9
+ c2cgeoportal_geoportal/lib/check_collector.py,sha256=-x5iFUMw0NfPalG1RI6WoKTiW1BlUvHTiAJy_2mMu2s,3414
10
+ c2cgeoportal_geoportal/lib/checker.py,sha256=ZdpACmoeeiNO16wM0oZc3bHkXgH8-0lYpWa7b_-937E,12323
11
+ c2cgeoportal_geoportal/lib/common_headers.py,sha256=qwIWaNA_wMeJ2UrbtBFG0v3R26HgEn8npBRtSbjeyTE,6458
12
+ c2cgeoportal_geoportal/lib/dbreflection.py,sha256=XWShaJrAE2vDAzAh-z2YfIVBrGiIzJ_WZEzd2Thne5I,9629
13
+ c2cgeoportal_geoportal/lib/filter_capabilities.py,sha256=jsmP6yiIE6nuT2pbP32CudrSx0wgC-S_NVZcSfpKmUU,14172
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=VBW05twqBlMFtVUzoPKKYkkYBOKqxET27UOt7_SlSBY,36888
20
+ c2cgeoportal_geoportal/lib/loader.py,sha256=VXT8N0Upzwydi_TZkBLj9j75V7BTfR1GxzXEABXsTQ8,2546
21
+ c2cgeoportal_geoportal/lib/metrics.py,sha256=j1vmGEqV7RtIwk2w83bUHvAnkk_nSPDsoFHjqDsLiSU,4524
22
+ c2cgeoportal_geoportal/lib/oauth2.py,sha256=8IJ4tKIzxbX9wfHBMMajyQt_SQrGgj64ZHqIirDbJSY,37216
23
+ c2cgeoportal_geoportal/lib/wmstparsing.py,sha256=YTfXRUxbRHys6jhmIhtpBJq-xrSYLqkLBfi33kAiXbY,12423
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=DAXA2MYs6ammgocOMOsxPNLShaa9pPaH3XzNkWvIzSU,2567
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=62pVRUxGPkxDZJktkureizEjyP3K4McQB4X7noDVzA8,3068
35
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/gunicorn.conf.py,sha256=8T4TWZyQOHt4Lukuv9XDOaXHZORjKtUjqwvYfAn9lJI,4129
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=UBEL-rSwDi2z7Q7RMYTqLKNgHxrgohoBmoTlKRMTCUU,57
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=NvT4Zf2OJ9pFrbPq1s1peTbHv1HaZZhC6gCj5aTgGCA,1769
44
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/webpack.apps.js,sha256=kC_M97UW0nzSDL3c3gMO0rFm1qzDuOK0GgVK73wq2i0,2438
45
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/webpack.commons.js,sha256=-sHSSMcvPSbZAwmBYAp6RK-iQgwn0vrySTkFe3Pvero,553
46
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/webpack.config.js,sha256=IFHj1YVu2aitTtQWVV6E5BaU0YDHz1qeoixaLbtRXPA,643
47
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/tools/extract-messages.js,sha256=FWT7FwFg5HOmtgO5H9W5MTeWI30TfcBeeSnyiMvP2oo,1201
48
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/__init__.py,sha256=aoVN3PZLKHHzHBzgNKzW-DhSZoJPwzC0nHKpc3NEQl8,1587
49
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/authentication.py,sha256=mjPjpZfgPPeMneKe4u95aPYIJlWcUpbSsR5-3ObWirA,426
50
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/dev.py,sha256=2Et_4LUWO_82DAYsPxEnH5yCX0YVY2XPhv9pzOTl8Zs,387
51
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/models.py,sha256=_IYgNpp7ZRKcH30eo-d--qbb11ojx7Tv2qJdVGIlsjQ,284
52
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/multi_organization.py,sha256=qNxledzv8JeIWTFFF8-XO163qmxztiBY_NhxLvEOCAM,158
53
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/resources.py,sha256=8Ey8_zvzge1A9yid7LDggHZlulbWsm21gM6Mf9LgzlI,270
54
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/subscribers.py,sha256=8ChZ7xVzcaOqRXIErrO4JtJqEnGWJ3y1C6Tu0ExjwGs,1352
55
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static-ngeo/api/index.js,sha256=rxXFRQeGxBTLmhOUmFpIaGZda1Gk5Qi_VsXdbaOfwXo,260
56
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static-ngeo/js/{{cookiecutter.package}}module.js,sha256=TYZUcLOinHKhzn-l35pwqe0kNOhX90TzFOVj1KyaVaI,614
57
+ c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
+ c2cgeoportal_geoportal/scaffolds/advance_update/cookiecutter.json,sha256=1LVOM-j_nd00J89q0EI3bQUvIysbidApaVHDibA2ydk,524
59
+ c2cgeoportal_geoportal/scaffolds/advance_update/{{cookiecutter.project}}/geoportal/CONST_Makefile,sha256=7TcsromZPyreV_kQFVqt4r7rFHiiF09M-3JPm7iOKkA,4287
60
+ c2cgeoportal_geoportal/scaffolds/create/cookiecutter.json,sha256=1LVOM-j_nd00J89q0EI3bQUvIysbidApaVHDibA2ydk,524
61
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.dockerignore,sha256=aU-IzKK1qmFAJNiCLYT6yB6LVTEsDBcO5nBW3q8M-MQ,351
62
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.editorconfig,sha256=cpHwgH23FLEQ6gV2O0Xa-iKxCaaVHhTKiFA91moh1sQ,297
63
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.gitignore,sha256=NNaSfLn7_4sIXta39BzRfGQJfUqBq-U4lbgtkXStgkY,449
64
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.prettierignore,sha256=PcDfauWwzv1pnJgC9HR1zvv06Q01CwzGzzc0iLSNcZk,9
65
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.prettierrc.yaml,sha256=WbjZCtw0hBlDB2FYJanFJzAvUsNTxgwn62YBZ-Xbwkw,43
66
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/Dockerfile,sha256=I7zAT84Zl0wnySi-tNtdcmEAKwdJE_EssMRh0cYpygU,3360
67
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/Makefile,sha256=XIQPnoU13Rbs2aW4o_J-XCS1VJb_AaEw4RB6X7FYgCI,715
68
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/README.rst,sha256=PvydIFv4NS8CMqmLrCTm2TvIS0GNkWgiI-VwQvWBF5o,423
69
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/build,sha256=wQlAoqaLdWq5LovlQmBPZ074GQOm2j9b3KbfK5seKzI,6167
70
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose-lib.yaml,sha256=5RIgWl2euVaLISVCrNQaFZlVlslLPcDVK8YEZCYzHE4,12310
71
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose.override.sample.yaml,sha256=xmO_qOwrz1Ebwv6sUsf3MDZ90yIGdLlxXp7kqditos4,2526
72
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose.yaml,sha256=BHj_UT6RpGEz-sue2MrTVOCENtKYSWZ_YTSbp5ud28E,2429
73
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/env.default,sha256=yQZ3xFUFnn6gDXNkRyCRrduKtZqSM5VvcZAalk9oC74,2573
74
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/env.project,sha256=ka5r1Lv081fSIjGzGxQS9Jeck1CvK9bjYl-qEzCSapQ,1537
75
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/project.yaml,sha256=3tNtVcoIug5LNZoZsUpjm_YRCZQMAKzYWNL9ZdjkPC8,495
76
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/pyproject.toml,sha256=SLg_mHQE8AqfBREmQ7bdGI9PrWALqfgeHazoqOt4Ma0,57
77
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/run_alembic.sh,sha256=NuOhKZtrcv-UWVDkmTiNaT6Wcls9fXoHcO0oQjAdI6o,233
78
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/setup.cfg,sha256=_Oj7PwahkYUSneIrjn2mXwo0m6b27dTCZhAwWXFWqUA,221
79
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/spell-ignore-words.txt,sha256=KTgED03w1otAkv8iINTId8NbctCOmms6-AE99xnv4uE,13
80
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/main.yaml,sha256=qe-eeRDRyRyrSokCvbEcMzvbQMFi10cUEZt9i52uuUs,1257
81
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/rebuild.yaml,sha256=CFRzu5Eh6BBI5VX8OeG-u7UXTY6X_Eh2iESsbQ1sJmg,1287
82
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/update_l10n.yaml,sha256=zOrcFS_Fhf3jUB5qxeq3Kgqg7aSa2PqalhJe69sHZuo,2216
83
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/ci/config.yaml,sha256=V8VoRZraesWsS3MwXyEVsJ0VmzvZ_EQepwVtvgag2_0,532
84
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/ci/requirements.txt,sha256=ae22jZH3ftR2mGsZJg7B0yRJrvfSfpZJlG3x_qxmQ8g,18
85
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/vars.yaml,sha256=PMI4CgXk1m_DNCAZViRC-QLcLo8ANL5uacBt8Ahp29w,10666
86
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/locale/en/LC_MESSAGES/{{cookiecutter.package}}_geoportal-client.po,sha256=hKLs5f7EJz05ACRtyTlCtssCo99PMuj-FfOJXchMZFk,162
87
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/robot.txt.tmpl,sha256=JR_vIqMlHq1oSgyWPN2mtZyEpsqhjKQQecaW2pxvK54,88
88
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/desktop.css,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/iframe_api.css,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/mobile.css,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/banner_left.png,sha256=ExK_hOKzWaD4rgrSFy3xw88JrJai5n8JEXy-dEmvSLo,13799
92
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/banner_right.png,sha256=t65I5iM-wl_7a6k3NLbVT5d725siXigH2dsOhtmC3PU,6018
93
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/blank.png,sha256=zp8uuLPeZ13bYveFL5dI20zQMqzo_0SSMZGNV49JZfI,259
94
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/markers/marker-blue.png,sha256=aALxnIGsafvssGB3fEmLWUNb7X3xz7JQlnoxUJhkNgg,758
95
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/markers/marker-gold.png,sha256=O5qV6Vb1Y9QMiszH34x5PA1wX_SnVZ6Qhv7vsy8zr-g,703
96
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/markers/marker-green.png,sha256=ucJpwxgJnaA4dUnDk779X1ZLxnYowMOTAq_CMeGw8PQ,753
97
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/markers/marker.png,sha256=wj0-D2abaL-A-OIoUbEeuSwMc_e1zf8zE4lVpra9xYY,601
98
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/demo.map.tmpl,sha256=mFtC2pzbN3-KQpZxQbhV8fMeQaZikMyZ5N-A9RXaxYE,7269
99
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts.conf,sha256=uG3B6GUKIvTRVLO025Ecm5lh27sEMpmmzWUzFjNh8Qg,351
100
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/mapserver.map.tmpl,sha256=mza6KiSJG7fgaG4G-USDTg47Jo65bnXNcXdXNxfclJ4,2716
101
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/tinyows.xml.tmpl,sha256=hI6mHamiwQW40t2Rf-NRHwOtkPdxL4YrkVS7MlUYPb8,816
102
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/data/Readme.txt,sha256=q_uKVshkZPX6J376w3UhJ30Ij4hJtYF2jNwfRZJRuE4,2892
103
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/data/TM_EUROPE_BORDERS-0.3.sql,sha256=pYpbBi2P61thQtpochj_-tl_kQIIVAJgZsemTYdRUBo,1588593
104
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Arial.ttf,sha256=NcDzVZ2NtWnjbDEJW4pg1EFkPZX1kTneQOI_ragZuDM,275572
105
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Arialbd.ttf,sha256=QESqa1vrvDaYAga0WwqqqlaBVSpIvK20F0bV0dcf17Q,286620
106
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Arialbi.ttf,sha256=Lzcc2dlrOsVEUZ2FwW3EPOrN_Oo1CQ7o3fPsWFfFAyg,224692
107
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Ariali.ttf,sha256=cK3iMxdaamZ15FAUYa-TJub3ix_994fKDaWrD8jJz9Y,206132
108
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/NotoSans-Bold.ttf,sha256=aL3Veh4eYmY6CzcsciQgS4KomCC5zzA5Ezf2HwxecSM,415132
109
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/NotoSans-BoldItalic.ttf,sha256=i-2wEn6RSsOt4je0AtM-VzrMS9ugueOYEnLK40_5hXo,290436
110
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/NotoSans-Italic.ttf,sha256=fWFOfubTLPuiYxv5hrx-xlodmXO7QUy55a632thch4c,279268
111
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/NotoSans-Regular.ttf,sha256=nptMU70lytnATTcPEzpeMtFm0NVOKprWy6SjH804LVs,414820
112
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Verdana.ttf,sha256=lu0UlJyktzks_yNbnEHVXBJTgqu-DA08K53WaJfK4Ms,139640
113
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Verdanab.ttf,sha256=yPUGW6kWgPWWrzsDeOLD5xO5WlI749Vq4YXKK49fCyM,136032
114
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Verdanai.ttf,sha256=kbWRhmVvUpclMaEUM8hm_VbmLsTmHiYhotunDI8ZqCg,154264
115
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Verdanaz.ttf,sha256=aY4iD0j0pA53r36zSVjI_QLx4Yw7o_Nl2Tv6LtRHTIA,153324
116
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/A3_Landscape.jrxml,sha256=t2rHGwJEUNrK6Vjm6xisDFtss9WX4nhs3AxSaa5ToBo,10002
117
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/A3_Portrait.jrxml,sha256=OnuzNqaike4mxa7IH_fqIsE2RtAUSAfViwALvk-IKZM,8707
118
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/A4_Landscape.jrxml,sha256=3yKujKVwi0u-sASgEIC8DuyOdH2r6ZdByU1Nb-JBbP0,9562
119
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/A4_Portrait.jrxml,sha256=wR4Ow4DpzESUa8d620nRGXFhIa9Qf7JZ6MVN3WDyEkI,6880
120
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/config.yaml.tmpl,sha256=M_NRPwa8Cu9C-023JUvcMA7WKMpFJjQVd7hzf3svR9o,4774
121
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/legend.jrxml,sha256=qRxN0MC4KIyxxLNiCdriO0FEUZerzrkTu-cSjexx7dE,5310
122
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/localisation.properties,sha256=n7F7W9ELl53JsNCDMwoFIlWravXB-K4VCQdo_Yjanx8,98
123
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/localisation_fr.properties,sha256=OBh4sWxMNW8dNgcXr7VpTW8HemJIQoxRmPBLZ9MDVmI,102
124
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/logo.png,sha256=ExK_hOKzWaD4rgrSFy3xw88JrJai5n8JEXy-dEmvSLo,13799
125
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/north.svg,sha256=rnHO-cNiy9ZyfwvI-o2dYipzuu-vh9rn0nE45FjfOPo,2925
126
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/results.jrxml,sha256=gf5grUvt-oG_H0LnsNvBWMDGqvH3uuW_wfy0O-n5ui4,1309
127
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/qgisserver/pg_service.conf.tmpl,sha256=WcjfsfsfNLHAfbg84HgEIb64EDnnJJWGnyAdPTXD0PI,296
128
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/scripts/db-backup,sha256=AkEBTh11f4R0xrhbtvIYebBz9Ss-NY6ftOKdJ-aCFYc,4243
129
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/scripts/db-restore,sha256=Tsw4hSNeELxL3y7kiZ_d04vdJDagAa1yXr_xSqnqDB4,4433
130
+ c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/tilegeneration/config.yaml.tmpl,sha256=y-X8uAZP9mEq3k6NygBI_FynZeEQ_IatFPXkzWs5UAQ,6181
131
+ c2cgeoportal_geoportal/scaffolds/update/cookiecutter.json,sha256=x3FFn3b67GPGCsjg36iGXCudjaTSfwGHcwHS6HHVpPQ,539
132
+ c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/.upgrade.yaml,sha256=GUyQ0qiRKH58NwOGTwSQPSTZYL345FmOEDUZa0cReaM,6781
133
+ c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/CONST_CHANGELOG.txt,sha256=UzHIap481u42nqAMkqbd9qVGRNFwoJ3U0SlzxVQI8mU,36854
134
+ c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/geoportal/CONST_config-schema.yaml,sha256=kEV-oJhGdH4hkgfHb9MO5cyeEDtn9T8idujBh8E2MW4,21112
135
+ c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/geoportal/CONST_vars.yaml,sha256=gVGStyIS_L3TbJcnoDIKSSOQAOw_S5cWHZEi3h72AoY,45687
136
+ c2cgeoportal_geoportal/scripts/__init__.py,sha256=2tzCcNqb09Pb8ULVfDQbRWkaB_KYgyk72OdTiezhnA0,2863
137
+ c2cgeoportal_geoportal/scripts/c2cupgrade.py,sha256=MLgayT8FBS2EyuPAYEGayRm_mkwXwMv6LO4EXo7GABk,36312
138
+ c2cgeoportal_geoportal/scripts/create_demo_theme.py,sha256=3RmUnFj1V9A3KMCCSYplhemN4faNQbnJgDmeunQ_VSo,3081
139
+ c2cgeoportal_geoportal/scripts/manage_users.py,sha256=-9ExER-kYHh6OMsoOAuLhnjEOLoAjzzbGEcVZoZwnSg,5468
140
+ c2cgeoportal_geoportal/scripts/pcreate.py,sha256=ovvVvbT-Kvb3gUj7eAjyvIV3UGFWR_QpVBOh7BGIiuU,11528
141
+ c2cgeoportal_geoportal/scripts/theme2fts.py,sha256=_qEYDiu-cvet7A-2Hk-93FPzAnZH7LYZTWQXt1OCph0,11450
142
+ c2cgeoportal_geoportal/scripts/urllogin.py,sha256=6SrFmQNYEtoZJ_jaVQ83F3JNoegl8BKTG-z-WkJPoy4,3299
143
+ c2cgeoportal_geoportal/templates/login.html,sha256=0xcwQQDM2uv3Li0qnS91eyjsVtK0ZGiPNld7DXKadco,2475
144
+ c2cgeoportal_geoportal/templates/notlogin.html,sha256=cJx7z50IKQl7Fb9KXv03iSxh6pgff0dbnxa9FIHNkxM,1528
145
+ c2cgeoportal_geoportal/templates/testi18n.html,sha256=Br6Vf5zTDdaH0L07saV_8dIIT3C9xnSqh4quzTELo2s,369
146
+ c2cgeoportal_geoportal/views/__init__.py,sha256=S74TlEcDZPp_eK-u5NsMcBIkj-LSOPskf8HVjVnGWYc,2694
147
+ c2cgeoportal_geoportal/views/dev.py,sha256=e1oZkKwwQvssMOzg3Zao3Jm4WNIFVwEI3EOR1Xj3-_Y,2533
148
+ c2cgeoportal_geoportal/views/dynamic.py,sha256=jbb76Al9gOwvtDmvuAAbOqKondkfGiP1pApA0f0rYzk,8589
149
+ c2cgeoportal_geoportal/views/entry.py,sha256=PW3g4DiwWHhQWdl22egCOcgC2A5aXblNnc67_e50oHI,5995
150
+ c2cgeoportal_geoportal/views/fulltextsearch.py,sha256=Yo3GW-O-Vk6o90tGQek99Gqd5lEtwscnBKw1ylhKNF0,8330
151
+ c2cgeoportal_geoportal/views/geometry_processing.py,sha256=OlvpcDSrvqy-xykmycWh5X-MMVJsiuWew4Sfdy4ykA8,2952
152
+ c2cgeoportal_geoportal/views/i18n.py,sha256=7Avpt-aVEVlS3SrwtZkvuJ8_0gBZvVrCviyaIZBx7jY,5292
153
+ c2cgeoportal_geoportal/views/layers.py,sha256=EqaICEToh5MOdp9h7gG60peuV6PBAyw6euqliA174LU,28850
154
+ c2cgeoportal_geoportal/views/login.py,sha256=BugfdgTg4f73yo6e1uSshEYu0MZhwS9YaLo0c9JYPrM,19104
155
+ c2cgeoportal_geoportal/views/mapserverproxy.py,sha256=Oyc9T_L9-yNYKrOszp28vLFgxzDTTwHGYVhLdCGWy70,8203
156
+ c2cgeoportal_geoportal/views/memory.py,sha256=nb2repOnil0PdziEjCLOZ-84LFKLkdAlKTnnMQoXDdA,3627
157
+ c2cgeoportal_geoportal/views/ogcproxy.py,sha256=M9hkxgIga29SoJ4VNwkzkiOkQiOsyyXMrMUwSN0W73U,5065
158
+ c2cgeoportal_geoportal/views/pdfreport.py,sha256=0cNXsfUmIlbvsgjVyg7031cY6OBwA6c6bAfYvSDMeRE,9576
159
+ c2cgeoportal_geoportal/views/printproxy.py,sha256=DxKQkb87k3HMm7hfhdmxjYFR3v67WEGaVFlXv5mezGM,5897
160
+ c2cgeoportal_geoportal/views/profile.py,sha256=9ZXIsjJoV3_uRx0H3iQ0256xiu5OpIaMPAMmKEbaBuk,5394
161
+ c2cgeoportal_geoportal/views/proxy.py,sha256=mxvBva4oEGh6O5IT2Q6BTzftl-P2_MhNIiVe3j6Ar8Q,10453
162
+ c2cgeoportal_geoportal/views/raster.py,sha256=7diNkV-YGtg4di_QDV-Bbbe6phB76bPYLnmnE4ZBXc0,7570
163
+ c2cgeoportal_geoportal/views/resourceproxy.py,sha256=aKOJUOI5Em2Z3BI61I2br_sUmx8ospFv_RExxmqkyXA,3181
164
+ c2cgeoportal_geoportal/views/shortener.py,sha256=I9GjjlkR9sX5CwsRSsY9PLjyLue_c_nHgVrFnh3gTBQ,6206
165
+ c2cgeoportal_geoportal/views/theme.py,sha256=xwOVGLFA0X7UMJ2MEVuwvaB-q1NSpFYCJ7dExhc4ATY,51588
166
+ c2cgeoportal_geoportal/views/tinyowsproxy.py,sha256=tbMQTt97U1e3_YLqD_sd3TQh-xkZadpEYH8kHSUK1dY,8171
167
+ c2cgeoportal_geoportal/views/vector_tiles.py,sha256=PkNqvXhcE_IgtWU9sjG2gj8SFlbKkb_h6rU0K0wEe-s,3455
168
+ tests/__init__.py,sha256=suzy8wAvOM-z2yewf6Ij-r4v0kWCEll94nCWJqcBAKQ,3752
169
+ tests/test_cachebuster.py,sha256=FBMDqBjN5avLwmp6I751HZPplnLTRHVwYQuy6ltOmaM,2941
170
+ tests/test_caching.py,sha256=UXAEAsuspHU96LLjMxXqvRRK9eda3-0I09-XBBxG-XE,12493
171
+ tests/test_checker.py,sha256=kOIOapaOvXzxL_1V2ru1Jgkg0RQ7VUF4iBOzD20G7b0,3638
172
+ tests/test_decimaljson.py,sha256=yrI5cQAenW0jXJljfh36mLH5m3MvdOw_9J06Wa5mpeY,2223
173
+ tests/test_headerstween.py,sha256=J0-frpbB2tJqUBWkT0JVOWlnePxXaQtd-FUtBC7W4Aw,2524
174
+ tests/test_i18n.py,sha256=_gh-bR6GnpIfvrUwSKSY8plMchw9u_LZ0iSM8V1Me5o,1003
175
+ tests/test_init.py,sha256=e5vZFPBrJS-d9WWJgHDt2bBrfAxN94BbgpW2-clJgmU,7357
176
+ tests/test_locale_negociator.py,sha256=6kL0xkp9TakBp5nCAoa9I5Y2XWXVJv9Fk_y4tIWpQ8M,3071
177
+ tests/test_mapserverproxy_route_predicate.py,sha256=CrYzEnYjowvDJxJp56gEAaUEk5vXVxqI3JscOAfr3T0,3044
178
+ tests/test_raster.py,sha256=oRyOc90WixD9Y-iR3pMdkHuR0JwKART9DxNH5QwyilM,12074
179
+ tests/test_wmstparsing.py,sha256=ZAlL6OQkYmzFTKu70OQ6Xej-7ZNB7UltSs2V_PbXDac,9135
180
+ tests/xmlstr.py,sha256=vIvIFWIE2GFUMfAtG0hTMZC2jx-pQBuzOOq2FjQlyjA,6010
181
+ c2cgeoportal_geoportal-2.7.1.83.dist-info/METADATA,sha256=z-fCtr8oTTA0fZzUYPl5BwYkONXQlee6CMOwBUpR5B0,2003
182
+ c2cgeoportal_geoportal-2.7.1.83.dist-info/WHEEL,sha256=a-zpFRIJzOq5QfuhBzbhiA1eHTzNCJn8OdRvhdNX0Rk,110
183
+ c2cgeoportal_geoportal-2.7.1.83.dist-info/entry_points.txt,sha256=_EqfKA_CKejpkgK0xWDTB9K8an0TKqIWHoyCJrRpU80,1414
184
+ c2cgeoportal_geoportal-2.7.1.83.dist-info/top_level.txt,sha256=PJIbY7Nx51dDrJ052f5mDA7c6Tehm5aD-Gb32L_CtJA,29
185
+ c2cgeoportal_geoportal-2.7.1.83.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,7 @@ 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
-
tests/__init__.py CHANGED
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (c) 2011-2019, Camptocamp SA
4
2
  # All rights reserved.
5
3
 
@@ -28,17 +26,23 @@
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):
tests/test_cachebuster.py CHANGED
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (c) 2011-2019, Camptocamp SA
4
2
  # All rights reserved.
5
3