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
tests/test_caching.py CHANGED
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (c) 2015-2019, Camptocamp SA
4
2
  # All rights reserved.
5
3
 
@@ -35,13 +33,8 @@ from unittest import TestCase
35
33
  from tests import DummyRequest
36
34
 
37
35
  from c2cgeoportal_geoportal.lib.cacheversion import get_cache_version
38
- from c2cgeoportal_geoportal.lib.caching import (
39
- CORS_METHODS,
40
- NO_CACHE,
41
- init_region,
42
- invalidate_region,
43
- set_common_headers,
44
- )
36
+ from c2cgeoportal_geoportal.lib.caching import init_region, invalidate_region
37
+ from c2cgeoportal_geoportal.lib.common_headers import CORS_METHODS, Cache, set_common_headers
45
38
 
46
39
 
47
40
  class TestSetCorsHeaders(TestCase):
@@ -57,31 +50,31 @@ class TestSetCorsHeaders(TestCase):
57
50
  request.registry.settings = {"headers": {"foo": settings}}
58
51
  else:
59
52
  request.registry.settings = {"headers": {}}
60
- set_common_headers(request, "foo", NO_CACHE, credentials=credentials)
53
+ set_common_headers(request, "foo", Cache.PRIVATE_NO, credentials=credentials)
61
54
 
62
55
  return dict(request.response.headers)
63
56
 
64
57
  def test_simple(self):
65
58
  """
66
- Tests specified in http://www.w3.org/TR/cors/#resource-requests
59
+ Tests specified in http://www.w3.org/TR/cors/#resource-requests.
67
60
  """
68
61
  # 1. If the Origin header is not present terminate this set of steps.
69
62
  # The request is outside the scope of this specification.
70
63
  assert self._do("POST", {}) == {
71
- "Cache-Control": "max-age=0, no-cache",
64
+ "Cache-Control": "max-age=10, public",
72
65
  "Content-Length": "0",
73
66
  "Content-Type": "text/html; charset=UTF-8",
74
- "Vary": "Origin",
67
+ "Vary": "Origin, Cookie",
75
68
  }
76
69
 
77
70
  # 2. If the value of the Origin header is not a case-sensitive match for
78
71
  # any of the values in list of origins, do not set any additional
79
72
  # headers and terminate this set of steps.
80
73
  assert self._do("POST", {"Origin": "http://foe.com"}) == {
81
- "Cache-Control": "max-age=0, no-cache",
74
+ "Cache-Control": "max-age=10, public",
82
75
  "Content-Length": "0",
83
76
  "Content-Type": "text/html; charset=UTF-8",
84
- "Vary": "Origin",
77
+ "Vary": "Origin, Cookie",
85
78
  }
86
79
 
87
80
  # 3. If the resource supports credentials add a single
@@ -89,10 +82,10 @@ class TestSetCorsHeaders(TestCase):
89
82
  # header as value, and add a single Access-Control-Allow-Credentials
90
83
  # header with the case-sensitive string "true" as value.
91
84
  assert self._do("POST", {"Origin": self.ORIGIN2}, credentials=True) == {
92
- "Cache-Control": "max-age=0, no-cache",
85
+ "Cache-Control": "max-age=10, public",
93
86
  "Content-Length": "0",
94
87
  "Content-Type": "text/html; charset=UTF-8",
95
- "Vary": "Origin",
88
+ "Vary": "Origin, Cookie",
96
89
  "Access-Control-Max-Age": self.MAX_AGE,
97
90
  "Access-Control-Allow-Origin": self.ORIGIN2,
98
91
  "Access-Control-Allow-Methods": CORS_METHODS,
@@ -110,8 +103,7 @@ class TestSetCorsHeaders(TestCase):
110
103
 
111
104
  def test_preflight(self):
112
105
  """
113
- Tests specified in
114
- http://www.w3.org/TR/cors/#resource-preflight-requests
106
+ Tests specified in http://www.w3.org/TR/cors/#resource-preflight-requests.
115
107
  """
116
108
  # 1. If the Origin header is not present terminate this set of steps.
117
109
  # The request is outside the scope of this specification.
@@ -210,10 +202,10 @@ class TestSetCorsHeaders(TestCase):
210
202
  def test_not_configured(self):
211
203
  # If the service is not configured, then no CORS head.
212
204
  assert self._do("GET", {"Origin": self.ORIGIN1}, settings=None) == {
213
- "Cache-Control": "max-age=0, no-cache",
205
+ "Cache-Control": "max-age=10, public",
214
206
  "Content-Length": "0",
215
207
  "Content-Type": "text/html; charset=UTF-8",
216
- "Vary": "Origin",
208
+ "Vary": "Origin, Cookie",
217
209
  }
218
210
 
219
211
  def test_match_all(self):
@@ -225,10 +217,10 @@ class TestSetCorsHeaders(TestCase):
225
217
  # An origin included in the access_control_allow_origin list is OK with
226
218
  # credentials
227
219
  assert self._do("POST", {"Origin": self.ORIGIN1}, credentials=True, settings=settings) == {
228
- "Cache-Control": "max-age=0, no-cache",
220
+ "Cache-Control": "max-age=10, public",
229
221
  "Content-Length": "0",
230
222
  "Content-Type": "text/html; charset=UTF-8",
231
- "Vary": "Origin",
223
+ "Vary": "Origin, Cookie",
232
224
  "Access-Control-Max-Age": self.MAX_AGE,
233
225
  "Access-Control-Allow-Origin": self.ORIGIN1,
234
226
  "Access-Control-Allow-Methods": CORS_METHODS,
@@ -238,10 +230,10 @@ class TestSetCorsHeaders(TestCase):
238
230
  # 3. Otherwise, add a single Access-Control-Allow-Origin header, with
239
231
  # either the value of the Origin header or the string "*" as value.
240
232
  assert self._do("POST", {"Origin": "http://www.guest.com"}, settings=settings) == {
241
- "Cache-Control": "max-age=0, no-cache",
233
+ "Cache-Control": "max-age=10, public",
242
234
  "Content-Length": "0",
243
235
  "Content-Type": "text/html; charset=UTF-8",
244
- "Vary": "Origin",
236
+ "Vary": "Origin, Cookie",
245
237
  "Access-Control-Max-Age": self.MAX_AGE,
246
238
  "Access-Control-Allow-Origin": "*",
247
239
  "Access-Control-Allow-Methods": CORS_METHODS,
tests/test_checker.py CHANGED
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (c) 2013-2019, Camptocamp SA
4
2
  # All rights reserved.
5
3
 
tests/test_decimaljson.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
 
@@ -34,14 +32,16 @@ import decimal
34
32
  import json
35
33
  from unittest import TestCase
36
34
 
37
- from c2cwsgiutils.pretty_json import fast_dumps
35
+ from c2cwsgiutils.pretty_json import _FastDumps as FastDumps
38
36
 
39
37
 
40
38
  class TestDecimalJSON(TestCase):
41
39
  def test_decimal(self):
42
40
  value = {"str": "an str", "int": 1, "dec": decimal.Decimal("1.2")}
41
+ fast_dumps = FastDumps(False, False)
43
42
  result = fast_dumps(value)
44
43
  self.assertEqual(json.loads(result), {"int": 1, "dec": 1.2, "str": "an str"})
45
44
 
46
45
  def test_decimal_json(self):
47
- self.assertEqual(fast_dumps({"a": decimal.Decimal("3.3")}), '{\n "a": 3.3\n}')
46
+ fast_dumps = FastDumps(False, False)
47
+ assert fast_dumps({"a": decimal.Decimal("3.3")}) == '{"a":3.3}'
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (c) 2018-2019, Camptocamp SA
4
2
  # All rights reserved.
5
3
 
tests/test_i18n.py CHANGED
@@ -24,7 +24,7 @@ class TestI18n(TestCase):
24
24
  )
25
25
  def test_available_locale_names(self, isdir_mock, listdir_mock, exists_mock):
26
26
  locales = available_locale_names()
27
- self.assertEqual(set(locales), set(["de", "en", "fr"]))
27
+ self.assertEqual(set(locales), {"de", "en", "fr"})
28
28
 
29
29
  def test_available_locale_names_no_dir(self):
30
30
  locales = available_locale_names()
tests/test_init.py CHANGED
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (c) 2012-2019, Camptocamp SA
4
2
  # All rights reserved.
5
3
 
@@ -42,7 +40,7 @@ from c2cgeoportal_geoportal import (
42
40
  call_hook,
43
41
  create_get_user_from_request,
44
42
  default_user_validator,
45
- is_valid_referer,
43
+ is_valid_referrer,
46
44
  set_user_validator,
47
45
  )
48
46
 
@@ -95,7 +93,7 @@ class TestIncludeme(TestCase):
95
93
  def custom_validator(username, password):
96
94
  del username # Unused
97
95
  del password # Unused
98
- return False # pragma: no cover
96
+ return False
99
97
 
100
98
  self.config.set_user_validator(custom_validator)
101
99
  self.assertEqual(self.config.registry.validate_user, custom_validator)
@@ -103,8 +101,7 @@ class TestIncludeme(TestCase):
103
101
 
104
102
  class TestReferer(TestCase):
105
103
  """
106
- Check that accessing something with a bad HTTP referer is equivalent to a
107
- not authenticated query.
104
+ Check that accessing something with a bad HTTP referer is equivalent to a not authenticated query.
108
105
  """
109
106
 
110
107
  BASE1 = "http://example.com/app"
@@ -128,7 +125,7 @@ class TestReferer(TestCase):
128
125
  def match(reference, value, expected):
129
126
  r = DummyRequest()
130
127
  r.referer = value
131
- self.assertEqual(is_valid_referer(r, {"authorized_referers": [reference]}), expected)
128
+ self.assertEqual(is_valid_referrer(r, {"authorized_referers": [reference]}), expected)
132
129
 
133
130
  match("http://example.com/app/", "http://example.com/app?k=v", True)
134
131
  match("http://example.com/app/", "http://example.com/app?k=v#link", True)
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (c) 2013-2019, Camptocamp SA
4
2
  # All rights reserved.
5
3
 
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (c) 2013-2019, Camptocamp SA
4
2
  # All rights reserved.
5
3
 
tests/test_raster.py CHANGED
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (c) 2013-2021, Camptocamp SA
4
2
  # All rights reserved.
5
3
 
tests/test_wmstparsing.py CHANGED
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (c) 2013-2019, Camptocamp SA
4
2
  # All rights reserved.
5
3
 
@@ -1,227 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- # Copyright (c) 2011-2021, Camptocamp SA
4
- # All rights reserved.
5
-
6
- # Redistribution and use in source and binary forms, with or without
7
- # modification, are permitted provided that the following conditions are met:
8
-
9
- # 1. Redistributions of source code must retain the above copyright notice, this
10
- # list of conditions and the following disclaimer.
11
- # 2. Redistributions in binary form must reproduce the above copyright notice,
12
- # this list of conditions and the following disclaimer in the documentation
13
- # and/or other materials provided with the distribution.
14
-
15
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16
- # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17
- # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
- # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
19
- # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
- # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
- # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22
- # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
- # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
- # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
-
26
- # The views and conclusions contained in the software and documentation are those
27
- # of the authors and should not be interpreted as representing official policies,
28
- # either expressed or implied, of the FreeBSD Project.
29
-
30
-
31
- import glob
32
- import json
33
- import os
34
- import re
35
- import subprocess
36
- import sys
37
-
38
- import requests
39
- import yaml
40
- from pyramid.compat import input_
41
- from pyramid.scaffolds.template import Template
42
-
43
-
44
- class BaseTemplate(Template): # pragma: no cover
45
- """
46
- A class that can be used as a base class for c2cgeoportal scaffolding
47
- templates.
48
-
49
- Greatly inspired from ``pyramid.scaffolds.template.PyramidTemplate``.
50
- """
51
-
52
- def pre(self, command, output_dir, vars_): # pylint: disable=arguments-differ
53
- """
54
- Overrides ``pyramid.scaffold.template.Template.pre``, adding
55
- several variables to the default variables list. Also prevents
56
- common misnamings (such as naming a package "site" or naming a
57
- package logger "root").
58
- """
59
-
60
- self._get_vars(vars_, "package", "Get a package name: ")
61
- self._get_vars(vars_, "srid", "Spatial Reference System Identifier (e.g. 2056): ", int)
62
- srid = vars_["srid"]
63
- extent = self._epsg2bbox(srid)
64
- self._get_vars(
65
- vars_,
66
- "extent",
67
- "Extent (minx miny maxx maxy): in EPSG: {srid} projection, default is "
68
- "[{bbox[0]} {bbox[1]} {bbox[2]} {bbox[3]}]: ".format(srid=srid, bbox=extent)
69
- if extent
70
- else "Extent (minx miny maxx maxy): in EPSG: {srid} projection: ".format(srid=srid),
71
- )
72
- match = re.match(r"([\d.]+)[,; ] *([\d.]+)[,; ] *([\d.]+)[,; ] *([\d.]+)", vars_["extent"])
73
- if match is not None:
74
- extent = [match.group(n + 1) for n in range(4)]
75
- vars_["extent"] = ",".join(extent)
76
- vars_["extent_mapserver"] = " ".join(extent)
77
-
78
- super().pre(command, output_dir, vars_)
79
-
80
- if vars_["package"] == "site":
81
- raise ValueError(
82
- "Sorry, you may not name your package 'site'. "
83
- "The package name 'site' has a special meaning in "
84
- "Python. Please name it anything except 'site'."
85
- )
86
-
87
- package_logger = vars_["package"]
88
- if package_logger == "root":
89
- # Rename the app logger in the rare case a project
90
- # is named "root"
91
- package_logger = "app"
92
- vars_["package_logger"] = package_logger
93
- vars_["geomapfish_version"] = os.environ["VERSION"]
94
- vars_["geomapfish_main_version"] = os.environ["MAJOR_VERSION"]
95
- vars_["geomapfish_main_version_dash"] = os.environ["MAJOR_VERSION"].replace(".", "-")
96
-
97
- @staticmethod
98
- def out(msg):
99
- print(msg)
100
-
101
- @staticmethod
102
- def _get_vars(vars_, name, prompt, type_=None):
103
- """
104
- Set an attribute in the vars dict.
105
- """
106
-
107
- if name.upper() in os.environ and os.environ[name.upper()] != "":
108
- value = os.environ[name.upper()]
109
- else:
110
- value = vars_.get(name)
111
-
112
- if value is None:
113
- value = input_(prompt).strip()
114
-
115
- if type_ is not None and not isinstance(value, type_):
116
- try:
117
- type_(value)
118
- except ValueError:
119
- print(("The attribute {}={} is not a {}".format(name, value, type_)))
120
- sys.exit(1)
121
-
122
- vars_[name] = value
123
-
124
- @staticmethod
125
- def _epsg2bbox(srid):
126
- try:
127
- r = requests.get("https://epsg.io/?format=json&q={}".format(srid))
128
- bbox = r.json()["results"][0]["bbox"]
129
- r = requests.get(
130
- "https://epsg.io/trans?s_srs=4326&t_srs={srid}&data={bbox[1]},{bbox[0]}".format(
131
- srid=srid, bbox=bbox
132
- )
133
- )
134
- r1 = r.json()[0]
135
- r = requests.get(
136
- "https://epsg.io/trans?s_srs=4326&t_srs={srid}&data={bbox[3]},{bbox[2]}".format(
137
- srid=srid, bbox=bbox
138
- )
139
- )
140
- r2 = r.json()[0]
141
- return [r1["x"], r2["y"], r2["x"], r1["y"]]
142
- except requests.RequestException:
143
- print("Failed to establish a connection to epsg.io.")
144
- except json.JSONDecodeError:
145
- print("epsg.io doesn't return a correct json.")
146
- except IndexError:
147
- print("Unable to get the bbox")
148
- except Exception as exception:
149
- print("unexpected error: {}".format(str(exception)))
150
- return None
151
-
152
-
153
- def fix_executables(output_dir, patterns, in_const_create_template=False):
154
- if os.name == "posix":
155
- for pattern in patterns:
156
- if in_const_create_template:
157
- pattern = os.path.join(output_dir, "CONST_create_template", pattern)
158
- else:
159
- pattern = os.path.join(output_dir, pattern)
160
- for file_ in glob.glob(pattern):
161
- subprocess.check_call(["chmod", "+x", file_])
162
-
163
-
164
- def _gen_authtkt_secret():
165
- if os.environ.get("CI") == "true":
166
- return "io7heoDui8xaikie1rushaeGeiph8Bequei6ohchaequob6viejei0xooWeuvohf"
167
- return subprocess.check_output(["pwgen", "64"]).decode().strip()
168
-
169
-
170
- class TemplateCreate(BaseTemplate): # pragma: no cover
171
- _template_dir = "create"
172
- summary = "Template used to create a c2cgeoportal project"
173
-
174
- def pre(self, command, output_dir, vars_):
175
- """
176
- Overrides the base template
177
- """
178
- super().pre(command, output_dir, vars_)
179
- vars_["authtkt_secret"] = _gen_authtkt_secret()
180
-
181
- def post(self, command, output_dir, vars_): # pylint: disable=arguments-differ
182
- """
183
- Overrides the base template class to print the next step.
184
- """
185
-
186
- fix_executables(output_dir, ("bin/*", "build", "ci/trigger"))
187
-
188
- super().post(command, output_dir, vars_)
189
-
190
-
191
- class TemplateUpdate(BaseTemplate): # pragma: no cover
192
- _template_dir = "update"
193
- summary = "Template used to update a c2cgeoportal project"
194
-
195
- @staticmethod
196
- def open_project(output_dir, vars_):
197
- project_file = os.path.join(output_dir, "project.yaml")
198
- if os.path.exists(project_file):
199
- with open(project_file, "r") as f:
200
- project = yaml.safe_load(f)
201
- if "template_vars" in project:
202
- for key, value in list(project["template_vars"].items()):
203
- vars_[key] = value
204
- else:
205
- print("Missing project file: " + project_file)
206
- sys.exit(1)
207
-
208
- def pre(self, command, output_dir, vars_):
209
- """
210
- Overrides the base template
211
- """
212
- self.open_project(output_dir, vars_)
213
-
214
- if "authtkt_secret" not in vars_:
215
- vars_["authtkt_secret"] = _gen_authtkt_secret()
216
-
217
- super().pre(command, output_dir, vars_)
218
-
219
- def post(self, command, output_dir, vars_): # pylint: disable=arguments-differ
220
- """
221
- Overrides the base template class to print "Welcome to c2cgeoportal!"
222
- after a successful scaffolding rendering.
223
- """
224
-
225
- fix_executables(output_dir, ("bin/*", "build", "ci/trigger"), True)
226
-
227
- super().post(command, output_dir, vars_)
@@ -1,12 +0,0 @@
1
- *
2
- !bin/
3
- !mapserver/
4
- !qgisserver/
5
- !tilegeneration/
6
- !print/print-apps/
7
- !geoportal/vars*.yaml
8
- !geoportal/CONST_vars.yaml
9
- !geoportal/CONST_config-schema.yaml
10
- !geoportal/{{package}}_geoportal/static
11
- !geoportal/{{package}}_geoportal/locale
12
- geoportal/{{package}}_geoportal/locale/*.pot
@@ -1,89 +0,0 @@
1
- ---
2
- name: Continuous integration
3
-
4
- on:
5
- push:
6
-
7
- env:
8
- PROJECT: {{package}}
9
- # Requires CI_GPG_PRIVATE_KEY and GOPASS_CI_GITHUB_TOKEN secrets.
10
- # OPENSHIFT_PROJECT: gs-gmf-{{package}}
11
- # The release branches
12
- HELM_RELEASE_NAMES: int-2-6,prod-2-6
13
-
14
- jobs:
15
- checks:
16
- runs-on: ubuntu-20.04
17
- name: Checks
18
- timeout-minutes: 10
19
-
20
- steps:
21
- - uses: actions/checkout@v2
22
-
23
- - uses: camptocamp/initialise-gopass-summon-action@v2
24
- with:
25
- ci-gpg-private-key: ${{'{{'}}secrets.CI_GPG_PRIVATE_KEY}}
26
- github-gopass-ci-token: ${{'{{'}}secrets.GOPASS_CI_GITHUB_TOKEN}}
27
-
28
- - run: echo "${HOME}/.local/bin" >> ${GITHUB_PATH}
29
- - run: python3 -m pip install --user --requirement=ci/requirements.txt
30
-
31
- - name: Checks
32
- run: c2cciutils-checks
33
-
34
- config:
35
- runs-on: ubuntu-20.04
36
- name: Config
37
- timeout-minutes: 10
38
- needs: checks
39
-
40
- steps:
41
- - uses: actions/checkout@v2
42
-
43
- - name: Build config
44
- run: ./build --config
45
-
46
- - uses: camptocamp/initialise-gopass-summon-action@v2
47
- with:
48
- ci-gpg-private-key: ${{'{{'}} secrets.CI_GPG_PRIVATE_KEY }}
49
- github-gopass-ci-token: ${{'{{'}} secrets.GOPASS_CI_GITHUB_TOKEN }}
50
- patterns: docker
51
-
52
- - run: echo "${HOME}/.local/bin" >> ${GITHUB_PATH}
53
- - run: python3 -m pip install --user --requirement=ci/requirements.txt
54
-
55
- - name: Publish
56
- run: c2cciutils-publish --group=config
57
- - run: ci/trigger --image=config
58
-
59
-
60
- geoportal:
61
- runs-on: ubuntu-20.04
62
- name: Geoportal
63
- timeout-minutes: 10
64
- needs: checks
65
-
66
- steps:
67
- - uses: actions/checkout@v1
68
-
69
- - name: Build geoportal
70
- run: ./build --geoportal
71
- if: hashFiles('geoportal/Dockerfile') != ''
72
-
73
- - uses: camptocamp/initialise-gopass-summon-action@v2
74
- with:
75
- ci-gpg-private-key: ${{'{{'}} secrets.CI_GPG_PRIVATE_KEY }}
76
- github-gopass-ci-token: ${{'{{'}} secrets.GOPASS_CI_GITHUB_TOKEN }}
77
- patterns: docker
78
- if: hashFiles('geoportal/Dockerfile') != ''
79
-
80
- - run: echo "${HOME}/.local/bin" >> ${GITHUB_PATH}
81
- if: hashFiles('geoportal/Dockerfile') != ''
82
- - run: python3 -m pip install --user --requirement=ci/requirements.txt
83
- if: hashFiles('geoportal/Dockerfile') != ''
84
-
85
- - name: Publish
86
- run: c2cciutils-publish --group=geoportal
87
- if: hashFiles('geoportal/Dockerfile') != ''
88
- - run: ci/trigger --image=geoportal
89
- if: hashFiles('geoportal/Dockerfile') != ''
@@ -1,78 +0,0 @@
1
- ---
2
- name: Rebuild
3
-
4
- on:
5
- schedule:
6
- - cron: '30 2 * * *'
7
-
8
- env:
9
- PROJECT: {{package}}
10
- # Requires CI_GPG_PRIVATE_KEY and GOPASS_CI_GITHUB_TOKEN secrets.
11
- # OPENSHIFT_PROJECT: gs-gmf-{{package}}
12
-
13
- jobs:
14
- config:
15
- runs-on: ubuntu-20.04
16
- name: Config
17
- timeout-minutes: 10
18
-
19
- strategy:
20
- fail-fast: false
21
- matrix:
22
- branch:
23
- - int-{{geomapfish_main_version_dash}}
24
- - prod-{{geomapfish_main_version_dash}}
25
-
26
- steps:
27
- - uses: actions/checkout@v2
28
- with:
29
- ref: ${{'{{'}} matrix.branch }}
30
-
31
- - uses: camptocamp/initialise-gopass-summon-action@v2
32
- with:
33
- ci-gpg-private-key: ${{'{{'}} secrets.CI_GPG_PRIVATE_KEY }}
34
- github-gopass-ci-token: ${{'{{'}} secrets.GOPASS_CI_GITHUB_TOKEN }}
35
- patterns: docker
36
-
37
- - name: Build config
38
- run: ./build --config
39
-
40
- - run: echo "${HOME}/.local/bin" >> ${GITHUB_PATH}
41
- - run: python3 -m pip install --user --requirement=ci/requirements.txt
42
-
43
- - name: Publish
44
- run: c2cciutils-publish --group=config
45
- - run: ci/trigger --image=config
46
-
47
- geoportal:
48
- runs-on: ubuntu-20.04
49
- name: Geoportal
50
- timeout-minutes: 10
51
-
52
- strategy:
53
- fail-fast: false
54
- matrix:
55
- branch:
56
- - int-{{geomapfish_main_version_dash}}
57
- - prod-{{geomapfish_main_version_dash}}
58
-
59
- steps:
60
- - uses: actions/checkout@v1
61
- with:
62
- ref: ${{'{{'}} matrix.branch }}
63
-
64
- - name: Build geoportal
65
- run: ./build --geoportal
66
-
67
- - uses: camptocamp/initialise-gopass-summon-action@v2
68
- with:
69
- ci-gpg-private-key: ${{'{{'}} secrets.CI_GPG_PRIVATE_KEY }}
70
- github-gopass-ci-token: ${{'{{'}} secrets.GOPASS_CI_GITHUB_TOKEN }}
71
- patterns: docker
72
-
73
- - run: echo "${HOME}/.local/bin" >> ${GITHUB_PATH}
74
- - run: python3 -m pip install --user --requirement=ci/requirements.txt
75
-
76
- - name: Publish
77
- run: c2cciutils-publish --group=geoportal
78
- - run: ci/trigger --image=geoportal
@@ -1,16 +0,0 @@
1
- *.pyc
2
- *.pyo
3
- __pycache__/
4
- /.env
5
- /env.personal
6
- /docker-compose.override.yaml
7
- /upgrade
8
- /.upgrade.yaml
9
- /.UPGRADE*
10
- /geoportal/{{package}}_geoportal/locale/{{package}}_geoportal-client.pot
11
-
12
- # Generated with dev mode
13
- /geoportal/{{package}}_geoportal/static/apihelp/index.html
14
- /geoportal/{{package}}_geoportal/static/robot.txt
15
- /print/print-apps/{{package}}/config.yaml
16
- /mapserver/tinyows.xml
@@ -1,3 +0,0 @@
1
- .PHONY: update-po
2
- update-po:
3
- docker-compose exec -T tools sh -c "USER_ID=`id --user` GROUP_ID=`id --group` make -C geoportal update-po"