summaryrefslogtreecommitdiff
path: root/workshop_app/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'workshop_app/views.py')
-rw-r--r--workshop_app/views.py296
1 files changed, 164 insertions, 132 deletions
diff --git a/workshop_app/views.py b/workshop_app/views.py
index f6f6b11..f028ed5 100644
--- a/workshop_app/views.py
+++ b/workshop_app/views.py
@@ -19,7 +19,7 @@ from django.db import IntegrityError
from collections import OrderedDict
from dateutil.parser import parse
from .send_mails import send_email
-from django.http import HttpResponse
+from django.http import HttpResponse, HttpResponseRedirect
def index(request):
@@ -100,6 +100,7 @@ def user_register(request):
return render(request, "workshop_app/register.html", {"form": form})
+#This is shown to coordinator for booking workshops
def book(request):
user = request.user
if user.is_authenticated():
@@ -107,40 +108,45 @@ def book(request):
return redirect('/manage/')
workshop_details = Workshop.objects.all()
- workshop_occurence = {}
+
+ workshop_occurence_list = []
+
for workshops in workshop_details:
dates = workshops.recurrences.between(
datetime(2017, 3, 12, 0, 0, 0),
- datetime(2017, 12, 31, 0, 0, 0), #Needs to be changed yearly
+ datetime(2040, 12, 31, 0, 0, 0), #Needs to be changed yearly
inc=True
)
for d in range(len(dates)):
- workshop_occurence[dates[d].strftime("%d-%m-%Y")] = [
+ workshop_occurence = [
+ dates[d].strftime("%d-%m-%Y"),
workshops.workshop_instructor,
workshops.workshop_title,
workshops.workshop_instructor_id,
- workshops.workshop_title_id
- ]
+ workshops.workshop_title_id,
+ ]
- # workshop_occurence = OrderedDict(sorted(workshop_occurence.items()))
- workshop_occurence = list(workshop_occurence.items())
+ workshop_occurence_list.append(workshop_occurence)
+ del workshop_occurence
+
#Gives you the objects of BookedWorkshop
- requested_workshop = BookedWorkshop.objects.all()
- for j in requested_workshop:
+ bookedworkshop = BookedWorkshop.objects.all()
+ for j in bookedworkshop:
'''
j.booked_workshop.requested_workshop_date returns object from
requestedworkshop table
'''
- j = j.booked_workshop.requested_workshop_date.strftime("%d-%m-%Y")
- for i in workshop_occurence:
- if i[0] == j:
- workshop_occurence.remove(i)
-
-
- #Show upto 6 Workshops per page
- paginator = Paginator(workshop_occurence, 6)
+ a = j.booked_workshop.requested_workshop_date.strftime("%d-%m-%Y")
+ b = j.booked_workshop.requested_workshop_title
+ for i in workshop_occurence_list:
+ if i[0] == a and i[2] == b:
+ workshop_occurence_list.remove(i)
+ del a, b
+
+ #Show upto 12 Workshops per page
+ paginator = Paginator(workshop_occurence_list, 12)
page = request.GET.get('page')
try:
workshop_occurences = paginator.page(page)
@@ -163,64 +169,68 @@ def book(request):
@login_required
def book_workshop(request):
'''
- Function for Updating requested_workshop table
+ Function for Updating RequestedWorkshop Model
'''
if request.method == 'POST':
user_position = request.user.profile.position
client_data = request.body.decode("utf-8").split("&")
client_data = client_data[0].split("%2C")
workshop_date = client_data[0][2:]
-
instructor_profile = Profile.objects.filter(user=client_data[1])
- workshop = Workshop.objects.get(
- workshop_instructor=client_data[1]
+
+
+ workshops_list = Workshop.objects.filter(
+ workshop_instructor=client_data[1],
+ workshop_title_id=client_data[2]
)
- workshop_recurrence_list = workshop.recurrences.between(
- datetime(2017, 3, 12, 0, 0, 0),
- datetime(2017, 12, 31, 0, 0, 0),
- inc=True
- )
- rW_obj = RequestedWorkshop()
-
- workshop_obj = Workshop.objects.get(
- workshop_instructor=client_data[1],
- workshop_title_id=client_data[2]
- )
-
- for d in workshop_recurrence_list:
- if workshop_date == (d.strftime("%d-%m-%Y")):
- # rW_obj = RequestedWorkshop()
-
- # workshop_obj = Workshop.objects.get(
- # workshop_instructor=client_data[1],
- # workshop_title_id=client_data[2]
- # )
- rW_obj.requested_workshop_instructor = workshop_obj.workshop_instructor
- rW_obj.requested_workshop_coordinator = request.user
- rW_obj.requested_workshop_date = datetime.strptime(
- client_data[0][2:], "%d-%m-%Y"
- )
- rW_obj.requested_workshop_title = workshop_obj.workshop_title
- rW_obj.save()
-
- # Mail to instructor
- send_email(request, call_on='Booking',
- user_position='instructor',
- workshop_date=workshop_date,
- workshop_title=workshop_obj.workshop_title.course_name,
- user_name=str(request.user),
- other_email=workshop_obj.workshop_instructor.email
- )
-
- #Mail to coordinator
- send_email(request, call_on='Booking',
- workshop_date=workshop_date,
- workshop_title=workshop_obj.workshop_title.course_name,
- user_name=workshop_obj.workshop_instructor.username)
-
- return HttpResponse("Thank You, Please check your email for further \
- information.")
+ for workshop in workshops_list:
+ workshop_recurrence_list = workshop.recurrences.between(
+ datetime(2017, 3, 12, 0, 0, 0),
+ datetime(2040, 12, 31, 0, 0, 0),
+ inc=True
+ )
+
+ rW_obj = RequestedWorkshop()
+ if RequestedWorkshop.objects.filter(
+ requested_workshop_instructor=workshop.workshop_instructor,
+ requested_workshop_date=datetime.strptime(
+ client_data[0][2:], "%d-%m-%Y",
+ ),
+ requested_workshop_coordinator=request.user,
+ requested_workshop_title=client_data[-1]
+ ).count() > 0:
+
+ return HttpResponse("You already have a booking for this workshop \
+ please check the instructors response in My Workshops tab and \
+ also check your email.")
+ else:
+ for d in workshop_recurrence_list:
+ if workshop_date == (d.strftime("%d-%m-%Y")):
+ rW_obj.requested_workshop_instructor = workshop.workshop_instructor
+ rW_obj.requested_workshop_coordinator = request.user
+ rW_obj.requested_workshop_date = datetime.strptime(
+ client_data[0][2:], "%d-%m-%Y"
+ )
+ rW_obj.requested_workshop_title = workshop.workshop_title
+ rW_obj.save()
+
+ # Mail to instructor
+ send_email(request, call_on='Booking',
+ user_position='instructor',
+ workshop_date=workshop_date,
+ workshop_title=workshop.workshop_title.course_name,
+ user_name=str(request.user),
+ other_email=workshop.workshop_instructor.email
+ )
+
+ #Mail to coordinator
+ send_email(request, call_on='Booking',
+ workshop_date=workshop_date,
+ workshop_title=workshop.workshop_title.course_name,
+ user_name=workshop.workshop_instructor.username)
+
+ return HttpResponse("Thank You, Please check your email for further information.")
else:
return HttpResponse("Some Error Occurred.")
@@ -232,37 +242,43 @@ def manage(request):
#Move user to the group via admin
if user.groups.filter(name='instructor').count() > 0:
try:
- #Can't Handle Multiple objects Fix this asap
- workshop_details = Workshop.objects.get(
+ #Can Handle Multiple Workshops
+ workshop_details = Workshop.objects.filter(
workshop_instructor=user.id
)
- workshop_occurence_list = workshop_details.recurrences.between(
- datetime(2017, 3, 12, 0, 0, 0),
- datetime(2017, 12, 31, 0, 0, 0),
- inc=True
- )
-
- for i in range(len(workshop_occurence_list)):
- workshop_occurence_list[i] = [{
- "user": str(user),
- "workshop": workshop_details.workshop_title,
- "date": workshop_occurence_list[i].date()
- }]
+ workshop_occurence_list = []
+ for workshop in workshop_details:
+ workshop_occurence = workshop.recurrences.between(
+ datetime(2017, 3, 12, 0, 0, 0),
+ datetime(2040, 12, 31, 0, 0, 0),
+ inc=True
+ )
+ for i in range(len(workshop_occurence)):
+ workshop_occurence_list.append({
+ "user": str(user),
+ "workshop": workshop.workshop_title,
+ "date": workshop_occurence[i].date()
+ })
+
requested_workshop = RequestedWorkshop.objects.filter(
- requested_workshop_instructor=user.id
- )
+ requested_workshop_instructor=user.id
+ )
+
#Need to recheck logic
for j in range(len(requested_workshop)):
for i in workshop_occurence_list:
- if i[0]['date'] == requested_workshop[j].requested_workshop_date:
+ a = requested_workshop[j].requested_workshop_date
+ b = requested_workshop[j].requested_workshop_title
+ if i['date'] == a and i['workshop'] == b:
workshop_occurence_list.remove(i)
+ del a, b
-
- #Show upto 3 Workshops per page
- paginator = Paginator(workshop_occurence_list, 3)
+
+ #Show upto 12 Workshops per page
+ paginator = Paginator(workshop_occurence_list, 12)
page = request.GET.get('page')
try:
workshops = paginator.page(page)
@@ -295,7 +311,7 @@ def my_workshops(request):
user_position = request.user.profile.position
client_data = request.body.decode("utf-8").split("&")
client_data = client_data[0].split("%2C")
-
+
if client_data[-1] == 'ACCEPTED':
workshop_date = datetime.strptime(
client_data[1], "%Y-%m-%d"
@@ -305,13 +321,14 @@ def my_workshops(request):
workshop_status = RequestedWorkshop.objects.get(
requested_workshop_instructor=user.id,
requested_workshop_date=workshop_date,
- requested_workshop_coordinator=coordinator_obj.id
+ requested_workshop_coordinator=coordinator_obj.id,
+ requested_workshop_title=client_data[2]
)
workshop_status.status = client_data[-1]
workshop_status.save()
- confirm_workshop = BookedWorkshop()
- confirm_workshop.booked_workshop = workshop_status
- confirm_workshop.save()
+ booked_workshop_obj = BookedWorkshop()
+ booked_workshop_obj.booked_workshop = workshop_status
+ booked_workshop_obj.save()
#For Instructor
@@ -331,24 +348,29 @@ def my_workshops(request):
elif client_data[-1] == 'DELETED':
workshop_date = client_data[1]
- workshop = Workshop.objects.get(workshop_instructor=request.user.id,
- workshop_title_id=client_data[2])
+ workshops_list = Workshop.objects.filter(workshop_instructor=request.user.id,
+ workshop_title_id=client_data[2]
+ )
- workshop_recurrence_list = workshop.recurrences.between(
- datetime(2017, 3, 12, 0, 0, 0),
- datetime(2017, 12, 31, 0, 0, 0),
- inc=True
- )
+ for workshop in workshops_list:
+ workshop_recurrence_list = workshop.recurrences.between(
+ datetime(2017, 3, 12, 0, 0, 0),
+ datetime(2040, 12, 31, 0, 0, 0),
+ inc=True
+ )
- for d in workshop_recurrence_list:
- if workshop_date == d.strftime("%Y-%m-%d"):
- rW_obj = RequestedWorkshop()
- rW_obj.requested_workshop_instructor = request.user
- rW_obj.requested_workshop_coordinator = request.user
- rW_obj.requested_workshop_date = workshop_date
- rW_obj.requested_workshop_title = workshop.workshop_title
- rW_obj.status = client_data[-1]
- rW_obj.save()
+ for d in workshop_recurrence_list:
+ if workshop_date == d.strftime("%Y-%m-%d"):
+ rW_obj = RequestedWorkshop()
+ rW_obj.requested_workshop_instructor = request.user
+ rW_obj.requested_workshop_coordinator = request.user
+ rW_obj.requested_workshop_date = workshop_date
+ rW_obj.requested_workshop_title = workshop.workshop_title
+ rW_obj.status = client_data[-1]
+ rW_obj.save()
+ bW_obj = BookedWorkshop()
+ bW_obj.booked_workshop = rW_obj
+ bW_obj.save()
#For instructor
send_email(request, call_on='Workshop Deleted',
@@ -358,6 +380,20 @@ def my_workshops(request):
return HttpResponse("Workshop Deleted")
else:
+ workshop_date = datetime.strptime(
+ client_data[1], "%Y-%m-%d"
+ )
+ print(client_data)
+ coordinator_obj = User.objects.get(username=client_data[0][2:])
+ workshop_status = RequestedWorkshop.objects.get(
+ requested_workshop_instructor=user.id,
+ requested_workshop_date=workshop_date,
+ requested_workshop_coordinator=coordinator_obj.id,
+ requested_workshop_title=client_data[2]
+ )
+ workshop_status.status = client_data[-1]
+ workshop_status.save()
+
#For Instructor
send_email(request, call_on='Booking Request Rejected',
user_position='instructor',
@@ -377,8 +413,8 @@ def my_workshops(request):
requested_workshop_instructor=user.id
)
- #Show upto 6 Workshops per page
- paginator = Paginator(workshop_occurence_list, 9)
+ #Show upto 12 Workshops per page
+ paginator = Paginator(workshop_occurence_list, 12)
page = request.GET.get('page')
try:
workshop_occurences = paginator.page(page)
@@ -397,8 +433,8 @@ def my_workshops(request):
requested_workshop_coordinator=user.id
)
- #Show upto 6 Workshops per page
- paginator = Paginator(workshop_occurence_list, 9)
+ #Show upto 12 Workshops per page
+ paginator = Paginator(workshop_occurence_list, 12)
print(paginator)
page = request.GET.get('page')
try:
@@ -491,27 +527,23 @@ def create_workshop(request):
def view_course_list(request):
'''Gives the course details '''
user = request.user
- if is_instructor(user):
- course_list = Course.objects.all()
- paginator = Paginator(course_list, 6) #Show upto 12 Courses per page
+ course_list = Course.objects.all()
+ paginator = Paginator(course_list, 12) #Show upto 12 Courses per page
- page = request.GET.get('page')
- try:
- courses = paginator.page(page)
- except PageNotAnInteger:
- #If page is not an integer, deliver first page.
- courses = paginator.page(1)
- except EmptyPage:
- #If page is out of range(e.g 999999), deliver last page.
- courses = paginator.page(paginator.num_pages)
-
- return render(
- request, 'workshop_app/view_course_list.html', \
- {'courses': courses}
- )
-
- else:
- return redirect('/book/')
+ page = request.GET.get('page')
+ try:
+ courses = paginator.page(page)
+ except PageNotAnInteger:
+ #If page is not an integer, deliver first page.
+ courses = paginator.page(1)
+ except EmptyPage:
+ #If page is out of range(e.g 999999), deliver last page.
+ courses = paginator.page(paginator.num_pages)
+
+ return render(
+ request, 'workshop_app/view_course_list.html', \
+ {'courses': courses}
+ )
@login_required