Skip to content

Commit

Permalink
[SDCP-743][SDCP-742] Manual editing of the events (#2558)
Browse files Browse the repository at this point in the history
* [SDCP-743] Manual editing of the events

* address comment

* update params

* refactore code

* minor change
  • Loading branch information
devketanpro authored and petrjasek committed Apr 23, 2024
1 parent e12c69f commit 15c2137
Show file tree
Hide file tree
Showing 3 changed files with 127 additions and 1 deletion.
3 changes: 3 additions & 0 deletions superdesk/io/commands/update_ingest.py
Expand Up @@ -586,6 +586,9 @@ def ingest_item(item, provider, feeding_service, rule_set=None, routing_scheme=N
f"updating items is disabled on provider '{provider['name']}'."
)
return False, []
elif old_item and not ingest_service.should_update(old_item, item, provider):
logger.info(f"Resource '{ingest_collection}' " f"item '{item[GUID_FIELD]}' should not be updated")
return False, []

item["ingest_provider"] = str(provider[superdesk.config.ID_FIELD])
item.setdefault("source", provider.get("source", ""))
Expand Down
3 changes: 3 additions & 0 deletions superdesk/io/ingest.py
Expand Up @@ -93,3 +93,6 @@ def on_deleted(self, docs):
user = get_user(required=True)
if docs:
push_notification("item:deleted", item=str(docs[0].get(config.ID_FIELD)), user=str(user))

def should_update(self, old_item, new_item, provider):
return True
122 changes: 121 additions & 1 deletion tests/io/update_ingest_tests.py
Expand Up @@ -36,7 +36,7 @@
get_is_idle,
ingest_item,
)

import flask

reuters_guid = "tag_reuters.com_2014_newsml_KBN0FL0NM:10"

Expand Down Expand Up @@ -659,3 +659,123 @@ def test_ingest_profile_if_exists(self):
items[1]["profile"] = "story"
ingest_item(items[1], provider, provider_service)
self.assertEqual("story", items[1].get("profile"))

def test_edited_planning_item_is_not_update(self):
item = {
"guid": "urn:onclusive:4112034",
"type": "event",
"state": "ingested",
"occur_status": {
"qcode": "eocstat:eos5",
"name": "Planned, occurs certainly",
"label": "Planned, occurs certainly",
},
"pubstatus": "usable",
"versioncreated": datetime(2022, 5, 10, 11, 14, 34),
"firstcreated": datetime(2022, 5, 10, 11, 14, 34),
"name": "Annual Forum on Anti-Money Laundering and Financial Crime",
"definition_short": "",
"dates": {
"start": datetime(2022, 5, 10, 11, 14, 34),
"end": datetime(2022, 5, 10, 11, 14, 34),
"all_day": True,
},
}
flask.g.user = {"_id": "current_user_id"}

provider = {
"_id": "asdnjsandkajsdnjkasnd",
"source": "sf",
"name": "Onclusive",
"content_expiry": 525700,
}
event_service = get_resource_service("events")
events_post_service = get_resource_service("events_post")

# ingest first version
ingested, ids = ingest_item(item, provider=provider, feeding_service={})
self.assertTrue(ingested)
self.assertIn(item["guid"], ids)

dest = list(event_service.get_from_mongo(req=None, lookup={"guid": item["guid"]}))[0]
self.assertEqual(dest["name"], "Annual Forum on Anti-Money Laundering and Financial Crime")
self.assertEqual(dest["state"], "ingested")
self.assertEqual(dest.get("version_creator"), None)

# edit event
event_service.patch(dest["_id"], {"name": "Edit event Name", "update_method": "single"})
dest = list(event_service.get_from_mongo(req=None, lookup={"guid": item["guid"]}))[0]
self.assertEqual(dest.get("version_creator"), "current_user_id")

# update event
ingested, ids = ingest_item(item, provider=provider, feeding_service={})
self.assertFalse(ingested)
self.assertEqual([], ids)

def test_unpublished_event_is_not_update(self):
item = {
"guid": "urn:onclusive:411202222",
"type": "event",
"state": "ingested",
"occur_status": {
"qcode": "eocstat:eos5",
"name": "Planned, occurs certainly",
"label": "Planned, occurs certainly",
},
"pubstatus": "usable",
"versioncreated": datetime(2022, 5, 10, 11, 14, 34),
"firstcreated": datetime(2022, 5, 10, 11, 14, 34),
"name": "Annual Forum on Anti-Money Laundering and Financial Crime",
"definition_short": "",
"dates": {
"start": datetime(2022, 5, 10, 11, 14, 34),
"end": datetime(2022, 5, 10, 11, 14, 34),
"all_day": True,
},
}
flask.g.user = {"_id": "current_user_id"}

provider = {
"_id": "asdnjsandkajsdnjkasnd",
"source": "sf",
"name": "Onclusive",
"content_expiry": 525700,
}
event_service = get_resource_service("events")
events_post_service = get_resource_service("events_post")

# ingest first version
ingested, ids = ingest_item(item, provider=provider, feeding_service={})
self.assertTrue(ingested)
self.assertIn(item["guid"], ids)

# post an event
events_post_service.post(
[
{
"event": item["_id"],
"pubstatus": "usable",
"update_method": "single",
}
]
)
dest = list(event_service.get_from_mongo(req=None, lookup={"guid": item["guid"]}))[0]
self.assertEqual(dest.get("state"), "scheduled")

# Un-post an event
events_post_service.post(
[
{
"event": item["_id"],
"pubstatus": "cancelled",
"update_method": "single",
}
]
)
dest = list(event_service.get_from_mongo(req=None, lookup={"guid": item["guid"]}))[0]
self.assertEqual(dest.get("state"), "killed")

# update an event
ingested, ids = ingest_item(item, provider=provider, feeding_service={})
self.assertFalse(ingested)
self.assertEqual([], ids)

0 comments on commit 15c2137

Please sign in to comment.