def invite_applicant(applicant_user_id, current_user=current_user): if not is_senior_recruiter(current_user): raise ForbiddenException( 'User {} cannot invite applicants.'.format(current_user.id)) else: application = Application.get_submitted_for_user(applicant_user_id) if application is None: raise BadRequestException( 'User {} is not in an open application.'.format( applicant_user_id ) ) elif not application.is_accepted: raise BadRequestException( 'User {} application is not accepted.'.format( applicant_user_id ) ) elif application.is_invited: raise BadRequestException( 'User {} application is already invited.'.format( applicant_user_id ) ) else: send_mail(applicant_user_id, 'invite') application.is_invited = True db.session.commit() add_status_note( application, 'Application invited by {}.'.format(current_user.name))
def add_applicant_note(applicant_user_id, text, title=None, is_chat_log=False, current_user=None): application = Application.get_submitted_for_user(applicant_user_id) if application is None: raise BadRequestException('User {} is not an applicant'.format( User.get(applicant_user_id).name)) else: if not is_recruiter(current_user): raise ForbiddenException('Current user is not a recruiter') elif (application.recruiter_id != current_user.id and not is_senior_recruiter(current_user)): raise ForbiddenException( 'Current recruiter has not claimed applicant {}'.format( applicant_user_id)) note = Note( text=text, title=title, application_id=application.id, is_chat_log=is_chat_log, author_id=current_user.id, ) db.session.add(note) db.session.commit() return {'status': 'ok'}
def accept_applicant(applicant_user_id, current_user=current_user): applicant = User.get(applicant_user_id) user_application_access_check(current_user, applicant) application = Application.get_submitted_for_user(applicant_user_id) application.is_accepted = True application.is_concluded = True db.session.commit() add_status_note( application, 'Application accepted by {}.'.format(current_user.name)) return {'status': 'ok'}
def release_applicant(applicant_user_id, current_user=current_user): if not is_recruiter(current_user): raise ForbiddenException( 'User {} is not a recruiter'.format(current_user.id)) application = Application.get_submitted_for_user(applicant_user_id) if application is None: raise BadRequestException( 'User {} is not in an open application.'.format( applicant_user_id ) ) elif not has_applicant_access(current_user, User.get(applicant_user_id)): raise ForbiddenException('User {} does not have access to user {}'.format( current_user.id, applicant_user_id )) else: application.recruiter_id = None db.session.commit() add_status_note( application, 'Application released by {}.'.format(current_user.name)) return {'status': 'ok'}
def unaccept_applicant(applicant_user_id, current_user=current_user): if not is_senior_recruiter(current_user): raise ForbiddenException( 'User {} is not a senior recruiter'.format(current_user.id)) application = Application.get_submitted_for_user(applicant_user_id) if application is None: raise BadRequestException( 'User {} is not in an open application.'.format( applicant_user_id )) elif not application.is_accepted: raise ForbiddenException( 'User {} cant unaccept app from user {} as its not accepted'.format( current_user.id, applicant_user_id )) else: add_status_note( application, 'Application un-accepted by {}.'.format(current_user.name)) application.is_accepted = False application.is_concluded = False db.session.commit() return {'status': 'ok'}
def claim_applicant(applicant_user_id, current_user=current_user): if not is_recruiter(current_user): raise ForbiddenException( 'User {} is not a recruiter'.format(current_user.id)) application = Application.get_submitted_for_user(applicant_user_id) if application is None: raise BadRequestException( 'User {} is not in an open application.'.format( applicant_user_id ) ) elif application.recruiter_id is not None: raise BadRequestException( 'User {} has already been claimed by a recruiter.'.format( applicant_user_id ) ) else: application.recruiter_id = current_user.id db.session.commit() add_status_note( application, 'Application claimed by {}.'.format(current_user.name)) return {'status': 'ok'}