Exemplo n.º 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))
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
    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))