-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathedit.py
More file actions
152 lines (103 loc) · 4.51 KB
/
edit.py
File metadata and controls
152 lines (103 loc) · 4.51 KB
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# assume admin login has already been handled
import model
import webapp2, jinja2, os, cgi
from datetime import *
from dateutil.parser import *
from google.appengine.api import users
jinja_environment = jinja2.Environment(autoescape=True,
loader=jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__), 'view/templating')))
class AdminHandler(webapp2.RequestHandler):
def get(self):
# admin check for navbar
isadmin = users.is_current_user_admin()
template_values = {
'isadmin': isadmin,
}
template = jinja_environment.get_template('admin.html')
self.response.out.write(template.render(template_values))
class DateRedirector(webapp2.RequestHandler):
def get(self):
self.redirect("admin")
class EditHandler(webapp2.RequestHandler):
def get(self):
# load the page with a paramater, convert it to a datetime object
date = self.request.get('date')
edit_date_datetime = parse(date)
# convert the datetime object to a date object
edit_date_date = edit_date_datetime.date()
# determine how many blocks are needed
blocks = self.request.get('blocks')
if blocks == "":
blocks = 12
else:
blocks = int(blocks)
# figure out if there is a special schdedule already to display warning
is_special = model.isSpecialSchedule(edit_date_date)
# admin check for navbar
isadmin = users.is_current_user_admin()
# load the template
template_values = {
'edit_date': model.formatDate(edit_date_date),
'blocks': blocks,
'isadmin': isadmin,
'is_special': is_special
}
template = jinja_environment.get_template('edit.html')
self.response.out.write(template.render(template_values))
def post(self):
date = self.request.get('date')
edit_date_datetime = parse(date)
# convert the datetime object to a date object
edit_date_date = edit_date_datetime.date()
# delete any existing schedules to prevent duplicates
model.deleteSchedule(edit_date_date)
maxblocks = self.request.get('blocks')
if maxblocks == "":
maxblocks = 12
else:
maxblocks = int(maxblocks)
iteratingblock = 0
while True:
# pull block name and optional tooltip from form
name = self.request.get("name" + str(iteratingblock))
if name != "":
tooltip = self.request.get("tooltip" + str(iteratingblock))
start = self.request.get("start" + str(iteratingblock))
end = self.request.get("end" + str(iteratingblock))
# parse start and end time inputs
sTime_dt = parse(start, default = edit_date_datetime)
eTime_dt = parse(end, default = edit_date_datetime)
# convert datetime objects to time objects
sTime = sTime_dt.time()
eTime = eTime_dt.time()
# run through backend code
model.createBlock(name, edit_date_date, sTime, eTime, tooltip)
iteratingblock += 1
if iteratingblock == maxblocks:
break
# redirect to the schedule for the date just edited
self.redirect('/schedule?date=' + date)
class SplitLunchHandler(webapp2.RequestHandler):
def get(self):
date = self.request.get('lunchurl')
model.changeSplitLunch(date)
self.redirect('/')
class FeebackWriteHandler(webapp2.RequestHandler):
def get(self):
url = self.request.get('feedbackurl')
model.changeFeedback(url)
self.redirect('/')
class RevertDateHandler(webapp2.RequestHandler):
def get(self):
date = self.request.get('dateR')
edit_date_datetime = parse(date)
model.deleteSchedule(edit_date_datetime)
self.redirect('/')
app = webapp2.WSGIApplication([
('/date', DateRedirector),
('/edit', EditHandler),
('/revertdate', RevertDateHandler),
('/admin', AdminHandler),
('/changelunch', SplitLunchHandler),
('/changefeedback', FeebackWriteHandler)
], debug=True)