def user_factory(self, user_cursor): """Creates user object from mongo cursor""" u = User() u.id = str(user_cursor.get("_id")) u.download_list = user_cursor.get("downloadList") u.realms = user_cursor.get("realms") u.school_classes = user_cursor.get("schoolclasses") u.subjects_list = user_cursor.get("subjects") u.city = user_cursor.get("city") u.country = user_cursor.get("country") u.area_code = user_cursor.get("areaCode") u.gender = user_cursor.get("gender") u.schools = user_cursor.get("schools") u.school_type_list = [] u.downloads = [] u.download_history = [] # create a clean list of school types for school in u.schools: try: u.school_type_list.append(school["type"].encode('utf-8')) except (KeyError, TypeError, AttributeError) as err: pass try: u.school_type = "|".join(u.school_type_list) except (TypeError, AttributeError) as err: u.school_type = "" try: # create a list of downloaded ids for doc in u.download_list: u.downloads.append(str(doc["doc_id"])) history = { "doc_id": str(doc["doc_id"]), "download_time": datetime.utcfromtimestamp( int(doc['timestamp'] / 1000 / 86400) * 86400) } u.download_history.append(history) except TypeError as err: pass try: temp_sub = [] for subject in u.subjects_list: temp_sub.append(subject.encode('utf-8')) u.subjects = "|".join(temp_sub) tmp_realm = [] for r in u.realms: tmp_realm.append(r) u.realm = " | ".join(tmp_realm) try: tmp_classes = [] for c in u.school_classes: tmp_classes.append(c) u.classes = " | ".join(tmp_classes) except (TypeError) as err: u.classes = '' except (TypeError, AttributeError) as err: pass return u