def create(cls, scientist_dict=None, scientist_photo=None, test_mode=False): # check if user can create account yield cls.validate_credentials(scientist_dict) # create ID if test_mode: scientist_id = scientist_dict.get(u'id') else: scientist_id = generate_id(21) # create account yield cls.update_roles(scientist_id, scientist_dict) editable_data = Scientist.get_editable_data(scientist_dict, update=False) editable_data.update(id=scientist_id) image_url = yield cls.upload_avatar(scientist_id, scientist_photo) if image_url: editable_data.update(image_url=image_url) scientist = Scientist(**editable_data) yield scientist.save(update=False, fields=editable_data.keys()) image_url = globals.GET_IMG(image_url, globals.IMG_S) if image_url else u'' raise gen.Return(dict(scientist_id=scientist_id, image_url=image_url))
def get(cls, scientist_id): """ :param scientist_id: :type scientist_id: int :rtype: dict """ data = yield Scientist.get_json_by_id(scientist_id) image_url = data.get(u'image_url', u'') and globals.GET_IMG(data.get(u'image_url', u''), globals.IMG_L) data.update(image_url=image_url) logging.info(data) raise gen.Return(data)
def get_all(cls): data = yield Scientist.get_all_json(columns=Scientist.OVERVIEW_FIELDS) scientists = [] for d in data: image_url = d.get(u'image_url', u'') and globals.GET_IMG(d.get(u'image_url', u''), globals.IMG_L) scientists.append(dict( id=d[u'id'], image_url=image_url, full_name='{} {} {}'.format(d.get(u'first_name', u''), d.get(u'middle_name', u''), d.get(u'last_name', u'')), location='{} {}'.format(d.get(u'city', u''), d.get(u'country', u'')), projects=len(d.get(u'participating_projects', [])) )) raise gen.Return(scientists)
def get(self): print 'user handler' scientist = yield self.get_current_user() if not scientist: return image_url = scientist.image_url and globals.GET_IMG(scientist.image_url, globals.IMG_S) desired_vacancies = [v[v.find(u':')+1:] for v in scientist.desired_vacancies] scientist_data = dict( id=scientist.id, image_url=image_url, liked_projects=scientist.liked_projects or [], desired_vacancies=desired_vacancies, managing_project_ids=scientist.managing_project_ids or [] ) response = yield self.get_response(scientist_data) self.finish(response)
def update(cls, scientist_dict, scientist_photo): scientist_id = scientist_dict.pop(u'scientist_id') if not scientist_id: raise Exception(u'No scientist id on update') scientist = yield Scientist.get_by_id(scientist_id) # if image arrived - change image url, else save the same if scientist_photo: new_image_url = yield cls.upload_avatar(scientist_id, scientist_photo) scientist_dict.update(image_url=new_image_url) else: scientist_dict.update(image_url=scientist.image_url) updated_data = scientist.get_updated_data(scientist_dict) scientist.populate_fields(updated_data) yield scientist.save(fields=updated_data.keys()) image_url = globals.GET_IMG(scientist.image_url, globals.IMG_S) if scientist.image_url else u'' raise gen.Return(dict(scientist_id=scientist_id, image_url=image_url))