diff --git a/frontend.py b/frontend.py index 454ced6..9126091 100644 --- a/frontend.py +++ b/frontend.py @@ -26,7 +26,6 @@ from conf import CONFIG from helper import ( - State, admin_required, error, get_all_live_assets, @@ -41,6 +40,7 @@ user_without_limits, ) from ib_hosted import get_scoped_api_key, ib, update_asset_userdata +from model import State from notifier import Notifier from redis_session import RedisSessionStore diff --git a/helper.py b/helper.py index e96d7a5..9f6e084 100644 --- a/helper.py +++ b/helper.py @@ -1,17 +1,16 @@ -import enum import os import random import shutil import tempfile from datetime import datetime from functools import wraps -from typing import NamedTuple, Optional import requests from flask import abort, current_app, g, jsonify, redirect, request, session, url_for from conf import CONFIG from ib_hosted import ib +from model import State, Asset def error(msg): @@ -50,57 +49,6 @@ def decorated_function(*args, **kwargs): return decorated_function -class State(enum.StrEnum): - NEW = "new" - CONFIRMED = "confirmed" - REJECTED = "rejected" - DELETED = "deleted" - REVIEW = "review" - - -class Asset(NamedTuple): - id: str - filetype: str - thumb: str - state: State - user: str - starts: Optional[int] = None - ends: Optional[int] = None - moderate_url: Optional[str] = None - moderated_by: Optional[str] = None - - def to_dict(self, mod_data=False): - return { - "id": self.id, - "user": self.user, - "filetype": self.filetype, - "thumb": self.thumb, - "url": self.url, - } | ( - { - "moderate_url": self.moderate_url, - "moderated_by": self.moderated_by, - "state": self.state, - "starts": self.starts, - "ends": self.ends, - } - if mod_data - else {} - ) - - @property - def external_url(self): - return url_for("static", filename=cached_asset_name(self), _external=True) - - @property - def moderate_url(self): - return url_for("content_moderate", asset_id=self.id, _external=True) - - @property - def url(self): - return url_for("static", filename=cached_asset_name(self)) - - def to_int(num): return ( num diff --git a/ib_hosted.py b/ib_hosted.py index 8c9828c..50f4ee6 100644 --- a/ib_hosted.py +++ b/ib_hosted.py @@ -4,7 +4,6 @@ from requests import Session from conf import CONFIG -from helper import State class IBHosted: @@ -66,7 +65,7 @@ def update_asset_userdata(asset, **kw): userdata=json_dumps( { "user": asset.user, - "state": getattr(State, asset.state), + "state": sset.state, "starts": asset.starts, "ends": asset.ends, "moderated_by": asset.moderated_by, diff --git a/model.py b/model.py new file mode 100644 index 0000000..45e4aec --- /dev/null +++ b/model.py @@ -0,0 +1,53 @@ +import enum +from typing import NamedTuple, Optional + + +class State(enum.StrEnum): + NEW = "new" + CONFIRMED = "confirmed" + REJECTED = "rejected" + DELETED = "deleted" + REVIEW = "review" + + +class Asset(NamedTuple): + id: str + filetype: str + thumb: str + state: State + user: str + starts: Optional[int] = None + ends: Optional[int] = None + moderate_url: Optional[str] = None + moderated_by: Optional[str] = None + + def to_dict(self, mod_data=False): + return { + "id": self.id, + "user": self.user, + "filetype": self.filetype, + "thumb": self.thumb, + "url": self.url, + } | ( + { + "moderate_url": self.moderate_url, + "moderated_by": self.moderated_by, + "state": self.state, + "starts": self.starts, + "ends": self.ends, + } + if mod_data + else {} + ) + + @property + def external_url(self): + return url_for("static", filename=cached_asset_name(self), _external=True) + + @property + def moderate_url(self): + return url_for("content_moderate", asset_id=self.id, _external=True) + + @property + def url(self): + return url_for("static", filename=cached_asset_name(self)) diff --git a/syncer.py b/syncer.py index 524e98b..d33601f 100644 --- a/syncer.py +++ b/syncer.py @@ -3,8 +3,9 @@ from logging import getLogger from conf import CONFIG -from helper import Asset, State, get_all_live_assets, get_assets, user_is_admin +from helper import get_all_live_assets, get_assets, user_is_admin from ib_hosted import ib +from model import Asset, State from notifier import Notifier FADE_TIME = 0.5