Exemplo n.º 1
0
 def mutate(self, info, token, project_id, candidate_ids):
     verify_admin(token)
     session = get_session()
     reject_project_candidate(session, candidate_ids)
     session.commit()
     session.close()
     return RejectMasterProjectCandidates(
         master_project=MasterProject.detail(token=token, id=project_id))
Exemplo n.º 2
0
 def all_for_freelancer(*args, **kwargs):
     verify_admin(kwargs['token'])
     freelancer_id = kwargs['freelancer_id']
     session = get_session()
     project_ids = [c.project_id for c in get_candidates_for_freelancer(session, freelancer_id)]
     print(project_ids)
     projects = session.query(MasterProjectModel).all()
     session.close()
     return [MasterProject(p, p.id in project_ids) for p in projects]
Exemplo n.º 3
0
 def mutate(self, info, token, project_id, freelancer_id, **kwargs):
     verify_admin(token)
     session = get_session()
     update_candidate_quote(session, project_id, freelancer_id, **kwargs)
     session.commit()
     session.close()
     return EditCandidateQuote(
         projects=ProjectCandidate.freelancer_projects(
             token=token, freelancer_id=freelancer_id))
Exemplo n.º 4
0
 def detail(*args, **kwargs):
     verify_admin(kwargs['token'])
     project_id = kwargs['id']
     session = get_session()
     project = get_project_by_id(session, project_id)
     session.close()
     if not project:
         raise InvalidRequest("Project with id not found")
     return MasterProject(project, kwargs)
Exemplo n.º 5
0
 def mutate(self, info, token, project_id, candidate_id, **kwargs):
     verify_admin(token)
     session = get_session()
     print(candidate_id)
     kwargs['stage'] = kwargs.pop('status', None)
     edit_project_candidate(session, candidate_id, **kwargs)
     session.commit()
     session.close()
     return EditMasterProjectCandidate(
         master_project=MasterProject.detail(token=token, id=project_id))
Exemplo n.º 6
0
 def mutate(self, info, token, project_id, hiring_stage_id):
     verify_admin(token)
     session = get_session()
     project = get_project_by_id(session, project_id)
     if not project:
         raise InvalidRequest("Project not found")
     update_project_settings(session, project_id, hiring_stage_id)
     session.commit()
     session.refresh(project)
     session.close()
     return EditMasterProjectSettings(master_project=MasterProject(project))
Exemplo n.º 7
0
 def mutate(self, info, token, project_id, client_id, stakeholder_id):
     verify_admin(token)
     session = get_session()
     project = get_project_by_id(session, project_id)
     if not project:
         raise InvalidRequest("Project not found")
     map_project_client(session, project_id, client_id, stakeholder_id)
     session.commit()
     session.refresh(project)
     session.close()
     return AddMasterProjectClient(master_project=MasterProject(project))
Exemplo n.º 8
0
 def mutate(self, info, *args, **kwargs):
     verify_admin(kwargs['token'])
     session = get_session()
     project = get_project_by_id(session, kwargs['project_id'])
     if not project:
         raise InvalidRequest("Project not found")
     add_project_resourcing(session, **kwargs)
     session.commit()
     session.refresh(project)
     session.close()
     return AddMasterProjectLocation(master_project=MasterProject(project))
Exemplo n.º 9
0
 def freelancer_projects(*args, **kwargs):
     if 'freelancer_id' in kwargs:
         verify_admin(kwargs['token'])
         freelancer_id = kwargs['freelancer_id']
     else:
         freelancer, _ = verify_freelancer(kwargs['token'])
         freelancer_id = freelancer.id
     session = get_session()
     candidates = get_candidates_for_freelancer(session, freelancer_id)
     session.close()
     return [ProjectCandidate(c) for c in candidates]
Exemplo n.º 10
0
 def mutate(self, info, token, project_id, scale_ids, criteria_ids):
     verify_admin(token)
     session = get_session()
     project = get_project_by_id(session, project_id)
     if not project:
         raise InvalidRequest("Project not found")
     set_project_criterias(session, project_id, criteria_ids)
     set_project_scales(session, project_id, scale_ids)
     session.commit()
     session.close()
     return EditMasterProjectFeedback(
         feedback_form=ProjectFeedback(project_id=project_id, token=token))
Exemplo n.º 11
0
 def mutate(self, info, token, project_id, links):
     verify_admin(token)
     session = get_session()
     project = get_project_by_id(session, project_id)
     if not project:
         raise InvalidRequest("Project not found")
     clear_project_scope_files(session, project_id)
     for link in links:
         add_project_scope_file(session, project_id, link)
     session.commit()
     session.refresh(project)
     session.close()
     return AddMasterProjectLocation(
         master_project=MasterProject.detail(token=token, id=project_id))
Exemplo n.º 12
0
 def mutate(self, info, token, project_id, docs):
     verify_admin(token)
     session = get_session()
     project = get_project_by_id(session, project_id)
     if not project:
         raise InvalidRequest("Project not found")
     clear_project_scope_links(session, project_id)
     for doc in docs:
         add_project_scope_link(session, project_id, doc['document_name'],
                                doc['link'], doc['is_scope'])
     session.commit()
     session.refresh(project)
     session.close()
     return AddMasterProjectLocation(
         master_project=MasterProject.detail(token=token, id=project_id))
Exemplo n.º 13
0
 def assign_project_autocomplete(cls, *args, **kwargs):
     from utils.index import search
     verify_admin(kwargs['token'])
     freelancer_id = kwargs['freelancer_id']
     session = get_session()
     candidates = get_candidates_for_freelancer(session, freelancer_id)
     project_map = {c.project_id: c.stage for c in candidates}
     q = lower_plain_str(kwargs.get("q", ""))
     start = kwargs.get("start", 0)
     end = kwargs.get("end", 10)
     hits = search(q, "project", fields=['ac_search_field']).hits[start:end]
     ids = [h.id for h in hits]
     projects = session.query(MasterProjectModel).filter(MasterProjectModel.id.in_(ids)).all()
     ans = [ProjectSmall(p, p.id in project_map, project_map.get(p.id, None)) for p in projects]
     session.close()
     return ans
Exemplo n.º 14
0
 def mutate(self, info, token, project_ids, freelancer_id):
     verify_admin(token)
     session = get_session()
     for project_id in project_ids:
         project = get_project_by_id(session, project_id)
         if not project:
             raise InvalidRequest(
                 "Project id {} not found".format(project_id))
     add_project_candidates(session, project_ids, freelancer_id)
     session.commit()
     projects = ProjectCandidate.freelancer_projects(
         token=token, freelancer_id=freelancer_id)
     session.close()
     return AddMasterProjectCandidate(candidates=[
         p for p in projects if p.obj.project_id in project_ids
     ])
Exemplo n.º 15
0
 def mutate(self, info, token, note_id):
     admin = verify_admin(token)
     session = get_session()
     delete_project_note(session, admin.id, note_id)
     session.commit()
     session.close()
     return AddProjectNote(message="deleted note for project")
Exemplo n.º 16
0
 def mutate(self, info, token, note_id, **kwargs):
     admin = verify_admin(token)
     session = get_session()
     delete_freelancer_note(session, admin.id, note_id)
     session.commit()
     session.close()
     return AddFreelancerNote(message="added note for freelancer")
Exemplo n.º 17
0
 def mutate(self, info, token, project_id):
     from freelancer_new.services import delete_project
     admin = verify_admin(token)
     session = get_session()
     delete_project(session, project_id)
     session.commit()
     session.close()
     return DeleteProject(message="deleted the project")
Exemplo n.º 18
0
 def mutate(self, info, token, note, freelancer_id, **kwargs):
     admin = verify_admin(token)
     session = get_session()
     add_freelancer_note(session, freelancer_id, admin.id, note,
                         kwargs.get('project_id', None))
     session.commit()
     session.close()
     return AddFreelancerNote(message="added note for freelancer")
Exemplo n.º 19
0
 def mutate(self, info, token, freelancer_id):
     from freelancer_new.services import delete_freelancer
     admin = verify_admin(token)
     session = get_session()
     delete_freelancer(session, freelancer_id)
     session.commit()
     session.close()
     return DeleteFreelancer(message="deleted the freelancer")
Exemplo n.º 20
0
 def mutate(self, info, token, project_id, stage):
     allowed_stage_values = [
         "Market Scan", "Selection", "Matching", "Contracting", "Won",
         "Lost"
     ]
     verify_admin(token)
     if stage not in allowed_stage_values:
         raise InvalidRequest("Invalid stage value, allowed values are - " +
                              str(allowed_stage_values))
     session = get_session()
     project = get_project_by_id(session, project_id)
     if not project:
         raise InvalidRequest("Project not found")
     project.project_status = stage
     session.commit()
     session.close()
     return EditMasterProjectSettings(
         master_project=MasterProject.detail(token=token, id=project_id))
Exemplo n.º 21
0
    def mutate(self, info, *args, **kwargs):
        token = kwargs.pop('token')
        if kwargs.get('project_type', "") == 'freelance' and not kwargs.get(
                'no_of_freelancers', None):
            raise InvalidRequest("Number of freelancers not provided")
        if 'min_years_experience' in kwargs and 'max_years_experience' in kwargs:
            if kwargs['min_years_experience'] >= kwargs['max_years_experience']:
                raise InvalidRequest(
                    "Max experience required should be greater than min experience"
                )

        expertise = kwargs.pop('expertise', [])
        if expertise == "":
            expertise = []
        sectors = kwargs.pop('sectors', [])
        if sectors == "":
            sectors = []
        stakeholders = kwargs.pop('stakeholder_ids', [])
        member_ids = kwargs.pop('member_ids', [])
        director_ids = kwargs.pop('director_ids', [])
        scope_files = kwargs.pop('scope_files', [])
        scope_links = kwargs.pop('scope_links', [])
        location = kwargs.pop('location', None)
        user = verify_admin(token)
        session = get_session()

        # if len(scope_files) == 0 and len(scope_links) == 0:
        #     raise InvalidRequest("A project scope link or file is required")
        if 'id' in kwargs:
            project = get_project_by_id(session, kwargs['id'])
            project.modified_at = datetime.datetime.utcnow()

            if 'project_start_date' in kwargs:
                project.project_start_date = kwargs.pop('project_start_date')
            for key in kwargs:
                setattr(project, key, kwargs[key])
            if 'expertise' in kwargs:
                project.update_attributes(session, 'expertise', expertise)
            if 'sector' in kwargs:
                project.update_attributes(session, 'sector', sectors)
        else:
            project = MasterProjectModel(**kwargs)
            project.admin_id = user.id
            project.modified_at = datetime.datetime.utcnow()

            if 'project_start_date' in kwargs:
                project.project_start_date = kwargs.pop('project_start_date')
            session.add(project)
            session.flush()
            project.update_attributes(session, 'expertise', expertise)
            project.update_attributes(session, 'sector', sectors)

        clear_project_scope_files(session, project.id)
        clear_project_scope_links(session, project.id)
        clear_project_stakeholders(session, project.id)
        clear_project_members(session, project.id)
        clear_project_directors(session, project.id)
        for f in scope_files:
            add_project_scope_file(session, project.id, f)
        for f in scope_links:
            add_project_scope_link(session, project.id, f['name'], f['link'],
                                   f['is_scope'])
        for s in stakeholders:
            add_stakeholder(session, project.id, s)
        for t in member_ids:
            add_team_member(session, project.id, t)
        for d in director_ids:
            add_director(session, project.id, d)

        project.project_status = kwargs[
            'project_status'] if 'project_status' in kwargs else "Market Scan"

        if location:
            project.location_id = add_place(session, location)
            project.city = location.city
            project.country = location.country
        project = get_project_by_id(session, project.id)
        session.commit()
        index_project(project.id)
        return AddMasterProject(project=MasterProject(project))
Exemplo n.º 22
0
 def all(*args, **kwargs):
     verify_admin(kwargs['token'])
     return ResourcingConstants()