import uuid from typing import Set def get_chart_push_key( date: str, user_id: str, topic: str, market: str, vendor: str, track_id: str or int, delimiter="/", prefix="chart") -> uuid.UUID: """Returns UUID from unique set of arguments, which is used as message id.""" return uuid.uuid5(uuid.NAMESPACE_DNS, delimiter.join([prefix, date, user_id, topic, market, vendor, str(track_id)])) def is_filtered( track: object, date: str, topic: str, market: str, vendor: str, existing_messages: Set[str], *args, **kwargs): """Filter tracks to make push messages from.""" return str(get_chart_push_key( date, track.user_id, topic, market, vendor, track.track_id) ) not in existing_messages def _get_message_template_dict(track: object, country_flag: str) -> dict: return dict( artist_name=track.artist_name, track_name=track.track_name, position=track.position, country_flag=country_flag ) def build_push_message(track: object, message_template: str, country_flag: str) -> str: """Builds push message from tracks data.""" message = message_template.format(**_get_message_template_dict(track, country_flag)) return message.strip().replace(" ", " ") def build_moves_push_message(track: object, message_template: str, country_flag: str) -> str: """Builds moves push message from tracks data.""" message_dict = _get_message_template_dict(track, country_flag) message_dict["moves"] = abs(track.moves) message = message_template.format(**message_dict) return message.strip().replace(" ", " ")