-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathviews.py
125 lines (112 loc) · 3.62 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
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
from google.appengine.api import users
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
from django.template import loader, Context
from models import *
from forms import *
import google.appengine.ext.db
import nextbus
from shared import userRequired, render_with_user
defaultSource='nb'
def getDefaultSource():
"""return the default source site for user (nextbus for now)"""
return defaultSource
def home(r):
re = nextbus.getDefaultRegion()
agency = nextbus.getDefaultAgency()
user = users.get_current_user()
data = nextbus.getRoutes(agency)
prefix = '/nb/catchstop/%s/%s' % (re, agency)
instructions = 'pick a route'
items = []
if not (data):
pass
for key, value in data:
items.append({'url_piece': key, 'title': value})
t = loader.get_template('listoflinks.html')
c = Context({ 'items':items, 'prefix': prefix })
items_t = t.render(c)
if (user):
q = db.Query(Bmark)
q.filter('user = ', user)
bmarks = q.fetch(limit=200)
links = [ { 'url':'/addbmark', 'title':'add a bookmark' } ]
param = { 'bmarks': bmarks, 'links': links, 'list': items_t }
return render_with_user('user/home.html', param)
else:
return render_to_response('splash.html', { 'list': items_t });
def login(r):
return HttpResponseRedirect(users.create_login_url('/'))
def logout(r):
return HttpResponseRedirect(users.create_logout_url('/'))
@userRequired
def addBmark(r):
if (r.method) == 'POST':
form = AddBmarkForm(r.POST)
if (form.is_valid()):
bm = Bmark()
bm.user = users.get_current_user()
bm.name = form.cleaned_data['name']
bm.desc = form.cleaned_data['description']
bm.put()
url = getDefaultSource()+'/addstop/'+bm.name+'/_dflt'
return HttpResponseRedirect(url)
else:
form = AddBmarkForm()
return render_with_user('user/addbmark.html', {'form':form})
@userRequired
def catch(r, bmark):
q = db.Query(Bmark)
q.filter('name =', bmark)
bm = q.get()
q = db.Query(Stop)
q.filter('bmark = ', bm)
stops = []
error = None
for row in q:
stopInfo = nextbus.getTimeURL(row.url)
if (stopInfo):
stops.append(stopInfo)
else:
error = "Some stops could not be retreived"
links = [ { 'url':'/nb/addstop/%s/_dflt' % (bmark), 'title':'add a stop' },
{ 'url':'/catch/%s' % bmark, 'title':'reload'}]
params = {
'bmark_name': bm.name,
'bmark_desc': bm.desc,
'stops': stops,
'links': links,
'error': error
}
return render_with_user('user/catch.html', params)
@userRequired
def deleteBmark(r, bmark, confirm=None):
q = db.Query(Bmark)
q.filter('name = ', bmark)
q.filter('user = ', users.get_current_user())
bm = q.get()
if (bm):
if (confirm):
bm.delete()
return HttpResponseRedirect('/')
else:
resource = {
'type': 'bookmark',
'desc': bm.desc
}
params = {
'resource' : resource,
'confirm_url': (r.build_absolute_uri()+'/confirm'),
'cancel_url': '/'
}
return render_with_user('user/delete.html', params)
else:
return home(r)
@userRequired
def clearCache(r):
import logging
from google.appengine.api import memcache
if users.is_current_user_admin():
logging.info("Flushing Cache")
memcache.flush_all()
return home(r)