-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathviews.py
More file actions
156 lines (128 loc) · 6.34 KB
/
Copy pathviews.py
File metadata and controls
156 lines (128 loc) · 6.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
from django.utils import timezone
from django.shortcuts import render, redirect, get_object_or_404
import uuid
from django.conf import settings
from django.core.mail import send_mail
from django.contrib.auth.decorators import login_required
from .models import ScheduleInterview, InterviewModel
from datetime import datetime
import json
from django.urls import reverse
def send_email(email_body, subject, email):
send_mail(
subject,
email_body,
settings.EMAIL_HOST_USER,
[email],
fail_silently=False,
)
@login_required
def index(request):
if request.method == 'POST':
name = request.user.username
jobRole = request.POST.get('jobRole')
interviewType = request.POST.get('interviewType')
experience = request.POST.get('experience')
request.session['data'] = {
'name': name,
'jobRole': jobRole,
'interviewType': interviewType,
'experience': experience
}
return redirect('interview_practice')
else:
return render(request, 'interview/index.html')
@login_required
def interview_practice(request):
interviewData = request.session.get('data', {})
if request.method == 'POST':
QA = request.POST.get('data')
QA = json.loads(QA)
if 'QA' in request.session:
del request.session['QA']
request.session['QA'] = QA
return redirect('interview_result')
return render(request, 'interview/interview_practice.html', {'data': interviewData})
@login_required
def interview_result(request):
interviewData = request.session.get('data', {})
QA = request.session.get('QA', {})
return render(request, 'interview/result.html', {'interviewData': interviewData, 'QA': QA})
@login_required
def schedule_interview_list(request):
Interviews = InterviewModel.objects.all()
return render(request, 'interview/schedule_interview/schedule_interview_list.html', {'Interviews': Interviews})
def schedule_interview(request):
protocol = 'https' if request.is_secure() else 'http'
domain = request.get_host()
if request.method == 'POST':
name = request.POST.get('name')
email = request.POST.get('email')
start_time_str = request.POST.get('start_time')
end_time_str = request.POST.get('end_time')
start_time = timezone.make_aware(datetime.strptime(start_time_str, '%Y-%m-%dT%H:%M'))
end_time = timezone.make_aware(datetime.strptime(end_time_str, '%Y-%m-%dT%H:%M'))
unique_id = uuid.uuid4()
job_role = request.POST.get('jobRole')
interview_type = request.POST.get('interviewType')
experience = request.POST.get('experience')
scheduled_by = request.user.username
interview_link = f"{protocol}://{domain}{settings.BASE_URL}{unique_id}/"
ScheduleInterview.objects.create(name=name,
email=email, unique_id=unique_id, start_time=start_time, end_time=end_time, job_role=job_role, interview_type=interview_type, experience=experience, scheduled_by=scheduled_by, interview_link=interview_link)
unique_link = f"{settings.BASE_URL}{unique_id}/"
subject = f'Invitation to Interview: {job_role}'
from_email = 'carrer@aiia.com'
start_time_str = start_time.strftime('%Y-%m-%dT%H:%M')
end_time_str = end_time.strftime('%Y-%m-%dT%H:%M')
email_body = f"\nDear {name},\n\nWe are pleased to inform you that your application for the {job_role} position at AIIA has been considered, and we would like to invite you for an interview. Your qualifications and experiences are impressive, and we believe you could be a valuable addition to our team.\n\nPlease find below the details for your interview:\n\nInterview Link: {protocol}://{domain}{unique_link}\n\nInterview Date: {start_time.strftime('%Y-%m-%d %H:%M')} to {end_time.strftime('%Y-%m-%d %H:%M')}\n\nWe appreciate your interest in joining AIIA, and we eagerly anticipate the opportunity to discuss your application further. Should you have any questions or require additional information before the interview, please feel free to contact us.\n\nThank you for considering a career with AIIA, and we look forward to meeting with you soon.\n\nBest regards,\nAIIA\n{protocol}://{domain}"
send_email(email_body, subject, email)
return redirect('success_page')
return render(request, 'interview/schedule_interview/schedule_interview.html')
def success_page(request):
return render(request, 'interview/schedule_interview/success_page.html')
def unique_link_handler(request, unique_id):
instance = get_object_or_404(ScheduleInterview, unique_id=unique_id)
current_time = timezone.now()
if current_time < instance.start_time:
message = {
"before": "The link is not yet accessible. Please try again later."
}
elif current_time > instance.end_time:
message = {
"after": "The link has expired."
}
elif instance.interview_completed:
message = {
'done': "You are already given the interview"
}
else:
message = None
return render(request, 'interview/schedule_interview/unique_link_page.html', {'instance': instance, 'message': message})
def interview_page(request, unique_id):
instance = get_object_or_404(ScheduleInterview, unique_id=unique_id)
data = {
'name': instance.name,
'jobRole': instance.job_role,
'interviewType': instance.interview_type,
'experience': instance.experience
}
if instance.interview_completed:
return redirect(reverse('unique_link_handler', kwargs={'unique_id': instance.unique_id},))
if request.method == 'POST':
instance.interview_completed = True
instance.save()
qa = request.POST.get('data')
job_role = instance.job_role
email = instance.email
interview = InterviewModel.objects.create(
job_role=job_role,
email=email,
qa=qa,
ScheduleID=unique_id,
is_scheduled=True
)
return render(request, 'interview/schedule_interview/result.html')
return render(request, 'interview/schedule_interview/interview_page.html', {'instance': instance, 'key': unique_id, 'data': data})
def sinterview_result(request):
return render(request, 'interview/schedule_interview/result.html')