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')
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, }