Skip to content

Commit 9f3a372

Browse files
committed
revert visible_by_user change, change description
1 parent 1f4df7f commit 9f3a372

5 files changed

Lines changed: 36 additions & 8 deletions

File tree

udata/core/dataset/api.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,9 @@ class DatasetListAPI(API):
308308
def get(self):
309309
"""List or search all datasets"""
310310
args = dataset_parser.parse()
311-
datasets = Dataset.objects.visible_by_user(current_user)
311+
datasets = Dataset.objects.visible_by_user(
312+
current_user, Q(published_at__ne=None, archived=None, deleted=None)
313+
)
312314
datasets = dataset_parser.parse_filters(datasets, args)
313315
sort = args["sort"] or ("$text_score" if args["q"] else None) or DEFAULT_SORTING
314316
return datasets.order_by(sort).paginate(args["page"], args["page_size"])

udata/core/dataset/api_fields.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@
353353
description="Is the dataset private (DEPRECATED: use published_at instead)"
354354
),
355355
"published_at": fields.ISODateTime(
356-
description="Publication date (null if unpublished/private)"
356+
description="Last publication date, null if unpublished/private. Updated each time the dataset is republished."
357357
),
358358
"tags": fields.List(fields.String),
359359
"badges": fields.List(

udata/core/dataset/apiv2.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import logging
22

3+
import mongoengine
34
from flask import abort, request, url_for
45
from flask_login import current_user
56
from flask_restx import marshal
@@ -128,7 +129,7 @@
128129
description="Is the dataset private (DEPRECATED: use published_at instead)"
129130
),
130131
"published_at": fields.ISODateTime(
131-
description="Publication date (null if unpublished/private)"
132+
description="Last publication date, null if unpublished/private. Updated each time the dataset is republished."
132133
),
133134
"tags": fields.List(fields.String),
134135
"badges": fields.List(
@@ -320,7 +321,9 @@ class DatasetListAPI(API):
320321
def get(self):
321322
"""List or search all datasets"""
322323
args = dataset_parser.parse()
323-
datasets = Dataset.objects.exclude("resources").visible_by_user(current_user)
324+
datasets = Dataset.objects.exclude("resources").visible_by_user(
325+
current_user, mongoengine.Q(published_at__ne=None, archived=None, deleted=None)
326+
)
324327
datasets = dataset_parser.parse_filters(datasets, args)
325328
sort = args["sort"] or ("$text_score" if args["q"] else None) or DEFAULT_SORTING
326329
return datasets.order_by(sort).paginate(args["page"], args["page_size"])

udata/core/dataset/models.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -345,10 +345,6 @@ def visible(self):
345345
def hidden(self):
346346
return self(db.Q(published_at=None) | db.Q(deleted__ne=None) | db.Q(archived__ne=None))
347347

348-
def visible_by_user(self, user):
349-
return super().visible_by_user(
350-
user, db.Q(published_at__ne=None, archived=None, deleted=None)
351-
)
352348

353349
def with_badge(self, kind):
354350
return self(badges__kind=kind)

udata/tests/api/test_datasets_api.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -878,6 +878,33 @@ def test_dataset_api_update_private(self):
878878
dataset.reload()
879879
self.assertEqual(dataset.private, True)
880880

881+
def test_dataset_api_update_published_at(self):
882+
"""It should allow setting published_at to control visibility"""
883+
user = self.login()
884+
dataset = DatasetFactory(owner=user)
885+
original_published_at = dataset.published_at
886+
assert dataset.private is False
887+
assert dataset.published_at is not None
888+
889+
# Setting published_at to None makes the dataset private
890+
data = dataset.to_dict()
891+
data["published_at"] = None
892+
response = self.put(url_for("api.dataset", dataset=dataset), data)
893+
self.assert200(response)
894+
dataset.reload()
895+
assert dataset.published_at is None
896+
assert dataset.private is True
897+
898+
# Setting published_at to a date makes the dataset public
899+
new_date = "2024-06-15T10:30:00"
900+
data["published_at"] = new_date
901+
response = self.put(url_for("api.dataset", dataset=dataset), data)
902+
self.assert200(response)
903+
dataset.reload()
904+
assert dataset.published_at is not None
905+
assert dataset.published_at.isoformat().startswith("2024-06-15")
906+
assert dataset.private is False
907+
881908
def test_dataset_api_update_new_resource_with_extras(self):
882909
"""It should update a dataset with a new resource with extras"""
883910
user = self.login()

0 commit comments

Comments
 (0)