/
views.py
85 lines (65 loc) · 3.15 KB
/
views.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
from django.shortcuts import render_to_response
from django.http import Http404, HttpResponseRedirect
from django.contrib import messages
import simplejson as json
import reglib
def index(request):
""" main course page that contains a search bar """
if not 'regclass' in request.session:
return HttpResponseRedirect('/')
regclass = request.session['regclass']
if request.method == 'GET':
return render_to_response('course/index.html')
# Search form for jumping to a course info page (show)
course = request.POST['course']
course = reglib.utilities.utilities.format_course(course)
course_dict = reglib.utilities.utilities.course_to_dep_and_num(course)
try:
department = course_dict['department']
number = course_dict['number']
courses = regclass.class_search(course_dict['department'], course_dict['number'])
except:
return render_to_response('course/index.html', {'course_not_found':course})
return HttpResponseRedirect('/course/' + department + number + '/')
def show(request, department, number, status=''):
""" shows information about single course and can register from here """
regclass = request.session['regclass']
regerror = 0
if status == "error":
regerror = 1
# to come back when redirecting to a different view func
request.session['prevcourse'] = department+number
courses = regclass.class_search(department, number)
if courses is None:
raise Http404
if request.method == 'GET':
find_time_conflicts(regclass, courses)
return render_to_response('course/show.html', {'courses':courses, 'regerror': regerror})
# user sumbitted crns to register for courses, use urls to redirect to register view
crn_list_reg = request.POST.getlist('choose')
if len(crn_list_reg) is 1:
return HttpResponseRedirect('/course/register/' + crn_list_reg[0])
else:
return HttpResponseRedirect('/course/register/' + crn_list_reg[0] + "&" + crn_list_reg[1])
def register(request, crn1, crn2=""):
""" register via parsing the url and calling the add_class """
regclass = request.session['regclass']
error = regclass.add_class(crn1, crn2)
if error:
pass # pass an error message here
return HttpResponseRedirect('/course/' + request.session['prevcourse'])
def find_time_conflicts(regclass, courses):
""" given a list of courses, checks current and next schedule for time conflicts """
schedules = [regclass.schedule, regclass.next_schedule]
for schedule in schedules:
for course in courses:
course['conflict'] = None
term = reglib.utilities.utilities.adjust_schedule_term(schedule.current_term)
term = reglib.utilities.utilities.format_term(term)
print term
if course['term'] != term:
continue
else:
for course_sched in schedule.current_classes:
if reglib.utilities.class_search_conflict(course, course_sched):
course['conflict'] = course_sched['department'] + course_sched['number']