예제 #1
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")
예제 #2
0
 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
예제 #3
0
    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]]
예제 #4
0
 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
예제 #5
0
 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
예제 #6
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")
예제 #7
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")
예제 #8
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")
예제 #9
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")
예제 #10
0
 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()
예제 #11
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))
예제 #12
0
 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]
예제 #13
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))
예제 #14
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)
예제 #15
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]
예제 #16
0
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()
예제 #17
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))
예제 #18
0
 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
예제 #19
0
 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")
예제 #20
0
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
예제 #21
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))
예제 #22
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))
예제 #23
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))
예제 #24
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]
예제 #25
0
 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
예제 #26
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))
예제 #27
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))
예제 #28
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))
예제 #29
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
예제 #30
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
     ])