-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathappengine.py
77 lines (61 loc) · 2.26 KB
/
appengine.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
"""Web app for IsThisBikeStolen?
Copyright 2010 The IsThisBikeStolen Team
- Stu Basden
- Amber Ellis
- Jason Montojo
- Jon Pipitone
- Ben Shymkiw
- John Taranu
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""
# appengine.py is designed to run in Google App Engine. See dispatch.wsgi for
# the original version.
import sys, os
sys.path.append(os.path.dirname(__file__))
import webapp2
import cpic
import re
import logging
import json
from google.appengine.ext import ndb
class SerialSearch(ndb.Model):
serial = ndb.StringProperty()
num_results = ndb.IntegerProperty()
response = ndb.StringProperty()
date = ndb.DateTimeProperty(auto_now_add=True)
class DispatchRequest(webapp2.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/html'
response = {}
try:
serial = self.request.get('serial')
serial = re.sub('[^A-Za-z0-9]','',serial) # remove non word characters
serial = serial[:30].upper() # cap length of serial number
response['data'] = cpic.scrape(serial)
response['status'] = 'success'
except:
response['data'] = []
response['status'] = 'fail'
logging.info('dispatch.cgi: Search for "%s" returned %i results.', serial, len(response['data']))
serial_search = SerialSearch(
serial = serial,
num_results = len(response['data']),
response = json.dumps(response['data'])
)
serial_search.put()
self.response.write(str(cpic.format_result(
os.path.dirname(__file__)+'/result.html.template',
'<!-- $CONTENT -->',
response['data'])
))
application = webapp2.WSGIApplication([
('/dispatch', DispatchRequest),
], debug=True)