From 65082feecbd4fd587c17a4de6c7fbfd7f2c1d2e2 Mon Sep 17 00:00:00 2001 From: Thomas Sileo Date: Sun, 4 Aug 2019 18:51:12 +0200 Subject: [PATCH] Moving stuff out of shared --- blueprints/tasks.py | 2 +- core/activitypub.py | 23 ++++++++++++++++++++++- core/shared.py | 24 ------------------------ 3 files changed, 23 insertions(+), 26 deletions(-) diff --git a/blueprints/tasks.py b/blueprints/tasks.py index 4d970c5..1939d3d 100644 --- a/blueprints/tasks.py +++ b/blueprints/tasks.py @@ -17,6 +17,7 @@ import config from config import DB from core import gc from core.activitypub import Box +from core.activitypub import _add_answers_to_question from core.activitypub import post_to_outbox from core.inbox import process_inbox from core.meta import MetaKey @@ -24,7 +25,6 @@ from core.meta import _meta from core.notifications import set_inbox_flags from core.outbox import process_outbox from core.shared import MY_PERSON -from core.shared import _add_answers_to_question from core.shared import _Response from core.shared import back from core.shared import p diff --git a/core/activitypub.py b/core/activitypub.py index a089ad2..53dc539 100644 --- a/core/activitypub.py +++ b/core/activitypub.py @@ -2,6 +2,8 @@ import binascii import hashlib import logging import os +from datetime import datetime +from datetime import timezone from typing import Any from typing import Dict from typing import List @@ -16,6 +18,7 @@ from little_boxes import activitypub as ap from little_boxes import strtobool from little_boxes.activitypub import _to_list from little_boxes.activitypub import clean_activity +from little_boxes.activitypub import format_datetime from little_boxes.backend import Backend from little_boxes.errors import ActivityGoneError @@ -26,7 +29,6 @@ from config import ID from config import ME from config import USER_AGENT from core.meta import Box -from core.shared import _add_answers_to_question from core.tasks import Tasks logger = logging.getLogger(__name__) @@ -561,6 +563,25 @@ def build_ordered_collection( return resp +def _add_answers_to_question(raw_doc: Dict[str, Any]) -> None: + activity = raw_doc["activity"] + if ( + ap._has_type(activity["type"], ap.ActivityType.CREATE) + and "object" in activity + and ap._has_type(activity["object"]["type"], ap.ActivityType.QUESTION) + ): + for choice in activity["object"].get("oneOf", activity["object"].get("anyOf")): + choice["replies"] = { + "type": ap.ActivityType.COLLECTION.value, + "totalItems": raw_doc["meta"] + .get("question_answers", {}) + .get(_answer_key(choice["name"]), 0), + } + now = datetime.now(timezone.utc) + if format_datetime(now) >= activity["object"]["endTime"]: + activity["object"]["closed"] = activity["object"]["endTime"] + + def add_extra_collection(raw_doc: Dict[str, Any]) -> Dict[str, Any]: if raw_doc["activity"]["type"] != ap.ActivityType.CREATE.value: return raw_doc diff --git a/core/shared.py b/core/shared.py index 8432bc7..13cb83c 100644 --- a/core/shared.py +++ b/core/shared.py @@ -1,9 +1,6 @@ import os -from datetime import datetime -from datetime import timezone from functools import wraps from typing import Any -from typing import Dict import flask from bson.objectid import ObjectId @@ -14,13 +11,11 @@ from flask import session from flask import url_for from flask_wtf.csrf import CSRFProtect from little_boxes import activitypub as ap -from little_boxes.activitypub import format_datetime from poussetaches import PousseTaches from config import DB from config import ME from core import activitypub -from core.activitypub import _answer_key # _Response = Union[flask.Response, werkzeug.wrappers.Response, str, Any] _Response = Any @@ -193,22 +188,3 @@ def paginated_query(db, q, limit=25, sort_key="_id"): older_than = str(outbox_data[-1]["_id"]) return outbox_data, older_than, newer_than - - -def _add_answers_to_question(raw_doc: Dict[str, Any]) -> None: - activity = raw_doc["activity"] - if ( - ap._has_type(activity["type"], ap.ActivityType.CREATE) - and "object" in activity - and ap._has_type(activity["object"]["type"], ap.ActivityType.QUESTION) - ): - for choice in activity["object"].get("oneOf", activity["object"].get("anyOf")): - choice["replies"] = { - "type": ap.ActivityType.COLLECTION.value, - "totalItems": raw_doc["meta"] - .get("question_answers", {}) - .get(_answer_key(choice["name"]), 0), - } - now = datetime.now(timezone.utc) - if format_datetime(now) >= activity["object"]["endTime"]: - activity["object"]["closed"] = activity["object"]["endTime"]