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))