diff options
16 files changed, 156 insertions, 30 deletions
diff --git a/workshop_app/data/Basics_of_Python/Basics_of_Python.pdf b/workshop_app/data/Basics_of_Python/Basics_of_Python.pdf Binary files differindex 00401d0..cd3e74c 100644 --- a/workshop_app/data/Basics_of_Python/Basics_of_Python.pdf +++ b/workshop_app/data/Basics_of_Python/Basics_of_Python.pdf diff --git a/workshop_app/data/ISCP/Basics_of_Python.pdf b/workshop_app/data/ISCP/Basics_of_Python.pdf Binary files differdeleted file mode 100644 index 00401d0..0000000 --- a/workshop_app/data/ISCP/Basics_of_Python.pdf +++ /dev/null diff --git a/workshop_app/data/ISCP/instructions-for-coordinators.pdf b/workshop_app/data/ISCP/instructions-for-coordinators.pdf Binary files differnew file mode 100644 index 0000000..7601616 --- /dev/null +++ b/workshop_app/data/ISCP/instructions-for-coordinators.pdf diff --git a/workshop_app/data/ISCP/instructions-for-participants.pdf b/workshop_app/data/ISCP/instructions-for-participants.pdf Binary files differindex 93a3e5d..25a03a7 100644 --- a/workshop_app/data/ISCP/instructions-for-participants.pdf +++ b/workshop_app/data/ISCP/instructions-for-participants.pdf diff --git a/workshop_app/send_mails.py b/workshop_app/send_mails.py index 15fc1d5..f76a7c2 100644 --- a/workshop_app/send_mails.py +++ b/workshop_app/send_mails.py @@ -242,12 +242,12 @@ def send_email( request, call_on, elif call_on == "Booking Request Rejected": if user_position == "instructor": message = dedent("""\ - Coordinator name:{0} + Coordinator name: {0} Coordinator email: {1} - Contact number:{2} - Institute:{3} - Workshop date:{4} - Workshop title:{4} + Contact number: {2} + Institute: {3} + Workshop date: {4} + Workshop title: {5} You have rejected this booking. The coordinator has been notified.""".format(user_name, other_email, @@ -303,3 +303,26 @@ def send_email( request, call_on, format(workshop_date), message=message, other_email=request.user.email ) + + elif call_on == 'Proposed Workshop': + if user_position == "instructor": + message = dedent("""\ + A coordinator has proposed a workshop below are the + details: + + Coordinator name: {0} + Coordinator email: {1} + Contact number: {2} + Institute: {3} + Workshop date: {4} + Workshop title: {5} + + Please Accept only if you are willing to take the workshop. + {6}/my_workshops/ """ + .format(user_name, request.user.email, + phone_number, institute, + workshop_date, workshop_title, + PRODUCTION_URL)) + send_mail("Proposed Workshop on {0}". + format(workshop_date), message, SENDER_EMAIL, + [other_email], fail_silently=False)
\ No newline at end of file diff --git a/workshop_app/templates/workshop_app/create_workshop.html b/workshop_app/templates/workshop_app/create_workshop.html index 3631bda..685b8ad 100644 --- a/workshop_app/templates/workshop_app/create_workshop.html +++ b/workshop_app/templates/workshop_app/create_workshop.html @@ -21,6 +21,7 @@ <li class="active"><a href="{{ URL_ROOT }}/create_workshop/">Create Workshop</a></li> <li ><a href="{{ URL_ROOT }}/view_workshoptype_list/"> Workshop List</a></li> <li ><a href="{{ URL_ROOT }}/my_workshops/">My Workshops</a></li> + <li><a href="{{ URL_ROOT }}/scheduled_workshops/">Scheduled Workshops</a></li> </ul> <ul class="nav navbar-nav navbar-right"> <li><a href="{{ URL_ROOT }}/view_profile/"><span class="glyphicon glyphicon-user"></span> Profile </a></li> diff --git a/workshop_app/templates/workshop_app/edit_profile.html b/workshop_app/templates/workshop_app/edit_profile.html index d9a39e1..5e01430 100644 --- a/workshop_app/templates/workshop_app/edit_profile.html +++ b/workshop_app/templates/workshop_app/edit_profile.html @@ -15,6 +15,7 @@ <li><a href="{{ URL_ROOT }}/create_workshop/">Create Workshop</a></li> <li><a href="{{ URL_ROOT }}/view_workshoptype_list/">Workshop List</a></li> <li><a href="{{ URL_ROOT }}/my_workshops/">My Workshops</a></li> + <li><a href="{{ URL_ROOT }}/scheduled_workshops/">Scheduled Workshops</a></li> </ul> {% else %} <div class="navbar-header"> diff --git a/workshop_app/templates/workshop_app/manage.html b/workshop_app/templates/workshop_app/manage.html index a390c8a..9aac809 100644 --- a/workshop_app/templates/workshop_app/manage.html +++ b/workshop_app/templates/workshop_app/manage.html @@ -10,6 +10,7 @@ <li ><a href="{{ URL_ROOT }}/create_workshop/">Create Workshop</a></li> <li ><a href="{{ URL_ROOT }}/view_workshoptype_list/"> Workshop List</a></li> <li ><a href="{{ URL_ROOT }}/my_workshops/">My Workshops</a></li> + <li><a href="{{ URL_ROOT }}/scheduled_workshops/">Scheduled Workshops</a></li> </ul> <ul class="nav navbar-nav navbar-right"> <li><a href="{{ URL_ROOT }}/view_profile/"><span class="glyphicon glyphicon-user"></span> Profile </a></li> diff --git a/workshop_app/templates/workshop_app/my_workshops.html b/workshop_app/templates/workshop_app/my_workshops.html index 92dc20f..16eefec 100644 --- a/workshop_app/templates/workshop_app/my_workshops.html +++ b/workshop_app/templates/workshop_app/my_workshops.html @@ -49,6 +49,7 @@ <li><a href="{{ URL_ROOT }}/create_workshop/">Create Workshop</a></li> <li><a href="{{ URL_ROOT }}/view_workshoptype_list/">Workshop List</a></li> <li class="active"><a href="{{ URL_ROOT }}/my_workshops/">My Workshops</a></li> + <li><a href="{{ URL_ROOT }}/scheduled_workshops/">Scheduled Workshops</a></li> </ul> {% else %} <div class="navbar-header"> diff --git a/workshop_app/templates/workshop_app/profile_updated.html b/workshop_app/templates/workshop_app/profile_updated.html index 610770a..e0aa3ad 100644 --- a/workshop_app/templates/workshop_app/profile_updated.html +++ b/workshop_app/templates/workshop_app/profile_updated.html @@ -15,6 +15,7 @@ <li><a href="{{ URL_ROOT }}/create_workshop/">Create Workshop</a></li> <li><a href="{{ URL_ROOT }}/view_workshoptype_details/"> Workshop List</a></li> <li><a href="{{ URL_ROOT }}/my_workshops/">My Workshops</a></li> + <li><a href="{{ URL_ROOT }}/scheduled_workshops/">Scheduled Workshops</a></li> </ul> {% else %} <div class="navbar-header"> diff --git a/workshop_app/templates/workshop_app/scheduled_workshops.html b/workshop_app/templates/workshop_app/scheduled_workshops.html new file mode 100644 index 0000000..7fcd2f7 --- /dev/null +++ b/workshop_app/templates/workshop_app/scheduled_workshops.html @@ -0,0 +1,63 @@ +{% extends 'workshop_app/base.html' %} + +{% block header %} + <nav class="navbar navbar-default navbar-custom"> + <div class="container-fluid"> + <div class="navbar-header"> + <a class="navbar-brand" href="{{ URL_ROOT }}/manage/">Home</a> + </div> + <ul class="nav navbar-nav"> + <li ><a href="{{ URL_ROOT }}/create_workshop/">Create Workshop</a></li> + <li ><a href="{{ URL_ROOT }}/view_workshoptype_list/"> Workshop List</a></li> + <li ><a href="{{ URL_ROOT }}/my_workshops/">My Workshops</a></li> + <li><a href="{{ URL_ROOT }}/scheduled_workshops/">Scheduled Workshops</a></li> + </ul> + <ul class="nav navbar-nav navbar-right"> + <li><a href="{{ URL_ROOT }}/view_profile/"><span class="glyphicon glyphicon-user"></span> Profile </a></li> + <li><a href="{{ URL_ROOT }}/logout/"><span class="glyphicon glyphicon-log-out"></span> Logout</a></li> + </ul> + </div> + </nav> +{% endblock %} + + +{% block content %} + + <div class="container"> + {% if scheduled_workshops %} + <h3>This Table Shows Scheduled Workshops Proposed By Coordinators</h3> + <br> + <table class="table table-hover"> + <thead> + <tr> + <th>Coordinator Name</th> + <th>Instructor Name</th> + <th>Workshop Name</th> + <th>Workshop Date</th> + </tr> + </thead> + {% csrf_token %} + {% for workshop in accepted_workshops %} + {% if workshop.status == 'ACCEPTED' %} + <tbody> + <tr> + + <td>{{ workshop.proposed_workshop_coordinator }}</td> + <td>{{ workshop.proposed_workshop_instructor }}</td> + <td>{{ workshop.proposed_workshop_title }}</td> + <td>{{ workshop.proposed_workshop_date | date}}</td> + </tr> + </tbody> + {% endif %} + {% endfor %} + </table> + {% else %} + <div class="jumbotron"> + <h2>Permission to View Scheduled Workshops is set to False</h2> + </div> + {% endif %} + </div> + } + + +{% endblock %}
\ No newline at end of file diff --git a/workshop_app/templates/workshop_app/view_profile.html b/workshop_app/templates/workshop_app/view_profile.html index 5f01f83..d960f45 100644 --- a/workshop_app/templates/workshop_app/view_profile.html +++ b/workshop_app/templates/workshop_app/view_profile.html @@ -15,6 +15,7 @@ <li><a href="{{ URL_ROOT }}/create_workshop/">Create Workshop</a></li> <li><a href="{{ URL_ROOT }}/view_workshoptype_list/">Workshop List</a></li> <li><a href="{{ URL_ROOT }}/my_workshops/">My Workshops</a></li> + <li><a href="{{ URL_ROOT }}/scheduled_workshops/">Scheduled Workshops</a></li> </ul> {% else %} <div class="navbar-header"> diff --git a/workshop_app/templates/workshop_app/view_workshoptype_list.html b/workshop_app/templates/workshop_app/view_workshoptype_list.html index b053305..53d32ce 100644 --- a/workshop_app/templates/workshop_app/view_workshoptype_list.html +++ b/workshop_app/templates/workshop_app/view_workshoptype_list.html @@ -15,6 +15,7 @@ <ul class="nav navbar-nav"> {% if request.user.profile.position == 'instructor'%} <li><a href="{{ URL_ROOT }}/create_workshop/">Create Workshop</a></li> + <li><a href="{{ URL_ROOT }}/scheduled_workshops/">Scheduled Workshops</a></li> {% else %} <li><a href="{{ URL_ROOT }}/book/">Book</a></li> <li><a href="{{ URL_ROOT }}/propose_workshop/">Propose a Workshop</a></li> diff --git a/workshop_app/urls.py b/workshop_app/urls.py index 65b53e3..6c2a04d 100644 --- a/workshop_app/urls.py +++ b/workshop_app/urls.py @@ -44,6 +44,7 @@ urlpatterns = [ url(r'^view_workshoptype_details/$', views.view_workshoptype_details), url(r'^create_workshop/$', views.create_workshop), url(r'^propose_workshop/$', views.propose_workshop), + url(r'^scheduled_workshops/$', views.scheduled_workshops), url(r'^testimonials/$', views.testimonials), url(r'^file_view/(?P<workshop_title>[\w|\W]+)$', views.file_view), url(r'^jsi18n/$', django.views.i18n.javascript_catalog, js_info_dict), diff --git a/workshop_app/views.py b/workshop_app/views.py index 3446995..7cf1c84 100644 --- a/workshop_app/views.py +++ b/workshop_app/views.py @@ -26,8 +26,8 @@ from django.http import HttpResponse, HttpResponseRedirect from textwrap import dedent from django.conf import settings from os import listdir, path, sep -import datetime as dt from zipfile import ZipFile +import datetime as dt try: from StringIO import StringIO as string_io except ImportError: @@ -36,7 +36,8 @@ except ImportError: __author__ = "Akshen Doke" __credits__ = ["Mahesh Gudi", "Aditya P.", "Ankit Javalkar", "Prathamesh Salunke", "Kiran Kishore", - "KhushalSingh Rajput", "Prabhu Ramachandran"] + "KhushalSingh Rajput", "Prabhu Ramachandran", + "Arun KP"] def is_email_checked(user): @@ -329,7 +330,7 @@ def book_workshop(request): user_position='instructor', workshop_date=workshop_date, workshop_title=workshop.workshop_title.workshoptype_name, - user_name=str(request.user), + user_name=str(request.user.get_full_name()), other_email=workshop.workshop_instructor.email ) phone_number = workshop.workshop_instructor.profile.phone_number @@ -337,7 +338,7 @@ def book_workshop(request): send_email(request, call_on='Booking', workshop_date=workshop_date, workshop_title=workshop.workshop_title.workshoptype_name, - user_name=workshop.workshop_instructor.username, + user_name=workshop.workshop_instructor.profile.user.get_full_name(), other_email=workshop.workshop_instructor.email, phone_number=phone_number) @@ -353,6 +354,7 @@ def book_workshop(request): @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: @@ -448,13 +450,13 @@ def my_workshops(request): booked_workshop_obj = BookedWorkshop() booked_workshop_obj.booked_workshop_requested = workshop_status booked_workshop_obj.save() - - cmail = workshop_status.requested_workshop_coordinator.email - cname = workshop_status.requested_workshop_coordinator.username - cnum = workshop_status.requested_workshop_coordinator.profile.phone_number - cinstitute = workshop_status.requested_workshop_coordinator.profile.institute + 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 inum = request.user.profile.phone_number - wtitle = workshop_status.requested_workshop_title.workshoptype_name + wtitle = ws.requested_workshop_title.workshoptype_name #For Instructor send_email(request, call_on='Booking Confirmed', @@ -530,13 +532,13 @@ def my_workshops(request): booked_workshop_obj = BookedWorkshop() booked_workshop_obj.booked_workshop_proposed = workshop_status booked_workshop_obj.save() - - cmail = workshop_status.proposed_workshop_coordinator.email - cname = workshop_status.proposed_workshop_coordinator.username - cnum = workshop_status.proposed_workshop_coordinator.profile.phone_number - cinstitute = workshop_status.proposed_workshop_coordinator.profile.institute + 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 = workshop_status.proposed_workshop_title.workshoptype_name + wtitle = ws.proposed_workshop_title.workshoptype_name #For Instructor send_email(request, call_on='Booking Confirmed', @@ -570,12 +572,12 @@ def my_workshops(request): ) workshop_status.status = client_data[-1] workshop_status.save() - - wtitle = workshop_status.requested_workshop_title.workshoptype_name - cmail = workshop_status.requested_workshop_coordinator.email - cname = workshop_status.requested_workshop_coordinator.username - cnum = workshop_status.requested_workshop_coordinator.profile.phone_number - cinstitute = workshop_status.requested_workshop_coordinator.profile.institute + 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 #For Instructor send_email(request, call_on='Booking Request Rejected', @@ -674,13 +676,26 @@ def propose_workshop(request): 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, + 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(): + proposed_workshop_coordinator=form_data.proposed_workshop_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 + ) return redirect('/my_workshops/') else: form = ProposeWorkshopDateForm() @@ -872,3 +887,18 @@ def testimonials(request): messages = paginator.page(paginator.num_pages) return render(request, 'workshop_app/testimonals.html', {"messages":messages}) +@login_required +def scheduled_workshops(request): + user = request.user + if is_instructor(user) and is_email_checked(user): + try: + accepted_workshops = ProposeWorkshopDate.objects.all().order_by('-id')[:15] + except: + accepted_workshops = None + return render(request, 'workshop_app/scheduled_workshops.html', + { + "accepted_workshops": accepted_workshops, + "scheduled_workshops": settings.SCHEDULED_WORKSHOPS + }) + else: + redirect('/book/')
\ No newline at end of file diff --git a/workshop_portal/settings.py b/workshop_portal/settings.py index 5379985..0ec34bb 100644 --- a/workshop_portal/settings.py +++ b/workshop_portal/settings.py @@ -152,12 +152,14 @@ EMAIL_TIMEOUT = 300 SENDER_EMAIL = SENDER_EMAIL -#EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' #Temp Solution +#EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' #Change this to the production url PRODUCTION_URL = 'your_production_url' ADMIN_EMAIL = 'your admin email' +SCHEDULED_WORKSHOPS = False #Set True or False to view/hide + LOGIN_REDIRECT_URL = '/profile' SESSION_EXPIRE_AT_BROWSER_CLOSE = True |