udata 10.3.0__py2.py3-none-any.whl → 10.3.1__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.
- udata/__init__.py +1 -1
- udata/api/fields.py +8 -0
- udata/commands/fixtures.py +7 -1
- udata/core/activity/api.py +1 -1
- udata/core/dataset/api.py +44 -2
- udata/core/dataset/tasks.py +1 -1
- udata/core/discussions/api.py +113 -10
- udata/core/discussions/csv.py +2 -0
- udata/core/discussions/forms.py +14 -1
- udata/core/discussions/models.py +57 -3
- udata/core/discussions/permissions.py +31 -9
- udata/core/discussions/tasks.py +3 -3
- udata/core/followers/api.py +8 -0
- udata/core/spam/models.py +4 -0
- udata/forms/fields.py +10 -8
- udata/harvest/backends/maaf.py +234 -0
- udata/harvest/backends/maaf.xsd +362 -0
- udata/harvest/tests/person.jsonld +72 -0
- udata/static/chunks/{11.83535504cd650ea08f65.js → 11.51d706fb9521c16976bc.js} +3 -3
- udata/static/chunks/{11.83535504cd650ea08f65.js.map → 11.51d706fb9521c16976bc.js.map} +1 -1
- udata/static/chunks/{13.d9c1735d14038b94c17e.js → 13.f29411b06be1883356a3.js} +2 -2
- udata/static/chunks/{13.d9c1735d14038b94c17e.js.map → 13.f29411b06be1883356a3.js.map} +1 -1
- udata/static/chunks/{17.81c57c0dedf812e43013.js → 17.3bd0340930d4a314ce9c.js} +2 -2
- udata/static/chunks/{17.81c57c0dedf812e43013.js.map → 17.3bd0340930d4a314ce9c.js.map} +1 -1
- udata/static/chunks/{19.df16abde17a42033a7f8.js → 19.8da42e8359d72afc2618.js} +3 -3
- udata/static/chunks/{19.df16abde17a42033a7f8.js.map → 19.8da42e8359d72afc2618.js.map} +1 -1
- udata/static/chunks/{8.462bb3029de008497675.js → 8.54e44b102164ae5e7a67.js} +2 -2
- udata/static/chunks/{8.462bb3029de008497675.js.map → 8.54e44b102164ae5e7a67.js.map} +1 -1
- udata/static/common.js +1 -1
- udata/static/common.js.map +1 -1
- udata/templates/mail/discussion_closed.html +4 -3
- udata/templates/mail/discussion_closed.txt +1 -1
- udata/templates/mail/new_discussion_comment.html +2 -2
- udata/tests/api/test_datasets_api.py +95 -1
- udata/tests/api/test_follow_api.py +46 -0
- udata/tests/test_discussions.py +281 -3
- {udata-10.3.0.dist-info → udata-10.3.1.dist-info}/METADATA +10 -1
- {udata-10.3.0.dist-info → udata-10.3.1.dist-info}/RECORD +42 -39
- {udata-10.3.0.dist-info → udata-10.3.1.dist-info}/entry_points.txt +1 -0
- {udata-10.3.0.dist-info → udata-10.3.1.dist-info}/LICENSE +0 -0
- {udata-10.3.0.dist-info → udata-10.3.1.dist-info}/WHEEL +0 -0
- {udata-10.3.0.dist-info → udata-10.3.1.dist-info}/top_level.txt +0 -0
udata/tests/test_discussions.py
CHANGED
|
@@ -66,6 +66,7 @@ class DiscussionsTest(APITestCase):
|
|
|
66
66
|
|
|
67
67
|
discussion = discussions[0]
|
|
68
68
|
self.assertEqual(discussion.user, user)
|
|
69
|
+
self.assertIsNone(discussion.organization)
|
|
69
70
|
self.assertEqual(len(discussion.discussion), 1)
|
|
70
71
|
self.assertIsNotNone(discussion.created)
|
|
71
72
|
self.assertIsNone(discussion.closed)
|
|
@@ -79,6 +80,63 @@ class DiscussionsTest(APITestCase):
|
|
|
79
80
|
self.assertIsNotNone(message.posted_on)
|
|
80
81
|
self.assertFalse(message.is_spam())
|
|
81
82
|
|
|
83
|
+
def test_new_discussion_on_behalf_of_org(self):
|
|
84
|
+
user = self.login()
|
|
85
|
+
org1 = OrganizationFactory(editors=[user])
|
|
86
|
+
org2 = OrganizationFactory(editors=[user])
|
|
87
|
+
other_org = OrganizationFactory()
|
|
88
|
+
dataset = DatasetFactory()
|
|
89
|
+
|
|
90
|
+
response = self.post(
|
|
91
|
+
url_for("api.discussions"),
|
|
92
|
+
{
|
|
93
|
+
"organization": other_org.id,
|
|
94
|
+
"title": "not allowed",
|
|
95
|
+
"comment": "bla bla",
|
|
96
|
+
"subject": {
|
|
97
|
+
"class": "Dataset",
|
|
98
|
+
"id": dataset.id,
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
)
|
|
102
|
+
self.assert400(response)
|
|
103
|
+
|
|
104
|
+
response = self.post(
|
|
105
|
+
url_for("api.discussions"),
|
|
106
|
+
{
|
|
107
|
+
"organization": org1.id,
|
|
108
|
+
"title": "test title",
|
|
109
|
+
"comment": "bla bla",
|
|
110
|
+
"subject": {
|
|
111
|
+
"class": "Dataset",
|
|
112
|
+
"id": dataset.id,
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
)
|
|
116
|
+
self.assert201(response)
|
|
117
|
+
assert response.json["organization"]["id"] == str(org1.id)
|
|
118
|
+
assert response.json["user"]["id"] == str(user.id)
|
|
119
|
+
assert response.json["discussion"][0]["posted_by_organization"]["id"] == str(org1.id)
|
|
120
|
+
assert response.json["discussion"][0]["posted_by"]["id"] == str(user.id)
|
|
121
|
+
|
|
122
|
+
response = self.post(
|
|
123
|
+
url_for("api.discussion", id=response.json["id"]),
|
|
124
|
+
{"organization": org2.id, "comment": "A comment"},
|
|
125
|
+
)
|
|
126
|
+
self.assert200(response)
|
|
127
|
+
assert response.json["organization"]["id"] == str(org1.id)
|
|
128
|
+
assert response.json["user"]["id"] == str(user.id)
|
|
129
|
+
assert response.json["discussion"][0]["posted_by_organization"]["id"] == str(org1.id)
|
|
130
|
+
assert response.json["discussion"][0]["posted_by"]["id"] == str(user.id)
|
|
131
|
+
assert response.json["discussion"][1]["posted_by_organization"]["id"] == str(org2.id)
|
|
132
|
+
assert response.json["discussion"][1]["posted_by"]["id"] == str(user.id)
|
|
133
|
+
|
|
134
|
+
response = self.post(
|
|
135
|
+
url_for("api.discussion", id=response.json["id"]),
|
|
136
|
+
{"organization": other_org.id, "comment": "A comment"},
|
|
137
|
+
)
|
|
138
|
+
self.assert400(response)
|
|
139
|
+
|
|
82
140
|
@pytest.mark.options(SPAM_WORDS=["spam"])
|
|
83
141
|
def test_spam_in_new_discussion_title(self):
|
|
84
142
|
self.login()
|
|
@@ -574,7 +632,7 @@ class DiscussionsTest(APITestCase):
|
|
|
574
632
|
url_for("api.discussion", id=discussion.id),
|
|
575
633
|
{"comment": "close bla bla", "close": True},
|
|
576
634
|
)
|
|
577
|
-
|
|
635
|
+
self.assert200(response)
|
|
578
636
|
|
|
579
637
|
dataset.reload()
|
|
580
638
|
self.assertEqual(dataset.get_metrics()["discussions"], 0)
|
|
@@ -599,6 +657,22 @@ class DiscussionsTest(APITestCase):
|
|
|
599
657
|
)
|
|
600
658
|
self.assert403(response)
|
|
601
659
|
|
|
660
|
+
def test_close_discussion_without_message(self):
|
|
661
|
+
owner = self.login()
|
|
662
|
+
user = UserFactory()
|
|
663
|
+
dataset = Dataset.objects.create(title="Test dataset", owner=owner)
|
|
664
|
+
message = Message(content="bla bla", posted_by=user)
|
|
665
|
+
discussion = Discussion.objects.create(
|
|
666
|
+
subject=dataset, user=user, title="test discussion", discussion=[message]
|
|
667
|
+
)
|
|
668
|
+
|
|
669
|
+
with assert_emit(on_discussion_closed):
|
|
670
|
+
response = self.post(
|
|
671
|
+
url_for("api.discussion", id=discussion.id),
|
|
672
|
+
{"close": True},
|
|
673
|
+
)
|
|
674
|
+
self.assert200(response)
|
|
675
|
+
|
|
602
676
|
def test_close_discussion_permissions(self):
|
|
603
677
|
dataset = Dataset.objects.create(title="Test dataset")
|
|
604
678
|
user = UserFactory()
|
|
@@ -637,6 +711,207 @@ class DiscussionsTest(APITestCase):
|
|
|
637
711
|
self.assertEqual(dataset.get_metrics()["discussions"], 0)
|
|
638
712
|
self.assertEqual(Discussion.objects(subject=dataset).count(), 0)
|
|
639
713
|
|
|
714
|
+
def test_discussion_permissions(self):
|
|
715
|
+
admin = AdminFactory()
|
|
716
|
+
subject_owner = UserFactory()
|
|
717
|
+
user1 = UserFactory()
|
|
718
|
+
user2 = UserFactory()
|
|
719
|
+
user3 = UserFactory()
|
|
720
|
+
org = OrganizationFactory(
|
|
721
|
+
members=[Member(user=user1, role="editor"), Member(user=user2, role="editor")]
|
|
722
|
+
)
|
|
723
|
+
dataset = Dataset.objects.create(title="Test dataset", owner=subject_owner)
|
|
724
|
+
message = Message(content="bla bla", posted_by=user1)
|
|
725
|
+
message2 = Message(content="bla bla bla", posted_by=user2)
|
|
726
|
+
message3 = Message(content="bla bla bla", posted_by=user2, posted_by_organization=org)
|
|
727
|
+
discussion = Discussion.objects.create(
|
|
728
|
+
subject=dataset,
|
|
729
|
+
user=user1,
|
|
730
|
+
title="test discussion",
|
|
731
|
+
discussion=[message, message2, message3],
|
|
732
|
+
)
|
|
733
|
+
|
|
734
|
+
self.login(admin)
|
|
735
|
+
response = self.get(url_for("api.discussion", id=discussion.id))
|
|
736
|
+
assert response.json["permissions"]["edit"]
|
|
737
|
+
assert response.json["permissions"]["close"]
|
|
738
|
+
assert response.json["permissions"]["delete"]
|
|
739
|
+
assert response.json["discussion"][0]["permissions"]["edit"]
|
|
740
|
+
assert response.json["discussion"][0]["permissions"]["delete"]
|
|
741
|
+
assert response.json["discussion"][1]["permissions"]["edit"]
|
|
742
|
+
assert response.json["discussion"][1]["permissions"]["delete"]
|
|
743
|
+
assert response.json["discussion"][2]["permissions"]["edit"]
|
|
744
|
+
assert response.json["discussion"][2]["permissions"]["delete"]
|
|
745
|
+
|
|
746
|
+
self.login(subject_owner)
|
|
747
|
+
response = self.get(url_for("api.discussion", id=discussion.id))
|
|
748
|
+
assert not response.json["permissions"]["edit"]
|
|
749
|
+
assert response.json["permissions"]["close"]
|
|
750
|
+
assert not response.json["permissions"]["delete"]
|
|
751
|
+
assert not response.json["discussion"][0]["permissions"]["edit"]
|
|
752
|
+
assert not response.json["discussion"][0]["permissions"]["delete"]
|
|
753
|
+
assert not response.json["discussion"][1]["permissions"]["edit"]
|
|
754
|
+
assert not response.json["discussion"][1]["permissions"]["delete"]
|
|
755
|
+
assert not response.json["discussion"][2]["permissions"]["edit"]
|
|
756
|
+
assert not response.json["discussion"][2]["permissions"]["delete"]
|
|
757
|
+
|
|
758
|
+
self.login(user1)
|
|
759
|
+
response = self.get(url_for("api.discussion", id=discussion.id))
|
|
760
|
+
assert response.json["permissions"]["edit"]
|
|
761
|
+
assert response.json["permissions"]["close"]
|
|
762
|
+
assert response.json["permissions"]["delete"]
|
|
763
|
+
assert response.json["discussion"][0]["permissions"]["edit"]
|
|
764
|
+
assert response.json["discussion"][0]["permissions"]["delete"]
|
|
765
|
+
assert not response.json["discussion"][1]["permissions"]["edit"]
|
|
766
|
+
assert not response.json["discussion"][1]["permissions"]["delete"]
|
|
767
|
+
assert response.json["discussion"][2]["permissions"]["edit"]
|
|
768
|
+
assert response.json["discussion"][2]["permissions"]["delete"]
|
|
769
|
+
|
|
770
|
+
self.login(user2)
|
|
771
|
+
response = self.get(url_for("api.discussion", id=discussion.id))
|
|
772
|
+
assert not response.json["permissions"]["edit"]
|
|
773
|
+
assert not response.json["permissions"]["close"]
|
|
774
|
+
assert not response.json["permissions"]["delete"]
|
|
775
|
+
assert not response.json["discussion"][0]["permissions"]["edit"]
|
|
776
|
+
assert not response.json["discussion"][0]["permissions"]["delete"]
|
|
777
|
+
assert response.json["discussion"][1]["permissions"]["edit"]
|
|
778
|
+
assert response.json["discussion"][1]["permissions"]["delete"]
|
|
779
|
+
assert response.json["discussion"][2]["permissions"]["edit"]
|
|
780
|
+
assert response.json["discussion"][2]["permissions"]["delete"]
|
|
781
|
+
|
|
782
|
+
self.login(user3)
|
|
783
|
+
response = self.get(url_for("api.discussion", id=discussion.id))
|
|
784
|
+
assert not response.json["permissions"]["edit"]
|
|
785
|
+
assert not response.json["permissions"]["close"]
|
|
786
|
+
assert not response.json["permissions"]["delete"]
|
|
787
|
+
assert not response.json["discussion"][0]["permissions"]["edit"]
|
|
788
|
+
assert not response.json["discussion"][0]["permissions"]["delete"]
|
|
789
|
+
assert not response.json["discussion"][1]["permissions"]["edit"]
|
|
790
|
+
assert not response.json["discussion"][1]["permissions"]["delete"]
|
|
791
|
+
assert not response.json["discussion"][2]["permissions"]["edit"]
|
|
792
|
+
assert not response.json["discussion"][2]["permissions"]["delete"]
|
|
793
|
+
|
|
794
|
+
discussion_by_org = Discussion.objects.create(
|
|
795
|
+
subject=dataset,
|
|
796
|
+
user=user2,
|
|
797
|
+
organization=org,
|
|
798
|
+
title="test discussion",
|
|
799
|
+
discussion=[message3],
|
|
800
|
+
)
|
|
801
|
+
|
|
802
|
+
self.login(admin)
|
|
803
|
+
response = self.get(url_for("api.discussion", id=discussion_by_org.id))
|
|
804
|
+
assert response.json["permissions"]["edit"]
|
|
805
|
+
assert response.json["permissions"]["close"]
|
|
806
|
+
assert response.json["permissions"]["delete"]
|
|
807
|
+
assert response.json["discussion"][0]["permissions"]["edit"]
|
|
808
|
+
assert response.json["discussion"][0]["permissions"]["delete"]
|
|
809
|
+
|
|
810
|
+
self.login(subject_owner)
|
|
811
|
+
response = self.get(url_for("api.discussion", id=discussion_by_org.id))
|
|
812
|
+
assert not response.json["permissions"]["edit"]
|
|
813
|
+
assert response.json["permissions"]["close"]
|
|
814
|
+
assert not response.json["permissions"]["delete"]
|
|
815
|
+
assert not response.json["discussion"][0]["permissions"]["edit"]
|
|
816
|
+
assert not response.json["discussion"][0]["permissions"]["delete"]
|
|
817
|
+
|
|
818
|
+
self.login(user1)
|
|
819
|
+
response = self.get(url_for("api.discussion", id=discussion_by_org.id))
|
|
820
|
+
assert response.json["permissions"]["edit"]
|
|
821
|
+
assert response.json["permissions"]["close"]
|
|
822
|
+
assert response.json["permissions"]["delete"]
|
|
823
|
+
assert response.json["discussion"][0]["permissions"]["edit"]
|
|
824
|
+
assert response.json["discussion"][0]["permissions"]["delete"]
|
|
825
|
+
|
|
826
|
+
self.login(user2)
|
|
827
|
+
response = self.get(url_for("api.discussion", id=discussion_by_org.id))
|
|
828
|
+
assert response.json["permissions"]["edit"]
|
|
829
|
+
assert response.json["permissions"]["close"]
|
|
830
|
+
assert response.json["permissions"]["delete"]
|
|
831
|
+
assert response.json["discussion"][0]["permissions"]["edit"]
|
|
832
|
+
assert response.json["discussion"][0]["permissions"]["delete"]
|
|
833
|
+
|
|
834
|
+
self.login(user3)
|
|
835
|
+
response = self.get(url_for("api.discussion", id=discussion_by_org.id))
|
|
836
|
+
assert not response.json["permissions"]["edit"]
|
|
837
|
+
assert not response.json["permissions"]["close"]
|
|
838
|
+
assert not response.json["permissions"]["delete"]
|
|
839
|
+
assert not response.json["discussion"][0]["permissions"]["edit"]
|
|
840
|
+
assert not response.json["discussion"][0]["permissions"]["delete"]
|
|
841
|
+
|
|
842
|
+
def test_edit_discussion_title(self):
|
|
843
|
+
admin = self.login(AdminFactory())
|
|
844
|
+
user1 = UserFactory()
|
|
845
|
+
user2 = UserFactory()
|
|
846
|
+
dataset = Dataset.objects.create(title="Test dataset", owner=user1)
|
|
847
|
+
message = Message(content="bla bla", posted_by=user1)
|
|
848
|
+
message2 = Message(content="bla bla bla", posted_by=user2)
|
|
849
|
+
discussion = Discussion.objects.create(
|
|
850
|
+
subject=dataset, user=user1, title="test discussion", discussion=[message, message2]
|
|
851
|
+
)
|
|
852
|
+
self.assertEqual(len(discussion.discussion), 2)
|
|
853
|
+
|
|
854
|
+
response = self.put(url_for("api.discussion", id=discussion.id), {"title": "new title"})
|
|
855
|
+
self.assertStatus(response, 200)
|
|
856
|
+
discussion.reload()
|
|
857
|
+
assert discussion.title == "new title"
|
|
858
|
+
|
|
859
|
+
self.login(admin)
|
|
860
|
+
response = self.put(
|
|
861
|
+
url_for("api.discussion", id=discussion.id),
|
|
862
|
+
{"title": "edit by admin"},
|
|
863
|
+
)
|
|
864
|
+
self.assertStatus(response, 200)
|
|
865
|
+
discussion.reload()
|
|
866
|
+
assert discussion.title == "edit by admin"
|
|
867
|
+
|
|
868
|
+
self.login(user2)
|
|
869
|
+
response = self.put(
|
|
870
|
+
url_for("api.discussion", id=discussion.id),
|
|
871
|
+
{"title": "not allowed"},
|
|
872
|
+
)
|
|
873
|
+
self.assertStatus(response, 403)
|
|
874
|
+
|
|
875
|
+
def test_edit_discussion_comment(self):
|
|
876
|
+
admin = self.login(AdminFactory())
|
|
877
|
+
user = UserFactory()
|
|
878
|
+
dataset = Dataset.objects.create(title="Test dataset", owner=admin)
|
|
879
|
+
message = Message(content="bla bla", posted_by=user)
|
|
880
|
+
message2 = Message(content="bla bla bla", posted_by=user)
|
|
881
|
+
discussion = Discussion.objects.create(
|
|
882
|
+
subject=dataset, user=user, title="test discussion", discussion=[message, message2]
|
|
883
|
+
)
|
|
884
|
+
self.assertEqual(len(discussion.discussion), 2)
|
|
885
|
+
|
|
886
|
+
response = self.put(
|
|
887
|
+
url_for("api.discussion_comment", id=discussion.id, cidx=0), {"comment": "new body"}
|
|
888
|
+
)
|
|
889
|
+
self.assertStatus(response, 200)
|
|
890
|
+
discussion.reload()
|
|
891
|
+
assert discussion.discussion[0].content == "new body"
|
|
892
|
+
|
|
893
|
+
self.login(admin)
|
|
894
|
+
response = self.put(
|
|
895
|
+
url_for("api.discussion_comment", id=discussion.id, cidx=1),
|
|
896
|
+
{"comment": "edit by admin"},
|
|
897
|
+
)
|
|
898
|
+
self.assertStatus(response, 200)
|
|
899
|
+
discussion.reload()
|
|
900
|
+
assert discussion.discussion[1].content == "edit by admin"
|
|
901
|
+
|
|
902
|
+
response = self.put(
|
|
903
|
+
url_for("api.discussion_comment", id=discussion.id, cidx=3),
|
|
904
|
+
{"comment": "overflow edit"},
|
|
905
|
+
)
|
|
906
|
+
self.assertStatus(response, 404)
|
|
907
|
+
|
|
908
|
+
self.login(UserFactory())
|
|
909
|
+
response = self.put(
|
|
910
|
+
url_for("api.discussion_comment", id=discussion.id, cidx=0),
|
|
911
|
+
{"comment": "other user"},
|
|
912
|
+
)
|
|
913
|
+
self.assertStatus(response, 403)
|
|
914
|
+
|
|
640
915
|
def test_delete_discussion_comment(self):
|
|
641
916
|
owner = self.login(AdminFactory())
|
|
642
917
|
user = UserFactory()
|
|
@@ -688,11 +963,12 @@ class DiscussionsTest(APITestCase):
|
|
|
688
963
|
dataset = Dataset.objects.create(title="Test dataset")
|
|
689
964
|
user = UserFactory()
|
|
690
965
|
message = Message(content="bla bla", posted_by=user)
|
|
966
|
+
message2 = Message(content="bla bla bla", posted_by=user)
|
|
691
967
|
discussion = Discussion.objects.create(
|
|
692
|
-
subject=dataset, user=user, title="test discussion", discussion=[message]
|
|
968
|
+
subject=dataset, user=user, title="test discussion", discussion=[message, message2]
|
|
693
969
|
)
|
|
694
970
|
self.login()
|
|
695
|
-
response = self.delete(url_for("api.discussion_comment", id=discussion.id, cidx=
|
|
971
|
+
response = self.delete(url_for("api.discussion_comment", id=discussion.id, cidx=1))
|
|
696
972
|
self.assert403(response)
|
|
697
973
|
|
|
698
974
|
|
|
@@ -827,6 +1103,8 @@ class DiscussionsMailsTest(APITestCase):
|
|
|
827
1103
|
user=poster,
|
|
828
1104
|
title=faker.sentence(),
|
|
829
1105
|
discussion=[message, second_message, closing_message],
|
|
1106
|
+
closed=datetime.utcnow(),
|
|
1107
|
+
closed_by=owner,
|
|
830
1108
|
)
|
|
831
1109
|
|
|
832
1110
|
with capture_mails() as mails:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: udata
|
|
3
|
-
Version: 10.3.
|
|
3
|
+
Version: 10.3.1
|
|
4
4
|
Summary: Open data portal
|
|
5
5
|
Home-page: https://github.com/opendatateam/udata
|
|
6
6
|
Author: Opendata Team
|
|
@@ -139,6 +139,15 @@ It is collectively taken care of by members of the
|
|
|
139
139
|
|
|
140
140
|
# Changelog
|
|
141
141
|
|
|
142
|
+
## 10.3.1 (2025-04-29)
|
|
143
|
+
|
|
144
|
+
- Add archived, deleted and private filter in dataset list api [#3298](https://github.com/opendatateam/udata/pull/3298)
|
|
145
|
+
- Exclude deleted dataservices in csv queryset [#3297](https://github.com/opendatateam/udata/pull/3297)
|
|
146
|
+
- Publish comments on behalf of org, close without message and edit/delete discussions comments [#3295](https://github.com/opendatateam/udata/pull/3295)
|
|
147
|
+
- Migrate MAAF backend from udata-front [#3300](https://github.com/opendatateam/udata/pull/3300)
|
|
148
|
+
- Follow: add user parser argument [#3302](https://github.com/opendatateam/udata/pull/3302)
|
|
149
|
+
- Allow trailing slash to activity route [#3303](https://github.com/opendatateam/udata/pull/3303)
|
|
150
|
+
|
|
142
151
|
## 10.3.0 (2025-04-11)
|
|
143
152
|
|
|
144
153
|
- Skip empty datasets nodes referenced in dataservices before creating an harvest job item [#3285](https://github.com/opendatateam/udata/pull/3285)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
tasks/__init__.py,sha256=nfgZ5nkcoluXMIk52P4-8Rj6xL0Qlm_xSUfWW2aHZfI,8161
|
|
2
2
|
tasks/helpers.py,sha256=70fS9tI_m0DTWmKx9Zl5-LG-nxdz_ZaPyvvsFkN2r48,1091
|
|
3
|
-
udata/__init__.py,sha256=
|
|
3
|
+
udata/__init__.py,sha256=m13KuUbriD7uS66PEpMIXxY9gDtFVhcMwl2KV-WjuiU,98
|
|
4
4
|
udata/api_fields.py,sha256=nv_Nl1Mi-XQ8V08fxmscer13jsNNJgSOOIQEh1itsLQ,30679
|
|
5
5
|
udata/app.py,sha256=xjk2D3EgboYBpTwBwdIxd2klt2yMoWMyCrkry5fz0LA,7292
|
|
6
6
|
udata/assets.py,sha256=H5Hrc2vnKM0IFLyWfLXmJ2Kj35w1i8W1D8Cgy8_cUj4,657
|
|
@@ -28,7 +28,7 @@ udata/admin/views.py,sha256=00fI1O55apOlwIc0li2BdvEEGMd5l5isd5A_eHvzu3Y,331
|
|
|
28
28
|
udata/api/__init__.py,sha256=bJQSQYvFpe0eHzLigLlzFr9Huk4JSymV2VD3cByeeao,11899
|
|
29
29
|
udata/api/commands.py,sha256=LJ4u-yhGij7QuH7OR92u3n7BEptqWMjDwMnG8pqdBxo,3523
|
|
30
30
|
udata/api/errors.py,sha256=P_UigBf6HAL73LbXKULagmp5Cuw-H1Ms6LmXxOmFIeg,211
|
|
31
|
-
udata/api/fields.py,sha256=
|
|
31
|
+
udata/api/fields.py,sha256=SecrPTc0-64vDAdWjAz_UIN-f2hX6ek2xyalFh45aRE,4360
|
|
32
32
|
udata/api/oauth2.py,sha256=_sHQjcj67y601vXVhw6DAGJeZcj8itSx1myhsnFcNk4,12025
|
|
33
33
|
udata/api/parsers.py,sha256=iQEwgMwdVz_gXlVZYaRCGrUFWvcf7_8uCIxw7Iw-hpw,1405
|
|
34
34
|
udata/api/signals.py,sha256=t8s7tF1KYeAygqbR4GdA76_UYvthAsyRbJaqsMmFsK4,162
|
|
@@ -42,7 +42,7 @@ udata/commands/__init__.py,sha256=Won_rW_hIU9TA3o4oNe6kI46l1fnDBM_oW0Hc1XS9F8,77
|
|
|
42
42
|
udata/commands/cache.py,sha256=bLdrf_fCWFYX9ULlL2ADsZRwijkI4pArsJxfx24OivM,341
|
|
43
43
|
udata/commands/db.py,sha256=LKFKduP-OiO_Vtp7OalcIZmcUcDAESkLeg1guLliTvQ,19589
|
|
44
44
|
udata/commands/dcat.py,sha256=f6jT2AGZem-w1CaRH_ahfWB9A4oCDvjG13tPmBpeCqw,3910
|
|
45
|
-
udata/commands/fixtures.py,sha256=
|
|
45
|
+
udata/commands/fixtures.py,sha256=ezVeodPeyL4AtANea0GPlbEZgaSjsBkuy1pxIei_yJE,11239
|
|
46
46
|
udata/commands/images.py,sha256=0rVojLik5DYgJ6W4uNEfMP2g2QUU2V761tj3z6lo8no,2050
|
|
47
47
|
udata/commands/info.py,sha256=A5WMo3_N_rlt3cySVJrZqKWrbIowX97ZLKMIFQE5178,1545
|
|
48
48
|
udata/commands/init.py,sha256=8CpH8MklzPkpxczs43lFM5ZNrHCJRbUtzHapgYNHs7M,1520
|
|
@@ -56,7 +56,7 @@ udata/commands/tests/test_fixtures.py,sha256=acFmE08S4B0GHJP4nN1dfRNcKjcsE88Xusy
|
|
|
56
56
|
udata/core/__init__.py,sha256=O7C9WWCXiLWnWPnPbFRszWhOmvRQiI4gD-5qkWvPGRo,385
|
|
57
57
|
udata/core/owned.py,sha256=LCnnKzx1h1oDc_YVbYudmcnIRwo7GKpOcRsZKxwZfUk,5561
|
|
58
58
|
udata/core/activity/__init__.py,sha256=OaiFyq7HB4xL4SuMPD1N8IFNpntwx9ZayVzelciOieI,298
|
|
59
|
-
udata/core/activity/api.py,sha256=
|
|
59
|
+
udata/core/activity/api.py,sha256=uSWCFin5nBfrFyOZxbSulFiwWagnEWF996sy-rv-Dmw,3855
|
|
60
60
|
udata/core/activity/models.py,sha256=Ln9YUsdCBMFmUlw5GA2gIJ50sMorMFzZGo8u8sy7pIE,2072
|
|
61
61
|
udata/core/activity/signals.py,sha256=Io2A43as3yR-DZ5R3wzM_bTpn528pxWsZDUFZ9xtj2Y,191
|
|
62
62
|
udata/core/activity/tasks.py,sha256=lEnISnHXPMeeErWIhJbSYOlxnrc6yAKC-T28qTEWQn0,1235
|
|
@@ -93,7 +93,7 @@ udata/core/dataservices/tasks.py,sha256=d2tG1l6u8-eUKUYBOgnCsQLbLmLgJXU-DOzZWhhL
|
|
|
93
93
|
udata/core/dataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
94
94
|
udata/core/dataset/actions.py,sha256=mX6xox0PiMrbcAPZ3VZsI26rfM-ciYfEXxN6sqqImKA,1222
|
|
95
95
|
udata/core/dataset/activities.py,sha256=v8k1jwhdx62Z2ARZq8Q-x86OWSsBK99hRloPl74OCgA,1502
|
|
96
|
-
udata/core/dataset/api.py,sha256=
|
|
96
|
+
udata/core/dataset/api.py,sha256=hPkjnNDlPxix4tSQZdSn0hq1-A6RNCaH44fcvDmHRnQ,32623
|
|
97
97
|
udata/core/dataset/api_fields.py,sha256=ObM2ubDowxJZGxsyC8nDiLP7XGeT8JQbLN4YqApzxy8,17529
|
|
98
98
|
udata/core/dataset/apiv2.py,sha256=TxF2ytRFi7ePlZggu_rLp_Kw6vz0Yi8eCD37MC66DOc,17783
|
|
99
99
|
udata/core/dataset/commands.py,sha256=__hPAk_6iHtgMnEG51ux0vbNWJHxUjXhi1ukH4hF5jY,3714
|
|
@@ -109,22 +109,22 @@ udata/core/dataset/preview.py,sha256=IwCqiNTjjXbtA_SSKF52pwnzKKEz0GyYM95QNn2Dkog
|
|
|
109
109
|
udata/core/dataset/rdf.py,sha256=HkjzcWgq9AfPvUGMRI7-ufRrgnlfBmP8crbgRhg6Lz4,31789
|
|
110
110
|
udata/core/dataset/search.py,sha256=E7LqHBnq3sMefvmLwTpiw-Ovem2a3NJswHesRjctboE,5627
|
|
111
111
|
udata/core/dataset/signals.py,sha256=WN4sV-lJlNsRkhcnhoy0SYJvCoYmK_5QFYZd1u-h4gs,161
|
|
112
|
-
udata/core/dataset/tasks.py,sha256=
|
|
112
|
+
udata/core/dataset/tasks.py,sha256=bILggOtDolm0XnpAD5U3E5JINbFd8Pfvdo3UFNZbGFA,10023
|
|
113
113
|
udata/core/discussions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
114
114
|
udata/core/discussions/actions.py,sha256=kjdBLDIeu0yWTSxQGgOpN1WoxUqbMygn4SiBk_S9T5I,1051
|
|
115
|
-
udata/core/discussions/api.py,sha256=
|
|
115
|
+
udata/core/discussions/api.py,sha256=u9atdyPVGpyLin4IRF1ZhMp6gRmtJvV0Y8ksic_nbJo,12807
|
|
116
116
|
udata/core/discussions/constants.py,sha256=8crl2Lmkv9dmJe4KACM0JJcpoHePmGtmvI6ixfvukhc,277
|
|
117
|
-
udata/core/discussions/csv.py,sha256=
|
|
117
|
+
udata/core/discussions/csv.py,sha256=Z3ImKFOpb3AlFne4hNojspgKdeFsE9Of_VAIiz5gSoU,776
|
|
118
118
|
udata/core/discussions/factories.py,sha256=CgQaUmmyDu90XtyBsqXVa-TmZMrN7Dwuu1Cnr5wNrVc,350
|
|
119
|
-
udata/core/discussions/forms.py,sha256=
|
|
119
|
+
udata/core/discussions/forms.py,sha256=sR8tFBIBh-Rbx9VPzFzG1N54QY1y7UrdeboQ_60gXXQ,1265
|
|
120
120
|
udata/core/discussions/metrics.py,sha256=WMalLO9GEHXlqE2WbZX-HQUpvte6cRwuHuoL96QwWSg,354
|
|
121
|
-
udata/core/discussions/models.py,sha256=
|
|
121
|
+
udata/core/discussions/models.py,sha256=8No0ndmy5Q9OphBedPCiwTpXKA4zTQxzdq9ScAOt8kA,5993
|
|
122
122
|
udata/core/discussions/notifications.py,sha256=5MuoZDPmmvkloZ3i8I6TELgE1KXZ_cB9QiDerFBD9dM,1052
|
|
123
|
-
udata/core/discussions/permissions.py,sha256=
|
|
123
|
+
udata/core/discussions/permissions.py,sha256=VY2_PEsazz1fBgCX9-K-_spRgxUoNY4HuNDShqZjw6E,1583
|
|
124
124
|
udata/core/discussions/signals.py,sha256=tJ83RJIsBAny08Q6IDwehE6lDDRf6ynIFCl0WqnayoU,543
|
|
125
|
-
udata/core/discussions/tasks.py,sha256=
|
|
125
|
+
udata/core/discussions/tasks.py,sha256=j78n9Pv04ftyt5KJHVZQwaxjgxDqyc9jbV49286A0wE,2761
|
|
126
126
|
udata/core/followers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
127
|
-
udata/core/followers/api.py,sha256=
|
|
127
|
+
udata/core/followers/api.py,sha256=ShJ6DPjpAAQLM51gjMWf7d4TZjZA2VqP8I2YBHPCfhA,2777
|
|
128
128
|
udata/core/followers/metrics.py,sha256=nKgoiM2Gu-XHrgEf9duW1My66zFSKbmw25BGqo5wWtY,190
|
|
129
129
|
udata/core/followers/models.py,sha256=PvExrmKbdr0oFjoMYfg1ZUuFlPYGCKKwrE0_ouPaILs,1122
|
|
130
130
|
udata/core/followers/signals.py,sha256=q0su1eArVO1pnCoNFDieG-kW3iL-hLuXTmnU1-NXNF0,528
|
|
@@ -195,7 +195,7 @@ udata/core/spam/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
195
195
|
udata/core/spam/api.py,sha256=eqmDB4_VF5EM92675FqFmk4Be5TAnu87dmSVtgXKF4A,1740
|
|
196
196
|
udata/core/spam/constants.py,sha256=dTj0GyPH2zdxhurxva2CGnL-3WwqZETyt5vYQhmVpow,144
|
|
197
197
|
udata/core/spam/fields.py,sha256=UFb6rWpzWXdBgp1oag3WnB2vE3nTxyQDA_aYmS99LSM,348
|
|
198
|
-
udata/core/spam/models.py,sha256=
|
|
198
|
+
udata/core/spam/models.py,sha256=QlXgUViL6gsRcQo_9oY3S4q02a636tn8hgebkroovNA,8336
|
|
199
199
|
udata/core/spam/signals.py,sha256=j6F0gjmSv1sb9xcJgMHO7qf-Zid2Vz2hDVgotz14zdE,159
|
|
200
200
|
udata/core/spam/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
201
201
|
udata/core/spam/tests/test_spam.py,sha256=Yu06Z3hU-XPX51mvdgH_nHQFeug_PXWy6P7QxNDaKEI,677
|
|
@@ -273,7 +273,7 @@ udata/features/transfer/models.py,sha256=sFmdbEHL7eUxYe2XdtjZ2zhrUWOW_ryP_5T_8N1
|
|
|
273
273
|
udata/features/transfer/notifications.py,sha256=jeH5buqTuWcokgXfEj-EZ7C3YCrtw-NikfrH2bqFyHM,1121
|
|
274
274
|
udata/features/transfer/permissions.py,sha256=0Iwt_I3S3QACpq4Ba6Ovb8RUBuozj2pbXDtFFp9jdLI,953
|
|
275
275
|
udata/forms/__init__.py,sha256=OXNShgt05tADLYQ-cXPdB16qQtj2i48GxSsCVdR6cfI,843
|
|
276
|
-
udata/forms/fields.py,sha256=
|
|
276
|
+
udata/forms/fields.py,sha256=Wzf2FDLPkQcrUWvf8vqT0putvrFPu7kA3jREdSPPA_0,29689
|
|
277
277
|
udata/forms/validators.py,sha256=CRgmB6oow5O8LDR45LajlJJ9HX3RBCI08fapoWMH1vo,2727
|
|
278
278
|
udata/forms/widgets.py,sha256=XMVxBlQMGfb0nQvqwLMsAVcEdsBdaZGQZ82F81FdmlM,1332
|
|
279
279
|
udata/frontend/__init__.py,sha256=Aa5BX19jTAcjGiGKszPabbOju5thvA7XFz4aYvxwXQw,3567
|
|
@@ -294,8 +294,11 @@ udata/harvest/tasks.py,sha256=ddJtvE0s-kAYt27-rKH6n8U8vKD8qKczlJtdBJzMUns,1718
|
|
|
294
294
|
udata/harvest/backends/__init__.py,sha256=QjoFfBJfpw_xgk5YYWI1SgKJOMEmTMlxSfW79GNkSTI,459
|
|
295
295
|
udata/harvest/backends/base.py,sha256=2wyfw83e3xGQcHnQI-z26g1dg-uVtWcDgzsBk7iGX3Y,17480
|
|
296
296
|
udata/harvest/backends/dcat.py,sha256=PSM7p71T8I_onlOJlTPixIPYHWALKOSygczFrT2gvBI,18689
|
|
297
|
+
udata/harvest/backends/maaf.py,sha256=N7ty8ZWO9pfKPtZRk1wTaJ5pY6qi-0-GtF1p8jiYiY4,8102
|
|
298
|
+
udata/harvest/backends/maaf.xsd,sha256=vEyG8Vqw7Yn_acjRdXjqUJgxOj4pv8bibep-FX-f3BQ,18322
|
|
297
299
|
udata/harvest/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
298
300
|
udata/harvest/tests/factories.py,sha256=euEaDDXJzbctMOzgdiio7oq9AVVSLcvORNTi_fwQBpE,2283
|
|
301
|
+
udata/harvest/tests/person.jsonld,sha256=I7Ynh-PQlNeD51I1LrCgYOEjhL-WBeb65xzIE_sHuAA,3230
|
|
299
302
|
udata/harvest/tests/test_actions.py,sha256=Hm5MpOEFXBvFzcNMu7hvrWIiP6fiOXLuDOyrykL-4tc,25224
|
|
300
303
|
udata/harvest/tests/test_api.py,sha256=dyCXhKgOO0XmCPgH_36sob8WVhtMB2WX1johbfzJtDI,21553
|
|
301
304
|
udata/harvest/tests/test_base_backend.py,sha256=ow8ecGtD836mUqyPWYjkS5nx0STyT5RMLgBdDyOhts4,19233
|
|
@@ -436,8 +439,8 @@ udata/static/admin.css,sha256=gPM7oSehylBXQXyv0-gQ1LuyJiI1STQ_swM4CHjq_cs,185748
|
|
|
436
439
|
udata/static/admin.css.map,sha256=dzFd_AL3pQPFiww5oRwqnubDGJ9HNtYuAaiggLTjjB0,627543
|
|
437
440
|
udata/static/admin.js,sha256=iQnNCFKqwiSIMyJIeDBAD_gEwv8fABrzK5CoK3PZZME,1330409
|
|
438
441
|
udata/static/admin.js.map,sha256=09cK62bu_h0M4ajLf-Y2-sQCUFYPWKRw1PCQWQvfQyM,8518351
|
|
439
|
-
udata/static/common.js,sha256=
|
|
440
|
-
udata/static/common.js.map,sha256=
|
|
442
|
+
udata/static/common.js,sha256=cnMXiDt606cURiHYfT7hvv7AAhJy71Kjq-eplPpM--Q,2252
|
|
443
|
+
udata/static/common.js.map,sha256=HbKmyZs-_xKveOhoUhu_wuWRKcLcKQs5Az7-KDOeSaI,14137
|
|
441
444
|
udata/static/fontawesome-webfont.eot,sha256=e_yrbbmdXPvxcFygU23ceFhUMsxfpBu9etDwCQM7KXk,165742
|
|
442
445
|
udata/static/fontawesome-webfont.svg,sha256=rWFXkmwWIrpOHQPUePFUE2hSS_xG9R5C_g2UX37zI-Q,444379
|
|
443
446
|
udata/static/fontawesome-webfont.ttf,sha256=qljzPyOaD7AvXHpsRcBD16msmgkzNYBmlOzW1O3A1qg,165548
|
|
@@ -456,24 +459,24 @@ udata/static/chunks/1.0a96f54313c89e541ccb.js,sha256=A-lYXUeTLFOd_al9J_EpYMsbJZR
|
|
|
456
459
|
udata/static/chunks/1.0a96f54313c89e541ccb.js.map,sha256=Z4uWu-Bwj4JnQ49hqzkbRrfbtRUm65X93JQyDV6aLTM,1741737
|
|
457
460
|
udata/static/chunks/10.471164b2a9fe15614797.js,sha256=sZ7HhLG8c-gdmtSlZHmjt7-vtu0AIGy89qZmAduSEyM,414740
|
|
458
461
|
udata/static/chunks/10.471164b2a9fe15614797.js.map,sha256=qmVKIeXYE9_GW-vnDrt0oj0KbUXURInBUvc9i6mZRuo,2736059
|
|
459
|
-
udata/static/chunks/11.
|
|
460
|
-
udata/static/chunks/11.
|
|
462
|
+
udata/static/chunks/11.51d706fb9521c16976bc.js,sha256=7vyFwTUxeDitXti-Nm29VxQfCphUgO5i9cQwdbztJJg,395562
|
|
463
|
+
udata/static/chunks/11.51d706fb9521c16976bc.js.map,sha256=Bu6vERhr4jiQ6PRN53Ynh8wME5stIE1SC794VSsINrs,2268951
|
|
461
464
|
udata/static/chunks/12.1be61e0201691821bff6.js,sha256=oveRcMtBsi97LUeAX86LjSAEVIpNxfWGHVovetKfPTw,421097
|
|
462
465
|
udata/static/chunks/12.1be61e0201691821bff6.js.map,sha256=ikkgGwMdOXW4ZXyucmqrxLqJQHIcXJJoMMNt01QFrZM,2442221
|
|
463
|
-
udata/static/chunks/13.
|
|
464
|
-
udata/static/chunks/13.
|
|
466
|
+
udata/static/chunks/13.f29411b06be1883356a3.js,sha256=QbmoNI_MwccyLEaOLPe4KyWDA5mrQRrRaGd9Z72zQp0,420590
|
|
467
|
+
udata/static/chunks/13.f29411b06be1883356a3.js.map,sha256=dB1whN7IEM_S4baXdZTTOBnXTGuzdB3ZCT9xbQK5sao,2430624
|
|
465
468
|
udata/static/chunks/14.bc3f6bc0a67517e7b30f.js,sha256=SLlPbF5r7gOcZKPibWUh5BmsKF1jN8FwOUbiZ8i76EU,290368
|
|
466
469
|
udata/static/chunks/14.bc3f6bc0a67517e7b30f.js.map,sha256=3Lg42qlM8-ho4unygukS9WvltNoIDJkMuTP7erZmYEI,1636918
|
|
467
470
|
udata/static/chunks/15.2f5d8e3d4aa4c46188d7.js,sha256=gcYH_y6xCl3LbMKg_epxR5IntnEk7X119Evs9up1i7Q,138967
|
|
468
471
|
udata/static/chunks/15.2f5d8e3d4aa4c46188d7.js.map,sha256=RPoT4EwQaWz3-puzfSV9kx511PK7RYPmveQFImM2BgA,702620
|
|
469
472
|
udata/static/chunks/16.aaa39ef2d7e82594efc8.js,sha256=1J9T7hgzq1culb_vcXcRvMwt59pJx5Yv-oTU8mUoQDs,228559
|
|
470
473
|
udata/static/chunks/16.aaa39ef2d7e82594efc8.js.map,sha256=Oc67ghT4gTY2r8H_cfy3tS6o-WyjvXkVc4xXqq0yBcQ,1574395
|
|
471
|
-
udata/static/chunks/17.
|
|
472
|
-
udata/static/chunks/17.
|
|
474
|
+
udata/static/chunks/17.3bd0340930d4a314ce9c.js,sha256=GWiultMJSKhkUkGbVAcSGUe1wg_AGWfgGmtb7HcH_eI,236702
|
|
475
|
+
udata/static/chunks/17.3bd0340930d4a314ce9c.js.map,sha256=2vbovBs6N5jhEwnxLB4jTyZYgvsdG_KS7p9_ILBJ46w,1289996
|
|
473
476
|
udata/static/chunks/18.56444ebd2456a4ba2201.js,sha256=o78S_10_0k6kL0HbpDlbKZ5tZ-DCe6Y9XBex-SFS_s4,50384
|
|
474
477
|
udata/static/chunks/18.56444ebd2456a4ba2201.js.map,sha256=Xdv5UJ1TG-LZIlUjZm-yv59KA1omSq2dr8Ukfec46UE,277805
|
|
475
|
-
udata/static/chunks/19.
|
|
476
|
-
udata/static/chunks/19.
|
|
478
|
+
udata/static/chunks/19.8da42e8359d72afc2618.js,sha256=_fLL-fYLi7nXZZg5-4hEU-tbR0K9auq21h2SAg-Jta8,203418
|
|
479
|
+
udata/static/chunks/19.8da42e8359d72afc2618.js.map,sha256=xHCkZGxv7IYB4gCYmwruU8lUdeBx-2stSwJYhG0u8Co,1079969
|
|
477
480
|
udata/static/chunks/2.c67aa76cc078c193aed5.js,sha256=BjpQndwBdg9AT2lrY1TAgMfPbMvRytp33yI9YOgCOqc,276597
|
|
478
481
|
udata/static/chunks/2.c67aa76cc078c193aed5.js.map,sha256=FnPh12lCwilnq1jRp-d7226H5kpaA4-raWEk1Q0p42M,1556097
|
|
479
482
|
udata/static/chunks/20.3d4e02d1205a3c9e26c5.js,sha256=hRFQGBcks3lD-R4mNcNelqbr9kjz8jTtPee1lDWAVhY,36764
|
|
@@ -510,8 +513,8 @@ udata/static/chunks/6.d663709d877baa44a71e.js,sha256=hVRqq0dmyZJ8w6MdO9wUftY_doZ
|
|
|
510
513
|
udata/static/chunks/6.d663709d877baa44a71e.js.map,sha256=WlChg1hCzjGyTO2mbICQpPhH5i7fjRC6ajr3g6unbtc,3783190
|
|
511
514
|
udata/static/chunks/7.896bbffe39433bb598f7.js,sha256=C1NrGe6wrptQFYCCmITtx12dGqfaO7136-9BD6m05Ts,157150
|
|
512
515
|
udata/static/chunks/7.896bbffe39433bb598f7.js.map,sha256=aZB8qYRkX4oqSugjG69tMlv64YIW5LPXF_8uACMHMTw,813014
|
|
513
|
-
udata/static/chunks/8.
|
|
514
|
-
udata/static/chunks/8.
|
|
516
|
+
udata/static/chunks/8.54e44b102164ae5e7a67.js,sha256=YNXvol8wHKSc2w3M7BBe8jeYUBf-vgTHZuw7-f_zKK8,222856
|
|
517
|
+
udata/static/chunks/8.54e44b102164ae5e7a67.js.map,sha256=zUv1SoYViHggRYIzFTM_ZQLwQVBYimlX0j87s7aZn1U,1205076
|
|
515
518
|
udata/static/chunks/9.07515e5187f475bce828.js,sha256=mJ8H3nJBaPXY1-hxWPdOD8-hQwP3k6prsfPwf_5wuas,416716
|
|
516
519
|
udata/static/chunks/9.07515e5187f475bce828.js.map,sha256=7cfRtXVGvJwrNXWVE8xaLjvQQoy9xgR6fIOmlPDJSDA,2746303
|
|
517
520
|
udata/storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -542,8 +545,8 @@ udata/templates/mail/badge_added_public_service.txt,sha256=dIZKOrPllZc_torK9xCdJ
|
|
|
542
545
|
udata/templates/mail/base.html,sha256=ZhMwp8gSJ7QtBYJXB8CY54wj6nb7lFYq7nASStFBM2s,7064
|
|
543
546
|
udata/templates/mail/base.txt,sha256=epaSraWLlrXYEovdVROhxgOAsJmZI6RXxpNwtOX_UI4,176
|
|
544
547
|
udata/templates/mail/button.html,sha256=FdCKFJYclhjDUh7CddHx8qcQjJF_7mF0s7mG_tb9cL8,417
|
|
545
|
-
udata/templates/mail/discussion_closed.html,sha256=
|
|
546
|
-
udata/templates/mail/discussion_closed.txt,sha256=
|
|
548
|
+
udata/templates/mail/discussion_closed.html,sha256=BRq06rUBZG0T54JkHWdwlsEvT5XetwOgziaKTJzT62Y,1208
|
|
549
|
+
udata/templates/mail/discussion_closed.txt,sha256=hFBSfMmYFZisWGCz3zuAtbHWTXRB3mSqhVHvePhvQpc,393
|
|
547
550
|
udata/templates/mail/frequency_reminder.html,sha256=pP42w9H6UrL3kfYLqNbLFRMa-QHpdw4DoWLV8bsOPqQ,1192
|
|
548
551
|
udata/templates/mail/frequency_reminder.txt,sha256=8F5RaIWsXRY74QjynEGxvVkIlRtRJpVr2rU-89hJi4c,734
|
|
549
552
|
udata/templates/mail/inactive_account_deleted.html,sha256=W27Os2tZioe7Ip4ZxHswNq8TAls1U0emZEHK4Qo2Kpc,196
|
|
@@ -554,7 +557,7 @@ udata/templates/mail/membership_request.html,sha256=5eyw4wF9rHmZ2zw_i2_voqPlaKYh
|
|
|
554
557
|
udata/templates/mail/membership_request.txt,sha256=ASTEwRbBXFwfL981IzEox7Z9-8sLyT9bH7--thn_4PE,472
|
|
555
558
|
udata/templates/mail/new_discussion.html,sha256=RJzClR6PXC76odAVzUsdep_8-zlya3hzN9vHFRFVm4E,1103
|
|
556
559
|
udata/templates/mail/new_discussion.txt,sha256=qegi6fjYyuVQ47BthJw7qrBotRzBj8uafZXJyJsZMnw,417
|
|
557
|
-
udata/templates/mail/new_discussion_comment.html,sha256=
|
|
560
|
+
udata/templates/mail/new_discussion_comment.html,sha256=IBNRgiW6v7WOfbIV05HlEPFwzalxrJwlY3IoPvVU9Rc,1176
|
|
558
561
|
udata/templates/mail/new_discussion_comment.txt,sha256=LfNI8kWtIkSyNlrgKwLdlGh1b0q6Dr87zgSE6Gs-ioU,397
|
|
559
562
|
udata/templates/mail/new_member.html,sha256=zPKIDhEMarp-Zmc7pNkMeOA7Tbcj1gQzLvLiDYX-q14,746
|
|
560
563
|
udata/templates/mail/new_member.txt,sha256=IMfbKEi-QUcnZolsxc-WT7RPpvY6QJWvx4X19qPT0y8,250
|
|
@@ -600,7 +603,7 @@ udata/tests/test_activity.py,sha256=x-pDK6VW9wAG0uxYRZQ3DWTRjfCU729iaMGMJb1rWYU,
|
|
|
600
603
|
udata/tests/test_api_fields.py,sha256=k1NkSgHSPZd1YTfKwXKpoPQsA1lrR6FOogcePK_U5X0,11307
|
|
601
604
|
udata/tests/test_cors.py,sha256=b_pyxKeIyqhnsXxXryPf4d0V0QxaLQ1P_VjY89Q_j3g,3233
|
|
602
605
|
udata/tests/test_dcat_commands.py,sha256=fDAnAjkja8AXw_qzaAWnVTgglkBAvK2mjPMHUCtqrrU,919
|
|
603
|
-
udata/tests/test_discussions.py,sha256=
|
|
606
|
+
udata/tests/test_discussions.py,sha256=LO6ggxuiZqfPHNOGJ_xG5KeyKNBOFPcqKUaCEFgIrm0,46070
|
|
604
607
|
udata/tests/test_i18n.py,sha256=u60344JNRG_8s0t89ghXtQ1FbF4TayEHBzuBFxqnQ_Y,3152
|
|
605
608
|
udata/tests/test_linkchecker.py,sha256=W8jrwKYXM8wWXZFjiaBwpWGRBhZ8bsSHGHzL9voDN7U,10218
|
|
606
609
|
udata/tests/test_mail.py,sha256=8IHklIeImYQn7GZVAmuvIeMnGU03X29z0gAfi9nR8vE,3816
|
|
@@ -622,9 +625,9 @@ udata/tests/api/test_auth_api.py,sha256=OMRlY0OQt60j5N4A-N3HdWTuffOjRlFHkz5a3jJF
|
|
|
622
625
|
udata/tests/api/test_base_api.py,sha256=2w_vz0eEuq3P3aN-ByvxGc3VZAo7XtgatFfcrzf2uEU,2244
|
|
623
626
|
udata/tests/api/test_contact_points.py,sha256=X_RWD_xCfR8WchhHfKEt5mxMHY77OmTyguNKCsZftdE,5337
|
|
624
627
|
udata/tests/api/test_dataservices_api.py,sha256=jntjiLUWfAeFj-8VW3szcHLSNKSp8qFopUDAC5bxWuY,24102
|
|
625
|
-
udata/tests/api/test_datasets_api.py,sha256=
|
|
628
|
+
udata/tests/api/test_datasets_api.py,sha256=Cp0SeDjj_Yjf3aNcSStHbFm4kaxIAn8rOCIpX60I7aM,94261
|
|
626
629
|
udata/tests/api/test_fields.py,sha256=OW85Z5MES5HeWOpapeem8OvR1cIcrqW-xMWpdZO4LZ8,1033
|
|
627
|
-
udata/tests/api/test_follow_api.py,sha256=
|
|
630
|
+
udata/tests/api/test_follow_api.py,sha256=XP6I96JUNT6xjGcQOF7pug_T_i67HzCiOGLaPdpfpEQ,4912
|
|
628
631
|
udata/tests/api/test_me_api.py,sha256=YPd8zmR3zwJKtpSqz8nY1nOOMyXs66INeBwyhg5D0Us,13846
|
|
629
632
|
udata/tests/api/test_organizations_api.py,sha256=jDCGw5BZ2Ps6S1xxp5hRi8XsrmR8DE22tflRPGtUYcc,37527
|
|
630
633
|
udata/tests/api/test_reports_api.py,sha256=fCSz9NwMXBs6cxdXBVVI6y564AtovmZYw3xkgxQ9KE8,6217
|
|
@@ -721,9 +724,9 @@ udata/translations/pt/LC_MESSAGES/udata.mo,sha256=xmSQ7RTl9XV24Vq3A7f_NIRDrOJwbs
|
|
|
721
724
|
udata/translations/pt/LC_MESSAGES/udata.po,sha256=PXrrhfIjZxheUotQan9VVh1fvNHSzeMAitaouIHaR7U,46793
|
|
722
725
|
udata/translations/sr/LC_MESSAGES/udata.mo,sha256=1pAf_rXvbOoO_jjZmH77GbzvdT_YtPTJKFumMnMto2g,29169
|
|
723
726
|
udata/translations/sr/LC_MESSAGES/udata.po,sha256=AalMHaFLZobKmuAnZ4X1rQtk46NdW2rktMFQHD5DTcM,53768
|
|
724
|
-
udata-10.3.
|
|
725
|
-
udata-10.3.
|
|
726
|
-
udata-10.3.
|
|
727
|
-
udata-10.3.
|
|
728
|
-
udata-10.3.
|
|
729
|
-
udata-10.3.
|
|
727
|
+
udata-10.3.1.dist-info/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
|
|
728
|
+
udata-10.3.1.dist-info/METADATA,sha256=GX128Q1LL-U_c4eKRP9tz-2Yt4qSVo-na2jFvYL-jkM,144872
|
|
729
|
+
udata-10.3.1.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
|
|
730
|
+
udata-10.3.1.dist-info/entry_points.txt,sha256=ETvkR4r6G1duBsh_V_fGWENQy17GTFuobi95MYBAl1A,498
|
|
731
|
+
udata-10.3.1.dist-info/top_level.txt,sha256=39OCg-VWFWOq4gCKnjKNu-s3OwFlZIu_dVH8Gl6ndHw,12
|
|
732
|
+
udata-10.3.1.dist-info/RECORD,,
|
|
@@ -13,3 +13,4 @@ robohash = udata.features.identicon.backends:robohash
|
|
|
13
13
|
csw-dcat = udata.harvest.backends.dcat:CswDcatBackend
|
|
14
14
|
csw-iso-19139 = udata.harvest.backends.dcat:CswIso19139DcatBackend
|
|
15
15
|
dcat = udata.harvest.backends.dcat:DcatBackend
|
|
16
|
+
maaf = udata.harvest.backends.maaf:MaafBackend
|
|
File without changes
|
|
File without changes
|
|
File without changes
|