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))
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]
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))
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)
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))
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))
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))
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))
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]
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))
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))
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))
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
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 ])
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")
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")
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")
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")
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")
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))
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))
def all(*args, **kwargs): verify_admin(kwargs['token']) return ResourcingConstants()