#!/usr/bin/env python3 """ Helpers for Alliance Forge API objects """ from datetime import datetime import pytz def get_event_segments(event : dict, event_campaign : dict) -> dict: """ get_event_segments Calculate the segments for the event. :param event: The Event object :param event_campaign: The Campaign object for the event :return The segments for the event as dict """ # Default segments event_segments = { "sms_segments": 0, "mms_segments": 0, "crystal_segments": 0 } # Get the values to calculate with content = event["content"] if content is None: content = "" message_length = len(content) segment_counter = 1 # Get the allowed size of the first segment. Static 160 except for MMS first_segment_size = 160 # Update to MMS segment size if event["media_name"] is not None: # Based on contract negotiations first_segment_size = event_campaign["mms_included_characters"] event_segments["mms_segments"] = 1 # Check if Crystal if event["media_name"].endswith("mp4"): event_segments["crystal_segments"] = 1 # Count the segments message_length -= first_segment_size while message_length > 0: segment_counter += 1 message_length -= first_segment_size event_segments["sms_segments"] = segment_counter return event_segments def get_datetime_convert(af_datetime_str : str, af_time_zone : str) -> datetime: """ get_datetime_convert Get the datetime string to a datetime object converted to timezone. :param af_datetime_str: The datetime string. Format "%Y-%m-%dT%H:%M" :param af_time_zone: The alliance forge timezone """ # AF time zone mapping time_zone_convert = {"hawaii": "US/Hawaii", "alaska": "US/Alaska", "pacific": "US/Pacific", "mountain": "US/Mountain", "arizona": "US/Arizona", "central": "US/Central", "eastern": "US/Eastern", "aleutian": "US/Aleutian", "east_indiana": "US/East-Indiana", "indiana_starke": "US/Indiana-Starke", "michigan": "US/Michigan", "samoa": "US/Samoa"} # Get the datetime to an object and properly set the timezone gmt_datetime = datetime.strptime(af_datetime_str, "%Y-%m-%dT%H:%M") gmt_timezone = pytz.timezone('GMT') gmt_datetime = gmt_timezone.localize(gmt_datetime) # Convert to the target timezone target_timezone = pytz.timezone(time_zone_convert.get(af_time_zone, "US/Pacific")) target_datetime = gmt_datetime.astimezone(target_timezone) return target_datetime