Пример #1
0
    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))