diff options
author | pnshiralkar | 2020-04-26 03:32:09 +0530 |
---|---|---|
committer | pnshiralkar | 2020-04-26 03:32:09 +0530 |
commit | ce04a86556bbbf95851de528d7a74acbc30fc1fb (patch) | |
tree | 13fb30b7033ca2e9f9bc16b88fb8019142c6d153 /workshop_app/views.py | |
parent | 37f0afbf21fc6d4e9eb92433d666fccfd6654d53 (diff) | |
download | workshop_booking-ce04a86556bbbf95851de528d7a74acbc30fc1fb.tar.gz workshop_booking-ce04a86556bbbf95851de528d7a74acbc30fc1fb.tar.bz2 workshop_booking-ce04a86556bbbf95851de528d7a74acbc30fc1fb.zip |
Propose workshop by coordinator and accept workshop by instructor done
Diffstat (limited to 'workshop_app/views.py')
-rw-r--r-- | workshop_app/views.py | 1723 |
1 files changed, 793 insertions, 930 deletions
diff --git a/workshop_app/views.py b/workshop_app/views.py index 3ebae9f..a5a7f66 100644 --- a/workshop_app/views.py +++ b/workshop_app/views.py @@ -1,46 +1,39 @@ -from textwrap import dedent from os import listdir, path, sep from zipfile import ZipFile -import datetime as dt -import csv -import logging + +from teams.models import Team + try: from StringIO import StringIO as string_io except ImportError: from io import BytesIO as string_io -from datetime import datetime, date -from itertools import chain +from datetime import datetime from django.contrib.auth import login, logout, authenticate from django.contrib.auth.decorators import login_required -from django.contrib import messages from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.shortcuts import render, redirect from django.utils import timezone -from django.http import HttpResponse, HttpResponseRedirect -from django.conf import settings -from django.contrib import messages +from django.http import HttpResponse from .forms import ( - UserRegistrationForm, UserLoginForm, - ProfileForm, CreateWorkshop, - ProposeWorkshopDateForm, ProfileCommentsForm - ) + UserRegistrationForm, UserLoginForm, + ProfileForm, CreateWorkshop, + WorkshopForm +) from .models import ( - Profile, User, - has_profile, Workshop, - WorkshopType, RequestedWorkshop, - BookedWorkshop, ProposeWorkshopDate, - Testimonial, ProfileComments, Banner - ) -from teams.models import Team + Profile, User, + has_profile, Workshop, + WorkshopType, + Testimonial, Banner +) from .send_mails import send_email __author__ = "Akshen Doke" __credits__ = ["Mahesh Gudi", "Aditya P.", "Ankit Javalkar", - "Prathamesh Salunke", "Kiran Kishore", - "KhushalSingh Rajput", "Prabhu Ramachandran", - "Arun KP"] + "Prathamesh Salunke", "Kiran Kishore", + "KhushalSingh Rajput", "Prabhu Ramachandran", + "Arun KP"] def is_email_checked(user): @@ -60,7 +53,7 @@ def index(request): user = request.user form = UserLoginForm() testimonials = Testimonial.objects.all() - if user.is_authenticated() and is_email_checked(user): + if user.is_authenticated and is_email_checked(user): if user.groups.filter(name='instructor').count() > 0: return redirect('/manage/') return redirect('/book/') @@ -75,13 +68,13 @@ def index(request): return redirect('/manage/') return redirect('/book/') - return render(request, "workshop_app/index.html", - { - "form": form, - "testimonials": testimonials, - "banners": Banner.objects.all(), - } - ) + return render(request, "workshop_app/index.html", + { + "form": form, + "testimonials": testimonials, + "banners": Banner.objects.all(), + } + ) def is_instructor(user): @@ -94,7 +87,7 @@ def user_login(request): user = request.user if is_superuser(user): return redirect('/admin') - if user.is_authenticated(): + if user.is_authenticated: if user.groups.filter(name='instructor').count() > 0: return redirect('/manage/') return redirect('/book/') @@ -125,19 +118,19 @@ def activate_user(request, key=None): if is_superuser(user): return redirect("/admin") if key is None: - if user.is_authenticated() and user.profile.is_email_verified==0 and \ - timezone.now() > user.profile.key_expiry_time: + if user.is_authenticated and user.profile.is_email_verified == 0 and \ + timezone.now() > user.profile.key_expiry_time: status = "1" Profile.objects.get(user_id=user.profile.user_id).delete() User.objects.get(id=user.profile.user_id).delete() return render(request, 'workshop_app/activation.html', - {'status':status}) - elif user.is_authenticated() and user.profile.is_email_verified==0: + {'status': status}) + elif user.is_authenticated and user.profile.is_email_verified == 0: return render(request, 'workshop_app/activation.html') - elif user.is_authenticated() and user.profile.is_email_verified: + elif user.is_authenticated and user.profile.is_email_verified: status = "2" return render(request, 'workshop_app/activation.html', - {'status':status}) + {'status': status}) else: return redirect('/register/') @@ -154,7 +147,7 @@ def activate_user(request, key=None): logout(request) return redirect('/logout/') return render(request, 'workshop_app/activation.html', - {"status": status}) + {"status": status}) def user_register(request): @@ -168,556 +161,429 @@ def user_register(request): login(request, new_user) user_position = request.user.profile.position send_email( - request, call_on='Registration', - user_position=user_position, - key=key - ) + request, call_on='Registration', + user_position=user_position, + key=key + ) return render(request, 'workshop_app/activation.html') else: - if request.user.is_authenticated(): + if request.user.is_authenticated: return redirect('/view_profile/') return render( request, "workshop_app/registration/register.html", {"form": form} - ) + ) else: - if request.user.is_authenticated() and is_email_checked(request.user): + if request.user.is_authenticated and is_email_checked(request.user): return redirect('/my_workshops/') - elif request.user.is_authenticated(): + elif request.user.is_authenticated: return render(request, 'workshop_app/activation.html') form = UserRegistrationForm() return render(request, "workshop_app/registration/register.html", {"form": form}) # This is shown to coordinator for booking workshops -def book(request): - user = request.user - if user.is_authenticated(): - if is_email_checked(user): - if user.groups.filter(name='instructor').count() > 0: - return redirect('/manage/') - - workshop_details = Workshop.objects.all() - - workshop_occurence_list = [] - today = datetime.now() + dt.timedelta(days=3) - upto = datetime.now() + dt.timedelta(weeks=52) - for workshops in workshop_details: - dates = workshops.recurrences.between( - today, - upto, - inc=True - ) - - for d in range(len(dates)): - 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.workshoptype_description - ] - - workshop_occurence_list.append(workshop_occurence) - del workshop_occurence - - # Gives you the objects of BookedWorkshop - bookedworkshop = BookedWorkshop.objects.all() - if len(bookedworkshop) != 0: - for b in bookedworkshop: - ''' - handles objects from bookedworkshop - -requested - -proposed - ''' - try: - x = b.booked_workshop_requested.requested_workshop_date.strftime("%d-%m-%Y") - y = b.booked_workshop_requested.requested_workshop_title - except: - x = b.booked_workshop_proposed.proposed_workshop_date.strftime("%d-%m-%Y") - y = b.booked_workshop_proposed.proposed_workshop_title - for a in workshop_occurence_list: - if a[0] == x and a[2] == y: - workshop_occurence_list.remove(a) - del x, y - - # Objects of RequestedWorkshop for that particular coordinator - rW_obj = RequestedWorkshop.objects.filter( - requested_workshop_coordinator=request.user - ) - for r in rW_obj: - x = r.requested_workshop_date.strftime("%d-%m-%Y") - for a in workshop_occurence_list: - if a[0] == x: - workshop_occurence_list.remove(a) - del x - - - # Show upto 12 Workshops per page - paginator = Paginator(workshop_occurence_list, 12) - page = request.GET.get('page') - try: - workshop_occurences = paginator.page(page) - except PageNotAnInteger: - # If page is not an integer, deliver first page. - workshop_occurences = paginator.page(1) - except EmptyPage: - # If page is out of range(e.g 999999), deliver last page. - workshop_occurences = paginator.page(paginator.num_pages) - - return render( - request, "workshop_app/booking.html", - {"workshop_details": workshop_occurences} - ) - else: - return redirect('/activate_user/') - else: - return redirect('/login/') - - -@login_required -def book_workshop(request): - ''' - 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:] - - if client_data[-1] == '0': - queue = RequestedWorkshop.objects.filter( - requested_workshop_instructor=client_data[1], - requested_workshop_date=datetime.strptime( - client_data[0][2:], "%d-%m-%Y" - ), - requested_workshop_title=client_data[-2] - ).count() + 1 - - return HttpResponse(str(queue)) - - workshops_list = Workshop.objects.filter( - workshop_instructor=client_data[1], - workshop_title_id=client_data[2] - ) - today = datetime.now() + dt.timedelta(days=3) - upto = datetime.now() + dt.timedelta(weeks=52) - for workshop in workshops_list: - workshop_recurrence_list = workshop.recurrences.between( - today, - upto, - 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(dedent("""You already have a booking - for this workshop please check the - instructors response in My Workshops tab and - also check your email.""")) - else: - for w in workshop_recurrence_list: - if workshop_date == (w.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( - workshop_date,"%d-%m-%Y" - ) - rW_obj.requested_workshop_title = workshop.workshop_title - rW_obj.save() - - queue = RequestedWorkshop.objects.filter( - requested_workshop_instructor=workshop.workshop_instructor, - requested_workshop_date=datetime.strptime( - workshop_date, "%d-%m-%Y", - ), - requested_workshop_title=client_data[-1] - ).count() - - # Mail to instructor - send_email(request, call_on='Booking', - user_position='instructor', - workshop_date=workshop_date, - workshop_title=workshop.workshop_title.workshoptype_name, - user_name=str(request.user.get_full_name()), - other_email=workshop.workshop_instructor.email - ) - phone_number = workshop.workshop_instructor.profile.phone_number - #Mail to coordinator - send_email(request, call_on='Booking', - workshop_date=workshop_date, - workshop_title=workshop.workshop_title.workshoptype_name, - user_name=workshop.workshop_instructor.profile.user.get_full_name(), - other_email=workshop.workshop_instructor.email, - phone_number=phone_number) - - return HttpResponse(dedent("""\ - Your request has been successful, Please check - your email for further information. Your request is number - {0} in the queue.""".format(str(queue)))) - else: - logout(request) - return HttpResponse("Some Error Occurred.") - - -@login_required -def manage(request): - user = request.user - - if user.is_authenticated() and is_email_checked(user): - #Move user to the group via admin - if user.groups.filter(name='instructor').count() > 0: - try: - #Can Handle Multiple Workshops - workshop_details = Workshop.objects.filter( - workshop_instructor=user.id - ) - - workshop_occurence_list = [] - today = datetime.now() + dt.timedelta(days=3) - upto = datetime.now() + dt.timedelta(weeks=52) - for workshop in workshop_details: - workshop_occurence = workshop.recurrences.between( - today, - upto, - 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 - ) - - - #Need to recheck logic - for j in range(len(requested_workshop)): - for i in workshop_occurence_list: - 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 12 Workshops per page - paginator = Paginator(workshop_occurence_list, 12) - page = request.GET.get('page') - try: - workshops = paginator.page(page) - except PageNotAnInteger: - #If page is not an integer, deliver first page. - workshops = paginator.page(1) - except EmptyPage: - #If page is out of range(e.g 999999), deliver last page. - workshops = paginator.page(paginator.num_pages) - except: - workshops = None - - return render( - request, "workshop_app/manage.html", - {"workshop_occurence_list": workshops} - ) - - return redirect('/book/') - else: - return redirect('/activate_user/') - - +# def book(request): +# user = request.user +# if user.is_authenticated: +# if is_email_checked(user): +# if user.groups.filter(name='instructor').count() > 0: +# return redirect('/manage/') +# +# workshop_details = Workshop.objects.all() +# +# workshop_occurence_list = [] +# today = datetime.now() + dt.timedelta(days=3) +# upto = datetime.now() + dt.timedelta(weeks=52) +# for workshops in workshop_details: +# dates = workshops.recurrences.between( +# today, +# upto, +# inc=True +# ) +# +# for d in range(len(dates)): +# 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.workshoptype_description +# ] +# +# workshop_occurence_list.append(workshop_occurence) +# del workshop_occurence +# +# # Gives you the objects of BookedWorkshop +# bookedworkshop = BookedWorkshop.objects.all() +# if len(bookedworkshop) != 0: +# for b in bookedworkshop: +# ''' +# handles objects from bookedworkshop +# -requested +# -proposed +# ''' +# try: +# x = b.booked_workshop_requested.requested_workshop_date.strftime("%d-%m-%Y") +# y = b.booked_workshop_requested.requested_workshop_title +# except: +# x = b.booked_workshop_proposed.proposed_workshop_date.strftime("%d-%m-%Y") +# y = b.booked_workshop_proposed.proposed_workshop_title +# for a in workshop_occurence_list: +# if a[0] == x and a[2] == y: +# workshop_occurence_list.remove(a) +# del x, y +# +# # Objects of RequestedWorkshop for that particular coordinator +# rW_obj = RequestedWorkshop.objects.filter( +# requested_workshop_coordinator=request.user +# ) +# for r in rW_obj: +# x = r.requested_workshop_date.strftime("%d-%m-%Y") +# for a in workshop_occurence_list: +# if a[0] == x: +# workshop_occurence_list.remove(a) +# del x +# +# +# # Show upto 12 Workshops per page +# paginator = Paginator(workshop_occurence_list, 12) +# page = request.GET.get('page') +# try: +# workshop_occurences = paginator.page(page) +# except PageNotAnInteger: +# # If page is not an integer, deliver first page. +# workshop_occurences = paginator.page(1) +# except EmptyPage: +# # If page is out of range(e.g 999999), deliver last page. +# workshop_occurences = paginator.page(paginator.num_pages) +# +# return render( +# request, "workshop_app/booking.html", +# {"workshop_details": workshop_occurences} +# ) +# else: +# return redirect('/activate_user/') +# else: +# return redirect('/login/') +# +# +# @login_required +# def book_workshop(request): +# ''' +# 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:] +# +# if client_data[-1] == '0': +# queue = RequestedWorkshop.objects.filter( +# requested_workshop_instructor=client_data[1], +# requested_workshop_date=datetime.strptime( +# client_data[0][2:], "%d-%m-%Y" +# ), +# requested_workshop_title=client_data[-2] +# ).count() + 1 +# +# return HttpResponse(str(queue)) +# +# workshops_list = Workshop.objects.filter( +# workshop_instructor=client_data[1], +# workshop_title_id=client_data[2] +# ) +# today = datetime.now() + dt.timedelta(days=3) +# upto = datetime.now() + dt.timedelta(weeks=52) +# for workshop in workshops_list: +# workshop_recurrence_list = workshop.recurrences.between( +# today, +# upto, +# 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(dedent("""You already have a booking +# for this workshop please check the +# instructors response in My Workshops tab and +# also check your email.""")) +# else: +# for w in workshop_recurrence_list: +# if workshop_date == (w.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( +# workshop_date,"%d-%m-%Y" +# ) +# rW_obj.requested_workshop_title = workshop.workshop_title +# rW_obj.save() +# +# queue = RequestedWorkshop.objects.filter( +# requested_workshop_instructor=workshop.workshop_instructor, +# requested_workshop_date=datetime.strptime( +# workshop_date, "%d-%m-%Y", +# ), +# requested_workshop_title=client_data[-1] +# ).count() +# +# # Mail to instructor +# send_email(request, call_on='Booking', +# user_position='instructor', +# workshop_date=workshop_date, +# workshop_title=workshop.workshop_title.workshoptype_name, +# user_name=str(request.user.get_full_name()), +# other_email=workshop.workshop_instructor.email +# ) +# phone_number = workshop.workshop_instructor.profile.phone_number +# #Mail to coordinator +# send_email(request, call_on='Booking', +# workshop_date=workshop_date, +# workshop_title=workshop.workshop_title.workshoptype_name, +# user_name=workshop.workshop_instructor.profile.user.get_full_name(), +# other_email=workshop.workshop_instructor.email, +# phone_number=phone_number) +# +# return HttpResponse(dedent("""\ +# Your request has been successful, Please check +# your email for further information. Your request is number +# {0} in the queue.""".format(str(queue)))) +# else: +# logout(request) +# return HttpResponse("Some Error Occurred.") +# +# +# @login_required +# def manage(request): +# user = request.user +# +# if user.is_authenticated and is_email_checked(user): +# #Move user to the group via admin +# if user.groups.filter(name='instructor').count() > 0: +# try: +# #Can Handle Multiple Workshops +# workshop_details = Workshop.objects.filter( +# workshop_instructor=user.id +# ) +# +# workshop_occurence_list = [] +# today = datetime.now() + dt.timedelta(days=3) +# upto = datetime.now() + dt.timedelta(weeks=52) +# for workshop in workshop_details: +# workshop_occurence = workshop.recurrences.between( +# today, +# upto, +# 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 +# ) +# +# +# #Need to recheck logic +# for j in range(len(requested_workshop)): +# for i in workshop_occurence_list: +# 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 12 Workshops per page +# paginator = Paginator(workshop_occurence_list, 12) +# page = request.GET.get('page') +# try: +# workshops = paginator.page(page) +# except PageNotAnInteger: +# #If page is not an integer, deliver first page. +# workshops = paginator.page(1) +# except EmptyPage: +# #If page is out of range(e.g 999999), deliver last page. +# workshops = paginator.page(paginator.num_pages) +# except: +# workshops = None +# +# return render( +# request, "workshop_app/manage.html", +# {"workshop_occurence_list": workshops} +# ) +# +# return redirect('/book/') +# else: +# return redirect('/activate_user/') +# +# @login_required def my_workshops(request): user = request.user - if user.is_authenticated() and is_email_checked(user): + if user.is_authenticated and is_email_checked(user): if is_instructor(user): 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") - if client_data[-1] == 'ACCEPTED': - workshop_date = datetime.strptime( - client_data[1], "%Y-%m-%d" - ) - - 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] + client_data = request.POST + action = request.POST.get('action') + if action == 'accept' or 'approve': + workshop_status = Workshop.objects.get(id=client_data.get('workshop_id')) + # Change Status of the selected workshop + workshop_status.status = 'ACCEPTED' + workshop_status.instructor = user workshop_status.save() - booked_workshop_obj = BookedWorkshop() - booked_workshop_obj.booked_workshop_requested = workshop_status - booked_workshop_obj.save() ws = workshop_status - cmail = ws.requested_workshop_coordinator.email - cname = ws.requested_workshop_coordinator.profile.user.get_full_name() - cnum = ws.requested_workshop_coordinator.profile.phone_number - cinstitute = ws.requested_workshop_coordinator.profile.institute + # Parameters for emails + cmail = ws.coordinator.email + cname = ws.coordinator.profile.user.get_full_name() + cnum = ws.coordinator.profile.phone_number + cinstitute = ws.coordinator.profile.institute inum = request.user.profile.phone_number - wtitle = ws.requested_workshop_title.workshoptype_name + wtitle = ws.title.name + workshop_date = str(ws.date) - #For Instructor + # For Instructor send_email(request, call_on='Booking Confirmed', - user_position='instructor', - workshop_date=str(client_data[1]), - workshop_title=wtitle, - user_name=str(cname), - other_email=cmail, - phone_number=cnum, - institute=cinstitute - ) - - #For Coordinator + user_position='instructor', + workshop_date=workshop_date, + workshop_title=wtitle, + user_name=str(cname), + other_email=cmail, + phone_number=cnum, + institute=cinstitute + ) + + # For Coordinator send_email(request, call_on='Booking Confirmed', - workshop_date=str(client_data[1]), - workshop_title=wtitle, - other_email=cmail, - phone_number=inum - ) - - elif client_data[-1] == 'DELETED': - workshop_date = client_data[1] - workshops_list = Workshop.objects.filter(workshop_instructor=request.user.id, - workshop_title_id=client_data[2] - ) - - today = datetime.now() + dt.timedelta(days=3) - upto = datetime.now() + dt.timedelta(weeks=52) - for workshop in workshops_list: - workshop_recurrence_list = workshop.recurrences.between( - today, - upto, - 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() - bW_obj = BookedWorkshop() - bW_obj.booked_workshop_requested = rW_obj - bW_obj.save() - - #For instructor - send_email(request, call_on='Workshop Deleted', - workshop_date=str(client_data[1]), - workshop_title=workshop.workshop_title - ) - - return HttpResponse("Workshop Deleted") - - elif client_data[-1] == 'APPROVED': - workshop_date = datetime.strptime( - client_data[1], "%Y-%m-%d" - ) - - coordinator_obj = User.objects.get(username=client_data[0][2:]) - workshop_status = ProposeWorkshopDate.objects.get( - proposed_workshop_date=workshop_date, - proposed_workshop_coordinator=coordinator_obj.id, - proposed_workshop_title=client_data[2] - ) - - workshop_status.status = 'ACCEPTED' - workshop_status.proposed_workshop_instructor = user + workshop_date=workshop_date, + workshop_title=wtitle, + other_email=cmail, + phone_number=inum + ) + + elif action == 'reject': + # Change Status of the selected workshop + workshop_status = RequestedWorkshop.objects.get(id=client_data.get('workshop_id')) + workshop_status.status = 'REJECTED' workshop_status.save() - booked_workshop_obj = BookedWorkshop() - booked_workshop_obj.booked_workshop_proposed = workshop_status - booked_workshop_obj.save() ws = workshop_status - cmail = ws.proposed_workshop_coordinator.email - cname = ws.proposed_workshop_coordinator.profile.user.get_full_name() - cnum = ws.proposed_workshop_coordinator.profile.phone_number - cinstitute = ws.proposed_workshop_coordinator.profile.institute - inum = request.user.profile.phone_number - wtitle = ws.proposed_workshop_title.workshoptype_name - - #For Instructor - send_email(request, call_on='Booking Confirmed', - user_position='instructor', - workshop_date=str(client_data[1]), - workshop_title=wtitle, - user_name=str(cname), - other_email=cmail, - phone_number=cnum, - institute=cinstitute - ) - - #For Coordinator - send_email(request, call_on='Booking Confirmed', - workshop_date=str(client_data[1]), - workshop_title=wtitle, - other_email=cmail, - phone_number=inum - ) - - elif client_data[-1] == 'CHANGE_DATE': - temp, iid = client_data[0].split("=") - temp, new_workshop_date = client_data[-2].split("%3D") - cid, workshop_title_id = client_data[1], client_data[2] - new_workshop_date = datetime.strptime( - new_workshop_date, "%Y-%m-%d" - ) - workshop_date = datetime.strptime( - client_data[3], "%Y-%m-%d" - ) + # Parameters for emails + wtitle = ws.requested_workshop_title.workshoptype_name + cmail = ws.requested_workshop_coordinator.email + cname = ws.requested_workshop_coordinator.profile.user.get_full_name() + cnum = ws.requested_workshop_coordinator.profile.phone_number + cinstitute = ws.requested_workshop_coordinator.profile.institute + workshop_date = str(ws.requested_workshop_date) + # For Instructor + send_email(request, call_on='Booking Request Rejected', + user_position='instructor', + workshop_date=workshop_date, + workshop_title=wtitle, + user_name=str(cname), + other_email=cmail, + phone_number=cnum, + institute=cinstitute + ) + + # For Coordinator + send_email(request, call_on='Booking Request Rejected', + workshop_date=workshop_date, + workshop_title=wtitle, + other_email=cmail + ) + + elif action == 'change_date': + cid = client_data.get('cid') + new_workshop_date = datetime.strptime(client_data.get('new_date'), "%Y-%m-%d") cemail = User.objects.get(id=cid) today = datetime.today() if today > new_workshop_date: - return HttpResponse("Please Give proper Date!") + # Invalid date + pass else: - result = RequestedWorkshop.objects.filter( - requested_workshop_instructor=user.id, - requested_workshop_coordinator=cid, - requested_workshop_title_id=workshop_title_id, - requested_workshop_date=workshop_date).update( - requested_workshop_date=new_workshop_date) - if result: - del temp + if client_data.get('workshop_type') == 'requested': + workshop = RequestedWorkshop.objects.filter(id=client_data.get('workshop_id')) + workshop_date = workshop[0].requested_workshop_date + workshop.update(requested_workshop_date=new_workshop_date) else: - ProposeWorkshopDate.objects.filter( - proposed_workshop_instructor=user.id, - proposed_workshop_coordinator=cid, - proposed_workshop_title_id=workshop_title_id, - proposed_workshop_date=workshop_date).update( - proposed_workshop_date=new_workshop_date) - - #For Instructor + workshop = ProposeWorkshopDate.objects.objects.filter(id=client_data.get('workshop_id')) + workshop_date = workshop.proposed_workshop_date + workshop.update(proposed_workshop_date=new_workshop_date) + + # For Instructor send_email(request, call_on='Change Date', - user_position='instructor', - workshop_date=workshop_date.date(), - new_workshop_date=str(new_workshop_date.date()) - ) - - #For Coordinator - send_email(request, call_on='Change Date', - new_workshop_date=str(new_workshop_date.date()), - workshop_date=str(workshop_date.date()), - other_email=cemail.email - ) - - return HttpResponse("Date Changed") - - else: - workshop_date = datetime.strptime( - client_data[1], "%Y-%m-%d" - ) - 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() - ws = workshop_status - wtitle = ws.requested_workshop_title.workshoptype_name - cmail = ws.requested_workshop_coordinator.email - cname = ws.requested_workshop_coordinator.profile.user.get_full_name() - cnum = ws.requested_workshop_coordinator.profile.phone_number - cinstitute = ws.requested_workshop_coordinator.profile.institute + user_position='instructor', + workshop_date=str(workshop_date), + new_workshop_date=str(new_workshop_date.date()) + ) - #For Instructor - send_email(request, call_on='Booking Request Rejected', - user_position='instructor', - workshop_date=str(client_data[1]), - workshop_title=wtitle, - user_name=str(cname), - other_email=cmail, - phone_number=cnum, - institute=cinstitute - ) - - #For Coordinator - send_email(request, call_on='Booking Request Rejected', - workshop_date=str(client_data[1]), - workshop_title=wtitle, - other_email=cmail - ) + # For Coordinator + send_email(request, call_on='Change Date', + new_workshop_date=str(new_workshop_date.date()), + workshop_date=str(workshop_date), + other_email=cemail.email + ) workshops = [] today = datetime.today().date() - workshop_occurence_list = RequestedWorkshop.objects.filter( - requested_workshop_instructor=user.id, - requested_workshop_date__gte=today, - ).order_by('-requested_workshop_date') + proposed_workshop = Workshop.objects.filter( + instructor=user.id, + date__gte=today, + ).order_by('-date') - proposed_workshop = ProposeWorkshopDate.objects.filter( - proposed_workshop_instructor=user.id, - proposed_workshop_date__gte=today, - ).order_by('-proposed_workshop_date') + proposed_workshop_pending = Workshop.objects.filter( + status='Pending' + ).order_by('-date') - proposed_workshop_pending = ProposeWorkshopDate.objects.filter( - status='Pending' - ).order_by('-proposed_workshop_date') - - workshops = list(workshop_occurence_list) + list(proposed_workshop) + list(proposed_workshop_pending) + workshops = list(proposed_workshop) + list(proposed_workshop_pending) + print(workshops) # team_members = list(set(user.profile.team_set.all().values_list('members', flat=True))) teams = Team.objects.filter(members=user.profile) - + team_workshops = [] if teams: team_members = Profile.objects.filter(team__in=teams).exclude(id=user.profile.id).distinct() team_member_ids = team_members.values_list('user__id') - team_workshops = ProposeWorkshopDate.objects.filter( - proposed_workshop_date__gte=today, - proposed_workshop_instructor_id__in=team_member_ids, - ) + team_workshops = Workshop.objects.filter( + date__gte=today, + instructor_id__in=team_member_ids, + ) return render(request, 'workshop_app/my_workshops.html', - { "workshops" :workshops, - "team_workshops": team_workshops, - "today": today}) + {"workshops": workshops, + "team_workshops": team_workshops, + "today": today}) else: - workshops = [] - workshop_occurence_list = RequestedWorkshop.objects.filter( - requested_workshop_coordinator=user.id - ).order_by('-requested_workshop_date') - - proposed_workshop = ProposeWorkshopDate.objects.filter( - proposed_workshop_coordinator=user.id - ).order_by('-proposed_workshop_date') - - workshops = list(workshop_occurence_list) + list(proposed_workshop) - + workshops = Workshop.objects.filter( + coordinator=user.id + ).order_by('-date') return render(request, 'workshop_app/my_workshops.html', - {"workshops": workshops}) + {"workshops": workshops}) else: return redirect('/login/') @login_required def propose_workshop(request): - '''Coordinator proposed a workshop and date''' + """Coordinator proposed a workshop and date""" user = request.user if is_superuser(user): @@ -727,38 +593,37 @@ def propose_workshop(request): return redirect('/manage/') else: if request.method == 'POST': - form = ProposeWorkshopDateForm(request.POST) + form = WorkshopForm(request.POST) if form.is_valid(): form_data = form.save(commit=False) - form_data.proposed_workshop_coordinator = user - #Avoiding Duplicate workshop entries for same date and workshop_title - if ProposeWorkshopDate.objects.filter( - proposed_workshop_date=form_data.proposed_workshop_date, - proposed_workshop_title=form_data.proposed_workshop_title, - proposed_workshop_coordinator=form_data.proposed_workshop_coordinator - ).exists(): + form_data.coordinator = user + # Avoiding Duplicate workshop entries for same date and workshop_title + if Workshop.objects.filter( + date=form_data.date, + title=form_data.title, + coordinator=form_data.coordinator + ).exists(): return redirect('/my_workshops/') else: - form_data.proposed_workshop_coordinator.save() form_data.save() instructors = Profile.objects.filter(position='instructor') for i in instructors: send_email(request, call_on='Proposed Workshop', - user_position='instructor', - workshop_date=str(form_data.proposed_workshop_date), - workshop_title=form_data.proposed_workshop_title, - user_name=str(user.get_full_name()), - other_email=i.user.email, - phone_number=user.profile.phone_number, - institute=user.profile.institute - ) + user_position='instructor', + workshop_date=str(form_data.date), + workshop_title=form_data.title, + user_name=str(user.get_full_name()), + other_email=i.user.email, + phone_number=user.profile.phone_number, + institute=user.profile.institute + ) return redirect('/my_workshops/') else: - form = ProposeWorkshopDateForm() + form = WorkshopForm() return render( - request, 'workshop_app/propose_workshop.html', - {"form": form } - ) + request, 'workshop_app/propose_workshop.html', + {"form": form} + ) else: return render(request, 'workshop_app/activation.html') @@ -769,10 +634,10 @@ def view_profile(request): user = request.user if is_superuser(user): return redirect('/admin') - if is_email_checked(user) and user.is_authenticated(): + if is_email_checked(user) and user.is_authenticated: return render(request, "workshop_app/view_profile.html") else: - if user.is_authenticated(): + if user.is_authenticated: return render(request, 'workshop_app/activation.html') else: try: @@ -818,8 +683,8 @@ def edit_profile(request): form_data.save() return render( - request, 'workshop_app/profile_updated.html' - ) + request, 'workshop_app/profile_updated.html' + ) else: context['form'] = form return render(request, 'workshop_app/edit_profile.html', context) @@ -840,7 +705,7 @@ def create_workshop(request): form = CreateWorkshop(request.POST) if form.is_valid(): form_data = form.save(commit=False) - #form_data.profile_id = profile.id + # form_data.profile_id = profile.id form_data.workshop_instructor = user form_data.workshop_instructor.save() form_data.save() @@ -848,9 +713,9 @@ def create_workshop(request): else: form = CreateWorkshop() return render( - request, 'workshop_app/create_workshop.html', - {"form": form } - ) + request, 'workshop_app/create_workshop.html', + {"form": form} + ) else: return redirect('/book/') @@ -864,9 +729,9 @@ def view_workshoptype_details(request, workshoptype_id): view_workshoptype_details = WorkshopType.objects.get(id=workshoptype_id) return render( - request, 'workshop_app/view_workshoptype_details.html', \ - {'workshoptype': view_workshoptype_details} - ) + request, 'workshop_app/view_workshoptype_details.html', \ + {'workshoptype': view_workshoptype_details} + ) def view_workshoptype_list(request): @@ -877,22 +742,22 @@ def view_workshoptype_list(request): workshoptype_list = WorkshopType.objects.all() - paginator = Paginator(workshoptype_list, 12) #Show upto 12 workshops per page + paginator = Paginator(workshoptype_list, 12) # Show upto 12 workshops per page page = request.GET.get('page') try: workshoptype = paginator.page(page) except PageNotAnInteger: - #If page is not an integer, deliver first page. + # If page is not an integer, deliver first page. workshoptype = paginator.page(1) except EmptyPage: - #If page is out of range(e.g 999999), deliver last page. + # If page is out of range(e.g 999999), deliver last page. workshoptype = paginator.page(paginator.num_pages) return render( - request, 'workshop_app/view_workshoptype_list.html', \ - {'workshoptype': workshoptype} - ) + request, 'workshop_app/view_workshoptype_list.html', \ + {'workshoptype': workshoptype} + ) def faq(request): @@ -904,7 +769,7 @@ def how_to_participate(request): def file_view(request, workshop_title): - if workshop_title =='flowchart': + if workshop_title == 'flowchart': return render(request, 'workshop_app/how_to_participate.html') else: filename = WorkshopType.objects.get(id=workshop_title) @@ -919,13 +784,12 @@ def file_view(request, workshop_title): zipfile_name.seek(0) response = HttpResponse(content_type='application/zip') response['Content-Disposition'] = 'attachment; filename={0}.zip'.format( - filename.workshoptype_name.replace(" ", "_") - ) + filename.workshoptype_name.replace(" ", "_") + ) response.write(zipfile_name.read()) return response - def check_workshop_type(x): try: y = datetime.strftime(x.proposed_workshop_date, '%d-%m-%Y') @@ -933,360 +797,359 @@ def check_workshop_type(x): y = datetime.strftime(x.requested_workshop_date, '%d-%m-%Y') return y - -@login_required -def workshop_stats(request): - user = request.user - today = datetime.now() - upto = today + dt.timedelta(days=120) - - #For Monthly Chart - workshop_count = [0] * 12 - for x in range(12): - workshop_count[x] +=RequestedWorkshop.objects.filter( - requested_workshop_date__year=str(today.year), - requested_workshop_date__month=str(x+1), - status='ACCEPTED').count() - workshop_count[x] +=ProposeWorkshopDate.objects.filter( - proposed_workshop_date__year=str(today.year), - proposed_workshop_date__month=str(x+1), - status='ACCEPTED').count() - - # Count Total Number of workshops for each type - workshop_titles = WorkshopType.objects.all() - workshoptype_dict = {} - for title in workshop_titles: - workshoptype_dict[title]=0 - - for title in workshoptype_dict.keys(): - workshoptype_dict[title] += RequestedWorkshop.objects.filter( - requested_workshop_title=title, - status='ACCEPTED').count() - workshoptype_dict[title] += ProposeWorkshopDate.objects.filter( - proposed_workshop_title=title, - status='ACCEPTED').count() - #For Pie Chart - workshoptype_num = [] - workshoptype_title = [] - for title in workshoptype_dict.keys(): - workshoptype_title.append(str(title)) - - for count in workshoptype_dict.values(): - workshoptype_num.append(count) - - workshoptype_count = [workshoptype_title, workshoptype_num] - del workshoptype_title, workshoptype_num - - # For India Map - states = [ - ['Code', 'State', 'Number'], - ["IN-AP", "Andhra Pradesh", 0], - ["IN-AR", "Arunachal Pradesh", 0], - ["IN-AS", "Assam", 0], - ["IN-BR", "Bihar", 0], - ["IN-CT", "Chhattisgarh", 0], - ["IN-GA", "Goa", 0], - ["IN-GJ", "Gujarat", 0], - ["IN-HR", "Haryana", 0], - ["IN-HP", "Himachal Pradesh", 0], - ["IN-JK", "Jammu and Kashmir", 0], - ["IN-JH", "Jharkhand", 0], - ["IN-KA", "Karnataka", 0], - ["IN-KL", "Kerala", 0], - ["IN-MP", "Madhya Pradesh", 0], - ["IN-MH", "Maharashtra", 0], - ["IN-MN", "Manipur", 0], - ["IN-ML", "Meghalaya", 0], - ["IN-MZ", "Mizoram", 0], - ["IN-NL", "Nagaland", 0], - ["IN-OR", "Odisha", 0], - ["IN-PB", "Punjab", 0], - ["IN-RJ", "Rajasthan", 0], - ["IN-SK", "Sikkim", 0], - ["IN-TN", "Tamil Nadu", 0], - ["IN-TG", "Telangana", 0], - ["IN-TR", "Tripura", 0], - ["IN-UT", "Uttarakhand", 0], - ["IN-UP", "Uttar Pradesh", 0], - ["IN-WB", "West Bengal", 0], - ["IN-AN", "Andaman and Nicobar Islands", 0], - ["IN-CH", "Chandigarh", 0], - ["IN-DN", "Dadra and Nagar Haveli", 0], - ["IN-DD", "Daman and Diu", 0], - ["IN-DL", "Delhi", 0], - ["IN-LD", "Lakshadweep", 0], - ["IN-PY", "Puducherry", 0] - ] - - workshop_state = [] - requestedWorkshops = RequestedWorkshop.objects.filter(status='ACCEPTED') - proposedWorkshops = ProposeWorkshopDate.objects.filter(status='ACCEPTED') - for workshop in requestedWorkshops: - for s in states: - if s[0] == workshop.requested_workshop_coordinator.profile.state: - s[2] +=1 - - for workshop in proposedWorkshops: - for s in states: - if s[0] == workshop.proposed_workshop_coordinator.profile.state: - s[2] +=1 - - #For Data Downloading and Viewing - if request.method == 'POST': - try: - from_dates = request.POST.get('from') - to_dates = request.POST.get('to') - - #Fetches Accepted workshops which were proposed by Coordinators - proposed_workshops = ProposeWorkshopDate.objects.filter( - proposed_workshop_date__range=(from_dates, to_dates), - status='ACCEPTED' - ) - - # Fetches Accepted workshops which were Accepted by - # Instructors based on their Availability - requested_workshops = RequestedWorkshop.objects.filter( - requested_workshop_date__range=(from_dates, to_dates), - status='ACCEPTED' - ) - - upcoming_workshops = [] - - for workshop in proposed_workshops: - upcoming_workshops.append(workshop) - - for workshop in requested_workshops: - upcoming_workshops.append(workshop) - - upcoming_workshops = sorted(upcoming_workshops, - key=lambda x: check_workshop_type(x)) - - download = request.POST.get('Download') - if download: - response = HttpResponse(content_type='text/csv') - - response['Content-Disposition'] = 'attachment;\ - filename="records_from_{0}_to_{1}.csv"'.format( - from_dates,to_dates - ) - - writer = csv.writer(response) - header = [ - 'coordinator name', - 'instructor name', - 'workshop', - 'date', - 'status', - 'institute name' - ] - - writer.writerow(header) - - for workshop in upcoming_workshops: - try: - row = [ - workshop.proposed_workshop_coordinator, - workshop.proposed_workshop_instructor, - workshop.proposed_workshop_title, - workshop.proposed_workshop_date, - workshop.status, - workshop.proposed_workshop_coordinator.profile.institute - ] - - except: - row = [ - workshop.requested_workshop_coordinator, - workshop.requested_workshop_instructor, - workshop.requested_workshop_title, - workshop.requested_workshop_date, - workshop.status, - workshop.requested_workshop_coordinator.profile.institute - ] - - writer.writerow(row) - return response - else: - return render(request, 'workshop_app/workshop_stats.html', - { - "upcoming_workshops": upcoming_workshops, - "show_workshop_stats": settings.SHOW_WORKSHOP_STATS, - "workshop_count": workshop_count, - "workshoptype_count": workshoptype_count, - "india_map": states - }) - except: - messages.info(request, 'Please enter Valid Dates') - - if is_instructor(user) and is_email_checked(user): - try: - #Fetches Accepted workshops which were proposed by Coordinators - proposed_workshops = ProposeWorkshopDate.objects.filter( - proposed_workshop_date__range=(today, upto), - status='ACCEPTED' - ) - - #Fetches Accepted workshops which were Accepted by - # Instructors based on their Availability - requested_workshops = RequestedWorkshop.objects.filter( - requested_workshop_date__range=(today, upto), - status='ACCEPTED' - ) - - upcoming_workshops = [] - for workshop in proposed_workshops: - upcoming_workshops.append(workshop) - - for workshop in requested_workshops: - upcoming_workshops.append(workshop) - - upcoming_workshops = sorted(upcoming_workshops, - key=lambda x: check_workshop_type(x)) - - except: - upcoming_workshops = None - - paginator = Paginator(upcoming_workshops, 12) - - page = request.GET.get('page') - try: - upcoming_workshops = paginator.page(page) - except PageNotAnInteger: - #If page is not an integer, deliver first page. - upcoming_workshops = paginator.page(1) - except EmptyPage: - #If page is out of range(e.g 999999), deliver last page. - upcoming_workshops = paginator.page(paginator.num_pages) - - - return render(request, 'workshop_app/workshop_stats.html', - { - "upcoming_workshops": upcoming_workshops, - "show_workshop_stats": settings.SHOW_WORKSHOP_STATS, - "workshop_count": workshop_count, - "workshoptype_count": workshoptype_count, - "india_map": states - }) - else: - return redirect('/manage/') - - -def self_workshop(request): - return render(request, "workshop_app/self_workshop.html") - - - -@login_required -def view_comment_profile(request, user_id): - '''instructor can view/post comments on coordinator profile ''' - user = request.user - if is_instructor(user) and is_email_checked(user): - comment_form = ProfileCommentsForm() - coordinator_profile = Profile.objects.get(user_id=user_id) - requested_workshop = RequestedWorkshop.objects.filter(requested_workshop_coordinator=user_id).order_by( - 'requested_workshop_title') - propose_workshop = ProposeWorkshopDate.objects.filter(proposed_workshop_coordinator=user_id).order_by( - 'proposed_workshop_date') - workshops=[] - for workshop in propose_workshop: - workshops.append(workshop) - - for workshop in requested_workshop: - workshops.append(workshop) - try: - comments = ProfileComments.objects.filter(coordinator_profile_id=user_id).order_by('-created_date') - except: - comments = None - if request.method == 'POST': - comment_formpost = ProfileCommentsForm(request.POST) - if comment_formpost.is_valid(): - form_data = comment_formpost.save(commit=False) - form_data.coordinator_profile_id = user_id - form_data.instructor_profile_id = user.id - form_data.save() - - return render(request, "workshop_app/view_comment_profile.html", - {"coordinator_profile": coordinator_profile, - "comments": comments, - "comment_form": comment_form - }) - else: - if comments is not None: - #Show upto 12 Workshops per page - paginator = Paginator(comments, 12) - page = request.GET.get('page') - try: - comments = paginator.page(page) - except PageNotAnInteger: - #If page is not an integer, deliver first page. - comments = paginator.page(1) - except EmptyPage: - #If page is out of range(e.g 999999), deliver last page. - comments = paginator.page(paginator.num_pages) - workshop={} - return render(request, "workshop_app/view_comment_profile.html", - {"coordinator_profile": coordinator_profile, - "comments": comments, - "comment_form": comment_form, - "Workshops":workshops}) - return redirect('/book/') - -@login_required -def download_csv_data(request): - user=request.user - if user.profile.position == 'instructor': - requested_workshop = RequestedWorkshop.objects.filter(requested_workshop_instructor=user.id).order_by( - 'requested_workshop_title') - propose_workshop = ProposeWorkshopDate.objects.filter(proposed_workshop_instructor=user.id).order_by( - 'proposed_workshop_date') - upcoming_workshops = [] - for workshop in propose_workshop: - upcoming_workshops.append(workshop) - - for workshop in requested_workshop: - upcoming_workshops.append(workshop) - - response = HttpResponse(content_type='text/csv') - - response['Content-Disposition'] = 'attachment;\ - filename="records_of_{0}.csv"'.format( - user.username - ) - - writer = csv.writer(response) - header = [ - 'coordinator name', - 'instructor name', - 'workshop', - 'date', - 'status', - 'institute name' - ] - - writer.writerow(header) - - for workshop in upcoming_workshops: - try: - row = [ - workshop.proposed_workshop_coordinator, - workshop.proposed_workshop_instructor, - workshop.proposed_workshop_title, - workshop.proposed_workshop_date, - workshop.status, - workshop.proposed_workshop_coordinator.profile.institute - ] - - except: - row = [ - workshop.requested_workshop_coordinator, - workshop.requested_workshop_instructor, - workshop.requested_workshop_title, - workshop.requested_workshop_date, - workshop.status, - workshop.requested_workshop_coordinator.profile.institute - ] - - writer.writerow(row) - return response - - else: - return redirect('/book/') +# @login_required +# def workshop_stats(request): +# user = request.user +# today = datetime.now() +# upto = today + dt.timedelta(days=120) +# +# #For Monthly Chart +# workshop_count = [0] * 12 +# for x in range(12): +# workshop_count[x] +=RequestedWorkshop.objects.filter( +# requested_workshop_date__year=str(today.year), +# requested_workshop_date__month=str(x+1), +# status='ACCEPTED').count() +# workshop_count[x] +=ProposeWorkshopDate.objects.filter( +# proposed_workshop_date__year=str(today.year), +# proposed_workshop_date__month=str(x+1), +# status='ACCEPTED').count() +# +# # Count Total Number of workshops for each type +# workshop_titles = WorkshopType.objects.all() +# workshoptype_dict = {} +# for title in workshop_titles: +# workshoptype_dict[title]=0 +# +# for title in workshoptype_dict.keys(): +# workshoptype_dict[title] += RequestedWorkshop.objects.filter( +# requested_workshop_title=title, +# status='ACCEPTED').count() +# workshoptype_dict[title] += ProposeWorkshopDate.objects.filter( +# proposed_workshop_title=title, +# status='ACCEPTED').count() +# #For Pie Chart +# workshoptype_num = [] +# workshoptype_title = [] +# for title in workshoptype_dict.keys(): +# workshoptype_title.append(str(title)) +# +# for count in workshoptype_dict.values(): +# workshoptype_num.append(count) +# +# workshoptype_count = [workshoptype_title, workshoptype_num] +# del workshoptype_title, workshoptype_num +# +# # For India Map +# states = [ +# ['Code', 'State', 'Number'], +# ["IN-AP", "Andhra Pradesh", 0], +# ["IN-AR", "Arunachal Pradesh", 0], +# ["IN-AS", "Assam", 0], +# ["IN-BR", "Bihar", 0], +# ["IN-CT", "Chhattisgarh", 0], +# ["IN-GA", "Goa", 0], +# ["IN-GJ", "Gujarat", 0], +# ["IN-HR", "Haryana", 0], +# ["IN-HP", "Himachal Pradesh", 0], +# ["IN-JK", "Jammu and Kashmir", 0], +# ["IN-JH", "Jharkhand", 0], +# ["IN-KA", "Karnataka", 0], +# ["IN-KL", "Kerala", 0], +# ["IN-MP", "Madhya Pradesh", 0], +# ["IN-MH", "Maharashtra", 0], +# ["IN-MN", "Manipur", 0], +# ["IN-ML", "Meghalaya", 0], +# ["IN-MZ", "Mizoram", 0], +# ["IN-NL", "Nagaland", 0], +# ["IN-OR", "Odisha", 0], +# ["IN-PB", "Punjab", 0], +# ["IN-RJ", "Rajasthan", 0], +# ["IN-SK", "Sikkim", 0], +# ["IN-TN", "Tamil Nadu", 0], +# ["IN-TG", "Telangana", 0], +# ["IN-TR", "Tripura", 0], +# ["IN-UT", "Uttarakhand", 0], +# ["IN-UP", "Uttar Pradesh", 0], +# ["IN-WB", "West Bengal", 0], +# ["IN-AN", "Andaman and Nicobar Islands", 0], +# ["IN-CH", "Chandigarh", 0], +# ["IN-DN", "Dadra and Nagar Haveli", 0], +# ["IN-DD", "Daman and Diu", 0], +# ["IN-DL", "Delhi", 0], +# ["IN-LD", "Lakshadweep", 0], +# ["IN-PY", "Puducherry", 0] +# ] +# +# workshop_state = [] +# requestedWorkshops = RequestedWorkshop.objects.filter(status='ACCEPTED') +# proposedWorkshops = ProposeWorkshopDate.objects.filter(status='ACCEPTED') +# for workshop in requestedWorkshops: +# for s in states: +# if s[0] == workshop.requested_workshop_coordinator.profile.state: +# s[2] +=1 +# +# for workshop in proposedWorkshops: +# for s in states: +# if s[0] == workshop.proposed_workshop_coordinator.profile.state: +# s[2] +=1 +# +# #For Data Downloading and Viewing +# if request.method == 'POST': +# try: +# from_dates = request.POST.get('from') +# to_dates = request.POST.get('to') +# +# #Fetches Accepted workshops which were proposed by Coordinators +# proposed_workshops = ProposeWorkshopDate.objects.filter( +# proposed_workshop_date__range=(from_dates, to_dates), +# status='ACCEPTED' +# ) +# +# # Fetches Accepted workshops which were Accepted by +# # Instructors based on their Availability +# requested_workshops = RequestedWorkshop.objects.filter( +# requested_workshop_date__range=(from_dates, to_dates), +# status='ACCEPTED' +# ) +# +# upcoming_workshops = [] +# +# for workshop in proposed_workshops: +# upcoming_workshops.append(workshop) +# +# for workshop in requested_workshops: +# upcoming_workshops.append(workshop) +# +# upcoming_workshops = sorted(upcoming_workshops, +# key=lambda x: check_workshop_type(x)) +# +# download = request.POST.get('Download') +# if download: +# response = HttpResponse(content_type='text/csv') +# +# response['Content-Disposition'] = 'attachment;\ +# filename="records_from_{0}_to_{1}.csv"'.format( +# from_dates,to_dates +# ) +# +# writer = csv.writer(response) +# header = [ +# 'coordinator name', +# 'instructor name', +# 'workshop', +# 'date', +# 'status', +# 'institute name' +# ] +# +# writer.writerow(header) +# +# for workshop in upcoming_workshops: +# try: +# row = [ +# workshop.proposed_workshop_coordinator, +# workshop.proposed_workshop_instructor, +# workshop.proposed_workshop_title, +# workshop.proposed_workshop_date, +# workshop.status, +# workshop.proposed_workshop_coordinator.profile.institute +# ] +# +# except: +# row = [ +# workshop.requested_workshop_coordinator, +# workshop.requested_workshop_instructor, +# workshop.requested_workshop_title, +# workshop.requested_workshop_date, +# workshop.status, +# workshop.requested_workshop_coordinator.profile.institute +# ] +# +# writer.writerow(row) +# return response +# else: +# return render(request, 'workshop_app/workshop_stats.html', +# { +# "upcoming_workshops": upcoming_workshops, +# "show_workshop_stats": settings.SHOW_WORKSHOP_STATS, +# "workshop_count": workshop_count, +# "workshoptype_count": workshoptype_count, +# "india_map": states +# }) +# except: +# messages.info(request, 'Please enter Valid Dates') +# +# if is_instructor(user) and is_email_checked(user): +# try: +# #Fetches Accepted workshops which were proposed by Coordinators +# proposed_workshops = ProposeWorkshopDate.objects.filter( +# proposed_workshop_date__range=(today, upto), +# status='ACCEPTED' +# ) +# +# #Fetches Accepted workshops which were Accepted by +# # Instructors based on their Availability +# requested_workshops = RequestedWorkshop.objects.filter( +# requested_workshop_date__range=(today, upto), +# status='ACCEPTED' +# ) +# +# upcoming_workshops = [] +# for workshop in proposed_workshops: +# upcoming_workshops.append(workshop) +# +# for workshop in requested_workshops: +# upcoming_workshops.append(workshop) +# +# upcoming_workshops = sorted(upcoming_workshops, +# key=lambda x: check_workshop_type(x)) +# +# except: +# upcoming_workshops = None +# +# paginator = Paginator(upcoming_workshops, 12) +# +# page = request.GET.get('page') +# try: +# upcoming_workshops = paginator.page(page) +# except PageNotAnInteger: +# #If page is not an integer, deliver first page. +# upcoming_workshops = paginator.page(1) +# except EmptyPage: +# #If page is out of range(e.g 999999), deliver last page. +# upcoming_workshops = paginator.page(paginator.num_pages) +# +# +# return render(request, 'workshop_app/workshop_stats.html', +# { +# "upcoming_workshops": upcoming_workshops, +# "show_workshop_stats": settings.SHOW_WORKSHOP_STATS, +# "workshop_count": workshop_count, +# "workshoptype_count": workshoptype_count, +# "india_map": states +# }) +# else: +# return redirect('/manage/') +# +# +# def self_workshop(request): +# return render(request, "workshop_app/self_workshop.html") +# +# +# +# @login_required +# def view_comment_profile(request, user_id): +# '''instructor can view/post comments on coordinator profile ''' +# user = request.user +# if is_instructor(user) and is_email_checked(user): +# comment_form = ProfileCommentsForm() +# coordinator_profile = Profile.objects.get(user_id=user_id) +# requested_workshop = RequestedWorkshop.objects.filter(requested_workshop_coordinator=user_id).order_by( +# 'requested_workshop_title') +# propose_workshop = ProposeWorkshopDate.objects.filter(proposed_workshop_coordinator=user_id).order_by( +# 'proposed_workshop_date') +# workshops=[] +# for workshop in propose_workshop: +# workshops.append(workshop) +# +# for workshop in requested_workshop: +# workshops.append(workshop) +# try: +# comments = ProfileComments.objects.filter(coordinator_profile_id=user_id).order_by('-created_date') +# except: +# comments = None +# if request.method == 'POST': +# comment_formpost = ProfileCommentsForm(request.POST) +# if comment_formpost.is_valid(): +# form_data = comment_formpost.save(commit=False) +# form_data.coordinator_profile_id = user_id +# form_data.instructor_profile_id = user.id +# form_data.save() +# +# return render(request, "workshop_app/view_comment_profile.html", +# {"coordinator_profile": coordinator_profile, +# "comments": comments, +# "comment_form": comment_form +# }) +# else: +# if comments is not None: +# #Show upto 12 Workshops per page +# paginator = Paginator(comments, 12) +# page = request.GET.get('page') +# try: +# comments = paginator.page(page) +# except PageNotAnInteger: +# #If page is not an integer, deliver first page. +# comments = paginator.page(1) +# except EmptyPage: +# #If page is out of range(e.g 999999), deliver last page. +# comments = paginator.page(paginator.num_pages) +# workshop={} +# return render(request, "workshop_app/view_comment_profile.html", +# {"coordinator_profile": coordinator_profile, +# "comments": comments, +# "comment_form": comment_form, +# "Workshops":workshops}) +# return redirect('/book/') +# +# @login_required +# def download_csv_data(request): +# user=request.user +# if user.profile.position == 'instructor': +# requested_workshop = RequestedWorkshop.objects.filter(requested_workshop_instructor=user.id).order_by( +# 'requested_workshop_title') +# propose_workshop = ProposeWorkshopDate.objects.filter(proposed_workshop_instructor=user.id).order_by( +# 'proposed_workshop_date') +# upcoming_workshops = [] +# for workshop in propose_workshop: +# upcoming_workshops.append(workshop) +# +# for workshop in requested_workshop: +# upcoming_workshops.append(workshop) +# +# response = HttpResponse(content_type='text/csv') +# +# response['Content-Disposition'] = 'attachment;\ +# filename="records_of_{0}.csv"'.format( +# user.username +# ) +# +# writer = csv.writer(response) +# header = [ +# 'coordinator name', +# 'instructor name', +# 'workshop', +# 'date', +# 'status', +# 'institute name' +# ] +# +# writer.writerow(header) +# +# for workshop in upcoming_workshops: +# try: +# row = [ +# workshop.proposed_workshop_coordinator, +# workshop.proposed_workshop_instructor, +# workshop.proposed_workshop_title, +# workshop.proposed_workshop_date, +# workshop.status, +# workshop.proposed_workshop_coordinator.profile.institute +# ] +# +# except: +# row = [ +# workshop.requested_workshop_coordinator, +# workshop.requested_workshop_instructor, +# workshop.requested_workshop_title, +# workshop.requested_workshop_date, +# workshop.status, +# workshop.requested_workshop_coordinator.profile.institute +# ] +# +# writer.writerow(row) +# return response +# +# else: +# return redirect('/book/') |