udata 14.0.1.dev4__py3-none-any.whl → 14.0.2.dev4__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.
udata/auth/__init__.py CHANGED
@@ -1,4 +1,5 @@
1
1
  import logging
2
+ import typing as t
2
3
 
3
4
  from flask import render_template
4
5
  from flask_principal import Permission as BasePermission
@@ -10,6 +11,7 @@ from flask_security import Security as Security
10
11
  from flask_security import current_user as current_user
11
12
  from flask_security import login_required as login_required
12
13
  from flask_security import login_user as login_user
14
+ from flask_security import mail_util
13
15
 
14
16
  from . import mails
15
17
 
@@ -36,6 +38,24 @@ class Permission(BasePermission):
36
38
  admin_permission = Permission()
37
39
 
38
40
 
41
+ class NoopMailUtil(mail_util.MailUtil):
42
+ def send_mail(
43
+ self,
44
+ template: str,
45
+ subject: str,
46
+ recipient: str,
47
+ sender: t.Union[str, tuple],
48
+ body: str,
49
+ html: t.Optional[str],
50
+ **kwargs: t.Any,
51
+ ) -> None:
52
+ log.debug(f"Sending mail {subject} to {recipient}")
53
+ log.debug(body)
54
+ log.debug(html)
55
+
56
+ return None
57
+
58
+
39
59
  def init_app(app):
40
60
  from udata.models import datastore
41
61
 
@@ -61,6 +81,11 @@ def init_app(app):
61
81
  app.config["CDATA_BASE_URL"] + "?flash=confirm_error",
62
82
  )
63
83
 
84
+ # Same logic as in our own mail system :DisableMail
85
+ debug = app.config.get("DEBUG", False)
86
+ send_mail = app.config.get("SEND_MAIL", not debug)
87
+ mail_util_cls = None if send_mail else NoopMailUtil
88
+
64
89
  security.init_app(
65
90
  app,
66
91
  datastore,
@@ -72,6 +97,7 @@ def init_app(app):
72
97
  reset_password_form=ExtendedResetPasswordForm,
73
98
  forgot_password_form=ExtendedForgotPasswordForm,
74
99
  password_util_cls=UdataPasswordUtil,
100
+ mail_util_cls=mail_util_cls,
75
101
  )
76
102
 
77
103
  security_bp = create_security_blueprint(app, app.extensions["security"], "security_blueprint")
@@ -13,6 +13,6 @@ class ReasonCategoriesAPI(API):
13
13
  def get(self):
14
14
  """List all limitation reason categories"""
15
15
  return [
16
- {"value": category.value, "label": category.label}
16
+ {"value": category.value, "label": category.label, "definition": category.definition}
17
17
  for category in InspireLimitationCategory
18
18
  ]
@@ -63,31 +63,35 @@ class InspireLimitationCategory(StrEnum):
63
63
  match self:
64
64
  case InspireLimitationCategory.PUBLIC_AUTHORITIES:
65
65
  return _(
66
- "The confidentiality of the proceedings of public authorities, where such confidentiality is provided for by law."
66
+ "Public access to datasets and services would adversely affect the confidentiality of the proceedings of public authorities, where such confidentiality is provided for by law."
67
67
  )
68
68
  case InspireLimitationCategory.INTERNATIONAL_RELATIONS:
69
- return _("International relations, public security or national defence.")
69
+ return _(
70
+ "Public access to datasets and services would adversely affect international relations, public security or national defence."
71
+ )
70
72
  case InspireLimitationCategory.COURSE_OF_JUSTICE:
71
73
  return _(
72
- "The course of justice, the ability of any person to receive a fair trial or the ability of a public authority to conduct an enquiry of a criminal or disciplinary nature."
74
+ "Public access to datasets and services would adversely affect the course of justice, the ability of any person to receive a fair trial or the ability of a public authority to conduct an enquiry of a criminal or disciplinary nature."
73
75
  )
74
76
  case InspireLimitationCategory.COMMERCIAL_CONFIDENTIALITY:
75
77
  return _(
76
- "The confidentiality of commercial or industrial information, where such confidentiality is provided for by national or Community law to protect a legitimate economic interest."
78
+ "Public access to datasets and services would adversely affect the confidentiality of commercial or industrial information, where such confidentiality is provided for by national or Community law to protect a legitimate economic interest, including the public interest in maintaining statistical confidentiality and tax secrecy."
77
79
  )
78
80
  case InspireLimitationCategory.INTELLECTUAL_PROPERTY:
79
- return _("Intellectual property rights.")
81
+ return _(
82
+ "Public access to datasets and services would adversely affect intellectual property rights."
83
+ )
80
84
  case InspireLimitationCategory.PERSONAL_DATA:
81
85
  return _(
82
- "The confidentiality of personal data and/or files relating to a natural person where that person has not consented to the disclosure."
86
+ "Public access to datasets and services would adversely affect the confidentiality of personal data and/or files relating to a natural person where that person has not consented to the disclosure of the information to the public, where such confidentiality is provided for by national or Community law."
83
87
  )
84
88
  case InspireLimitationCategory.VOLUNTARY_SUPPLIER:
85
89
  return _(
86
- "The interests or protection of any person who supplied the information requested on a voluntary basis without being under a legal obligation."
90
+ "Public access to datasets and services would adversely affect the interests or protection of any person who supplied the information requested on a voluntary basis without being under, or capable of being put under, a legal obligation to do so, unless that person has consented to the release of the information concerned."
87
91
  )
88
92
  case InspireLimitationCategory.ENVIRONMENTAL_PROTECTION:
89
93
  return _(
90
- "The protection of the environment to which such information relates, such as the location of rare species."
94
+ "Public access to datasets and services would adversely affect the protection of the environment to which such information relates, such as the location of rare species."
91
95
  )
92
96
  case _:
93
97
  assert_never(self)
udata/harvest/actions.py CHANGED
@@ -254,7 +254,7 @@ def schedule(
254
254
  source.modify(
255
255
  periodic_task=PeriodicTask.objects.create(
256
256
  task="harvest",
257
- name="Harvest {0}".format(source.name),
257
+ name=f"Harvest {source.name} ({source.id})",
258
258
  description="Periodic Harvesting",
259
259
  enabled=True,
260
260
  args=[str(source.id)],
udata/harvest/api.py CHANGED
@@ -437,7 +437,7 @@ class JobAPI(API):
437
437
  @api.expect(parser)
438
438
  @api.marshal_with(job_fields)
439
439
  def get(self, ident):
440
- """List all jobs for a given source"""
440
+ """Get a single job given an ID"""
441
441
  return actions.get_job(ident)
442
442
 
443
443
 
@@ -271,7 +271,16 @@ class HarvestActionsTest(MockBackendsMixin, PytestOnlyDBTestCase):
271
271
  assert periodic_task.crontab.day_of_month == "*"
272
272
  assert periodic_task.crontab.month_of_year == "*"
273
273
  assert periodic_task.enabled
274
- assert periodic_task.name == "Harvest {0}".format(source.name)
274
+ assert periodic_task.name == f"Harvest {source.name} ({source.id})"
275
+
276
+ def test_double_schedule_with_same_name(self):
277
+ source_1 = HarvestSourceFactory(name="A")
278
+ source_2 = HarvestSourceFactory(name="A")
279
+
280
+ actions.schedule(source_1, hour=0)
281
+ actions.schedule(source_2, hour=0)
282
+
283
+ assert len(PeriodicTask.objects) == 2
275
284
 
276
285
  def test_schedule_from_cron(self):
277
286
  source = HarvestSourceFactory()
@@ -288,7 +297,7 @@ class HarvestActionsTest(MockBackendsMixin, PytestOnlyDBTestCase):
288
297
  assert periodic_task.crontab.month_of_year == "3"
289
298
  assert periodic_task.crontab.day_of_week == "sunday"
290
299
  assert periodic_task.enabled
291
- assert periodic_task.name == "Harvest {0}".format(source.name)
300
+ assert periodic_task.name == f"Harvest {source.name} ({source.id})"
292
301
 
293
302
  def test_reschedule(self):
294
303
  source = HarvestSourceFactory()
@@ -308,7 +317,7 @@ class HarvestActionsTest(MockBackendsMixin, PytestOnlyDBTestCase):
308
317
  assert periodic_task.crontab.day_of_month == "*"
309
318
  assert periodic_task.crontab.month_of_year == "*"
310
319
  assert periodic_task.enabled
311
- assert periodic_task.name == "Harvest {0}".format(source.name)
320
+ assert periodic_task.name == f"Harvest {source.name} ({source.id})"
312
321
 
313
322
  def test_unschedule(self):
314
323
  periodic_task = PeriodicTask.objects.create(
udata/mail.py CHANGED
@@ -90,6 +90,10 @@ def init_app(app):
90
90
 
91
91
 
92
92
  def send_mail(recipients: object | list, message: MailMessage):
93
+ # Security mails are sent via the Flask-Security package and not
94
+ # from this function. Disabling mail sending logic is duplicated
95
+ # in :DisableMail.
96
+ # Flask-Security templates are rendered in `render_mail_template`.
93
97
  debug = current_app.config.get("DEBUG", False)
94
98
  send_mail = current_app.config.get("SEND_MAIL", not debug)
95
99
 
@@ -8,8 +8,8 @@ msgid ""
8
8
  msgstr ""
9
9
  "Project-Id-Version: PROJECT VERSION\n"
10
10
  "Report-Msgid-Bugs-To: i18n@opendata.team\n"
11
- "POT-Creation-Date: 2025-11-05 10:05+0100\n"
12
- "PO-Revision-Date: 2025-11-05 10:05+0100\n"
11
+ "POT-Creation-Date: 2025-11-19 11:00+0100\n"
12
+ "PO-Revision-Date: 2025-11-19 11:00+0100\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"
@@ -19,31 +19,31 @@ msgstr ""
19
19
  "Content-Transfer-Encoding: 8bit\n"
20
20
  "Generated-By: Babel 2.17.0\n"
21
21
 
22
- #: udata/settings.py:129
22
+ #: udata/settings.py:127
23
23
  msgid "Welcome"
24
24
  msgstr ""
25
25
 
26
- #: udata/settings.py:130
26
+ #: udata/settings.py:128
27
27
  msgid "Please confirm your email"
28
28
  msgstr ""
29
29
 
30
- #: udata/settings.py:131
30
+ #: udata/settings.py:129
31
31
  msgid "Login instructions"
32
32
  msgstr ""
33
33
 
34
- #: udata/auth/mails.py:125 udata/settings.py:132
34
+ #: udata/auth/mails.py:125 udata/settings.py:130
35
35
  msgid "Your password has been reset"
36
36
  msgstr ""
37
37
 
38
- #: udata/auth/mails.py:137 udata/settings.py:133
38
+ #: udata/auth/mails.py:137 udata/settings.py:131
39
39
  msgid "Your password has been changed"
40
40
  msgstr ""
41
41
 
42
- #: udata/settings.py:134
42
+ #: udata/settings.py:132
43
43
  msgid "Password reset instructions"
44
44
  msgstr ""
45
45
 
46
- #: udata/settings.py:544
46
+ #: udata/settings.py:542
47
47
  msgid "This dataset has been archived"
48
48
  msgstr ""
49
49
 
@@ -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:1169 udata/tests/test_model.py:402
55
+ #: udata/tests/api/test_datasets_api.py:1174 udata/tests/test_model.py:402
56
56
  #: udata/uris.py:56
57
57
  #, python-brace-format
58
58
  msgid "Invalid URL \"{url}\""
@@ -150,29 +150,29 @@ msgstr ""
150
150
  msgid "Vous devez accepter les CGU pour continuer."
151
151
  msgstr ""
152
152
 
153
- #: udata/auth/forms.py:73 udata/tests/forms/test_current_user_field.py:192
153
+ #: udata/auth/forms.py:75 udata/tests/forms/test_current_user_field.py:192
154
154
  msgid "Password must be changed for security reasons"
155
155
  msgstr ""
156
156
 
157
- #: udata/auth/forms.py:104
157
+ #: udata/auth/forms.py:106
158
158
  msgid "New email"
159
159
  msgstr ""
160
160
 
161
- #: udata/auth/forms.py:106
161
+ #: udata/auth/forms.py:108
162
162
  msgid "Retype email"
163
163
  msgstr ""
164
164
 
165
- #: udata/auth/forms.py:107
165
+ #: udata/auth/forms.py:109
166
166
  msgid "Email does not match"
167
167
  msgstr ""
168
168
 
169
- #: udata/auth/forms.py:109 udata/templates/security/change_email.html:10
169
+ #: udata/auth/forms.py:111 udata/templates/security/change_email.html:10
170
170
  #: udata/templates/security/change_email.html:16
171
171
  msgid "Change email"
172
172
  msgstr ""
173
173
 
174
174
  #: udata/auth/mails.py:67 udata/auth/mails.py:71 udata/auth/mails.py:96
175
- #: udata/auth/mails.py:99
175
+ #: udata/auth/mails.py:99 udata/tests/api/test_security_api.py:109
176
176
  msgid "Confirm your email address"
177
177
  msgstr ""
178
178
 
@@ -267,7 +267,7 @@ msgid "Your udata instance is ready!"
267
267
  msgstr ""
268
268
 
269
269
  #: udata/core/owned.py:64 udata/forms/fields.py:759
270
- #: udata/tests/api/test_dataservices_api.py:547
270
+ #: udata/tests/api/test_dataservices_api.py:569
271
271
  msgid "You can only set yourself as owner"
272
272
  msgstr ""
273
273
 
@@ -276,10 +276,107 @@ msgid "Unknown organization"
276
276
  msgstr ""
277
277
 
278
278
  #: udata/core/owned.py:77 udata/forms/fields.py:791
279
- #: udata/tests/api/test_dataservices_api.py:560
279
+ #: udata/tests/api/test_dataservices_api.py:582
280
280
  msgid "Permission denied for this organization"
281
281
  msgstr ""
282
282
 
283
+ #: udata/core/access_type/constants.py:42
284
+ msgid "Confidentiality of public authorities proceedings"
285
+ msgstr ""
286
+
287
+ #: udata/core/access_type/constants.py:44
288
+ msgid "International relations, public security or national defence"
289
+ msgstr ""
290
+
291
+ #: udata/core/access_type/constants.py:46
292
+ msgid "Course of justice"
293
+ msgstr ""
294
+
295
+ #: udata/core/access_type/constants.py:48
296
+ msgid "Commercial or industrial confidentiality"
297
+ msgstr ""
298
+
299
+ #: udata/core/access_type/constants.py:50
300
+ msgid "Intellectual property rights"
301
+ msgstr ""
302
+
303
+ #: udata/core/access_type/constants.py:52
304
+ msgid "Personal data confidentiality"
305
+ msgstr ""
306
+
307
+ #: udata/core/access_type/constants.py:54
308
+ msgid "Protection of voluntary information suppliers"
309
+ msgstr ""
310
+
311
+ #: udata/core/access_type/constants.py:56
312
+ msgid "Environmental protection"
313
+ msgstr ""
314
+
315
+ #: udata/core/access_type/constants.py:66
316
+ msgid ""
317
+ "Public access to datasets and services would adversely affect the "
318
+ "confidentiality of the proceedings of public authorities, where such "
319
+ "confidentiality is provided for by law."
320
+ msgstr ""
321
+
322
+ #: udata/core/access_type/constants.py:70
323
+ msgid ""
324
+ "Public access to datasets and services would adversely affect international "
325
+ "relations, public security or national defence."
326
+ msgstr ""
327
+
328
+ #: udata/core/access_type/constants.py:74
329
+ msgid ""
330
+ "Public access to datasets and services would adversely affect the course of "
331
+ "justice, the ability of any person to receive a fair trial or the ability of "
332
+ "a public authority to conduct an enquiry of a criminal or disciplinary "
333
+ "nature."
334
+ msgstr ""
335
+
336
+ #: udata/core/access_type/constants.py:78
337
+ msgid ""
338
+ "Public access to datasets and services would adversely affect the "
339
+ "confidentiality of commercial or industrial information, where such "
340
+ "confidentiality is provided for by national or Community law to protect a "
341
+ "legitimate economic interest, including the public interest in maintaining "
342
+ "statistical confidentiality and tax secrecy."
343
+ msgstr ""
344
+
345
+ #: udata/core/access_type/constants.py:82
346
+ msgid ""
347
+ "Public access to datasets and services would adversely affect intellectual "
348
+ "property rights."
349
+ msgstr ""
350
+
351
+ #: udata/core/access_type/constants.py:86
352
+ msgid ""
353
+ "Public access to datasets and services would adversely affect the "
354
+ "confidentiality of personal data and/or files relating to a natural person "
355
+ "where that person has not consented to the disclosure of the information to "
356
+ "the public, where such confidentiality is provided for by national or "
357
+ "Community law."
358
+ msgstr ""
359
+
360
+ #: udata/core/access_type/constants.py:90
361
+ msgid ""
362
+ "Public access to datasets and services would adversely affect the interests "
363
+ "or protection of any person who supplied the information requested on a "
364
+ "voluntary basis without being under, or capable of being put under, a legal "
365
+ "obligation to do so, unless that person has consented to the release of the "
366
+ "information concerned."
367
+ msgstr ""
368
+
369
+ #: udata/core/access_type/constants.py:94
370
+ msgid ""
371
+ "Public access to datasets and services would adversely affect the protection "
372
+ "of the environment to which such information relates, such as the location of"
373
+ " rare species."
374
+ msgstr ""
375
+
376
+ #: udata/core/access_type/models.py:25
377
+ msgid "You can only set one condition for a given access audience role"
378
+ msgstr ""
379
+
283
380
  #: udata/core/badges/forms.py:12
284
381
  msgid "Kind"
285
382
  msgstr ""
@@ -294,7 +391,7 @@ msgstr ""
294
391
 
295
392
  #: udata/core/contact_point/forms.py:12 udata/core/jobs/forms.py:27
296
393
  #: udata/core/organization/forms.py:46 udata/core/post/forms.py:15
297
- #: udata/core/topic/forms.py:37 udata/harvest/forms.py:78
394
+ #: udata/core/topic/forms.py:37 udata/harvest/forms.py:80
298
395
  msgid "Name"
299
396
  msgstr ""
300
397
 
@@ -310,10 +407,10 @@ msgstr ""
310
407
  msgid "The organization web contact form"
311
408
  msgstr ""
312
409
 
313
- #: udata/core/contact_point/forms.py:20 udata/core/dataset/forms.py:115
314
- #: udata/core/dataset/forms.py:191 udata/core/discussions/forms.py:13
410
+ #: udata/core/contact_point/forms.py:20 udata/core/dataset/forms.py:122
411
+ #: udata/core/dataset/forms.py:218 udata/core/discussions/forms.py:13
315
412
  #: udata/core/discussions/forms.py:29 udata/core/topic/forms.py:35
316
- #: udata/harvest/forms.py:87
413
+ #: udata/harvest/forms.py:90
317
414
  msgid "Publish as"
318
415
  msgstr ""
319
416
 
@@ -385,20 +482,20 @@ msgstr ""
385
482
  msgid "Latest APIs"
386
483
  msgstr ""
387
484
 
388
- #: udata/core/dataservices/models.py:132
389
- msgid "You can only set one condition for a given access audience role"
485
+ #: udata/core/dataservices/models.py:27
486
+ msgid "Dataservice serving high value datasets"
390
487
  msgstr ""
391
488
 
392
- #: udata/core/dataservices/models.py:181
489
+ #: udata/core/dataservices/models.py:185
393
490
  msgid "dataservice"
394
491
  msgstr ""
395
492
 
396
- #: udata/core/dataservices/models.py:270 udata/core/dataset/models.py:575
493
+ #: udata/core/dataservices/models.py:266 udata/core/dataset/models.py:580
397
494
  #: udata/mongo/datetime_fields.py:60
398
495
  msgid "Creation date"
399
496
  msgstr ""
400
497
 
401
- #: udata/core/dataservices/models.py:276 udata/core/dataset/models.py:580
498
+ #: udata/core/dataservices/models.py:272 udata/core/dataset/models.py:585
402
499
  #: udata/mongo/datetime_fields.py:66
403
500
  msgid "Last modification date"
404
501
  msgstr ""
@@ -583,7 +680,7 @@ msgstr ""
583
680
  msgid "Not planned"
584
681
  msgstr ""
585
682
 
586
- #: udata/core/dataset/constants.py:73 udata/core/dataset/constants.py:149
683
+ #: udata/core/dataset/constants.py:73 udata/core/dataset/constants.py:156
587
684
  #: udata/core/spatial/constants.py:5
588
685
  msgid "Other"
589
686
  msgstr ""
@@ -596,250 +693,262 @@ msgstr ""
596
693
  msgid "Unknown"
597
694
  msgstr ""
598
695
 
599
- #: udata/core/dataset/constants.py:144
696
+ #: udata/core/dataset/constants.py:151
600
697
  msgid "Main file"
601
698
  msgstr ""
602
699
 
603
- #: udata/core/dataset/constants.py:145
700
+ #: udata/core/dataset/constants.py:152
604
701
  msgid "Documentation"
605
702
  msgstr ""
606
703
 
607
- #: udata/core/dataset/constants.py:146
704
+ #: udata/core/dataset/constants.py:153
608
705
  msgid "Update"
609
706
  msgstr ""
610
707
 
611
- #: udata/core/dataset/constants.py:147 udata/core/reuse/constants.py:4
708
+ #: udata/core/dataset/constants.py:154 udata/core/reuse/constants.py:4
612
709
  msgid "API"
613
710
  msgstr ""
614
711
 
615
- #: udata/core/dataset/constants.py:148
712
+ #: udata/core/dataset/constants.py:155
616
713
  msgid "Code repository"
617
714
  msgstr ""
618
715
 
619
- #: udata/core/dataset/constants.py:156
716
+ #: udata/core/dataset/constants.py:163
620
717
  msgid "Uploaded file"
621
718
  msgstr ""
622
719
 
623
- #: udata/core/dataset/constants.py:157
720
+ #: udata/core/dataset/constants.py:164
624
721
  msgid "Remote file"
625
722
  msgstr ""
626
723
 
627
- #: udata/core/dataset/forms.py:32
724
+ #: udata/core/dataset/forms.py:39
628
725
  msgid "Checksum value"
629
726
  msgstr ""
630
727
 
631
- #: udata/core/dataset/forms.py:43
728
+ #: udata/core/dataset/forms.py:50
632
729
  msgid "URL of the schema"
633
730
  msgstr ""
634
731
 
635
- #: udata/core/dataset/forms.py:44
732
+ #: udata/core/dataset/forms.py:51
636
733
  msgid "Name of the schema"
637
734
  msgstr ""
638
735
 
639
- #: udata/core/dataset/forms.py:45
736
+ #: udata/core/dataset/forms.py:52
640
737
  msgid "Version of the schema"
641
738
  msgstr ""
642
739
 
643
- #: udata/core/dataset/forms.py:64 udata/core/dataset/forms.py:148
740
+ #: udata/core/dataset/forms.py:71 udata/core/dataset/forms.py:162
644
741
  #: udata/core/discussions/forms.py:14 udata/core/discussions/forms.py:25
645
742
  #: udata/core/site/forms.py:12 udata/core/topic/forms.py:13
646
743
  msgid "Title"
647
744
  msgstr ""
648
745
 
649
- #: udata/core/dataset/forms.py:67 udata/core/dataset/forms.py:152
746
+ #: udata/core/dataset/forms.py:74 udata/core/dataset/forms.py:166
650
747
  #: udata/core/jobs/forms.py:28 udata/core/organization/forms.py:50
651
748
  #: udata/core/topic/forms.py:14 udata/core/topic/forms.py:38
652
- #: udata/harvest/forms.py:80
749
+ #: udata/harvest/forms.py:82
653
750
  msgid "Description"
654
751
  msgstr ""
655
752
 
656
- #: udata/core/dataset/forms.py:70
753
+ #: udata/core/dataset/forms.py:77
657
754
  msgid "File type"
658
755
  msgstr ""
659
756
 
660
- #: udata/core/dataset/forms.py:74
757
+ #: udata/core/dataset/forms.py:81
661
758
  msgid "Whether the resource is an uploaded file, a remote file or an API"
662
759
  msgstr ""
663
760
 
664
- #: udata/core/dataset/forms.py:77
761
+ #: udata/core/dataset/forms.py:84
665
762
  msgid "Type"
666
763
  msgstr ""
667
764
 
668
- #: udata/core/dataset/forms.py:81
765
+ #: udata/core/dataset/forms.py:88
669
766
  msgid "Resource type (documentation, API...)"
670
767
  msgstr ""
671
768
 
672
- #: udata/core/dataset/forms.py:83 udata/harvest/forms.py:82
769
+ #: udata/core/dataset/forms.py:90 udata/harvest/forms.py:84
673
770
  msgid "URL"
674
771
  msgstr ""
675
772
 
676
- #: udata/core/dataset/forms.py:85
773
+ #: udata/core/dataset/forms.py:92
677
774
  msgid "Format"
678
775
  msgstr ""
679
776
 
680
- #: udata/core/dataset/forms.py:90
777
+ #: udata/core/dataset/forms.py:97
681
778
  msgid "Mime type"
682
779
  msgstr ""
683
780
 
684
- #: udata/core/dataset/forms.py:91
781
+ #: udata/core/dataset/forms.py:98
685
782
  msgid "The mime type associated to the extension. (ex: text/plain)"
686
783
  msgstr ""
687
784
 
688
- #: udata/core/dataset/forms.py:94
785
+ #: udata/core/dataset/forms.py:101
689
786
  msgid "Size"
690
787
  msgstr ""
691
788
 
692
- #: udata/core/dataset/forms.py:94
789
+ #: udata/core/dataset/forms.py:101
693
790
  msgid "The file size in bytes"
694
791
  msgstr ""
695
792
 
696
- #: udata/core/dataset/forms.py:113
793
+ #: udata/core/dataset/forms.py:120
697
794
  msgid "Related dataset"
698
795
  msgstr ""
699
796
 
700
- #: udata/core/dataset/forms.py:140 udata/tests/api/test_datasets_api.py:1081
797
+ #: udata/core/dataset/forms.py:147 udata/tests/api/test_datasets_api.py:1086
701
798
  msgid "Wrong contact point id or contact point ownership mismatch"
702
799
  msgstr ""
703
800
 
704
- #: udata/core/dataset/forms.py:150 udata/core/organization/forms.py:48
801
+ #: udata/core/dataset/forms.py:164 udata/core/organization/forms.py:48
705
802
  msgid "Acronym"
706
803
  msgstr ""
707
804
 
708
- #: udata/core/dataset/forms.py:150
805
+ #: udata/core/dataset/forms.py:164
709
806
  msgid "An optional acronym"
710
807
  msgstr ""
711
808
 
712
- #: udata/core/dataset/forms.py:154
809
+ #: udata/core/dataset/forms.py:168
713
810
  msgid "The details about the dataset (collection process, specifics...)."
714
811
  msgstr ""
715
812
 
716
- #: udata/core/dataset/forms.py:157
813
+ #: udata/core/dataset/forms.py:171
717
814
  msgid "Short description"
718
815
  msgstr ""
719
816
 
720
- #: udata/core/dataset/forms.py:159
817
+ #: udata/core/dataset/forms.py:173
721
818
  msgid "A short description of the dataset."
722
819
  msgstr ""
723
820
 
724
- #: udata/core/dataset/forms.py:161
821
+ #: udata/core/dataset/forms.py:175
725
822
  msgid "License"
726
823
  msgstr ""
727
824
 
728
- #: udata/core/dataset/forms.py:163
825
+ #: udata/core/dataset/forms.py:182
826
+ msgid "Authorization request URL"
827
+ msgstr ""
828
+
829
+ #: udata/core/dataset/forms.py:184
830
+ msgid "Access type reason category"
831
+ msgstr ""
832
+
833
+ #: udata/core/dataset/forms.py:188
834
+ msgid "Access type reason"
835
+ msgstr ""
836
+
837
+ #: udata/core/dataset/forms.py:190
729
838
  msgid "Update frequency"
730
839
  msgstr ""
731
840
 
732
- #: udata/core/dataset/forms.py:173
841
+ #: udata/core/dataset/forms.py:200
733
842
  msgid "The frequency at which data are updated."
734
843
  msgstr ""
735
844
 
736
- #: udata/core/dataset/forms.py:175
845
+ #: udata/core/dataset/forms.py:202
737
846
  msgid "Expected frequency date"
738
847
  msgstr ""
739
848
 
740
- #: udata/core/dataset/forms.py:179
849
+ #: udata/core/dataset/forms.py:206
741
850
  msgid "Temporal coverage"
742
851
  msgstr ""
743
852
 
744
- #: udata/core/dataset/forms.py:179
853
+ #: udata/core/dataset/forms.py:206
745
854
  msgid "The period covered by the data"
746
855
  msgstr ""
747
856
 
748
- #: udata/core/dataset/forms.py:182 udata/core/spatial/forms.py:85
857
+ #: udata/core/dataset/forms.py:209 udata/core/spatial/forms.py:85
749
858
  #: udata/core/topic/forms.py:86
750
859
  msgid "Spatial coverage"
751
860
  msgstr ""
752
861
 
753
- #: udata/core/dataset/forms.py:182 udata/core/topic/forms.py:86
862
+ #: udata/core/dataset/forms.py:209 udata/core/topic/forms.py:86
754
863
  msgid "The geographical area covered by the data."
755
864
  msgstr ""
756
865
 
757
- #: udata/core/dataset/forms.py:184 udata/core/post/forms.py:26
866
+ #: udata/core/dataset/forms.py:211 udata/core/post/forms.py:26
758
867
  #: udata/core/site/forms.py:13 udata/core/topic/forms.py:15
759
868
  #: udata/core/topic/forms.py:89
760
869
  msgid "Tags"
761
870
  msgstr ""
762
871
 
763
- #: udata/core/dataset/forms.py:184
872
+ #: udata/core/dataset/forms.py:211
764
873
  msgid "Some taxonomy keywords"
765
874
  msgstr ""
766
875
 
767
- #: udata/core/dataset/forms.py:186 udata/core/topic/forms.py:90
876
+ #: udata/core/dataset/forms.py:213 udata/core/topic/forms.py:90
768
877
  msgid "Private"
769
878
  msgstr ""
770
879
 
771
- #: udata/core/dataset/forms.py:187
880
+ #: udata/core/dataset/forms.py:214
772
881
  msgid "Restrict the dataset visibility to you or your organization only."
773
882
  msgstr ""
774
883
 
775
- #: udata/core/dataset/models.py:66
884
+ #: udata/core/dataset/models.py:69
776
885
  msgid "Pivotal data"
777
886
  msgstr ""
778
887
 
779
- #: udata/core/dataset/models.py:67
888
+ #: udata/core/dataset/models.py:70
780
889
  msgid "Reference data public service"
781
890
  msgstr ""
782
891
 
783
- #: udata/core/dataset/models.py:68
892
+ #: udata/core/dataset/models.py:71
784
893
  msgid "Inspire"
785
894
  msgstr ""
786
895
 
787
- #: udata/core/dataset/models.py:69
896
+ #: udata/core/dataset/models.py:72
788
897
  msgid "High value datasets"
789
898
  msgstr ""
790
899
 
791
- #: udata/core/dataset/models.py:70
900
+ #: udata/core/dataset/models.py:73
792
901
  msgid "Certified statistic series"
793
902
  msgstr ""
794
903
 
795
- #: udata/core/dataset/models.py:71
904
+ #: udata/core/dataset/models.py:74
796
905
  msgid "Statistical series of general interest"
797
906
  msgstr ""
798
907
 
799
- #: udata/core/dataset/models.py:151
908
+ #: udata/core/dataset/models.py:154
800
909
  msgid "A schema must contains a name or an URL when a version is provided."
801
910
  msgstr ""
802
911
 
803
- #: udata/core/dataset/models.py:183 udata/tests/api/test_datasets_api.py:1177
804
- #: udata/tests/api/test_datasets_api.py:1188
912
+ #: udata/core/dataset/models.py:186 udata/tests/api/test_datasets_api.py:1182
913
+ #: udata/tests/api/test_datasets_api.py:1193
805
914
  #, python-brace-format
806
915
  msgid "Schema name \"{schema}\" is not an allowed value. Allowed values: {values}"
807
916
  msgstr ""
808
917
 
809
- #: udata/core/dataset/models.py:202 udata/tests/api/test_datasets_api.py:1200
918
+ #: udata/core/dataset/models.py:205 udata/tests/api/test_datasets_api.py:1205
810
919
  #, python-brace-format
811
920
  msgid ""
812
921
  "Version \"{version}\" is not an allowed value for the schema \"{name}\". "
813
922
  "Allowed versions: {values}"
814
923
  msgstr ""
815
924
 
816
- #: udata/core/dataset/models.py:451 udata/core/dataset/rdf.py:595
817
- #: udata/tests/dataset/test_dataset_rdf.py:908
818
- #: udata/tests/dataset/test_dataset_rdf.py:921
925
+ #: udata/core/dataset/models.py:454 udata/core/dataset/rdf.py:596
926
+ #: udata/tests/dataset/test_dataset_rdf.py:912
927
+ #: udata/tests/dataset/test_dataset_rdf.py:925
819
928
  msgid "Nameless resource"
820
929
  msgstr ""
821
930
 
822
- #: udata/core/dataset/models.py:554
931
+ #: udata/core/dataset/models.py:559
823
932
  msgid "Future date of update"
824
933
  msgstr ""
825
934
 
826
- #: udata/core/dataset/models.py:586
935
+ #: udata/core/dataset/models.py:591
827
936
  msgid "Last update of the dataset resources"
828
937
  msgstr ""
829
938
 
830
- #: udata/core/dataset/models.py:641
939
+ #: udata/core/dataset/models.py:646
831
940
  msgid "dataset"
832
941
  msgstr ""
833
942
 
834
- #: udata/core/dataset/rdf.py:593 udata/tests/dataset/test_dataset_rdf.py:878
835
- #: udata/tests/dataset/test_dataset_rdf.py:895
943
+ #: udata/core/dataset/rdf.py:594 udata/tests/dataset/test_dataset_rdf.py:882
944
+ #: udata/tests/dataset/test_dataset_rdf.py:899
836
945
  #, python-brace-format
837
946
  msgid "{format} resource"
838
947
  msgstr ""
839
948
 
840
949
  #: udata/core/discussions/forms.py:16 udata/core/discussions/forms.py:31
841
950
  #: udata/core/discussions/forms.py:37 udata/core/organization/forms.py:83
842
- #: udata/core/organization/forms.py:87 udata/harvest/forms.py:97
951
+ #: udata/core/organization/forms.py:87 udata/harvest/forms.py:100
843
952
  msgid "Comment"
844
953
  msgstr ""
845
954
 
@@ -1093,23 +1202,23 @@ msgid ""
1093
1202
  "A badge is now associated with your organization."
1094
1203
  msgstr ""
1095
1204
 
1096
- #: udata/core/organization/models.py:38
1205
+ #: udata/core/organization/models.py:39
1097
1206
  msgid "Public Service"
1098
1207
  msgstr ""
1099
1208
 
1100
- #: udata/core/organization/models.py:39
1209
+ #: udata/core/organization/models.py:40
1101
1210
  msgid "Certified"
1102
1211
  msgstr ""
1103
1212
 
1104
- #: udata/core/organization/models.py:40
1213
+ #: udata/core/organization/models.py:41
1105
1214
  msgid "Association"
1106
1215
  msgstr ""
1107
1216
 
1108
- #: udata/core/organization/models.py:41
1217
+ #: udata/core/organization/models.py:42
1109
1218
  msgid "Company"
1110
1219
  msgstr ""
1111
1220
 
1112
- #: udata/core/organization/models.py:42
1221
+ #: udata/core/organization/models.py:43
1113
1222
  msgid "Local authority"
1114
1223
  msgstr ""
1115
1224
 
@@ -1201,7 +1310,7 @@ msgstr ""
1201
1310
  msgid "deleted a reuse"
1202
1311
  msgstr ""
1203
1312
 
1204
- #: udata/core/reuse/api.py:140
1313
+ #: udata/core/reuse/api.py:141
1205
1314
  msgid "Latests reuses"
1206
1315
  msgstr ""
1207
1316
 
@@ -1306,11 +1415,11 @@ msgstr ""
1306
1415
  msgid "View the reuse"
1307
1416
  msgstr ""
1308
1417
 
1309
- #: udata/core/reuse/models.py:39
1418
+ #: udata/core/reuse/models.py:40
1310
1419
  msgid "This URL is already registered"
1311
1420
  msgstr ""
1312
1421
 
1313
- #: udata/core/reuse/models.py:185
1422
+ #: udata/core/reuse/models.py:194
1314
1423
  msgid "reuse"
1315
1424
  msgstr ""
1316
1425
 
@@ -1628,11 +1737,11 @@ msgstr ""
1628
1737
  msgid "Source"
1629
1738
  msgstr ""
1630
1739
 
1631
- #: udata/harvest/forms.py:80
1740
+ #: udata/harvest/forms.py:82
1632
1741
  msgid "Some optional details about this harvester"
1633
1742
  msgstr ""
1634
1743
 
1635
- #: udata/harvest/forms.py:84
1744
+ #: udata/harvest/forms.py:86
1636
1745
  msgid "Backend"
1637
1746
  msgstr ""
1638
1747
 
@@ -1676,27 +1785,27 @@ msgstr ""
1676
1785
  msgid "Archived"
1677
1786
  msgstr ""
1678
1787
 
1679
- #: udata/harvest/backends/dcat.py:431
1788
+ #: udata/harvest/backends/dcat.py:434
1680
1789
  msgid "Remote URL prefix"
1681
1790
  msgstr ""
1682
1791
 
1683
- #: udata/harvest/backends/dcat.py:434
1792
+ #: udata/harvest/backends/dcat.py:437
1684
1793
  msgid "A prefix used to build the remote URL of the harvested items."
1685
1794
  msgstr ""
1686
1795
 
1687
- #: udata/harvest/backends/ckan/harvesters.py:30
1796
+ #: udata/harvest/backends/ckan/harvesters.py:31
1688
1797
  msgid "Organization"
1689
1798
  msgstr ""
1690
1799
 
1691
- #: udata/harvest/backends/ckan/harvesters.py:30
1800
+ #: udata/harvest/backends/ckan/harvesters.py:31
1692
1801
  msgid "A CKAN Organization name"
1693
1802
  msgstr ""
1694
1803
 
1695
- #: udata/harvest/backends/ckan/harvesters.py:31
1804
+ #: udata/harvest/backends/ckan/harvesters.py:32
1696
1805
  msgid "Tag"
1697
1806
  msgstr ""
1698
1807
 
1699
- #: udata/harvest/backends/ckan/harvesters.py:31
1808
+ #: udata/harvest/backends/ckan/harvesters.py:32
1700
1809
  msgid "A CKAN tag name"
1701
1810
  msgstr ""
1702
1811
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: udata
3
- Version: 14.0.1.dev4
3
+ Version: 14.0.2.dev4
4
4
  Summary: Open data portal
5
5
  Author-email: Opendata Team <opendatateam@data.gouv.fr>
6
6
  Maintainer-email: Opendata Team <opendatateam@data.gouv.fr>
@@ -5,7 +5,7 @@ udata/cors.py,sha256=7An9bsiNZk0PbNqDy8--ZJ0vmq1ubrtcfGB3DWAHBlA,3681
5
5
  udata/errors.py,sha256=E8W7b4PH7c5B85g_nsUMt8fHqMVpDFOZFkO6wMPl6bA,117
6
6
  udata/factories.py,sha256=MoklZnU8iwNL25dm3JsoXhoQs1PQWSVYL1WvcUBtJqM,492
7
7
  udata/i18n.py,sha256=1VM99qUImopfPGoGB5uCJcuKWq-Kp01qupQ4foSRKGQ,2740
8
- udata/mail.py,sha256=7bd_an28BLn_vDc50XEGfOxv0uju4p29cWmPvfbdzWE,3259
8
+ udata/mail.py,sha256=1BPFtyUsaTxLDabqQdx76x163QWirYjg8UuH90BHTSY,3491
9
9
  udata/rdf.py,sha256=re5EVyBwWlzqm46FqBXVpqSehQGZNZzgFZnMuNT6nwM,21745
10
10
  udata/routing.py,sha256=CZEbYcEFnyquk7grnhOUNPjRHRggAy6xHB218b9UF3s,7750
11
11
  udata/sentry.py,sha256=j_6PSHV1id21KFX1XvpQR-Ur4d24310HgIq7MynEZ2Q,2887
@@ -25,7 +25,7 @@ udata/api/fields.py,sha256=w3qpMGntcOQa5bwFenZNJrnIoEZGZkEhRq0OwWFHsgc,3801
25
25
  udata/api/oauth2.py,sha256=1cSdZjCYT6W0XNKkvKA7LN38WaanLRu2NPUCYZt-AEM,12583
26
26
  udata/api/parsers.py,sha256=iQEwgMwdVz_gXlVZYaRCGrUFWvcf7_8uCIxw7Iw-hpw,1405
27
27
  udata/api/signals.py,sha256=t8s7tF1KYeAygqbR4GdA76_UYvthAsyRbJaqsMmFsK4,162
28
- udata/auth/__init__.py,sha256=JSSMTpscp0neTvnjoxn2xUxiDvw9EXrA0Gwzs2H-DPw,2567
28
+ udata/auth/__init__.py,sha256=7TM1SJ09y5ikTTqPQvZspJQdN5arEQji4XNZ8hK0Mj4,3271
29
29
  udata/auth/forms.py,sha256=GZxTalle0h9TcoNK8f9hOCHixPBSXtGp-Gj0P7gZjks,4145
30
30
  udata/auth/helpers.py,sha256=7Yr5k7ImdgqxVap4Bjq_ylTXmzq4NR0KgEOOhqSbaf4,267
31
31
  udata/auth/mails.py,sha256=-HbXbxSeertEfcpEo3FBG2JwZw-De3-annl-DiuS9PY,5101
@@ -52,8 +52,8 @@ udata/core/constants.py,sha256=IV_eeDhWjHTLJIjCBJvAu6lfMKBBdisIPeYS8cPu_io,12
52
52
  udata/core/csv.py,sha256=qeRtSQXPT5n5EoWZ3_XfnOTW7ITnEzzHctODPeX63Uk,8543
53
53
  udata/core/linkable.py,sha256=8YuTzZo5Y36CVIYxESC-EPJ-zKsQTRbi4OIZTp-wWig,587
54
54
  udata/core/owned.py,sha256=OQT7wdk7dAqGvWDiJRVkKJxerDc9_Io910nvLmfBAVI,5561
55
- udata/core/access_type/api.py,sha256=SchqjVHqmw7hfEqoc668aJlBNmlo_IO7DsRRzrNjPDc,626
56
- udata/core/access_type/constants.py,sha256=MPFt7Wxz1j5d-SFr8LuTx5tKx07DO76Nw3nJgsx1Wjk,4743
55
+ udata/core/access_type/api.py,sha256=vlebojzwzHhULEURXn0hHaasZgsckuyf1sR6qDlXgAk,661
56
+ udata/core/access_type/constants.py,sha256=qqBLTzYAuSZaTmFXY-nIws9Dv0JCUbxrVCrbvqYPscY,5634
57
57
  udata/core/access_type/models.py,sha256=bIqUM57SsrCnoQ7lai6yGM5sNEpMSCANrZAYW1iIunk,1500
58
58
  udata/core/activity/__init__.py,sha256=dLTseBmVYbQzxB7OR7Dz0LtIwEjNQvgUSR7SwfInb68,399
59
59
  udata/core/activity/api.py,sha256=dwdEkJxxwbQ2PsCSnv6fEE8Ps1FiJ4fEHpTog_gk4Rs,4291
@@ -298,8 +298,8 @@ udata/forms/widgets.py,sha256=7qymIpynrQmNlA8hrkcF0RB8eLwOJFkjca_KOZ0zqtE,1332
298
298
  udata/frontend/__init__.py,sha256=EzIwb8cQ1z4ItMAQO9EM9NOeKpOt7aXEHbbBCLnQQ2M,264
299
299
  udata/frontend/markdown.py,sha256=5kNMVOMLlGvJfpIVONaQv4JT1pi6qWNcnb_BVV_VNJQ,4324
300
300
  udata/harvest/__init__.py,sha256=C4y5w4vGb_F9Opy62lzV3eHo4DkNyRgPCq-wsarPXiQ,28
301
- udata/harvest/actions.py,sha256=ikTllRpJIgu-BFQd35PAfHtYfCI0nYHeLdp7-UcgHgQ,9598
302
- udata/harvest/api.py,sha256=807CONm74QHECHcywNxsp_dFh8jOkJU9p9cTtdgJGuE,16525
301
+ udata/harvest/actions.py,sha256=FtUua5eF00_wC7uR1FJ7N1twvKQZIWqwmKJ4bh1UQnc,9603
302
+ udata/harvest/api.py,sha256=CdvWSJjum2aSqjZ-1ElNM6R4yHBrjK5OpWQmg7crFLE,16521
303
303
  udata/harvest/commands.py,sha256=tGbGTygiEQ9UFQo3zfnNf7rtPaOZLrIYpmXkSQUAmAQ,5077
304
304
  udata/harvest/csv.py,sha256=TcHWJLiEbK8ouwGGYZy9US4nMxfWk1Ydw8sMlPit1tk,392
305
305
  udata/harvest/exceptions.py,sha256=-sTbXece_YQstXlnpSZX5EJGTONYZ4J2RgByG0WlqAI,302
@@ -322,7 +322,7 @@ udata/harvest/backends/ckan/schemas/dkan.py,sha256=RyQGPEaKqnunIrr9yApcz7WEfgye0
322
322
  udata/harvest/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
323
323
  udata/harvest/tests/factories.py,sha256=_V_RICVo33rhnZd5Kk7eZrxuIYHSBi8iWWGHFMLUdhU,2292
324
324
  udata/harvest/tests/person.jsonld,sha256=I7Ynh-PQlNeD51I1LrCgYOEjhL-WBeb65xzIE_sHuAA,3230
325
- udata/harvest/tests/test_actions.py,sha256=26_cH1B_J2DIVrBaHPhKIz0DLB1znMQztk3Dq5tRWVU,26158
325
+ udata/harvest/tests/test_actions.py,sha256=Z5b1XwTMp34FuJhUe3LUksKZg1GvCf744OlNyI5jo7I,26459
326
326
  udata/harvest/tests/test_api.py,sha256=2MCQBuebMFCzMG7_E7cIqmHIdZJPd6bkiYwqrjYQ_aY,21469
327
327
  udata/harvest/tests/test_base_backend.py,sha256=yvAxO5XFnEpibVi9gUYbqhwdMupJbuwjfajwGqC19OA,19312
328
328
  udata/harvest/tests/test_dcat_backend.py,sha256=TOMT9aXbDPT_RVVhKgaa3Kw2ndhSDuIpZWQhNPQmN3Q,53753
@@ -562,7 +562,7 @@ udata/tests/workers/test_jobs_commands.py,sha256=Sm3ibGEtS2iV_w1KfdQEIAsvo_2vnNV
562
562
  udata/tests/workers/test_tasks_routing.py,sha256=7FJUVcSPKkqA3tcFjjgCnbl4vC-4iGuL7myzr7lVHc8,2431
563
563
  udata/tests/workers/test_workers_api.py,sha256=x8EkULR9G5TKl5WwjdVwfFEttbudpiWIYN2umETrCzY,8805
564
564
  udata/tests/workers/test_workers_helpers.py,sha256=_983ChRxas3gsjykaEpXWQUbk2qTMJgeFZpIAHTuhLk,647
565
- udata/translations/udata.pot,sha256=SmIBCAdmbjM_zmAfvV4hsDkjX9pHOgTW20YIZggxwTM,41394
565
+ udata/translations/udata.pot,sha256=cYgutjDCbDITzF5fANutHHOdZaVeqLsp3CQt4BrtLA0,44878
566
566
  udata/translations/ar/LC_MESSAGES/udata.mo,sha256=O8keis1Pw3XvdeMS_lt_mdDuK_G2TDZNrp-thSHzOCw,10510
567
567
  udata/translations/ar/LC_MESSAGES/udata.po,sha256=bJnRJzmGmm0bCgQ4_MJ6wZLtRWetcFf3xomBnogzLwM,45777
568
568
  udata/translations/de/LC_MESSAGES/udata.mo,sha256=h-7gcx31SIJLrq5nv_ainmI0k7VAZ7UGqZQQOVwmxZQ,12499
@@ -577,9 +577,9 @@ udata/translations/pt/LC_MESSAGES/udata.mo,sha256=u5JAz24MHYW96FFn_h7lZejdNLc3N5
577
577
  udata/translations/pt/LC_MESSAGES/udata.po,sha256=KflmyEYuCeT9ZzQ2NEy3VtgI1CUUwV4z7xESewVMnCs,46371
578
578
  udata/translations/sr/LC_MESSAGES/udata.mo,sha256=lbVQpVrSh-0xSUOhSyd-ADdhuNH9nd6Eo_T-zk-4Vrk,20441
579
579
  udata/translations/sr/LC_MESSAGES/udata.po,sha256=As8H3QOp3cCd0TgwhHqIH2CRBCFfPoEnbU4dfcBsACM,51344
580
- udata-14.0.1.dev4.dist-info/licenses/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
581
- udata-14.0.1.dev4.dist-info/METADATA,sha256=3bH_Qz_YJsknKA53OaFuFkTMNRYjEx72hKcRiDjGIiM,5085
582
- udata-14.0.1.dev4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
583
- udata-14.0.1.dev4.dist-info/entry_points.txt,sha256=XwrEzP-n_6CKnwTsrNHzyCTWbMwg2FkvxVVB686f_C0,476
584
- udata-14.0.1.dev4.dist-info/top_level.txt,sha256=EF6CE6YSHd_og-8LCEA4q25ALUpWVe8D0okOLdMAE3A,6
585
- udata-14.0.1.dev4.dist-info/RECORD,,
580
+ udata-14.0.2.dev4.dist-info/licenses/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
581
+ udata-14.0.2.dev4.dist-info/METADATA,sha256=nrEkZjguqPaVxPdd6R4Hig_vHIB7YyJysgTtzIpEac8,5085
582
+ udata-14.0.2.dev4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
583
+ udata-14.0.2.dev4.dist-info/entry_points.txt,sha256=XwrEzP-n_6CKnwTsrNHzyCTWbMwg2FkvxVVB686f_C0,476
584
+ udata-14.0.2.dev4.dist-info/top_level.txt,sha256=EF6CE6YSHd_og-8LCEA4q25ALUpWVe8D0okOLdMAE3A,6
585
+ udata-14.0.2.dev4.dist-info/RECORD,,