示例#1
0
def interview_post(request):
    interview_form = dict(request.POST)
    del interview_form['csrfmiddlewaretoken']
    interview_type = int(interview_form.pop('interview_type')[0])
    recruiter_id = interview_form.pop('recruiter_id')[0]
    interview_template_name = interview_form.pop('interview_template_name')[0]
    candidate_name = interview_form.pop('candidate_name')
    interviews = map(dict, zip(*[[(k, v) for v in value] for k, value in interview_form.items()]))
    for interview_slot in interviews:
        interview_slot['start_time'] = datetime.fromtimestamp(float(interview_slot['start_time']))
        interview_slot['start_time'].replace(tzinfo=pytz.timezone(settings.TIME_ZONE))
        interview_slot['end_time'] = datetime.fromtimestamp(float(interview_slot['end_time']))
        interview_slot['end_time'].replace(tzinfo=pytz.timezone(settings.TIME_ZONE))

        interview_slot['interviewer_id'] = models.Interviewer.objects.get(name=interview_slot['interviewer'].split('@')[0]).id
        interview_slot['room_id'] = models.Room.objects.get(display_name=interview_slot['room']).id
        interview_slot['candidate_name'] = candidate_name[0]


    # Sorting so we can make the content in the right order.
    interviews = sorted(interviews, key=lambda x: x['start_time'])

    body_content = schedule_calculator.create_calendar_body(
        [(interview['start_time'], interview['interviewer']) for interview in interviews],
        models.Recruiter.objects.get(id=recruiter_id),
        request.user,
    )

    start_time = datetime.fromtimestamp(float(interview_form['room_start_time'][0]))
    start_time = start_time.replace(tzinfo=pytz.timezone(settings.TIME_ZONE))

    end_time = datetime.fromtimestamp(float(interview_form['room_end_time'][0]))
    end_time = end_time.replace(tzinfo=pytz.timezone(settings.TIME_ZONE))

    interview_type_string = models.InterviewTypeChoice(interview_type).display_string

    calendar_response = calendar_client.create_event(
        '%(type)s - %(candidate)s (%(interview_template_name)s)' % {
            'type': interview_type_string,
            'candidate': candidate_name[0],
            'interview_template_name': interview_template_name,
        },
        body_content,
        start_time,
        end_time,
        interview_form['external_id'][0],
        interview_form['room'][0],
    )

    schedule_calculator.persist_interview(
        interviews,
        interview_type,
        google_event_id=calendar_response['id'],
        recruiter_id=recruiter_id,
        user_id=request.user.id,
    )

    return redirect('/new_scheduler?success=1')
示例#2
0
def create_interview_data(recruiter_id=None):
    room = models.Room.objects.create(type=1)
    interviewer = models.Interviewer.objects.create(
        name='malcolm',
        domain='reynolds.com',
        display_name='Malcolm'
    )
    req = models.Requisition.objects.create(name='Mechanic')
    req.interviewers.add(interviewer)

    interview_info = {
        'start_time': datetime(2014, 5, 3, 12, 30, 0, tzinfo=pytz.timezone(
            'US/Pacific'
        )),
        'end_time': datetime(2014, 5, 3, 13, 15, 0, tzinfo=pytz.timezone(
            'US/Pacific'
        )),
        'room_id': room.id,
        'interviewer_id': interviewer.id,
        'candidate_name': 'bob'
    }
    interview_id = schedule_calculator.persist_interview(
        [interview_info],
        models.InterviewType.ON_SITE,
        recruiter_id=recruiter_id
    )

    interview_slots = models.Interview.objects.get(id=interview_id).interviewslot_set.all()
    interview_slot_id = interview_slots[0].id
    return {
        'interview_id': interview_id,
        'room': room,
        'interview_info': interview_info,
        'interviewer': interviewer,
        'req': req,
        'interview_slot_id': interview_slot_id,
    }