udata 10.3.2.dev34895__py2.py3-none-any.whl → 10.3.2.dev34939__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.

Potentially problematic release.


This version of udata might be problematic. Click here for more details.

@@ -21,7 +21,7 @@ class Topic(db.Document, Owned, db.Datetimed):
21
21
  datasets = db.ListField(db.LazyReferenceField("Dataset", reverse_delete_rule=db.PULL))
22
22
  reuses = db.ListField(db.LazyReferenceField("Reuse", reverse_delete_rule=db.PULL))
23
23
 
24
- featured = db.BooleanField()
24
+ featured = db.BooleanField(default=False)
25
25
  private = db.BooleanField()
26
26
  extras = db.ExtrasField()
27
27
 
@@ -1,4 +1,5 @@
1
1
  from bson.objectid import ObjectId
2
+ from flask_restx.inputs import boolean
2
3
 
3
4
  from udata.api import api
4
5
  from udata.api.parsers import ModelApiParser
@@ -20,6 +21,7 @@ class TopicApiParser(ModelApiParser):
20
21
  self.parser.add_argument("granularity", type=str, location="args")
21
22
  self.parser.add_argument("organization", type=str, location="args")
22
23
  self.parser.add_argument("owner", type=str, location="args")
24
+ self.parser.add_argument("featured", type=boolean, location="args")
23
25
 
24
26
  @staticmethod
25
27
  def parse_filters(topics, args):
@@ -38,6 +40,8 @@ class TopicApiParser(ModelApiParser):
38
40
  topics = topics.filter(spatial__zones=args["geozone"])
39
41
  if args.get("granularity"):
40
42
  topics = topics.filter(spatial__granularity=args["granularity"])
43
+ if args.get("featured") is not None:
44
+ topics = topics.filter(featured=args["featured"])
41
45
  if args.get("organization"):
42
46
  if not ObjectId.is_valid(args["organization"]):
43
47
  api.abort(400, "Organization arg must be an identifier")
@@ -0,0 +1,15 @@
1
+ """
2
+ This migration updates Topic.featured to False when it is None.
3
+ """
4
+
5
+ import logging
6
+
7
+ from udata.models import Topic
8
+
9
+ log = logging.getLogger(__name__)
10
+
11
+
12
+ def migrate(db):
13
+ log.info("Processing topics...")
14
+ count = Topic.objects(featured__exists=False).update(featured=False)
15
+ log.info(f"\tConverted {count} topics from `featured=None` to `featured=False`")
udata/routing.py CHANGED
@@ -12,6 +12,7 @@ from udata.core.dataservices.models import Dataservice
12
12
  from udata.core.spatial.models import GeoZone
13
13
  from udata.i18n import ISO_639_1_CODES
14
14
  from udata.mongo import db
15
+ from udata.uris import endpoint_for
15
16
 
16
17
 
17
18
  class LazyRedirect(object):
@@ -247,3 +248,5 @@ def init_app(app):
247
248
  app.url_map.converters["territory"] = TerritoryConverter
248
249
  app.url_map.converters["contact_point"] = ContactPointConverter
249
250
  app.url_map.converters["report"] = ReportConverter
251
+
252
+ app.jinja_env.globals["endpoint_for"] = endpoint_for
@@ -4,17 +4,19 @@
4
4
  {% block body %}
5
5
  <p style="margin: 0;padding: 0;">
6
6
  {{ _(
7
- 'Your account (%(user_email)s) has been inactive for %(inactivity_years)d years or more.',
7
+ 'We have noticed that your account associated to (%(user_email)s) has been inactive for %(inactivity_years)d years or more'
8
+ ' on %(site)s, the open platform for public data.',
8
9
  user_email=user.email,
9
- inactivity_years=config.YEARS_OF_INACTIVITY_BEFORE_DELETION
10
+ inactivity_years=config.YEARS_OF_INACTIVITY_BEFORE_DELETION,
11
+ site=config.SITE_TITLE
10
12
  )
11
13
  }}
12
14
  </p>
13
15
  <br/>
14
16
  <p style="margin: 0;padding: 0;"><b>
15
17
  {{ _(
16
- 'If you want to keep your account, please log in with your account on %(site)s.',
17
- site=config.SITE_TITLE
18
+ 'If you want to keep your account, please log in with your account on %(home)s.',
19
+ home=endpoint_for("site.home_redirect", "api.site", _external=True)
18
20
  )
19
21
  }}
20
22
  </b></p>
@@ -26,4 +28,13 @@
26
28
  )
27
29
  }}
28
30
  </p>
31
+ <br/>
32
+ <p style="margin: 0;padding: 0;">
33
+ {{ _(
34
+ 'This account is not tied to your other administration accounts and '
35
+ 'you can always re-create an account on the %(site)s platform if necessary.',
36
+ site=config.SITE_TITLE
37
+ )
38
+ }}
39
+ </p>
29
40
  {% endblock %}
@@ -2,15 +2,17 @@
2
2
 
3
3
  {% block body %}
4
4
  {{ _(
5
- 'Your account (%(user_email)s) has been inactive for %(inactivity_years)d years or more.',
5
+ 'We have noticed that your account associated to (%(user_email)s) has been inactive for %(inactivity_years)d years or more'
6
+ ' on %(site)s, the open platform for public data.',
6
7
  user_email=user.email,
7
- inactivity_years=config.YEARS_OF_INACTIVITY_BEFORE_DELETION
8
+ inactivity_years=config.YEARS_OF_INACTIVITY_BEFORE_DELETION,
9
+ site=config.SITE_TITLE
8
10
  )
9
11
  }}
10
12
 
11
13
  {{ _(
12
- 'If you want to keep your account, please log in with your account on %(site)s.',
13
- site=config.SITE_TITLE
14
+ 'If you want to keep your account, please log in with your account on %(home)s.',
15
+ home=endpoint_for("site.home_redirect", "api.site", _external=True)
14
16
  )
15
17
  }}
16
18
 
@@ -19,4 +21,11 @@
19
21
  notify_delay=config.DAYS_BEFORE_ACCOUNT_INACTIVITY_NOTIFY_DELAY
20
22
  )
21
23
  }}
24
+ {{
25
+ _(
26
+ 'This account is not tied to your other administration accounts and '
27
+ 'you can always re-create an account on the %(site)s platform if necessary',
28
+ site=config.SITE_TITLE
29
+ )
30
+ }}
22
31
  {% endblock %}
@@ -28,12 +28,13 @@ class TopicsAPITest(APITestCase):
28
28
  private_topic = TopicFactory(private=True)
29
29
  geozone_topic = TopicFactory(spatial=SpatialCoverageFactory(zones=[paca.id]))
30
30
  granularity_topic = TopicFactory(spatial=SpatialCoverageFactory(granularity="country"))
31
+ featured_topic = TopicFactory(featured=True)
31
32
  owner_topic = TopicFactory(owner=owner)
32
33
  org_topic = TopicFactory(organization=org)
33
34
 
34
35
  response = self.get(url_for("api.topics"))
35
36
  self.assert200(response)
36
- self.assertEqual(len(response.json["data"]), 7)
37
+ self.assertEqual(len(response.json["data"]), 8)
37
38
 
38
39
  response = self.get(url_for("api.topics", q="topic-for"))
39
40
  self.assert200(response)
@@ -69,7 +70,7 @@ class TopicsAPITest(APITestCase):
69
70
 
70
71
  response = self.get(url_for("api.topics", include_private="true"))
71
72
  self.assert200(response)
72
- self.assertEqual(len(response.json["data"]), 7)
73
+ self.assertEqual(len(response.json["data"]), 8)
73
74
  # we're not logged in, so the private topic does not appear
74
75
  self.assertNotIn(str(private_topic.id), [t["id"] for t in response.json["data"]])
75
76
 
@@ -83,6 +84,16 @@ class TopicsAPITest(APITestCase):
83
84
  self.assertEqual(len(response.json["data"]), 1)
84
85
  self.assertIn(str(granularity_topic.id), [t["id"] for t in response.json["data"]])
85
86
 
87
+ response = self.get(url_for("api.topics", featured="true"))
88
+ self.assert200(response)
89
+ self.assertEqual(len(response.json["data"]), 1)
90
+ self.assertIn(str(featured_topic.id), [t["id"] for t in response.json["data"]])
91
+
92
+ response = self.get(url_for("api.topics", featured="false"))
93
+ self.assert200(response)
94
+ self.assertEqual(len(response.json["data"]), 7)
95
+ self.assertNotIn(str(featured_topic.id), [t["id"] for t in response.json["data"]])
96
+
86
97
  response = self.get(url_for("api.topics", owner=owner.id))
87
98
  self.assert200(response)
88
99
  self.assertEqual(len(response.json["data"]), 1)
@@ -25,13 +25,14 @@ class TopicsAPITest(APITestCase):
25
25
  private_topic = TopicFactory(private=True)
26
26
  geozone_topic = TopicFactory(spatial=SpatialCoverageFactory(zones=[paca.id]))
27
27
  granularity_topic = TopicFactory(spatial=SpatialCoverageFactory(granularity="country"))
28
+ featured_topic = TopicFactory(featured=True)
28
29
  owner_topic = TopicFactory(owner=owner)
29
30
  org_topic = TopicFactory(organization=org)
30
31
 
31
32
  response = self.get(url_for("apiv2.topics_list"))
32
33
  assert response.status_code == 200
33
34
  data = response.json["data"]
34
- assert len(data) == 7
35
+ assert len(data) == 8
35
36
 
36
37
  hateoas_fields = ["rel", "href", "type", "total"]
37
38
  assert all(k in data[0]["datasets"] for k in hateoas_fields)
@@ -57,7 +58,7 @@ class TopicsAPITest(APITestCase):
57
58
 
58
59
  response = self.get(url_for("api.topics", include_private="true"))
59
60
  assert response.status_code == 200
60
- assert len(response.json["data"]) == 7
61
+ assert len(response.json["data"]) == 8
61
62
  # we're not logged in, so the private topic does not appear
62
63
  assert str(private_topic.id) not in [t["id"] for t in response.json["data"]]
63
64
 
@@ -71,6 +72,16 @@ class TopicsAPITest(APITestCase):
71
72
  assert len(response.json["data"]) == 1
72
73
  assert str(granularity_topic.id) in [t["id"] for t in response.json["data"]]
73
74
 
75
+ response = self.get(url_for("api.topics", featured="true"))
76
+ assert response.status_code == 200
77
+ assert len(response.json["data"]) == 1
78
+ assert str(featured_topic.id) in [t["id"] for t in response.json["data"]]
79
+
80
+ response = self.get(url_for("api.topics", featured="false"))
81
+ assert response.status_code == 200
82
+ assert len(response.json["data"]) == 7
83
+ assert str(featured_topic.id) not in [t["id"] for t in response.json["data"]]
84
+
74
85
  response = self.get(url_for("api.topics", owner=owner.id))
75
86
  assert response.status_code == 200
76
87
  assert len(response.json["data"]) == 1
@@ -6,10 +6,10 @@
6
6
  #, fuzzy
7
7
  msgid ""
8
8
  msgstr ""
9
- "Project-Id-Version: udata 10.1.5.dev0\n"
9
+ "Project-Id-Version: udata 10.3.2.dev0\n"
10
10
  "Report-Msgid-Bugs-To: i18n@opendata.team\n"
11
- "POT-Creation-Date: 2025-04-01 17:30+0200\n"
12
- "PO-Revision-Date: 2025-04-01 17:30+0200\n"
11
+ "POT-Creation-Date: 2025-04-30 14:18+0200\n"
12
+ "PO-Revision-Date: 2025-04-30 14:18+0200\n"
13
13
  "Last-Translator: Open Data Team <i18n@opendata.team>\n"
14
14
  "Language: en\n"
15
15
  "Language-Team: Open Data Team <i18n@opendata.team>\n"
@@ -52,7 +52,7 @@ msgstr ""
52
52
  msgid "Invalid URL \"{url}\": {reason}"
53
53
  msgstr ""
54
54
 
55
- #: udata/tests/api/test_datasets_api.py:935 udata/tests/test_model.py:403
55
+ #: udata/tests/api/test_datasets_api.py:1029 udata/tests/test_model.py:403
56
56
  #: udata/uris.py:55
57
57
  #, python-brace-format
58
58
  msgid "Invalid URL \"{url}\""
@@ -215,7 +215,7 @@ msgid "Your udata instance is ready!"
215
215
  msgstr ""
216
216
 
217
217
  #: udata/core/owned.py:64 udata/forms/fields.py:752
218
- #: udata/tests/api/test_dataservices_api.py:476
218
+ #: udata/tests/api/test_dataservices_api.py:474
219
219
  msgid "You can only set yourself as owner"
220
220
  msgstr ""
221
221
 
@@ -224,7 +224,7 @@ msgid "Unknown organization"
224
224
  msgstr ""
225
225
 
226
226
  #: udata/core/owned.py:77 udata/forms/fields.py:784
227
- #: udata/tests/api/test_dataservices_api.py:490
227
+ #: udata/tests/api/test_dataservices_api.py:487
228
228
  msgid "Permission denied for this organization"
229
229
  msgstr ""
230
230
 
@@ -256,7 +256,8 @@ msgid "The organization web contact form"
256
256
  msgstr ""
257
257
 
258
258
  #: udata/core/contact_point/forms.py:20 udata/core/dataset/forms.py:116
259
- #: udata/core/dataset/forms.py:179 udata/core/topic/forms.py:14
259
+ #: udata/core/dataset/forms.py:179 udata/core/discussions/forms.py:13
260
+ #: udata/core/discussions/forms.py:29 udata/core/topic/forms.py:14
260
261
  #: udata/harvest/forms.py:87
261
262
  msgid "Publish as"
262
263
  msgstr ""
@@ -285,12 +286,12 @@ msgstr ""
285
286
  msgid "dataservice"
286
287
  msgstr ""
287
288
 
288
- #: udata/core/dataservices/models.py:194 udata/core/dataset/models.py:573
289
+ #: udata/core/dataservices/models.py:194 udata/core/dataset/models.py:575
289
290
  #: udata/mongo/datetime_fields.py:60
290
291
  msgid "Creation date"
291
292
  msgstr ""
292
293
 
293
- #: udata/core/dataservices/models.py:200 udata/core/dataset/models.py:576
294
+ #: udata/core/dataservices/models.py:200 udata/core/dataset/models.py:578
294
295
  #: udata/mongo/datetime_fields.py:66
295
296
  msgid "Last modification date"
296
297
  msgstr ""
@@ -456,8 +457,8 @@ msgid "Version of the schema"
456
457
  msgstr ""
457
458
 
458
459
  #: udata/core/dataset/forms.py:65 udata/core/dataset/forms.py:146
459
- #: udata/core/discussions/forms.py:13 udata/core/site/forms.py:12
460
- #: udata/templates/mail/discussion_closed.html:26
460
+ #: udata/core/discussions/forms.py:14 udata/core/discussions/forms.py:25
461
+ #: udata/core/site/forms.py:12 udata/templates/mail/discussion_closed.html:26
461
462
  #: udata/templates/mail/new_discussion.html:25
462
463
  #: udata/templates/mail/new_discussion_comment.html:26
463
464
  msgid "Title"
@@ -513,7 +514,7 @@ msgstr ""
513
514
  msgid "Related dataset"
514
515
  msgstr ""
515
516
 
516
- #: udata/core/dataset/forms.py:138 udata/tests/api/test_datasets_api.py:847
517
+ #: udata/core/dataset/forms.py:138 udata/tests/api/test_datasets_api.py:941
517
518
  msgid "Wrong contact point id or contact point ownership mismatch"
518
519
  msgstr ""
519
520
 
@@ -587,13 +588,13 @@ msgstr ""
587
588
  msgid "A schema must contains a name or an URL when a version is provided."
588
589
  msgstr ""
589
590
 
590
- #: udata/core/dataset/models.py:169 udata/tests/api/test_datasets_api.py:943
591
- #: udata/tests/api/test_datasets_api.py:954
591
+ #: udata/core/dataset/models.py:169 udata/tests/api/test_datasets_api.py:1037
592
+ #: udata/tests/api/test_datasets_api.py:1048
592
593
  #, python-brace-format
593
594
  msgid "Schema name \"{schema}\" is not an allowed value. Allowed values: {values}"
594
595
  msgstr ""
595
596
 
596
- #: udata/core/dataset/models.py:188 udata/tests/api/test_datasets_api.py:966
597
+ #: udata/core/dataset/models.py:188 udata/tests/api/test_datasets_api.py:1060
597
598
  #, python-brace-format
598
599
  msgid ""
599
600
  "Version \"{version}\" is not an allowed value for the schema \"{name}\". "
@@ -601,8 +602,8 @@ msgid ""
601
602
  msgstr ""
602
603
 
603
604
  #: udata/core/dataset/models.py:467 udata/core/dataset/rdf.py:603
604
- #: udata/tests/dataset/test_dataset_rdf.py:669
605
- #: udata/tests/dataset/test_dataset_rdf.py:682
605
+ #: udata/tests/dataset/test_dataset_rdf.py:687
606
+ #: udata/tests/dataset/test_dataset_rdf.py:700
606
607
  msgid "Nameless resource"
607
608
  msgstr ""
608
609
 
@@ -610,11 +611,11 @@ msgstr ""
610
611
  msgid "Future date of update"
611
612
  msgstr ""
612
613
 
613
- #: udata/core/dataset/models.py:622
614
+ #: udata/core/dataset/models.py:624
614
615
  msgid "dataset"
615
616
  msgstr ""
616
617
 
617
- #: udata/core/dataset/rdf.py:601 udata/tests/dataset/test_dataset_rdf.py:656
618
+ #: udata/core/dataset/rdf.py:601 udata/tests/dataset/test_dataset_rdf.py:674
618
619
  #, python-brace-format
619
620
  msgid "{format} resource"
620
621
  msgstr ""
@@ -623,13 +624,13 @@ msgstr ""
623
624
  msgid "You need to update some frequency-based datasets"
624
625
  msgstr ""
625
626
 
626
- #: udata/core/discussions/forms.py:15 udata/core/discussions/forms.py:23
627
- #: udata/core/organization/forms.py:83 udata/core/organization/forms.py:87
628
- #: udata/harvest/forms.py:97
627
+ #: udata/core/discussions/forms.py:16 udata/core/discussions/forms.py:31
628
+ #: udata/core/discussions/forms.py:37 udata/core/organization/forms.py:83
629
+ #: udata/core/organization/forms.py:87 udata/harvest/forms.py:97
629
630
  msgid "Comment"
630
631
  msgstr ""
631
632
 
632
- #: udata/core/discussions/forms.py:17
633
+ #: udata/core/discussions/forms.py:18
633
634
  msgid "Subject"
634
635
  msgstr ""
635
636
 
@@ -965,11 +966,11 @@ msgstr ""
965
966
  msgid "Open data tools"
966
967
  msgstr ""
967
968
 
968
- #: udata/core/reuse/models.py:36
969
+ #: udata/core/reuse/models.py:37
969
970
  msgid "This URL is already registered"
970
971
  msgstr ""
971
972
 
972
- #: udata/core/reuse/models.py:176
973
+ #: udata/core/reuse/models.py:178
973
974
  msgid "reuse"
974
975
  msgstr ""
975
976
 
@@ -1270,11 +1271,11 @@ msgstr ""
1270
1271
  msgid "Archived"
1271
1272
  msgstr ""
1272
1273
 
1273
- #: udata/harvest/backends/dcat.py:296
1274
+ #: udata/harvest/backends/dcat.py:338
1274
1275
  msgid "Remote URL prefix"
1275
1276
  msgstr ""
1276
1277
 
1277
- #: udata/harvest/backends/dcat.py:299
1278
+ #: udata/harvest/backends/dcat.py:341
1278
1279
  msgid "A prefix used to build the remote URL of the harvested items."
1279
1280
  msgstr ""
1280
1281
 
@@ -1369,20 +1370,28 @@ msgstr ""
1369
1370
  #: udata/templates/mail/account_inactivity.html:6
1370
1371
  #, python-format
1371
1372
  msgid ""
1372
- "Your account (%(user_email)s) has been inactive for %(inactivity_years)d "
1373
- "years or more."
1373
+ "We have noticed that your account associated to (%(user_email)s) has been "
1374
+ "inactive for %(inactivity_years)d years or more on %(site)s, the open "
1375
+ "platform for public data."
1374
1376
  msgstr ""
1375
1377
 
1376
- #: udata/templates/mail/account_inactivity.html:15
1378
+ #: udata/templates/mail/account_inactivity.html:17
1377
1379
  #, python-format
1378
- msgid "If you want to keep your account, please log in with your account on %(site)s."
1380
+ msgid "If you want to keep your account, please log in with your account on %(home)s."
1379
1381
  msgstr ""
1380
1382
 
1381
- #: udata/templates/mail/account_inactivity.html:23
1383
+ #: udata/templates/mail/account_inactivity.html:25
1382
1384
  #, python-format
1383
1385
  msgid "Without logging in, your account will be deleted within %(notify_delay)d days."
1384
1386
  msgstr ""
1385
1387
 
1388
+ #: udata/templates/mail/account_inactivity.html:33
1389
+ #, python-format
1390
+ msgid ""
1391
+ "This account is not tied to your other administration accounts and you can "
1392
+ "always re-create an account on the %(site)s platform if necessary."
1393
+ msgstr ""
1394
+
1386
1395
  #: udata/templates/mail/badge_added_association.html:6
1387
1396
  #, python-format
1388
1397
  msgid "%(user)s has identified your organization \"%(name)s\" as an association"
@@ -1444,13 +1453,13 @@ msgstr ""
1444
1453
  msgid "%(user)s closed an discussion on your %(type)s %(subject)s"
1445
1454
  msgstr ""
1446
1455
 
1447
- #: udata/templates/mail/discussion_closed.html:31
1456
+ #: udata/templates/mail/discussion_closed.html:32
1448
1457
  #: udata/templates/mail/new_discussion.html:30
1449
1458
  #: udata/templates/mail/new_discussion_comment.html:31
1450
1459
  msgid "Message"
1451
1460
  msgstr ""
1452
1461
 
1453
- #: udata/templates/mail/discussion_closed.html:40
1462
+ #: udata/templates/mail/discussion_closed.html:41
1454
1463
  #: udata/templates/mail/new_discussion.html:38
1455
1464
  #: udata/templates/mail/new_discussion_comment.html:39
1456
1465
  msgid "See the discussion"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: udata
3
- Version: 10.3.2.dev34895
3
+ Version: 10.3.2.dev34939
4
4
  Summary: Open data portal
5
5
  Home-page: https://github.com/opendatateam/udata
6
6
  Author: Opendata Team
@@ -141,7 +141,8 @@ It is collectively taken care of by members of the
141
141
 
142
142
  ## Current (in progress)
143
143
 
144
- - Nothing yet
144
+ - feat(topics): add featured filter in API [#3301](https://github.com/opendatateam/udata/pull/3301)
145
+ - Improve wording on account inactivity emails [#3304](https://github.com/opendatateam/udata/pull/3304)
145
146
 
146
147
  ## 10.3.1 (2025-04-29)
147
148
 
@@ -11,7 +11,7 @@ udata/factories.py,sha256=MoklZnU8iwNL25dm3JsoXhoQs1PQWSVYL1WvcUBtJqM,492
11
11
  udata/i18n.py,sha256=64hqiocxRC5eRhCxYWeNAxMT5E7sFlv1Esie-MfaW3c,8989
12
12
  udata/mail.py,sha256=FMGHcDAjHvk86iDUwBmVXpx3vbAb2c-j5C3BRnh9IYQ,2670
13
13
  udata/rdf.py,sha256=JmMxwq4fFBrBZQhJ6O9_nEeYUXspPzoZGTyGUD4Nyxs,18348
14
- udata/routing.py,sha256=uPtBOA729unQ04MwLbZ6fZH_SWo2NzAefntz4koNyR8,7583
14
+ udata/routing.py,sha256=E6sE1F74QyOoz5vcgEi-rNEhCegwLfOtBz5I9fWk-pM,7677
15
15
  udata/sentry.py,sha256=ekcxqUSqxfM98TtvCsPaOoX5i2l6PEcYt7kb4l3od-Q,3223
16
16
  udata/settings.py,sha256=Bp0eeWRD1g4CAJyytHG7T8pTtdFYeb2GgoRxFLdI1W4,19124
17
17
  udata/sitemap.py,sha256=oRRWoPI7ZsFFnUAOqGT1YuXFFKHBe8EcRnUCNHD7xjM,979
@@ -231,8 +231,8 @@ udata/core/topic/api.py,sha256=xVBp3EFOAEWQlt2CQvII9gq21qeIK048pSkh1uTmdBo,5472
231
231
  udata/core/topic/apiv2.py,sha256=9-CdR-xcVp7yS7664PgRCsAthxg1VgpKgoAaVlEhF6k,10461
232
232
  udata/core/topic/factories.py,sha256=RpUpwLd2gYwwS0vc7FcbQ-4tC0FSsAg7O8bPgozYKgE,684
233
233
  udata/core/topic/forms.py,sha256=NGC_k6PRw8uswEHaXW1Q3ih_2sx2-dNUY--LD-me80Y,973
234
- udata/core/topic/models.py,sha256=WR1SmVuTKBIRFvb0s54vuG3ICoCxtTmsVKJi3GGeuoM,2039
235
- udata/core/topic/parsers.py,sha256=dk4Siju3G5hOkMa3O01y14V1bRtdA01uvEUGrseimF4,2189
234
+ udata/core/topic/models.py,sha256=X-jScC_mMNdZp0hQ_SD-NBHsIPS8aYqpq99x6l4dKz4,2052
235
+ udata/core/topic/parsers.py,sha256=ugkBd-w8TewInqowNF2w36UPwKYMYluK4U-grkAu-wg,2411
236
236
  udata/core/topic/permissions.py,sha256=RtFPPlxuU_Bv7ip6LDO4AoPrKFnIOEs9cCMXaSSmEdk,118
237
237
  udata/core/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
238
238
  udata/core/user/activities.py,sha256=x-mSiwx7TzM2ci6KMkMiNx0sFs8J3LTJNbigtE8cA0s,2807
@@ -363,6 +363,7 @@ udata/migrations/2024-11-19-keep-only-local_authority-if-also-public_service-org
363
363
  udata/migrations/2024-12-05-contact-point-is-now-a-list.py,sha256=il2qSFhOTq-YhqhFaq_5OwysUlKXaK_En-qGP6v9rf0,1065
364
364
  udata/migrations/2025-01-05-dataservices-fields-changes.py,sha256=HlqHg3sG3rk3sYVrOwAlXMNhTmTKd1YT82P-gXOqmZM,4647
365
365
  udata/migrations/2025-03-20-save-quality-for-datasets.py,sha256=FPTfGVByXSHr18V4RFlktC7t-H-5rgEcZQMTRpMrGqo,607
366
+ udata/migrations/2025-04-24-topic-featured-default-false.py,sha256=t4OyhehtPQiosKtAo9SWRWm3ObGUHvqD_roXQ34vIH4,369
366
367
  udata/migrations/__init__.py,sha256=RBCBDaTlLjuMs_Qzwji6Z6T4r7FCGXhESKoxQbT5qAA,11221
367
368
  udata/models/__init__.py,sha256=txbZwa-lRG3mq99eQ9E5YcFWiNUdjDVSyJJvlqUMFfs,1413
368
369
  udata/mongo/__init__.py,sha256=y4Rv-kq3o_kcEulcNpePLzocXPBNpx3Jd82G-VZPaMc,1421
@@ -530,8 +531,8 @@ udata/templates/macros/forms.html,sha256=LEhdB8WUHXJR3E1Gs41QEFzDauhvmhEWCnW4Jln
530
531
  udata/templates/macros/metadata.html,sha256=KAKOYUvf50GpM1hm1O-HoV-1bhjW7aLqJdflDlNyf0U,3575
531
532
  udata/templates/mail/account_deleted.html,sha256=7INK4GqaOyqe36pXiT4xU_cAZLuNxOeY3zoy4Yjz1R4,146
532
533
  udata/templates/mail/account_deleted.txt,sha256=4EmPnt4QWMWSUkfTaMUga4BCFjGlZGKTgh9JDUzKjDk,110
533
- udata/templates/mail/account_inactivity.html,sha256=L2R8LQY5ijPyZslUU_1L_WP3IQ7hFn0tXOMfyrXnQL8,824
534
- udata/templates/mail/account_inactivity.txt,sha256=tW49q0azOCG_zm_vQUTfjkqukXBLkkDqMOp_tlQWwfA,578
534
+ udata/templates/mail/account_inactivity.html,sha256=5jcH1w1AY8oSEsTCAHHhlpVAUIwVOiHif6Qf2oKVKsQ,1268
535
+ udata/templates/mail/account_inactivity.txt,sha256=5Jaqx0YrDhq2VgUmfRO5h21X9Jw_TQpsGP0Z2KxLdsA,946
535
536
  udata/templates/mail/badge_added_association.html,sha256=xaF9tY20MbcVY_97tLK1l0OQe33bYVMdjXFPBZ7uhnc,860
536
537
  udata/templates/mail/badge_added_association.txt,sha256=o9ZIP6OB8Sf4sHjUY615ezU5WU6SVJqNkivdSgWViw4,301
537
538
  udata/templates/mail/badge_added_certified.html,sha256=6THD3JB7Qq-mFrb4pHTzLw7o1GiWQdpsyEr3QRtcu0g,841
@@ -634,7 +635,7 @@ udata/tests/api/test_reports_api.py,sha256=fCSz9NwMXBs6cxdXBVVI6y564AtovmZYw3xkg
634
635
  udata/tests/api/test_reuses_api.py,sha256=d8mtUrDURIfnUK-sLogvAP-rOID2FDJ0UVTM0ravQ-Q,24642
635
636
  udata/tests/api/test_swagger.py,sha256=eE6La9qdTYTIUFevRVPJgtj17Jq_8uOlsDwzCNR0LL8,760
636
637
  udata/tests/api/test_tags_api.py,sha256=36zEBgthVEn6pctJ0kDgPmEaUr-iqRAHeZRcRG2LEXQ,2425
637
- udata/tests/api/test_topics_api.py,sha256=mpIjztDEQ2fx25E9dl4eIARGqtYuh1w8x68PhRr47Ss,11651
638
+ udata/tests/api/test_topics_api.py,sha256=beIPbDA8PHo4FZogeio-j1MO6Eatt9oFSlp-aHpgEtQ,12200
638
639
  udata/tests/api/test_transfer_api.py,sha256=-OLv-KjyLZL14J8UHl-ak_sYUj6wFiZWyoXC2SMXmEQ,7503
639
640
  udata/tests/api/test_user_api.py,sha256=hfDHOv5F81tehbc5u3dYH5rAyYgzgHGCWVcGR3kLIZw,16591
640
641
  udata/tests/apiv2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -642,7 +643,7 @@ udata/tests/apiv2/test_datasets.py,sha256=zjTtjY7lJKOOjiV698RqGvRMuuMxY2dMhEcnhO
642
643
  udata/tests/apiv2/test_me_api.py,sha256=RAgu5iKGB3Pp8cDN-427ovly-VOz5MTL4GpPZ1NcVXI,1418
643
644
  udata/tests/apiv2/test_organizations.py,sha256=os_43s-coSRqjgY-5fAjSiRlB3g2685u7d-Es0aOhks,6390
644
645
  udata/tests/apiv2/test_swagger.py,sha256=RKedaq-2UeyEuxlmUaAN7pmEe-lQYYmpDUVc8HF3CH4,785
645
- udata/tests/apiv2/test_topics.py,sha256=RZ3S--lTZ8hIBpc-0wDz0h4vBNHbHYp0HJDzE6jd7_E,11104
646
+ udata/tests/apiv2/test_topics.py,sha256=KwWAMta-C_MgwxBOwfUuPqxkO--SHvvth_c9VFGt2zA,11644
646
647
  udata/tests/cli/test_cli_base.py,sha256=0a3U_5ROp1lCTG8d6TpCjF4nbKVNerAeLO0VxU-NTUk,321
647
648
  udata/tests/cli/test_db_cli.py,sha256=_AZM_sZjePJw9ZaymuQoEAKXyX_EYz-S1PekxrMhMpU,1764
648
649
  udata/tests/contact_point/test_contact_point_models.py,sha256=b8vraZPPrs9LeQMWLnOCrpI02sXMEM_BcMJXKTeAuAw,923
@@ -709,7 +710,7 @@ udata/tests/workers/test_jobs_commands.py,sha256=tGJp9zRxKaGszNhKAVe-xY86v6NhLmF
709
710
  udata/tests/workers/test_tasks_routing.py,sha256=m7Zu9X7GW3oKkSDcHM-dC20Vba3Fruui44bMBVU1dcc,2228
710
711
  udata/tests/workers/test_workers_api.py,sha256=x8EkULR9G5TKl5WwjdVwfFEttbudpiWIYN2umETrCzY,8805
711
712
  udata/tests/workers/test_workers_helpers.py,sha256=_983ChRxas3gsjykaEpXWQUbk2qTMJgeFZpIAHTuhLk,647
712
- udata/translations/udata.pot,sha256=M0Y_ulNTJGyJOCkpzdyX8vR7i8LXiRF7efs6eYuL4Jc,38950
713
+ udata/translations/udata.pot,sha256=5uLNHNRsi9a3iyINEEs7cwnam4p0o71Dn6ZCG1p-SDs,39416
713
714
  udata/translations/ar/LC_MESSAGES/udata.mo,sha256=KhVPQwZ_dlH6yHrI0pnQas-zDSCMMhgzo7UQIo0crik,12512
714
715
  udata/translations/ar/LC_MESSAGES/udata.po,sha256=gkREvPjNOlVdvdgcfv6eGgzkaY92UKKNOiIaN_u-qtA,44269
715
716
  udata/translations/de/LC_MESSAGES/udata.mo,sha256=oRoV-0vqLUwZn3KHEr9nqg40rvfm0JjGrpspzTvVg0E,15936
@@ -724,9 +725,9 @@ udata/translations/pt/LC_MESSAGES/udata.mo,sha256=xmSQ7RTl9XV24Vq3A7f_NIRDrOJwbs
724
725
  udata/translations/pt/LC_MESSAGES/udata.po,sha256=PXrrhfIjZxheUotQan9VVh1fvNHSzeMAitaouIHaR7U,46793
725
726
  udata/translations/sr/LC_MESSAGES/udata.mo,sha256=1pAf_rXvbOoO_jjZmH77GbzvdT_YtPTJKFumMnMto2g,29169
726
727
  udata/translations/sr/LC_MESSAGES/udata.po,sha256=AalMHaFLZobKmuAnZ4X1rQtk46NdW2rktMFQHD5DTcM,53768
727
- udata-10.3.2.dev34895.dist-info/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
728
- udata-10.3.2.dev34895.dist-info/METADATA,sha256=CUY3jwCW9wNWPMByIUFsq9MwRoxl09_2N7vDBaRtn2c,144922
729
- udata-10.3.2.dev34895.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
730
- udata-10.3.2.dev34895.dist-info/entry_points.txt,sha256=ETvkR4r6G1duBsh_V_fGWENQy17GTFuobi95MYBAl1A,498
731
- udata-10.3.2.dev34895.dist-info/top_level.txt,sha256=39OCg-VWFWOq4gCKnjKNu-s3OwFlZIu_dVH8Gl6ndHw,12
732
- udata-10.3.2.dev34895.dist-info/RECORD,,
728
+ udata-10.3.2.dev34939.dist-info/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
729
+ udata-10.3.2.dev34939.dist-info/METADATA,sha256=KSnQr_KI-pCBIVr3irhrFz2kvKytmTAyMQ7zOJytABQ,145112
730
+ udata-10.3.2.dev34939.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
731
+ udata-10.3.2.dev34939.dist-info/entry_points.txt,sha256=ETvkR4r6G1duBsh_V_fGWENQy17GTFuobi95MYBAl1A,498
732
+ udata-10.3.2.dev34939.dist-info/top_level.txt,sha256=39OCg-VWFWOq4gCKnjKNu-s3OwFlZIu_dVH8Gl6ndHw,12
733
+ udata-10.3.2.dev34939.dist-info/RECORD,,