summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--workshop_app/forms.py5
-rw-r--r--workshop_app/models.py12
-rw-r--r--workshop_app/send_mails.py5
-rw-r--r--workshop_app/templates/workshop_app/manage.html27
-rw-r--r--workshop_app/templates/workshop_app/my_workshops.html27
-rw-r--r--workshop_app/views.py73
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',