Source code for badgr_lite.helpers

# -*- coding: utf-8 -*-

"""BadgrLite Helper functions"""

import re
import datetime

import pytz


UTC = pytz.timezone("UTC")
DATETIME_FORMAT = '%Y-%m-%dT%H:%M:%SZ'
DATETIME_MILLISECOND_FORMAT = '%Y-%m-%dT%H:%M:%S.%fZ'


[docs]def pythonic(name: str) -> str: """Convert camelCase identifier to pythonic identifier Citaton: (https://stackoverflow.com/questions/1175208/ elegant-python-function-to-convert-camelcase- to-snake-case/17328907) The Badgr API returns attributes in camel case (e.g., issuerOpenBadgeId). We wish to also see those attributes in a pythonic way (e.g., issuer_open_badgee_id). """ regex_s1 = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name) return re.sub('([a-z0-9])([A-Z])', r'\1_\2', regex_s1).lower()
[docs]def to_datetime(potential_datetime): """Given string, return UTC aware datetime""" final_datetime = potential_datetime if isinstance(potential_datetime, str): try: final_datetime = datetime.datetime.strptime( potential_datetime, DATETIME_FORMAT) except ValueError: final_datetime = datetime.datetime.strptime( potential_datetime, DATETIME_MILLISECOND_FORMAT) final_datetime = UTC.localize(final_datetime) return final_datetime