diff --git a/workshop_app/templates/workshop_app/manage.html b/workshop_app/templates/workshop_app/manage.html
index f2e1c5a..346cd7b 100644
--- a/workshop_app/templates/workshop_app/manage.html
+++ b/workshop_app/templates/workshop_app/manage.html
@@ -21,23 +21,6 @@
trigger : 'hover'
});
});
-
- 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.");
- }
@@ -65,7 +48,12 @@
This is the list of workshops you have created, you can delet
| {{ w.user }} |
{{ w.workshop }} |
{{ w.date | date}} |
- |
+
+
{% endfor %}
diff --git a/workshop_app/templates/workshop_app/my_workshops.html b/workshop_app/templates/workshop_app/my_workshops.html
index 417fa55..d8c5df3 100644
--- a/workshop_app/templates/workshop_app/my_workshops.html
+++ b/workshop_app/templates/workshop_app/my_workshops.html
@@ -32,8 +32,8 @@
},
});
- window.location.reload();
- alert("Refreshing Page please wait, if you don't see your changes, please refresh this page again.");
+ {#window.location.reload();#}
+ console.log(d);
}
@@ -111,7 +111,7 @@
alert(response);
}
});
-
+ console.log(data_c)
};
@@ -191,8 +191,18 @@ My Requests
| {{ workshop.status }} |
{% endif %}
{% if request.user.profile.position == 'instructor' and workshop.status == 'Pending' and workshop.requested_workshop_instructor %}
- |
- |
+ |
+ |
{% endif %}
@@ -236,9 +246,20 @@ Workshops Accepted
+
-
-
{% else %}
@@ -318,7 +339,12 @@ Workshops Proposed By Me
| {{ workshop.status }} |
{% if request.user.profile.position == 'instructor' and workshop.status == 'Pending' %}
- |
+ |
{% endif %}
{% endif %}
diff --git a/workshop_app/views.py b/workshop_app/views.py
index 3ebae9f..37e6da2 100644
--- a/workshop_app/views.py
+++ b/workshop_app/views.py
@@ -376,6 +376,44 @@ def manage(request):
user = request.user
if user.is_authenticated() and is_email_checked(user):
+ if request.method == 'POST':
+ client_data = request.body.decode("utf-8").split("&")
+ client_data = client_data[0].split("%2C")
+ 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")
+
#Move user to the group via admin
if user.groups.filter(name='instructor').count() > 0:
try:
@@ -447,40 +485,66 @@ def my_workshops(request):
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:])
+ client_data = request.POST
+ action = request.POST.get('action')
+ if action == 'accept':
+ workshop_status = RequestedWorkshop.objects.get(id=client_data.get('workshop_id'))
+ # Prevent creating multiple entries if user resubmits form by refreshing
+ if not BookedWorkshop.objects.filter(booked_workshop_requested=workshop_status):
+ # Change Status of the selected workshop
+ workshop_status.status = 'ACCEPTED'
+ workshop_status.save()
+ # Add selected workshop to booked workshops
+ booked_workshop_obj = BookedWorkshop()
+ booked_workshop_obj.booked_workshop_requested = workshop_status
+ booked_workshop_obj.save()
+ ws = workshop_status
+ # Parameters for emails
+ 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 = ws.requested_workshop_title.workshoptype_name
+ workshop_date = str(ws.requested_workshop_date)
+
+ #For Instructor
+ send_email(request, call_on='Booking Confirmed',
+ user_position='instructor',
+ workshop_date=workshop_date,
+ workshop_title=wtitle,
+ user_name=str(cname),
+ other_email=cmail,
+ phone_number=cnum,
+ institute=cinstitute
+ )
- 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]
- )
+ #For Coordinator
+ send_email(request, call_on='Booking Confirmed',
+ workshop_date=workshop_date,
+ workshop_title=wtitle,
+ other_email=cmail,
+ phone_number=inum
+ )
- workshop_status.status = client_data[-1]
+ 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_requested = workshop_status
- booked_workshop_obj.save()
ws = workshop_status
+ # 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
- inum = request.user.profile.phone_number
- wtitle = ws.requested_workshop_title.workshoptype_name
+ workshop_date = str(ws.requested_workshop_date)
- #For Instructor
- send_email(request, call_on='Booking Confirmed',
+ # For Instructor
+ send_email(request, call_on='Booking Request Rejected',
user_position='instructor',
- workshop_date=str(client_data[1]),
+ workshop_date=workshop_date,
workshop_title=wtitle,
user_name=str(cname),
other_email=cmail,
@@ -488,181 +552,86 @@ def my_workshops(request):
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_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]),
+ # For Coordinator
+ send_email(request, call_on='Booking Request Rejected',
+ workshop_date=workshop_date,
workshop_title=wtitle,
- user_name=str(cname),
- other_email=cmail,
- phone_number=cnum,
- institute=cinstitute
+ other_email=cmail
)
- #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 action == 'approve':
+ workshop_status = ProposeWorkshopDate.objects.get(id=client_data.get('workshop_id'))
+ # Prevent creating multiple entries if user resubmits form by refreshing
+ if not BookedWorkshop.objects.filter(booked_workshop_proposed=workshop_status):
+ # Change Status of the selected workshop
+ workshop_status.status = 'ACCEPTED'
+ workshop_status.proposed_workshop_instructor = user
+ workshop_status.save()
+ # Add selected workshop to booked workshops
+ booked_workshop_obj = BookedWorkshop()
+ booked_workshop_obj.booked_workshop_proposed = workshop_status
+ booked_workshop_obj.save()
+ # Parameters for emails
+ 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
+ workshop_date = str(ws.proposed_workshop_date)
+
+ # For Instructor
+ send_email(request, call_on='Booking Confirmed',
+ user_position='instructor',
+ workshop_date=workshop_date,
+ workshop_title=wtitle,
+ user_name=str(cname),
+ other_email=cmail,
+ phone_number=cnum,
+ institute=cinstitute
+ )
- 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"
- )
+ # For Coordinator
+ send_email(request, call_on='Booking Confirmed',
+ workshop_date=workshop_date,
+ workshop_title=wtitle,
+ other_email=cmail,
+ phone_number=inum
+ )
+ 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)
+ 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
+ # For Instructor
send_email(request, call_on='Change Date',
user_position='instructor',
- workshop_date=workshop_date.date(),
+ workshop_date=str(workshop_date),
new_workshop_date=str(new_workshop_date.date())
)
- #For Coordinator
+ # For Coordinator
send_email(request, call_on='Change Date',
new_workshop_date=str(new_workshop_date.date()),
- workshop_date=str(workshop_date.date()),
+ workshop_date=str(workshop_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
-
- #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
- )
-
workshops = []
today = datetime.today().date()
workshop_occurence_list = RequestedWorkshop.objects.filter(
@@ -680,6 +649,7 @@ def my_workshops(request):
).order_by('-proposed_workshop_date')
workshops = list(workshop_occurence_list) + list(proposed_workshop) + list(proposed_workshop_pending)
+ print(len(workshop_occurence_list), len(proposed_workshop), len(proposed_workshop_pending))
# team_members = list(set(user.profile.team_set.all().values_list('members', flat=True)))
teams = Team.objects.filter(members=user.profile)
@@ -708,6 +678,7 @@ def my_workshops(request):
).order_by('-proposed_workshop_date')
workshops = list(workshop_occurence_list) + list(proposed_workshop)
+ print(len(workshop_occurence_list), len(proposed_workshop))
return render(request, 'workshop_app/my_workshops.html',
{"workshops": workshops})