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 resolve_criterias(self, info): session = get_session() required_criterias = get_project_criterias(session, self.project_id) for i in range(len(self.criterias)): self.criterias[i].obj.required = self.criterias[i].obj.id in required_criterias session.close() return self.criterias
def resolve_candidates(self, info, *args, **kwargs): start = kwargs.get('start', 0) end = kwargs.get('end', 9) + 1 status = kwargs.get('status', "All") sort = kwargs.get('sort', None) candidates = self.obj.candidates if status != "All": candidates = [c for c in candidates if c.stage == status] candidates = [c for c in candidates if c.stage != "Remove from project"] cids = [c.id for c in candidates] session = get_session() candidates = session.query(ProjectCandidateMapModel).options(joinedload('freelancer')).filter(ProjectCandidateMapModel.id.in_(cids)).all() if sort: reverse = sort.startswith("-") sort = sort.replace("-", "") if sort == "alphabetical": candidates = sorted(candidates, key=lambda f: f.freelancer.name, reverse=reverse) if sort == "created": candidates = sorted(candidates, key=lambda f: f.freelancer.created_on, reverse=reverse) if sort == "modified": candidates = sorted(candidates, key=lambda f: f.freelancer.modified_at, reverse=reverse) if sort == "added_to_project": candidates = sorted(candidates, key=lambda f: f.added_on, reverse=reverse) return [ProjectCandidate(c, self.obj.id) for c in candidates[start:end]]
def resolve_scales(self, info): session = get_session() required_scales = get_project_scales(session, self.project_id) for i in range(len(self.scales)): self.scales[i].obj.required = self.scales[i].obj.id in required_scales session.close() return self.scales
def resolve_location(self, info, *args, **kwargs): if not self.obj.location_id: return None session = get_session() place = Place.detail(session, self.obj.location_id) session.close() return place
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, 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, 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 resolve_hiring_stages(self, info, *args, **kwargs): session = get_session() t = session.query(TemplateModel).filter_by(id=1).scalar() if t: return Template(t) else: return None session.close()
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 resolve_created_by(self, info, *args, **kwargs): if not self.obj.admin_id: return "" from auth.models import UserModel session = get_session() user = session.query(UserModel).filter_by(id=self.obj.admin_id).scalar() session.close() return user.name if user.name else user.email.split("@")[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))
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 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 _write_mpi_sql(ident_inserts, update=False): insert_objects = [] for iarray in ident_inserts: insert_objects.extend( [MasterPersonLong(**kwargs) for kwargs in iarray]) with get_session() as session: session.bulk_save_objects(insert_objects) session.flush() session.commit()
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 resolve_candidate_counts(self, info, *args, **kwargs): session = get_session() stages = session.query(StageModel).filter_by(template_id=1).all() session.close() counts = [CandidateCount( None, "All", len([c for c in self.obj.candidates if c.stage != "Remove from project"]) )] for stg in stages: counts.append(CandidateCount(stg.id, stg.name, len([c for c in self.obj.candidates if c.stage == stg.name]))) return counts
def mutate(self, info, token, subject, body, candidates): session = get_session() candidates = get_candidates_with_id(session, candidates) emails = [ get_freelancer_email(session, c.freelancer_id) for c in candidates ] for email in emails: send_template_email(email, subject, body) session.close() return SendBulkEmail(message="Bulk email sent")
def index_project(project_id): import datetime session = get_session() projects = session.query(MasterProjectModel).filter(MasterProjectModel.id.in_([project_id])).all() for project in projects: project.modified_at = datetime.datetime.utcnow() session.commit() freelancer_ids = [c.freelancer_id for c in session.query(ProjectCandidateMapModel).filter_by(project_id=project_id).all()] index_all_projects(projects, keep_index=True) session.close() return freelancer_ids
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, *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 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 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 validate_location_id(self, key, location_id): from location.services import get_place from utils.db import get_session session = get_session() if location_id: try: place = get_place(session, self.location_id) self.city = place.city self.country = place.country except: pass return location_id
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 ])