Пример #1
0
    def get_my_projects(cls, manager_id):
        scientist_columns = [u'managing_project_ids']
        scientist_json = yield Scientist.get_json_by_id(manager_id, columns=scientist_columns)

        # [{scientist_id, vacancy_id, message}]
        project_ids = scientist_json.get(u'managing_project_ids', [])
        if not project_ids:
            raise gen.Return([])

        projects = []
        for project_id in project_ids:
            project_columns = [u'title', u'responses']
            project_json = yield Project.get_json_by_id(project_id, columns=project_columns)
            project_json.update(project_id=project_id)
            raw_responses = project_json.pop(u'responses', [])

            if not raw_responses:
                project_json.update(responses=[])
                projects.append(project_json)
                continue

            responses = []

            for response in raw_responses:
                response_data = yield cls.get_response_data(response)
                responses.append(response_data)
            project_json.update(responses=responses)

            projects.append(project_json)
        raise gen.Return(projects)
Пример #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)
Пример #3
0
    def get_participation_projects(cls, scientist_id):
        cols = [u'participating_projects']
        sc_json = yield Scientist.get_json_by_id(scientist_id, columns=cols)
        # [{project_id, role_id}]

        projects = []
        for participation in sc_json.get(u'participating_projects', []):
            project_columns = [u'title', u'participants']
            project_data = yield Project.get_json_by_id(participation[u'project_id'], columns=project_columns)
            participants = project_data.pop(u'participants')
            project_data.update(project_id=participation[u'project_id'],
                                role_name=[k[u'role_name'] for k in participants if k[u'id'] == participation[u'role_id']][0]
            )

            projects.append(project_data)
        print projects
        raise gen.Return(projects)
Пример #4
0
    def get_desired_projects(cls, scientist_id):
        cols = [u'desired_vacancies']
        sc_json = yield Scientist.get_json_by_id(scientist_id, columns=cols)

        # [{project_id, vacancy_id}]
        projects = []
        for application in sc_json(u'desired_vacancies', []):
            project_columns = [u'title', u'vacancies']
            project_data = yield Project.get_json_by_id(application[u'project_id'], columns=project_columns)

            vacancies = project_data.pop(u'vacancies', [])
            project_data.update(project_id=application[u'project_id'],
                                vacancy_id=application[u'vacancy_id'],
                                vacancy_name=[k[u'vacancy_name'] for k in vacancies if
                                              k[u'id'] == application[u'vacancy_id']][0]
            )

            projects.append(project_data)
        print projects
        raise gen.Return(projects)