def get_change_object(change): """ Retrieves a Change from a given change API object, getting user data from the API and saving the User if it doesn't already exist in the DB. """ try: return Change.get(Change.change_id == change['rcid']) except DoesNotExist: size_diff = change['newlen'] - change['oldlen'] timestamp_dt = parse_iso_dt(change['timestamp']) return Change.create(change_id=change['rcid'], change_type=change['type'], user=get_user_object(change['user']), timestamp=timestamp_dt, page=get_page_object(change['pageid']), comment=change['comment'], size_diff=size_diff)