diff options
-rw-r--r-- | workshop_app/forms.py | 5 | ||||
-rw-r--r-- | workshop_app/models.py | 12 | ||||
-rw-r--r-- | workshop_app/send_mails.py | 5 | ||||
-rw-r--r-- | workshop_app/templates/workshop_app/manage.html | 27 | ||||
-rw-r--r-- | workshop_app/templates/workshop_app/my_workshops.html | 27 | ||||
-rw-r--r-- | workshop_app/views.py | 73 |
6 files changed, 120 insertions, 29 deletions
diff --git a/workshop_app/forms.py b/workshop_app/forms.py index 324d406..0b3a7e6 100644 --- a/workshop_app/forms.py +++ b/workshop_app/forms.py @@ -1,5 +1,8 @@ from django import forms -from .models import Profile, Course, Workshop +from .models import ( + Profile, User, Workshop, Course, + RequestedWorkshop, BookedWorkshop + ) from string import punctuation, digits try: from string import letters diff --git a/workshop_app/models.py b/workshop_app/models.py index 040cf35..e5f6306 100644 --- a/workshop_app/models.py +++ b/workshop_app/models.py @@ -47,7 +47,8 @@ class Course(models.Model): course_name = models.CharField(max_length=120) course_description = models.TextField() - course_duration = models.CharField(max_length=32) + course_duration = models.CharField(max_length=32, help_text='Please write this in \ + following format eg: 3days, 8hours a day') def __str__(self): return u"{0} {1}".format(self.course_name, self.course_duration) @@ -72,7 +73,7 @@ class Workshop(models.Model): class RequestedWorkshop(models.Model): """ - Contains Data of Booked/Completed Workshops + Contains Data of request for Workshops """ requested_workshop_instructor = models.ForeignKey( @@ -93,5 +94,10 @@ class RequestedWorkshop(models.Model): ) +class BookedWorkshop(models.Model): + """ + Contains details about Confirmed Booked/Completed Workshops + """ - + booked_workshop = models.ForeignKey(RequestedWorkshop) +
\ No newline at end of file diff --git a/workshop_app/send_mails.py b/workshop_app/send_mails.py index afd42ed..3b71b38 100644 --- a/workshop_app/send_mails.py +++ b/workshop_app/send_mails.py @@ -78,6 +78,11 @@ def send_email(request, call_on, send_mail("Python Workshop Booking Request Rejected", message, EMAIL_HOST_USER, [other_email], fail_silently=False) + elif call_on =='Workshop Deleted': + message = "You have deleted a Workshop, "+workshop_title+" scheduled on "+workshop_date+"." + send_mail("Python Workshop Deleted", message, EMAIL_HOST_USER, + [request.user.email], fail_silently=False) + else: message = "Issue at Workshop Booking App please check" send_mail("Issue At Workshop Booking App", message, EMAIL_HOST_USER, diff --git a/workshop_app/templates/workshop_app/manage.html b/workshop_app/templates/workshop_app/manage.html index eab3f52..070bd00 100644 --- a/workshop_app/templates/workshop_app/manage.html +++ b/workshop_app/templates/workshop_app/manage.html @@ -19,6 +19,32 @@ </nav> {% endblock %} +{% block extra %} + <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> + <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css"> + <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> + + <script> + function sendData(d){ + var URL = "{{ URL_ROOT }}/my_workshops/" + console.log(d); + $.ajax({ + url: URL, + type: "POST", + dataType: 'json', + data: { + d, + csrfmiddlewaretoken: $("input[name=csrfmiddlewaretoken]").val() + }, + }); + + window.location.reload(); + alert("Refreshing Page please wait, if you don't see your changes, please refresh this page again."); + } + </script> +{% endblock %} + + {% block content %} {% if workshop_occurence_list %} @@ -39,6 +65,7 @@ <td>{{ w.user }}</td> <td>{{ w.workshop }}</td> <td>{{ w.date | date}}</td> + <td><button class="btn btn-danger btn-sm" id="delete-btn" onClick="sendData('{{ w.user}},{{w.date | safe}},{{ w.workshop.id }},DELETED')" > Delete Event </button></td> </tr> </tbody> {% endfor %} diff --git a/workshop_app/templates/workshop_app/my_workshops.html b/workshop_app/templates/workshop_app/my_workshops.html index 48b471e..c5189a7 100644 --- a/workshop_app/templates/workshop_app/my_workshops.html +++ b/workshop_app/templates/workshop_app/my_workshops.html @@ -12,7 +12,7 @@ <script> function sendData(d){ var URL = "{{ URL_ROOT }}/my_workshops/" - + console.log(d); $.ajax({ url: URL, type: "POST", @@ -24,7 +24,7 @@ }); window.location.reload(); - alert("Please Refresh if you don't see your changes"); + alert("Refreshing Page please wait, if you don't see your changes, please refresh this page again."); } </script> {% endblock %} @@ -130,14 +130,23 @@ </div> {% else %} - <div class="container"> - <div class="jumbotron"> - <h1>Welcome Instructor</h1> - <p>Your workshop related information will be shown here, Please navigate to <b>View Course list</b> and depending upon - your expertise and availability create a workshop by going to - <b>Create Event</b>.</p> + {% if request.user.profile.position == 'instructor' %} + <div class="container"> + <div class="jumbotron"> + <h1>Welcome Instructor</h1> + <p>Your workshop related information will be shown here, Please navigate to <b>View Course list</b> and depending upon + your expertise and availability create a workshop by going to + <b>Create Event</b>.</p> + </div> </div> - </div> + {% else %} + <div class="container"> + <div class="jumbotron"> + <h1>Welcome Coordinator</h1> + <p>Information Related to your workshops will be shown here.</p> + </div> + </div> + {% endif %} {% endif %} {% endblock %}
\ No newline at end of file diff --git a/workshop_app/views.py b/workshop_app/views.py index 2d352e7..f6f6b11 100644 --- a/workshop_app/views.py +++ b/workshop_app/views.py @@ -1,4 +1,3 @@ - from .forms import ( UserRegistrationForm, UserLoginForm, ProfileForm, CreateWorkshop @@ -6,7 +5,8 @@ from .forms import ( from .models import ( Profile, User, has_profile, Workshop, - Course, RequestedWorkshop + Course, RequestedWorkshop, + BookedWorkshop ) from django.template import RequestContext from datetime import datetime, date @@ -126,10 +126,14 @@ def book(request): # workshop_occurence = OrderedDict(sorted(workshop_occurence.items())) workshop_occurence = list(workshop_occurence.items()) - requested_workshop = RequestedWorkshop.objects.all() - + #Gives you the objects of BookedWorkshop + requested_workshop = BookedWorkshop.objects.all() for j in requested_workshop: - j = j.requested_workshop_date.strftime("%d-%m-%Y") + ''' + 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) @@ -168,10 +172,10 @@ def book_workshop(request): workshop_date = client_data[0][2:] instructor_profile = Profile.objects.filter(user=client_data[1]) - workshop_list = Workshop.objects.get( + workshop = Workshop.objects.get( workshop_instructor=client_data[1] ) - workshop_recurrence_list = workshop_list.recurrences.between( + workshop_recurrence_list = workshop.recurrences.between( datetime(2017, 3, 12, 0, 0, 0), datetime(2017, 12, 31, 0, 0, 0), inc=True @@ -231,7 +235,7 @@ def manage(request): #Can't Handle Multiple objects Fix this asap workshop_details = Workshop.objects.get( 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), @@ -291,17 +295,25 @@ 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") - workshop_date = datetime.strptime( + + if client_data[-1] == 'ACCEPTED': + workshop_date = datetime.strptime( client_data[1], "%Y-%m-%d" ) - workshop_status = RequestedWorkshop.objects.get(requested_workshop_instructor=user.id, - requested_workshop_date=workshop_date - ) - workshop_status.status = client_data[-1] - workshop_status.save() - - if client_data[-1] == 'ACCEPTED': + 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 + ) + workshop_status.status = client_data[-1] + workshop_status.save() + confirm_workshop = BookedWorkshop() + confirm_workshop.booked_workshop = workshop_status + confirm_workshop.save() + + #For Instructor send_email(request, call_on='Booking Confirmed', user_position='instructor', @@ -316,6 +328,35 @@ def my_workshops(request): workshop_title=workshop_status.requested_workshop_title.course_name, other_email=workshop_status.requested_workshop_coordinator.email ) + + 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]) + + workshop_recurrence_list = workshop.recurrences.between( + datetime(2017, 3, 12, 0, 0, 0), + datetime(2017, 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 instructor + send_email(request, call_on='Workshop Deleted', + workshop_date=str(client_data[1]), + ) + + return HttpResponse("Workshop Deleted") + else: #For Instructor send_email(request, call_on='Booking Request Rejected', |