c2cgeoportal-admin 2.5.0.100__py3-none-any.whl → 2.7.1.156__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 (91) hide show
  1. c2cgeoportal_admin/__init__.py +19 -12
  2. c2cgeoportal_admin/lib/__init__.py +0 -0
  3. c2cgeoportal_admin/lib/lingua_extractor.py +77 -0
  4. c2cgeoportal_admin/lib/ogcserver_synchronizer.py +409 -0
  5. c2cgeoportal_admin/py.typed +0 -0
  6. c2cgeoportal_admin/routes.py +18 -10
  7. c2cgeoportal_admin/schemas/dimensions.py +13 -11
  8. c2cgeoportal_admin/schemas/functionalities.py +63 -22
  9. c2cgeoportal_admin/schemas/interfaces.py +23 -19
  10. c2cgeoportal_admin/schemas/metadata.py +121 -47
  11. c2cgeoportal_admin/schemas/restriction_areas.py +22 -20
  12. c2cgeoportal_admin/schemas/roles.py +8 -6
  13. c2cgeoportal_admin/schemas/treegroup.py +84 -18
  14. c2cgeoportal_admin/schemas/treeitem.py +2 -3
  15. c2cgeoportal_admin/static/layertree.css +26 -4
  16. c2cgeoportal_admin/static/navbar.css +59 -36
  17. c2cgeoportal_admin/static/theme.css +48 -11
  18. c2cgeoportal_admin/subscribers.py +3 -3
  19. c2cgeoportal_admin/templates/404.jinja2 +23 -0
  20. c2cgeoportal_admin/templates/edit.jinja2 +23 -0
  21. c2cgeoportal_admin/templates/home.jinja2 +23 -0
  22. c2cgeoportal_admin/templates/index.jinja2 +23 -0
  23. c2cgeoportal_admin/templates/layertree.jinja2 +55 -11
  24. c2cgeoportal_admin/templates/layout.jinja2 +23 -0
  25. c2cgeoportal_admin/templates/navigation_navbar.jinja2 +56 -0
  26. c2cgeoportal_admin/templates/ogcserver_synchronize.jinja2 +90 -0
  27. c2cgeoportal_admin/templates/widgets/child.pt +35 -3
  28. c2cgeoportal_admin/templates/widgets/children.pt +121 -92
  29. c2cgeoportal_admin/templates/widgets/dimension.pt +23 -0
  30. c2cgeoportal_admin/templates/widgets/dimensions.pt +23 -0
  31. c2cgeoportal_admin/templates/widgets/functionality_fields.pt +51 -0
  32. c2cgeoportal_admin/templates/widgets/layer_fields.pt +23 -0
  33. c2cgeoportal_admin/templates/widgets/layer_group_fields.pt +23 -0
  34. c2cgeoportal_admin/templates/widgets/layer_v1_fields.pt +23 -0
  35. c2cgeoportal_admin/templates/widgets/metadata.pt +30 -1
  36. c2cgeoportal_admin/templates/widgets/metadatas.pt +23 -0
  37. c2cgeoportal_admin/templates/widgets/ogcserver_fields.pt +23 -0
  38. c2cgeoportal_admin/templates/widgets/restriction_area_fields.pt +25 -9
  39. c2cgeoportal_admin/templates/widgets/role_fields.pt +52 -25
  40. c2cgeoportal_admin/templates/widgets/theme_fields.pt +23 -0
  41. c2cgeoportal_admin/templates/widgets/user_fields.pt +23 -0
  42. c2cgeoportal_admin/views/dimension_layers.py +7 -6
  43. c2cgeoportal_admin/views/functionalities.py +31 -5
  44. c2cgeoportal_admin/views/home.py +5 -5
  45. c2cgeoportal_admin/views/interfaces.py +8 -8
  46. c2cgeoportal_admin/views/layer_groups.py +9 -11
  47. c2cgeoportal_admin/views/layers.py +8 -7
  48. c2cgeoportal_admin/views/layers_vectortiles.py +30 -10
  49. c2cgeoportal_admin/views/layers_wms.py +45 -37
  50. c2cgeoportal_admin/views/layers_wmts.py +39 -33
  51. c2cgeoportal_admin/views/layertree.py +34 -26
  52. c2cgeoportal_admin/views/oauth2_clients.py +89 -0
  53. c2cgeoportal_admin/views/ogc_servers.py +130 -27
  54. c2cgeoportal_admin/views/restriction_areas.py +50 -8
  55. c2cgeoportal_admin/views/roles.py +60 -8
  56. c2cgeoportal_admin/views/themes.py +15 -14
  57. c2cgeoportal_admin/views/themes_ordering.py +38 -18
  58. c2cgeoportal_admin/views/treeitems.py +12 -11
  59. c2cgeoportal_admin/views/users.py +7 -5
  60. c2cgeoportal_admin/widgets.py +79 -28
  61. {c2cgeoportal_admin-2.5.0.100.dist-info → c2cgeoportal_admin-2.7.1.156.dist-info}/METADATA +16 -11
  62. c2cgeoportal_admin-2.7.1.156.dist-info/RECORD +92 -0
  63. {c2cgeoportal_admin-2.5.0.100.dist-info → c2cgeoportal_admin-2.7.1.156.dist-info}/WHEEL +1 -1
  64. c2cgeoportal_admin-2.7.1.156.dist-info/entry_points.txt +5 -0
  65. tests/__init__.py +23 -18
  66. tests/conftest.py +4 -15
  67. tests/test_edit_url.py +16 -18
  68. tests/test_functionalities.py +23 -10
  69. tests/test_interface.py +8 -8
  70. tests/test_layer_groups.py +15 -23
  71. tests/test_layers_vectortiles.py +16 -20
  72. tests/test_layers_wms.py +37 -75
  73. tests/test_layers_wmts.py +20 -24
  74. tests/test_layertree.py +107 -100
  75. tests/test_learn.py +1 -1
  76. tests/test_lingua_extractor_config.py +66 -0
  77. tests/test_main.py +4 -2
  78. tests/test_metadatas.py +79 -70
  79. tests/test_oauth2_clients.py +157 -0
  80. tests/test_ogc_servers.py +51 -7
  81. tests/test_restriction_areas.py +81 -17
  82. tests/test_role.py +110 -76
  83. tests/test_themes.py +44 -37
  84. tests/test_themes_ordering.py +1 -1
  85. tests/test_treegroup.py +2 -2
  86. tests/test_user.py +31 -64
  87. tests/themes_ordering.py +1 -1
  88. c2cgeoportal_admin/templates/navigation_vertical.jinja2 +0 -10
  89. c2cgeoportal_admin-2.5.0.100.dist-info/RECORD +0 -84
  90. c2cgeoportal_admin-2.5.0.100.dist-info/entry_points.txt +0 -3
  91. {c2cgeoportal_admin-2.5.0.100.dist-info → c2cgeoportal_admin-2.7.1.156.dist-info}/top_level.txt +0 -0
tests/test_user.py CHANGED
@@ -4,11 +4,10 @@ import email
4
4
  import re
5
5
  from unittest.mock import MagicMock, patch
6
6
 
7
- from pyramid.testing import DummyRequest
8
7
  import pytest
8
+ from pyramid.testing import DummyRequest
9
9
 
10
- from . import AbstractViewsTests, skip_if_ci
11
- from .selenium.page import IndexPage
10
+ from . import AbstractViewsTests
12
11
 
13
12
 
14
13
  @pytest.fixture(scope="function")
@@ -16,18 +15,18 @@ from .selenium.page import IndexPage
16
15
  def users_test_data(dbsession, transact):
17
16
  del transact
18
17
 
19
- from c2cgeoportal_commons.models.static import User
20
18
  from c2cgeoportal_commons.models.main import Role
19
+ from c2cgeoportal_commons.models.static import User
21
20
 
22
21
  roles = []
23
22
  for i in range(0, 4):
24
- roles.append(Role("secretary_{}".format(i)))
23
+ roles.append(Role(f"secretary_{i}"))
25
24
  dbsession.add(roles[i])
26
25
  users = []
27
26
  for i in range(0, 23):
28
27
  user = User(
29
- "babar_{}".format(i),
30
- email="mail{}@valid.net".format(i),
28
+ f"babar_{i}",
29
+ email=f"mail{i}@valid.net",
31
30
  settings_role=roles[i % 4],
32
31
  roles=[roles[i % 4]],
33
32
  )
@@ -71,20 +70,30 @@ class TestUser(AbstractViewsTests):
71
70
 
72
71
  self.check_grid_headers(resp, expected)
73
72
 
74
- @pytest.mark.skip(reason="Translation is not finished")
73
+ @pytest.mark.skip(reason="Translations seems not available in tests")
75
74
  def test_index_rendering_fr(self, test_app):
76
75
  resp = self.get(test_app, locale="fr")
77
76
 
78
77
  self.check_left_menu(resp, "Utilisateurs")
79
78
 
80
- expected = [("_id_", "", "false"), ("username", "Nom"), ("role_name", "Role"), ("email", "Courriel")]
81
- self.check_grid_headers(resp, expected)
79
+ expected = [
80
+ ("actions", "", "false"),
81
+ ("id", "id", "true"),
82
+ ("username", "Nom d'utilisateur"),
83
+ ("email", "Email"),
84
+ ("last_login", "Dernière connection"),
85
+ ("expire_on", "Date d'expiration"),
86
+ ("deactivated", "Désactivé"),
87
+ ("settings_role", "Rôle de configuration"),
88
+ ("roles", "Rôles", "false"),
89
+ ]
90
+ self.check_grid_headers(resp, expected, new="Nouveau")
82
91
 
83
92
  def test_view_edit(self, test_app, users_test_data):
84
93
  user = users_test_data["users"][9]
85
94
  roles = users_test_data["roles"]
86
95
 
87
- resp = test_app.get("/admin/users/{}".format(user.id), status=200)
96
+ resp = test_app.get(f"/admin/users/{user.id}", status=200)
88
97
 
89
98
  assert resp.form["username"].value == user.username
90
99
  assert resp.form["email"].value == user.email
@@ -111,14 +120,14 @@ class TestUser(AbstractViewsTests):
111
120
  assert value == getattr(user, key)
112
121
  else:
113
122
  assert str(value or "") == str(getattr(user, key) or "")
114
- assert set([roles[2].id, roles[3].id]) == set([role.id for role in user.roles])
123
+ assert {roles[2].id, roles[3].id} == {role.id for role in user.roles}
115
124
 
116
125
  def test_delete(self, test_app, users_test_data, dbsession):
117
126
  from c2cgeoportal_commons.models.static import User, user_role
118
127
 
119
128
  user = users_test_data["users"][9]
120
129
  deleted_id = user.id
121
- test_app.delete("/admin/users/{}".format(deleted_id), status=200)
130
+ test_app.delete(f"/admin/users/{deleted_id}", status=200)
122
131
  assert dbsession.query(User).get(deleted_id) is None
123
132
  assert dbsession.query(user_role).filter(user_role.c.user_id == user.id).count() == 0
124
133
 
@@ -129,7 +138,7 @@ class TestUser(AbstractViewsTests):
129
138
  roles = users_test_data["roles"]
130
139
 
131
140
  resp = test_app.post(
132
- "/admin/users/{}".format(user.id),
141
+ f"/admin/users/{user.id}",
133
142
  (
134
143
  ("__formid__", "deform"),
135
144
  ("_charset_", "UTF-8"),
@@ -146,13 +155,13 @@ class TestUser(AbstractViewsTests):
146
155
  ),
147
156
  status=302,
148
157
  )
149
- assert resp.location == "http://localhost/admin/users/{}?msg_col=submit_ok".format(user.id)
158
+ assert resp.location == f"http://localhost/admin/users/{user.id}?msg_col=submit_ok"
150
159
 
151
160
  dbsession.expire(user)
152
161
  assert user.username == "new_name_withéàô"
153
162
  assert user.email == "new_mail@valid.net"
154
163
  assert user.settings_role.name == "secretary_2"
155
- assert set(r.id for r in user.roles) == set(roles[i].id for i in [0, 3])
164
+ assert {r.id for r in user.roles} == {roles[i].id for i in [0, 3]}
156
165
  assert user.validate_password("pré$ident")
157
166
 
158
167
  assert not pw_gen_mock.called, "method should not have been called"
@@ -163,7 +172,7 @@ class TestUser(AbstractViewsTests):
163
172
  roles = users_test_data["roles"]
164
173
 
165
174
  resp = test_app.post(
166
- "/admin/users/{}".format(user.id),
175
+ f"/admin/users/{user.id}",
167
176
  {
168
177
  "__formid__": "deform",
169
178
  "_charset_": "UTF-8",
@@ -190,7 +199,7 @@ class TestUser(AbstractViewsTests):
190
199
  user = users_test_data["users"][7]
191
200
  roles = users_test_data["roles"]
192
201
 
193
- resp = test_app.get("/admin/users/{}/duplicate".format(user.id), status=200)
202
+ resp = test_app.get(f"/admin/users/{user.id}/duplicate", status=200)
194
203
  form = resp.form
195
204
 
196
205
  assert "" == form["id"].value
@@ -210,7 +219,7 @@ class TestUser(AbstractViewsTests):
210
219
  ).group(1)
211
220
  assert user.id != new_user.id
212
221
  assert user.settings_role_id == new_user.settings_role_id
213
- assert set([role.id for role in user.roles]) == set([role.id for role in new_user.roles])
222
+ assert {role.id for role in user.roles} == {role.id for role in new_user.roles}
214
223
  assert not new_user.is_password_changed
215
224
  assert not new_user.validate_password("pré$ident")
216
225
 
@@ -295,52 +304,10 @@ class TestUser(AbstractViewsTests):
295
304
  assert info.status_int == 500, "Expected 500 status when db error"
296
305
 
297
306
  def test_grid_settings_role_none(self, dbsession, test_app):
298
- """Grid view must work even if a user's settings_role is None"""
307
+ """
308
+ Grid view must work even if a user's settings_role is None.
309
+ """
299
310
  from c2cgeoportal_commons.models.static import User
300
311
 
301
312
  dbsession.add(User("test", email="test@valid.net"))
302
313
  self.check_search(test_app, "test", total=1)
303
-
304
-
305
- @skip_if_ci
306
- @pytest.mark.selenium
307
- @pytest.mark.usefixtures("selenium", "selenium_app", "users_test_data")
308
- class TestUserSelenium:
309
-
310
- _prefix = "/admin/users"
311
-
312
- def test_index(self, selenium, selenium_app, users_test_data, dbsession):
313
- from c2cgeoportal_commons.models.static import User
314
-
315
- selenium.get(selenium_app + self._prefix)
316
-
317
- index_page = IndexPage(selenium)
318
- index_page.select_language("en")
319
- index_page.check_pagination_info("Showing 1 to 23 of 23 rows", 10)
320
- index_page.select_page_size(10)
321
- index_page.check_pagination_info("Showing 1 to 10 of 23 rows", 10)
322
-
323
- # delete
324
- user = users_test_data["users"][3]
325
- deleted_id = user.id
326
- index_page.click_delete(deleted_id)
327
- index_page.check_pagination_info("Showing 1 to 10 of 22 rows", 10)
328
- assert dbsession.query(User).get(deleted_id) is None
329
-
330
- # edit
331
- user = users_test_data["users"][4]
332
- index_page.find_item_action(user.id, "edit").click()
333
-
334
- elem = selenium.find_element_by_xpath("//input[@name ='username']")
335
- elem.clear()
336
- elem.send_keys("new_name_éôù")
337
- elem = selenium.find_element_by_xpath("//input[@name ='email']")
338
- elem.clear()
339
- elem.send_keys("new_email@valid.net")
340
- elem = selenium.find_element_by_xpath("//button[@name='formsubmit']")
341
- elem.click()
342
-
343
- user = dbsession.query(User).filter(User.id == user.id).one()
344
- dbsession.expire(user)
345
- assert user.username == "new_name_éôù"
346
- assert user.email == "new_email@valid.net"
tests/themes_ordering.py CHANGED
@@ -14,7 +14,7 @@ def themes_ordering_test_data(dbsession, transact):
14
14
 
15
15
  themes = []
16
16
  for i in range(0, 25):
17
- theme = Theme(name="theme_{}".format(i), ordering=100)
17
+ theme = Theme(name=f"theme_{i}", ordering=100)
18
18
  dbsession.add(theme)
19
19
  themes.append(theme)
20
20
 
@@ -1,10 +0,0 @@
1
- <ul id="main-menu" class="nav nav-pills nav-stacked">
2
- <li role="presentation" class="{{'active' if request.matched_route.name == 'layertree' else ''}}">
3
- <a href="{{request.route_url('layertree')}}">{{_("Layer tree")}}</a>
4
- </li>
5
- {% for table in tables %}
6
- <li role="presentation" class="{{'active' if request.matchdict and request.matchdict.get('table') == table['key'] else ''}}">
7
- <a href="{{request.route_url('c2cgeoform_index', table=table['key'])}}">{{table['plural']}}</a>
8
- </li>
9
- {% endfor %}
10
- </ul>
@@ -1,84 +0,0 @@
1
- c2cgeoportal_admin/__init__.py,sha256=IsfveDX7hmzIRTY5sTWOk3xeC1gD7DakbwVH_wxq_NI,4677
2
- c2cgeoportal_admin/routes.py,sha256=FVOOEopeJJUNRxQA2QLoUFzaJSJ3u67-lLPs19pXBxY,4384
3
- c2cgeoportal_admin/subscribers.py,sha256=NKvpObGpgVqmTTU7q-A_EsPMEaA6eyKfa6kezlR11H4,2362
4
- c2cgeoportal_admin/widgets.py,sha256=aKI3VWB4MCLo0kfIrhPgkxPTrsRHdozCrGnQBJnAi6o,4276
5
- c2cgeoportal_admin/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- c2cgeoportal_admin/schemas/dimensions.py,sha256=NOmXFqfF5-P5aM5OOUqChXbG7HpXjrNd_SEq_JpRuKc,2070
7
- c2cgeoportal_admin/schemas/functionalities.py,sha256=naxGaZlyI7Oqsl8qSC9-VXJ9xa6sx0Y0NVxoyWqhoKE,2476
8
- c2cgeoportal_admin/schemas/interfaces.py,sha256=CesXI7TInAYYkhpPRCXnEGhiVIMfbuXOOBDHyZEiAqk,2277
9
- c2cgeoportal_admin/schemas/metadata.py,sha256=XV8N4P79Kf7wDrxpqdPGMut5HsbLHiSFNjQD6zp2h2g,5925
10
- c2cgeoportal_admin/schemas/restriction_areas.py,sha256=mumAc30YV8e6jIRlCOJ7QX99MIhXoRda9ulTGoz-Rxc,2343
11
- c2cgeoportal_admin/schemas/roles.py,sha256=suFYgwYCSlQ1qIWghin_Z-HXDShGy9xajjTcQRc3IEY,2253
12
- c2cgeoportal_admin/schemas/treegroup.py,sha256=AJ_FjeiQCwsd0hUxmUDRUqg_jnM_J0DPDOyvTOj7km0,4991
13
- c2cgeoportal_admin/schemas/treeitem.py,sha256=P0qZZrxbAPo878p36-yyQ0k_slxuml2ij8Ev9GeWUJE,2094
14
- c2cgeoportal_admin/static/layertree.css,sha256=uBXaWDb4tJKLfZU45-_SY0RCiQWYZGt7z-93kPiJj2U,2038
15
- c2cgeoportal_admin/static/navbar.css,sha256=BL4YfSRoVFXBF2AZHKCfQ1AyW5IeKrvPYKA3yxl5xiA,1245
16
- c2cgeoportal_admin/static/theme.css,sha256=NfJVztoQJ1ycdR_osMoZpC958oQAn5hMJOyei59hz3E,645
17
- c2cgeoportal_admin/templates/404.jinja2,sha256=m0V-yCVQjg_yHCMiXuk3vvRBqy7X7fLT8B95IaMapMw,281
18
- c2cgeoportal_admin/templates/edit.jinja2,sha256=CJgEKPgTuXBEutu1ry45-5aQ68h_0fXhfjt2GtnRkoA,163
19
- c2cgeoportal_admin/templates/home.jinja2,sha256=Wm3rl2Ap8a5FBPsPAXxSNV5LHLqyF232uNmjFhfNIac,377
20
- c2cgeoportal_admin/templates/index.jinja2,sha256=-lsyqoKzcwstQLhkqQqyyiMOf6kwcJxTn05_BTOMXaA,866
21
- c2cgeoportal_admin/templates/layertree.jinja2,sha256=PVjDbNIBy7bdwnjsxCPk-5Ed2T-_eBChNN0WfdStgrM,7952
22
- c2cgeoportal_admin/templates/layout.jinja2,sha256=DeWDkY22JEIvTdaO2df8HHB95tl8irCTzjxtgy-1C6E,2966
23
- c2cgeoportal_admin/templates/navigation_navbar.jinja2,sha256=MchXa1LGlBFrPkBwCO5qTCDhWzstZd7B75GUO8eXoEI,1962
24
- c2cgeoportal_admin/templates/navigation_vertical.jinja2,sha256=8uqlbGcIIWEPrdv8Ej_rbO6h2tFVhER2ILzQOGrl6mk,521
25
- c2cgeoportal_admin/templates/widgets/child.pt,sha256=lRyyakHSAb9uHn8xEJEvUSunVZ3YRv3W4-1lIZ6MzeQ,619
26
- c2cgeoportal_admin/templates/widgets/children.pt,sha256=a3RC86vcDIlGw1kc_RjCEUiTRY6Z4aFN09m2kGzK6Ps,5102
27
- c2cgeoportal_admin/templates/widgets/dimension.pt,sha256=Yhr5nGu2aSASoWISD-ElMc32997Y2vM8hgVVZy_VeKw,1504
28
- c2cgeoportal_admin/templates/widgets/dimensions.pt,sha256=TA1lz5OUKIXRzq7yWcN36dJyqtdmY0vqNZpJXo13LZQ,88
29
- c2cgeoportal_admin/templates/widgets/layer_fields.pt,sha256=uB2zLbuhXVhU3ywB10mWkjCNd_eKeEa2Q3fgR73BFG4,2100
30
- c2cgeoportal_admin/templates/widgets/layer_group_fields.pt,sha256=NeZUF19bjqZia0heFIQ_YxTxdfxGLq54MNt7-U7r3ik,1336
31
- c2cgeoportal_admin/templates/widgets/layer_v1_fields.pt,sha256=mV5ml6bRKYeZkNMp9BTBiJWv2R48SZVKixhCZXqNK_k,2833
32
- c2cgeoportal_admin/templates/widgets/metadata.pt,sha256=OFVXCIW9esL2KM0iR29nb5mg5C8dFGep8uOUfQhTpT8,2415
33
- c2cgeoportal_admin/templates/widgets/metadatas.pt,sha256=6PQarLFl-KQIezWs4S89W9TKizeWaRP5BalLpaLqhi4,353
34
- c2cgeoportal_admin/templates/widgets/ogcserver_fields.pt,sha256=eN0Jxg0y7M0q_Z0Wug7blzhl0V62P43ZUU6qssSjPHk,601
35
- c2cgeoportal_admin/templates/widgets/restriction_area_fields.pt,sha256=wWjSdgZpfv9pD1IO1PpnEaOXjEW4Ya_V1078bb2Enj4,807
36
- c2cgeoportal_admin/templates/widgets/role_fields.pt,sha256=6CmfKzilScsVde-zme5Y-jzwUfNs46aDJ3fxfn5W2_g,1285
37
- c2cgeoportal_admin/templates/widgets/theme_fields.pt,sha256=AkJlQ3BUM7h1MbDRyU2RNpabZ9CzL84m31omyMhO6Vc,1960
38
- c2cgeoportal_admin/templates/widgets/user_fields.pt,sha256=G-DMCwQVC-53ly87-B4Am4lqCTtX8av9zyzDtK6GDhM,630
39
- c2cgeoportal_admin/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
- c2cgeoportal_admin/views/dimension_layers.py,sha256=brEA1L7RXABKQLoScK5S2tjWn7jm9xRHgzAj3BjmgHw,2465
41
- c2cgeoportal_admin/views/functionalities.py,sha256=SfMoEShBTOFj_20V3JHVDToOMrmHoLWd4K87Yf_TDgM,3144
42
- c2cgeoportal_admin/views/home.py,sha256=_WJgyna095opx_b9PuchjeVEztj3tFWCx5Low3RVK-s,1804
43
- c2cgeoportal_admin/views/interfaces.py,sha256=7LzocSnJ1JeSroVc-UBdJdDnOF1mZR4zGgnuOvsoutA,3438
44
- c2cgeoportal_admin/views/layer_groups.py,sha256=OBM48lbCDfeI772k3ypukGEbhIwzt5hW4REr-Bs78Zw,3826
45
- c2cgeoportal_admin/views/layers.py,sha256=OhEITd5AWEYCztGmrK_PP59CeTOcgRp2AE3g_ghdG6U,2897
46
- c2cgeoportal_admin/views/layers_vectortiles.py,sha256=gOAwB7j2esEKuDvZtNQEVy8SCAfICNvXWMcx61x4qiE,4103
47
- c2cgeoportal_admin/views/layers_wms.py,sha256=7uIAvQuLSRKC5Cbq4aq029W6cRHj0WIABUIpyw2_fjs,7178
48
- c2cgeoportal_admin/views/layers_wmts.py,sha256=tqNCG_X6FqHnxUh4W3FI2Ls9uWCtdjneSF7nN1fsu-I,7055
49
- c2cgeoportal_admin/views/layertree.py,sha256=OtviGiVJyHosC77WQ7F6Bbu5DwHeV0LVL_udv7gnrMM,7925
50
- c2cgeoportal_admin/views/ogc_servers.py,sha256=ABoPPdhxN_sThc_98eRXCluNOYwCG-TdNBiSgdOPfLo,3512
51
- c2cgeoportal_admin/views/restriction_areas.py,sha256=hUhr8pk3o6ksjNcDN_t4_PV00dlWcLK-P4hPWGHrjMc,4092
52
- c2cgeoportal_admin/views/roles.py,sha256=1ki172UOlSM7eYuB8adah8gAfnZ85_Pr_-uLR8RBjks,4116
53
- c2cgeoportal_admin/views/themes.py,sha256=q7dnR-SzsvnXbH5pHrvpYeF2FuazBLZsmvWTnjxPx88,5502
54
- c2cgeoportal_admin/views/themes_ordering.py,sha256=x9I9tDIuiNkub96AWR12lV91ECOHxsdUdBAI4-dThUs,4945
55
- c2cgeoportal_admin/views/treeitems.py,sha256=GRGHu1ixeALE2PoLw1xOAHkJbICtS6xozKqn8pSXg6U,3787
56
- c2cgeoportal_admin/views/users.py,sha256=bA4Ym5xmNIBgqNBk2H5bWHhdR4saYN2Ee_k1unzgrlQ,5193
57
- tests/__init__.py,sha256=iZt9bPZHkTFojfQqeFCqVrBMkYjewdVbcKQ79vppf-s,9311
58
- tests/conftest.py,sha256=ip0JDR3ujOGyKzHZ8ZaLWU1an7GYnuysjGeaeFW2qlw,2380
59
- tests/test_edit_url.py,sha256=tufOWTFZoOABRpr_H-aWpq6o1QPdWYgfvfMkdcgOs6s,4654
60
- tests/test_functionalities.py,sha256=ZgGeRP0eNLAxhgfT6Wj3zxtnClKuNqEGGl8oMVs9tZ4,3857
61
- tests/test_home.py,sha256=oA4i-V9jJQQgHD9Gz79mgIEMUCRw3tmIQVqdhM9Q2Fo,426
62
- tests/test_interface.py,sha256=RP0nkQvbSR8qYy3OtTB-pmjupJ-tD6hQcLfcYjaGHn4,4768
63
- tests/test_layer_groups.py,sha256=n4jaqSIk_3YiFsVt5569BaeUQMCwtPPxuUivrqPu5wA,11609
64
- tests/test_layers_vectortiles.py,sha256=nY2inouZBfvQrsGsjpYNag1fPbtSPVKpvBWPY8I6cIg,9590
65
- tests/test_layers_wms.py,sha256=QGYptpJm83d6KQCva7XSfhOkXz5JozmzbvN_sFxcs1c,19490
66
- tests/test_layers_wmts.py,sha256=NhVoNCkixwQSjh9KOoAQV7i2T9Uu_mWJQ4CWUzINyxI,11358
67
- tests/test_layertree.py,sha256=5qOF32GalHLxHb-wH_FjGVUjgSlAAHtZ06r70JhzJk0,11502
68
- tests/test_learn.py,sha256=tXOGW_jktJeb_QpXXlXlGzi0WD3GRKkA71wS1q8VQDI,2307
69
- tests/test_left_menu.py,sha256=-K_429ZcW5Hsz317StIRVz8VtU7GDMH7UCTzZDfckUo,920
70
- tests/test_main.py,sha256=sLkSzalgvkgLold7fFLKJYnYsjSW5n8bxYFzYoXa3JY,354
71
- tests/test_metadatas.py,sha256=3oBF7KTI4I59tPb9zW_eujHSdep25J_ARM9JqgLNAOg,11977
72
- tests/test_ogc_servers.py,sha256=_UyZOCQLcM84DvVwu2m9l1rdIS47ZwWHswAWTJVYk10,4661
73
- tests/test_restriction_areas.py,sha256=pEVs8E2AG5GFDkb0Mg4FZVSvnR5b0nrTRcTOWT_TNJs,5583
74
- tests/test_role.py,sha256=wdY38WySSxkJ3o_nKtTw3CIRlKOYZRJg70LB8lSga44,10350
75
- tests/test_themes.py,sha256=770fiV-5Jwz9aYjmfTntnlZ2ca4q5_n_9KL9otFTlj4,15119
76
- tests/test_themes_ordering.py,sha256=AqJ8HOfL6__QnZIjl7RqsQLbH352iR8pokNshctQOeQ,2260
77
- tests/test_treegroup.py,sha256=CBM77NxjWygcikjgci20R4MEnnwQLpFI9AExM83s118,592
78
- tests/test_user.py,sha256=UGbT96AY1OirMy3w4fCoCEx1uoOD9Nf69oqxCogswT4,13040
79
- tests/themes_ordering.py,sha256=b6PpQQbbB9RqKKiBl5iF7T3tQGgvJ18LGTJCbP31FVQ,1351
80
- c2cgeoportal_admin-2.5.0.100.dist-info/METADATA,sha256=_R5eERE72mN6yhKb8fnT8fLzWKdqDcWtCMF0o3TJWr4,1178
81
- c2cgeoportal_admin-2.5.0.100.dist-info/WHEEL,sha256=g4nMs7d-Xl9-xC9XovUrsDHGXt-FT0E17Yqo92DEfvY,92
82
- c2cgeoportal_admin-2.5.0.100.dist-info/entry_points.txt,sha256=CroEMatntjAOxN-0qHPOOjVrtmBg_WxpUcUmvRtUJZA,52
83
- c2cgeoportal_admin-2.5.0.100.dist-info/top_level.txt,sha256=DgcTJgTvpJUB8HqwYB14PdLBPAOAFk0B8oqnSTFoAU4,25
84
- c2cgeoportal_admin-2.5.0.100.dist-info/RECORD,,
@@ -1,3 +0,0 @@
1
- [paste.app_factory]
2
- main = c2cgeoportal_admin:main
3
-