c2cgeoportal-commons 2.7.1.145__py3-none-any.whl → 2.9.0.350__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 (87) hide show
  1. c2cgeoportal_commons/__init__.py +1 -1
  2. c2cgeoportal_commons/alembic/env.py +18 -15
  3. c2cgeoportal_commons/alembic/main/028477929d13_add_technical_roles.py +3 -3
  4. c2cgeoportal_commons/alembic/main/04f05bfbb05e_remove_the_old_is_expanded_column.py +3 -1
  5. c2cgeoportal_commons/alembic/main/116b9b79fc4d_internal_and_external_layer_tables_.py +35 -39
  6. c2cgeoportal_commons/alembic/main/1418cb05921b_merge_1_6_and_master_branches.py +2 -4
  7. c2cgeoportal_commons/alembic/main/164ac0819a61_add_image_format_to_wmts_layer.py +2 -2
  8. c2cgeoportal_commons/alembic/main/166ff2dcc48d_create_database.py +5 -5
  9. c2cgeoportal_commons/alembic/main/16e43f8c0330_remove_old_metadata_column.py +2 -2
  10. c2cgeoportal_commons/alembic/main/1d5d4abfebd1_add_restricted_theme.py +3 -3
  11. c2cgeoportal_commons/alembic/main/1de20166b274_remove_v1_artifacts.py +2 -2
  12. c2cgeoportal_commons/alembic/main/20137477bd02_update_icons_url.py +2 -2
  13. c2cgeoportal_commons/alembic/main/21f11066f8ec_trigger_on_role_updates_user_in_static.py +14 -16
  14. c2cgeoportal_commons/alembic/main/22e6dfb556de_add_description_tree_.py +2 -2
  15. c2cgeoportal_commons/alembic/main/29f2a32859ec_merge_1_6_and_master_branches.py +2 -4
  16. c2cgeoportal_commons/alembic/main/2b8ed8c1df94_set_layergroup_treeitem_is_as_a_primary_.py +2 -2
  17. c2cgeoportal_commons/alembic/main/2e57710fecfe_update_the_ogc_server_for_ogc_api.py +77 -0
  18. c2cgeoportal_commons/alembic/main/32527659d57b_move_exclude_properties_from_layerv1_to_.py +8 -8
  19. c2cgeoportal_commons/alembic/main/32b21aa1d0ed_merge_e004f76e951a_and_e004f76e951a_.py +2 -4
  20. c2cgeoportal_commons/alembic/main/338b57593823_remove_trigger_on_role_name_change.py +16 -18
  21. c2cgeoportal_commons/alembic/main/415746eb9f6_changes_for_v2.py +31 -31
  22. c2cgeoportal_commons/alembic/main/44c91d82d419_add_table_log.py +72 -0
  23. c2cgeoportal_commons/alembic/main/5109242131ce_add_column_time_widget.py +4 -3
  24. c2cgeoportal_commons/alembic/main/52916d8fde8b_add_sql_fields_to_vector_tiles.py +5 -3
  25. c2cgeoportal_commons/alembic/main/53ba1a68d5fe_add_theme_to_fulltextsearch.py +2 -2
  26. c2cgeoportal_commons/alembic/main/54645a535ad6_add_ordering_in_relation.py +10 -10
  27. c2cgeoportal_commons/alembic/main/56dc90838d90_fix_removing_layerv1.py +2 -2
  28. c2cgeoportal_commons/alembic/main/596ba21e3833_separate_local_internal.py +6 -10
  29. c2cgeoportal_commons/alembic/main/678f88c7ad5e_add_vector_tiles_layers_table.py +2 -2
  30. c2cgeoportal_commons/alembic/main/6a412d9437b1_rename_serverogc_to_ogcserver.py +4 -4
  31. c2cgeoportal_commons/alembic/main/6d87fdad275a_convert_metadata_to_the_right_case.py +2 -2
  32. c2cgeoportal_commons/alembic/main/7530011a66a7_trigger_on_role_updates_user_in_static.py +14 -16
  33. c2cgeoportal_commons/alembic/main/78fd093c8393_add_api_s_intrfaces.py +30 -49
  34. c2cgeoportal_commons/alembic/main/7d271f4527cd_add_layer_column_in_layerv1_table.py +2 -2
  35. c2cgeoportal_commons/alembic/main/809650bd04c3_add_dimension_field.py +2 -2
  36. c2cgeoportal_commons/alembic/main/8117bb9bba16_use_dimension_on_all_the_layers.py +4 -4
  37. c2cgeoportal_commons/alembic/main/87f8330ed64e_add_missing_delete_cascades.py +2 -2
  38. c2cgeoportal_commons/alembic/main/9268a1dffac0_add_trigger_to_be_able_to_correctly_.py +2 -2
  39. c2cgeoportal_commons/alembic/main/94db7e7e5b21_merge_2_2_and_master_branches.py +2 -4
  40. c2cgeoportal_commons/alembic/main/951ff84bd8ec_be_able_to_delete_a_wms_layer_in_sql.py +2 -2
  41. c2cgeoportal_commons/alembic/main/a00109812f89_add_field_layer_wms_valid.py +4 -4
  42. c2cgeoportal_commons/alembic/main/a4558f032d7d_add_support_of_cog_layers.py +74 -0
  43. c2cgeoportal_commons/alembic/main/a4f1aac9bda_merge_1_6_and_master_branches.py +2 -4
  44. c2cgeoportal_commons/alembic/main/b60f2a505f42_remame_uimetadata_to_metadata.py +2 -2
  45. c2cgeoportal_commons/alembic/main/b6b09f414fe8_sync_model_database.py +174 -0
  46. c2cgeoportal_commons/alembic/main/c75124553bf3_remove_deprecated_columns.py +2 -2
  47. c2cgeoportal_commons/alembic/main/d48a63b348f1_change_mapserver_url_for_docker.py +6 -10
  48. c2cgeoportal_commons/alembic/main/d8ef99bc227e_be_able_to_delete_a_linked_functionality.py +2 -2
  49. c2cgeoportal_commons/alembic/main/daf738d5bae4_merge_2_0_and_master_branches.py +2 -4
  50. c2cgeoportal_commons/alembic/main/dba87f2647f9_merge_2_2_on_2_3.py +2 -4
  51. c2cgeoportal_commons/alembic/main/e004f76e951a_add_missing_not_null.py +6 -22
  52. c2cgeoportal_commons/alembic/main/e7e03dedade3_put_the_default_wms_server_in_the_.py +6 -10
  53. c2cgeoportal_commons/alembic/main/e85afd327ab3_cascade_deletes_to_tsearch.py +2 -2
  54. c2cgeoportal_commons/alembic/main/ec82a8906649_add_missing_on_delete_cascade_on_layer_.py +2 -2
  55. c2cgeoportal_commons/alembic/main/ee25d267bf46_main_interface_desktop.py +4 -10
  56. c2cgeoportal_commons/alembic/main/eeb345672454_merge_2_4_and_master_branches.py +2 -4
  57. c2cgeoportal_commons/alembic/static/0c640a58a09a_add_opt_key_column.py +2 -2
  58. c2cgeoportal_commons/alembic/static/107b81f5b9fe_add_missing_delete_cascades.py +2 -2
  59. c2cgeoportal_commons/alembic/static/1857owc78a07_add_last_login_and_expiration_date.py +2 -2
  60. c2cgeoportal_commons/alembic/static/1da396a88908_move_user_table_to_static_schema.py +6 -10
  61. c2cgeoportal_commons/alembic/static/267b4c1bde2e_add_display_name_in_the_user_for_better_.py +62 -0
  62. c2cgeoportal_commons/alembic/static/3f89a7d71a5e_alter_column_url_to_remove_limitation.py +2 -2
  63. c2cgeoportal_commons/alembic/static/44c91d82d419_add_table_log.py +72 -0
  64. c2cgeoportal_commons/alembic/static/53d671b17b20_add_timezone_on_datetime_fields.py +2 -2
  65. c2cgeoportal_commons/alembic/static/5472fbc19f39_add_temp_password_column.py +2 -2
  66. c2cgeoportal_commons/alembic/static/76d72fb3fcb9_add_oauth2_pkce.py +70 -0
  67. c2cgeoportal_commons/alembic/static/7ef947f30f20_add_oauth2_tables.py +3 -1
  68. c2cgeoportal_commons/alembic/static/910b4ca53b68_sync_model_database.py +186 -0
  69. c2cgeoportal_commons/alembic/static/aa41e9613256_wip_add_openid_connect_support.py +64 -0
  70. c2cgeoportal_commons/alembic/static/ae5e88f35669_add_table_user_role.py +8 -14
  71. c2cgeoportal_commons/alembic/static/bd029dbfc11a_fill_tech_data_column.py +2 -2
  72. c2cgeoportal_commons/lib/email_.py +15 -19
  73. c2cgeoportal_commons/lib/literal.py +3 -3
  74. c2cgeoportal_commons/lib/url.py +15 -16
  75. c2cgeoportal_commons/lib/validators.py +1 -3
  76. c2cgeoportal_commons/models/__init__.py +16 -9
  77. c2cgeoportal_commons/models/main.py +415 -226
  78. c2cgeoportal_commons/models/sqlalchemy.py +13 -13
  79. c2cgeoportal_commons/models/static.py +162 -71
  80. c2cgeoportal_commons/testing/__init__.py +12 -7
  81. c2cgeoportal_commons/testing/initializedb.py +7 -6
  82. {c2cgeoportal_commons-2.7.1.145.dist-info → c2cgeoportal_commons-2.9.0.350.dist-info}/METADATA +4 -5
  83. c2cgeoportal_commons-2.9.0.350.dist-info/RECORD +89 -0
  84. {c2cgeoportal_commons-2.7.1.145.dist-info → c2cgeoportal_commons-2.9.0.350.dist-info}/WHEEL +1 -1
  85. tests/conftest.py +1 -1
  86. c2cgeoportal_commons-2.7.1.145.dist-info/RECORD +0 -80
  87. {c2cgeoportal_commons-2.7.1.145.dist-info → c2cgeoportal_commons-2.9.0.350.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2018-2019, Camptocamp SA
1
+ # Copyright (c) 2018-2025, Camptocamp SA
2
2
  # All rights reserved.
3
3
 
4
4
  # Redistribution and use in source and binary forms, with or without
@@ -25,7 +25,7 @@
25
25
  # of the authors and should not be interpreted as representing official policies,
26
26
  # either expressed or implied, of the FreeBSD Project.
27
27
 
28
- # pylint: disable=no-member
28
+ # pylint: disable=no-member,invalid-name
29
29
 
30
30
  """
31
31
  Remove trigger on_role_name_change.
@@ -59,22 +59,20 @@ def downgrade() -> None:
59
59
  staticschema = config["schema_static"]
60
60
 
61
61
  op.execute(
62
- """
63
- CREATE OR REPLACE FUNCTION {schema}.on_role_name_change()
64
- RETURNS trigger AS
65
- $$
66
- BEGIN
67
- IF NEW.name <> OLD.name THEN
68
- UPDATE {staticschema}."user" SET role_name = NEW.name WHERE role_name = OLD.name;
69
- END IF;
70
- RETURN NEW;
71
- END;
72
- $$
73
- LANGUAGE plpgsql""".format(
74
- schema=schema, staticschema=staticschema
75
- )
62
+ f"""
63
+ CREATE OR REPLACE FUNCTION {schema}.on_role_name_change()
64
+ RETURNS trigger AS
65
+ $$
66
+ BEGIN
67
+ IF NEW.name <> OLD.name THEN
68
+ UPDATE {staticschema}."user" SET role_name = NEW.name WHERE role_name = OLD.name;
69
+ END IF;
70
+ RETURN NEW;
71
+ END;
72
+ $$
73
+ LANGUAGE plpgsql"""
76
74
  )
77
75
  op.execute(
78
- "CREATE TRIGGER on_role_name_change AFTER UPDATE ON {schema}.role FOR EACH ROW "
79
- "EXECUTE PROCEDURE {schema}.on_role_name_change()".format(schema=schema)
76
+ f"CREATE TRIGGER on_role_name_change AFTER UPDATE ON {schema}.role FOR EACH ROW "
77
+ f"EXECUTE PROCEDURE {schema}.on_role_name_change()"
80
78
  )
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2014-2019, Camptocamp SA
1
+ # Copyright (c) 2014-2025, Camptocamp SA
2
2
  # All rights reserved.
3
3
 
4
4
  # Redistribution and use in source and binary forms, with or without
@@ -25,7 +25,7 @@
25
25
  # of the authors and should not be interpreted as representing official policies,
26
26
  # either expressed or implied, of the FreeBSD Project.
27
27
 
28
- # pylint: disable=no-member
28
+ # pylint: disable=no-member,invalid-name
29
29
 
30
30
  """
31
31
  Changes to start the implementation of the version 2.
@@ -51,7 +51,7 @@ def upgrade() -> None:
51
51
 
52
52
  engine = op.get_bind().engine
53
53
  with engine.connect() as connection:
54
- if type(engine).__name__ != "MockConnection" and op.get_context().dialect.has_table( # type: ignore
54
+ if type(engine).__name__ != "MockConnection" and op.get_context().dialect.has_table(
55
55
  connection, "interface", schema=schema
56
56
  ):
57
57
  return
@@ -157,29 +157,29 @@ def upgrade() -> None:
157
157
  op.bulk_insert(interface, [{"name": "main"}, {"name": "mobile"}, {"name": "edit"}, {"name": "routing"}])
158
158
 
159
159
  op.execute(
160
- "INSERT INTO %(schema)s.interface_layer (layer_id, interface_id) "
160
+ f"INSERT INTO {schema}.interface_layer (layer_id, interface_id) "
161
161
  "(SELECT l.id AS layer_id, i.id AS interface_id "
162
- "FROM %(schema)s.layer AS l, %(schema)s.interface AS i "
163
- "WHERE i.name in ('main', 'edit', 'routing') AND l.\"inDesktopViewer\")" % {"schema": schema}
162
+ f"FROM {schema}.layer AS l, {schema}.interface AS i "
163
+ "WHERE i.name in ('main', 'edit', 'routing') AND l.\"inDesktopViewer\")"
164
164
  )
165
165
  op.execute(
166
- "INSERT INTO %(schema)s.interface_layer (layer_id, interface_id) "
166
+ f"INSERT INTO {schema}.interface_layer (layer_id, interface_id) "
167
167
  "(SELECT l.id AS layer_id, i.id AS interface_id "
168
- "FROM %(schema)s.layer AS l, %(schema)s.interface AS i "
169
- "WHERE i.name = 'mobile' AND l.\"inMobileViewer\")" % {"schema": schema}
168
+ f"FROM {schema}.layer AS l, {schema}.interface AS i "
169
+ "WHERE i.name = 'mobile' AND l.\"inMobileViewer\")"
170
170
  )
171
171
 
172
172
  op.execute(
173
- "INSERT INTO %(schema)s.interface_theme (theme_id, interface_id) "
173
+ f"INSERT INTO {schema}.interface_theme (theme_id, interface_id) "
174
174
  "(SELECT l.id AS theme_id, i.id AS interface_id "
175
- "FROM %(schema)s.theme AS l, %(schema)s.interface AS i "
176
- "WHERE i.name in ('main', 'edit', 'routing') AND l.\"inDesktopViewer\")" % {"schema": schema}
175
+ f"FROM {schema}.theme AS l, {schema}.interface AS i "
176
+ "WHERE i.name in ('main', 'edit', 'routing') AND l.\"inDesktopViewer\")"
177
177
  )
178
178
  op.execute(
179
- "INSERT INTO %(schema)s.interface_theme (theme_id, interface_id) "
179
+ f"INSERT INTO {schema}.interface_theme (theme_id, interface_id) "
180
180
  "(SELECT l.id AS theme_id, i.id AS interface_id "
181
- "FROM %(schema)s.theme AS l, %(schema)s.interface AS i "
182
- "WHERE i.name = 'mobile' AND l.\"inMobileViewer\")" % {"schema": schema}
181
+ f"FROM {schema}.theme AS l, {schema}.interface AS i "
182
+ "WHERE i.name = 'mobile' AND l.\"inMobileViewer\")"
183
183
  )
184
184
 
185
185
  op.drop_column("layer", "inMobileViewer", schema=schema)
@@ -271,32 +271,32 @@ def downgrade() -> None:
271
271
  op.alter_column("layergroup", "is_internal_wms", new_column_name="isInternalWMS", schema=schema)
272
272
  op.alter_column("layergroup", "is_base_layer", new_column_name="isBaseLayer", schema=schema)
273
273
 
274
- op.execute("UPDATE ONLY %(schema)s.theme AS t " 'SET "inDesktopViewer" = FALSE' % {"schema": schema})
275
- op.execute("UPDATE ONLY %(schema)s.layer AS t " 'SET "inDesktopViewer" = FALSE' % {"schema": schema})
274
+ op.execute(f"UPDATE ONLY {schema}.theme AS t " 'SET "inDesktopViewer" = FALSE')
275
+ op.execute(f"UPDATE ONLY {schema}.layer AS t " 'SET "inDesktopViewer" = FALSE')
276
276
 
277
277
  op.execute(
278
- "UPDATE ONLY %(schema)s.theme AS t "
278
+ f"UPDATE ONLY {schema}.theme AS t "
279
279
  'SET "inMobileViewer" = TRUE '
280
- "FROM %(schema)s.interface AS i, %(schema)s.interface_theme AS it "
281
- "WHERE i.name = 'mobile' AND i.id = it.interface_id AND it.theme_id = t.id" % {"schema": schema}
280
+ f"FROM {schema}.interface AS i, {schema}.interface_theme AS it "
281
+ "WHERE i.name = 'mobile' AND i.id = it.interface_id AND it.theme_id = t.id"
282
282
  )
283
283
  op.execute(
284
- "UPDATE ONLY %(schema)s.theme AS t "
284
+ f"UPDATE ONLY {schema}.theme AS t "
285
285
  'SET "inDesktopViewer" = TRUE '
286
- "FROM %(schema)s.interface AS i, %(schema)s.interface_theme AS it "
287
- "WHERE i.name = 'main' AND i.id = it.interface_id AND it.theme_id = t.id" % {"schema": schema}
286
+ f"FROM {schema}.interface AS i, {schema}.interface_theme AS it "
287
+ "WHERE i.name = 'main' AND i.id = it.interface_id AND it.theme_id = t.id"
288
288
  )
289
289
  op.execute(
290
- "UPDATE ONLY %(schema)s.layer AS l "
290
+ f"UPDATE ONLY {schema}.layer AS l "
291
291
  'SET "inMobileViewer" = TRUE '
292
- "FROM %(schema)s.interface AS i, %(schema)s.interface_layer AS il "
293
- "WHERE i.name = 'mobile' AND i.id = il.interface_id AND il.layer_id = l.id" % {"schema": schema}
292
+ f"FROM {schema}.interface AS i, {schema}.interface_layer AS il "
293
+ "WHERE i.name = 'mobile' AND i.id = il.interface_id AND il.layer_id = l.id"
294
294
  )
295
295
  op.execute(
296
- "UPDATE ONLY %(schema)s.layer AS l "
296
+ f"UPDATE ONLY {schema}.layer AS l "
297
297
  'SET "inDesktopViewer" = TRUE '
298
- "FROM %(schema)s.interface AS i, %(schema)s.interface_layer AS il "
299
- "WHERE i.name = 'main' AND i.id = il.interface_id AND il.layer_id = l.id" % {"schema": schema}
298
+ f"FROM {schema}.interface AS i, {schema}.interface_layer AS il "
299
+ "WHERE i.name = 'main' AND i.id = il.interface_id AND il.layer_id = l.id"
300
300
  )
301
301
 
302
302
  op.add_column("layer", Column("timeMode", Unicode(8)), schema=schema)
@@ -324,7 +324,7 @@ def downgrade() -> None:
324
324
  op.add_column("layer", Column("isChecked", Boolean, default=True), schema=schema)
325
325
 
326
326
  op.execute(
327
- "UPDATE %(schema)s.layer AS l SET ("
327
+ f"UPDATE {schema}.layer AS l SET ("
328
328
  'id, "isChecked", icon, "layerType", url, "imageType", style, dimensions, "matrixSet", '
329
329
  '"wmsUrl", "wmsLayers", "queryLayers", kml, "isSingleTile", legend, "legendImage", '
330
330
  '"legendRule", "isLegendExpanded", "minResolution", "maxResolution", disclaimer, '
@@ -335,7 +335,7 @@ def downgrade() -> None:
335
335
  "o.legend, o.legend_image, o.legend_rule, o.is_legend_expanded, o.min_resolution, "
336
336
  "o.max_resolution, o.disclaimer, o.identifier_attribute_field, o.exclude_properties, "
337
337
  "o.time_mode "
338
- ") FROM %(schema)s.layerv1 AS o WHERE o.id = l.id" % {"schema": schema}
338
+ f") FROM {schema}.layerv1 AS o WHERE o.id = l.id"
339
339
  )
340
340
 
341
341
  op.drop_table("layerv1", schema=schema)
@@ -0,0 +1,72 @@
1
+ # Copyright (c) 2023-2025, 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
+ # pylint: disable=invalid-name
29
+
30
+ """
31
+ Add table log.
32
+
33
+ Revision ID: 44c91d82d419
34
+ Revises: 04f05bfbb05e
35
+ Create Date: 2023-01-14 08:38:54.640205
36
+ """
37
+
38
+ import sqlalchemy as sa
39
+ from alembic import op
40
+ from c2c.template.config import config
41
+
42
+ # revision identifiers, used by Alembic.
43
+ revision = "44c91d82d419"
44
+ down_revision = "04f05bfbb05e"
45
+ branch_labels = None
46
+ depends_on = None
47
+
48
+
49
+ def upgrade() -> None:
50
+ """Upgrade."""
51
+ schema = config["schema"]
52
+
53
+ op.create_table(
54
+ "log",
55
+ sa.Column("id", sa.Integer, nullable=False),
56
+ sa.Column("date", sa.DateTime(timezone=True), nullable=False),
57
+ sa.Column("action", sa.Unicode, nullable=False),
58
+ sa.Column("element_type", sa.String(length=50), nullable=False),
59
+ sa.Column("element_id", sa.Integer, nullable=False),
60
+ sa.Column("element_name", sa.Unicode, nullable=False),
61
+ sa.Column("element_url_table", sa.Unicode, nullable=False),
62
+ sa.Column("username", sa.Unicode, nullable=False),
63
+ sa.PrimaryKeyConstraint("id"),
64
+ schema=schema,
65
+ )
66
+
67
+
68
+ def downgrade() -> None:
69
+ """Downgrade."""
70
+ schema = config["schema"]
71
+
72
+ op.drop_table("log", schema=schema)
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2015-2019, Camptocamp SA
1
+ # Copyright (c) 2015-2025, Camptocamp SA
2
2
  # All rights reserved.
3
3
 
4
4
  # Redistribution and use in source and binary forms, with or without
@@ -25,7 +25,7 @@
25
25
  # of the authors and should not be interpreted as representing official policies,
26
26
  # either expressed or implied, of the FreeBSD Project.
27
27
 
28
- # pylint: disable=no-member
28
+ # pylint: disable=no-member,invalid-name
29
29
 
30
30
  """
31
31
  add column time_widget.
@@ -35,6 +35,7 @@ Revises: 164ac0819a61
35
35
  Create Date: 2015-04-27 17:31:41.760977
36
36
  """
37
37
 
38
+ import sqlalchemy
38
39
  from alembic import op
39
40
  from c2c.template.config import config
40
41
  from sqlalchemy import Column
@@ -52,7 +53,7 @@ def upgrade() -> None:
52
53
  # Instructions
53
54
  for table in ["layerv1", "layer_internal_wms", "layer_external_wms"]:
54
55
  op.add_column(table, Column("time_widget", Unicode(10), default="slider"), schema=schema)
55
- op.execute(f"UPDATE {schema!s}.{table!s} SET time_widget = 'slider'")
56
+ op.execute(sqlalchemy.text(f"UPDATE {schema!s}.{table!s} SET time_widget = 'slider'"))
56
57
 
57
58
 
58
59
  def downgrade() -> None:
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2020-2021, Camptocamp SA
1
+ # Copyright (c) 2020-2025, Camptocamp SA
2
2
  # All rights reserved.
3
3
 
4
4
  # Redistribution and use in source and binary forms, with or without
@@ -25,6 +25,8 @@
25
25
  # of the authors and should not be interpreted as representing official policies,
26
26
  # either expressed or implied, of the FreeBSD Project.
27
27
 
28
+ # pylint: disable=invalid-name
29
+
28
30
  """
29
31
  Add sql fields to vector tiles.
30
32
 
@@ -48,11 +50,11 @@ def upgrade() -> None:
48
50
  """Upgrade."""
49
51
  schema = config["schema"]
50
52
  table = "layer_vectortiles"
51
- op.add_column(table, Column("sql", Unicode, nullable=True), schema)
53
+ op.add_column(table, Column("sql", Unicode, nullable=True), schema=schema)
52
54
 
53
55
 
54
56
  def downgrade() -> None:
55
57
  """Downgrade."""
56
58
  schema = config["schema"]
57
59
  table = "layer_vectortiles"
58
- op.drop_column(table, "sql", schema)
60
+ op.drop_column(table, "sql", schema=schema)
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2015-2019, Camptocamp SA
1
+ # Copyright (c) 2015-2025, Camptocamp SA
2
2
  # All rights reserved.
3
3
 
4
4
  # Redistribution and use in source and binary forms, with or without
@@ -25,7 +25,7 @@
25
25
  # of the authors and should not be interpreted as representing official policies,
26
26
  # either expressed or implied, of the FreeBSD Project.
27
27
 
28
- # pylint: disable=no-member
28
+ # pylint: disable=no-member,invalid-name
29
29
 
30
30
  """
31
31
  Add theme to full-text search.
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2014-2019, Camptocamp SA
1
+ # Copyright (c) 2014-2025, Camptocamp SA
2
2
  # All rights reserved.
3
3
 
4
4
  # Redistribution and use in source and binary forms, with or without
@@ -25,7 +25,7 @@
25
25
  # of the authors and should not be interpreted as representing official policies,
26
26
  # either expressed or implied, of the FreeBSD Project.
27
27
 
28
- # pylint: disable=no-member
28
+ # pylint: disable=no-member,invalid-name
29
29
 
30
30
  """
31
31
  Add ordering in relation.
@@ -53,13 +53,13 @@ def upgrade() -> None:
53
53
  op.add_column("layergroup_treeitem", Column("id", Integer, primary_key=True), schema=schema)
54
54
  op.add_column("layergroup_treeitem", Column("ordering", Integer), schema=schema)
55
55
  op.execute(
56
- 'UPDATE ONLY %(schema)s.layergroup_treeitem AS lt SET ordering = ti."order" '
57
- "FROM %(schema)s.treeitem AS ti WHERE ti.id = lt.treeitem_id " % {"schema": schema}
56
+ f'UPDATE ONLY {schema}.layergroup_treeitem AS lt SET ordering = ti."order" '
57
+ f"FROM {schema}.treeitem AS ti WHERE ti.id = lt.treeitem_id "
58
58
  )
59
59
  op.add_column("theme", Column("ordering", Integer), schema=schema)
60
60
  op.execute(
61
- 'UPDATE ONLY %(schema)s.theme AS t SET ordering = ti."order" '
62
- "FROM %(schema)s.treeitem AS ti WHERE ti.id = t.id " % {"schema": schema}
61
+ f'UPDATE ONLY {schema}.theme AS t SET ordering = ti."order" '
62
+ f"FROM {schema}.treeitem AS ti WHERE ti.id = t.id "
63
63
  )
64
64
  op.drop_column("treeitem", "order", schema=schema)
65
65
 
@@ -69,12 +69,12 @@ def downgrade() -> None:
69
69
  schema = config["schema"]
70
70
  op.add_column("treeitem", Column("order", Integer), schema=schema)
71
71
  op.execute(
72
- 'UPDATE ONLY %(schema)s.treeitem AS ti SET "order" = lt.ordering '
73
- "FROM %(schema)s.layergroup_treeitem AS lt WHERE ti.id = lt.treeitem_id " % {"schema": schema}
72
+ f'UPDATE ONLY {schema}.treeitem AS ti SET "order" = lt.ordering '
73
+ f"FROM {schema}.layergroup_treeitem AS lt WHERE ti.id = lt.treeitem_id "
74
74
  )
75
75
  op.execute(
76
- 'UPDATE ONLY %(schema)s.treeitem AS ti SET "order" = t.ordering '
77
- "FROM %(schema)s.theme AS t WHERE ti.id = t.id " % {"schema": schema}
76
+ f'UPDATE ONLY {schema}.treeitem AS ti SET "order" = t.ordering '
77
+ f"FROM {schema}.theme AS t WHERE ti.id = t.id "
78
78
  )
79
79
  op.drop_column("theme", "ordering", schema=schema)
80
80
  op.drop_column("layergroup_treeitem", "ordering", schema=schema)
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2019-2021, Camptocamp SA
1
+ # Copyright (c) 2019-2025, Camptocamp SA
2
2
  # All rights reserved.
3
3
 
4
4
  # Redistribution and use in source and binary forms, with or without
@@ -25,7 +25,7 @@
25
25
  # of the authors and should not be interpreted as representing official policies,
26
26
  # either expressed or implied, of the FreeBSD Project.
27
27
 
28
- # pylint: disable=no-member
28
+ # pylint: disable=no-member,invalid-name
29
29
 
30
30
  """
31
31
  Fix removing layerv1.
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2016-2019, Camptocamp SA
1
+ # Copyright (c) 2016-2025, Camptocamp SA
2
2
  # All rights reserved.
3
3
 
4
4
  # Redistribution and use in source and binary forms, with or without
@@ -25,7 +25,7 @@
25
25
  # of the authors and should not be interpreted as representing official policies,
26
26
  # either expressed or implied, of the FreeBSD Project.
27
27
 
28
- # pylint: disable=no-member
28
+ # pylint: disable=no-member,invalid-name
29
29
 
30
30
  """
31
31
  separate local internal.
@@ -50,13 +50,11 @@ def upgrade() -> None:
50
50
  schema = config["schema"]
51
51
 
52
52
  op.execute(
53
- """
53
+ f"""
54
54
  UPDATE "{schema}".ogc_server
55
55
  SET url = 'config://internal/mapserv'
56
56
  WHERE url = 'config://local/mapserv'
57
- """.format(
58
- schema=schema
59
- )
57
+ """
60
58
  )
61
59
 
62
60
 
@@ -65,11 +63,9 @@ def downgrade() -> None:
65
63
  schema = config["schema"]
66
64
 
67
65
  op.execute(
68
- """
66
+ f"""
69
67
  UPDATE "{schema}".ogc_server
70
68
  SET url = 'config://local/mapserv'
71
69
  WHERE url = 'config://internal/mapserv'
72
- """.format(
73
- schema=schema
74
- )
70
+ """
75
71
  )
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2019-2021, Camptocamp SA
1
+ # Copyright (c) 2019-2025, Camptocamp SA
2
2
  # All rights reserved.
3
3
 
4
4
  # Redistribution and use in source and binary forms, with or without
@@ -25,7 +25,7 @@
25
25
  # of the authors and should not be interpreted as representing official policies,
26
26
  # either expressed or implied, of the FreeBSD Project.
27
27
 
28
- # pylint: disable=no-member
28
+ # pylint: disable=no-member,invalid-name
29
29
 
30
30
  """
31
31
  Add vector tiles layers table.
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2016-2019, Camptocamp SA
1
+ # Copyright (c) 2016-2025, Camptocamp SA
2
2
  # All rights reserved.
3
3
 
4
4
  # Redistribution and use in source and binary forms, with or without
@@ -25,7 +25,7 @@
25
25
  # of the authors and should not be interpreted as representing official policies,
26
26
  # either expressed or implied, of the FreeBSD Project.
27
27
 
28
- # pylint: disable=no-member
28
+ # pylint: disable=no-member,invalid-name
29
29
 
30
30
  """
31
31
  Rename ServerOGC to OGCServer.
@@ -50,7 +50,7 @@ def upgrade() -> None:
50
50
  schema = config["schema"]
51
51
 
52
52
  op.rename_table("server_ogc", "ogc_server", schema=schema)
53
- with op.batch_alter_table("layer_wms", schema=schema) as table_op: # type: ignore
53
+ with op.batch_alter_table("layer_wms", schema=schema) as table_op:
54
54
  table_op.alter_column("server_ogc_id", new_column_name="ogc_server_id")
55
55
 
56
56
 
@@ -59,5 +59,5 @@ def downgrade() -> None:
59
59
  schema = config["schema"]
60
60
 
61
61
  op.rename_table("ogc_server", "server_ogc", schema=schema)
62
- with op.batch_alter_table("layer_wms", schema=schema) as table_op: # type: ignore
62
+ with op.batch_alter_table("layer_wms", schema=schema) as table_op:
63
63
  table_op.alter_column("ogc_server_id", new_column_name="server_ogc_id")
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2017-2021, Camptocamp SA
1
+ # Copyright (c) 2017-2025, Camptocamp SA
2
2
  # All rights reserved.
3
3
 
4
4
  # Redistribution and use in source and binary forms, with or without
@@ -25,7 +25,7 @@
25
25
  # of the authors and should not be interpreted as representing official policies,
26
26
  # either expressed or implied, of the FreeBSD Project.
27
27
 
28
- # pylint: disable=no-member
28
+ # pylint: disable=no-member,invalid-name
29
29
 
30
30
  """
31
31
  Convert the metadata to the right case.
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2018-2019, Camptocamp SA
1
+ # Copyright (c) 2018-2025, Camptocamp SA
2
2
  # All rights reserved.
3
3
 
4
4
  # Redistribution and use in source and binary forms, with or without
@@ -25,7 +25,7 @@
25
25
  # of the authors and should not be interpreted as representing official policies,
26
26
  # either expressed or implied, of the FreeBSD Project.
27
27
 
28
- # pylint: disable=no-member
28
+ # pylint: disable=no-member,invalid-name
29
29
 
30
30
  """
31
31
  trigger_on_role_updates_user_in_static.
@@ -51,20 +51,18 @@ def upgrade() -> None:
51
51
  staticschema = config["schema_static"]
52
52
 
53
53
  op.execute(
54
- """
55
- CREATE OR REPLACE FUNCTION {schema}.on_role_name_change()
56
- RETURNS trigger AS
57
- $$
58
- BEGIN
59
- IF NEW.name <> OLD.name THEN
60
- UPDATE {staticschema}."user" SET role_name = NEW.name WHERE role_name = OLD.name;
61
- END IF;
62
- RETURN NEW;
63
- END;
64
- $$
65
- LANGUAGE plpgsql""".format(
66
- schema=schema, staticschema=staticschema
67
- )
54
+ f"""
55
+ CREATE OR REPLACE FUNCTION {schema}.on_role_name_change()
56
+ RETURNS trigger AS
57
+ $$
58
+ BEGIN
59
+ IF NEW.name <> OLD.name THEN
60
+ UPDATE {staticschema}."user" SET role_name = NEW.name WHERE role_name = OLD.name;
61
+ END IF;
62
+ RETURN NEW;
63
+ END;
64
+ $$
65
+ LANGUAGE plpgsql"""
68
66
  )
69
67
 
70
68