From cdc4bd014885695a10251180289204040ded935d Mon Sep 17 00:00:00 2001 From: Ron Reiter Date: Thu, 16 May 2013 17:03:37 -0700 Subject: [PATCH] work --- anywayapp/css/style.css | 4 +++ anywayapp/data/process.py | 17 +++--------- anywayapp/img/accident.svg | 57 ++++++++++++++++++++++++++++++++++++++ anywayapp/img/petition.svg | 5 ++++ anywayapp/js/app.js | 4 +-- anywayapp/main.py | 44 ++++++++++++++++------------- anywayapp/models.py | 8 +++--- 7 files changed, 100 insertions(+), 39 deletions(-) create mode 100755 anywayapp/img/accident.svg create mode 100755 anywayapp/img/petition.svg diff --git a/anywayapp/css/style.css b/anywayapp/css/style.css index 2aa57d3c4..0186a8652 100644 --- a/anywayapp/css/style.css +++ b/anywayapp/css/style.css @@ -61,4 +61,8 @@ .followers { padding-bottom: 40px; +} + +.description { + white-space: pre; } \ No newline at end of file diff --git a/anywayapp/data/process.py b/anywayapp/data/process.py index 19d142ede..66c46d8fd 100644 --- a/anywayapp/data/process.py +++ b/anywayapp/data/process.py @@ -73,7 +73,6 @@ 2 : "דו סיטרי+קו הפרדה רצוף", 3 : "דו סיטרי אין קו הפרדה רצוף", 4 : "אחר", - 9 : "לא ידוע מספר מסלולים", }, "RAV_MASLUL" : { 1 : "מיפרדה מסומנת בצבע", @@ -108,7 +107,6 @@ 2 : "תימרור לקוי/חסר", 3 : "אין ליקוי", 4 : "לא נדרש תמרור", - 5 : "לא ידוע", }, "TEURA" : { 1 : "אור יום רגיל", @@ -116,7 +114,6 @@ 3 : "לילה פעלה תאורה", 4 : "קיימת תאורה בלתי תקינה/לא פועלת", 5 : "לילה לא קיימת תאורה", - 6 : "לילה לא ידוע", }, "BAKARA" : { 1 : "אין בקרה", @@ -133,7 +130,6 @@ 3 : "שרבי", 4 : "ערפילי", 5 : "אחר", - 9 : "לא ידוע", }, "PNE_KVISH" : { 1 : "יבש", @@ -142,7 +138,6 @@ 4 : "מכוסה בבוץ", 5 : "חול או חצץ על הכביש", 6 : "אחר", - 9 : "לא ידוע", }, "SUG_EZEM" : { 1 : "עץ", @@ -153,14 +148,12 @@ 6 : "גדר בטיחות לרכב", 7 : "חבית", 8 : "אחר", - 9 : "לא ידוע", }, "MERHAK_EZEM" : { 1 : "עד מטר", 2 : "1-3 מטר", 3 : "על הכביש", 4 : "על שטח הפרדה", - 9 : "לא ידוע", }, "LO_HAZA" : { 1 : "הלך בכיוון התנועה", @@ -170,7 +163,6 @@ 5 : "היה על אי הפרדה", 6 : "היה על שוליים/מדרכה", 7 : "אחר", - 9 : "לא ידוע", }, "OFEN_HAZIYA" : { 1 : "התפרץ אל הכביש", @@ -183,12 +175,10 @@ 2 : "לא במעבר חציה לא ליד צומת", 3 : "במעבר חציה בלי רמזור", 4 : "במעבר חציה עם רמזור", - 9 : "לא ידוע מקום חציה", }, "KIVUN_HAZIYA" : { 1 : "מימין לשמאל", 2 : "משמאל לימין", - 9 : "לא ידוע", }, "STATUS_IGUN" : { 1 : "עיגון מדויק", @@ -201,13 +191,13 @@ def number(param, value): - return int(value) if value else 0 + return int(value) if value else None def fixed_table(param, value): return TABLES[param][int(value)] if value and int(value) in TABLES[param] else None def dictionary(param, value): - return "a" + return None def boolean(param, value): return True if value == 1 else False @@ -289,7 +279,8 @@ def import_data(): for field in FIELD_LIST: field_name, processor, parameter = FIELD_FUNCTIONS[field] output_line[field] = processor(parameter, accident[field]) - description_strings.append("%s: %s" % (field_name, output_line[field])) + if output_line[field]: + description_strings.append("%s: %s" % (field_name, output_line[field])) if not accident["X"] or not accident["Y"]: continue diff --git a/anywayapp/img/accident.svg b/anywayapp/img/accident.svg new file mode 100755 index 000000000..f3d988b77 --- /dev/null +++ b/anywayapp/img/accident.svg @@ -0,0 +1,57 @@ + + + + + http://thenounproject.com + The Noun ProjectIcon Template + Reminders + + + + + + + + + + + + + StrokesTry to keep strokes at 4pxMinimum stroke weight is 2pxFor thicker strokes use even numbers: 6px, 8px etc.Remember to expand strokes before saving as an SVG + + SizeCannot be wider or taller than 100px (artboard size)Scale your icon to fill as much of the artboard as possible + + UngroupIf your design has more than one shape, make sure to ungroup + + Save asSave as .SVG and make sure “Use Artboards” is checked + 100px + .SVG + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/anywayapp/img/petition.svg b/anywayapp/img/petition.svg new file mode 100755 index 000000000..064cb356c --- /dev/null +++ b/anywayapp/img/petition.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/anywayapp/js/app.js b/anywayapp/js/app.js index 498785465..629aa9651 100644 --- a/anywayapp/js/app.js +++ b/anywayapp/js/app.js @@ -4,8 +4,8 @@ var INIT_LAT = 32.0833; var INIT_LON = 34.8000; var INIT_ZOOM = 9; var ICONS = [ - "/img/exclamation.png", - "/img/events.png" + "/img/petition.svg", + "/img/accident.svg" ]; var TYPE_STRING = [ "הצעה", diff --git a/anywayapp/main.py b/anywayapp/main.py index 3cd1f9f68..451a14560 100644 --- a/anywayapp/main.py +++ b/anywayapp/main.py @@ -56,20 +56,20 @@ def post(self): self.response.write(json.dumps(marker.serialize(self.user))) class MarkerHandler(BaseHandler): - def get(self, id): - marker = Marker.get_by_id(int(id)) + def get(self, key_name): + marker = Marker.get_by_key_name(key_name) self.response.write(json.dumps(marker.serialize(self.user))) @user_required - def put(self, id): - marker = Marker.get_by_id(int(id)) + def put(self, key_name): + marker = Marker.get_by_key_name(key_name) data = json.loads(self.request.body) marker.update(data, self.user) self.response.write(json.dumps(marker.serialize(self.user))) @user_required - def delete(self, id): - marker = Marker.get_by_id(int(id)) + def delete(self, key_name): + marker = Marker.get_by_key_name(key_name) marker.delete() class LoginHandler(BaseHandler): @@ -115,16 +115,16 @@ def get(self): class FollowHandler(BaseHandler): @user_required - def get(self, id): - marker = Marker.get_by_id(int(id)) + def get(self, key_name): + marker = Marker.get_by_key_name(key_name) follower = Follower.all().filter("marker", marker).filter("user", self.user).get() if not follower: - Follower(marker = marker, user = self.user).put() + Follower(parent = marker, marker = marker, user = self.user).put() class UnfollowHandler(BaseHandler): @user_required - def get(self, id): - marker = Marker.get_by_id(int(id)) + def get(self, key_name): + marker = Marker.get_by_key_name(key_name) follower = Follower.all().filter("marker", marker).filter("user", self.user).get() if follower: follower.delete() @@ -139,12 +139,16 @@ def get(self): user.put() class ImportHandler(BaseHandler): - @user_required - def post(self): + def get(self): + my_user = User.all().filter("email", "ron.reiter@gmail.com").get() for data in process.import_data(): - marker = Marker.get_or_insert( - str(data["id"]), - user = self.user, + old_marker = Marker.get_by_key_name(str(data["id"])) + if old_marker: + old_marker.delete() + + marker = Marker( + key_name=str(data["id"]), + user = my_user, title = "Accident", description = data["description"].decode("utf8"), location = db.GeoPt(data["lat"], data["lng"]), @@ -158,7 +162,7 @@ def post(self): class StartImportHandler(BaseHandler): def get(self): - taskqueue.add(url="/import") + taskqueue.add(url="/import", method="GET") self.response.write("Import started.") app = webapp2.WSGIApplication([ @@ -167,9 +171,9 @@ def get(self): ("/login", LoginHandler), ("/logout", LogoutHandler), ("/markers", MarkersHandler), - ("/markers/(\d+)", MarkerHandler), - ("/follow/(\d+)", FollowHandler), - ("/unfollow/(\d+)", UnfollowHandler), + ("/markers/(.*)", MarkerHandler), + ("/follow/(.*)", FollowHandler), + ("/unfollow/(.*)", UnfollowHandler), ("/make_admin", MakeAdminHandler), ("/import", ImportHandler), ("/start_import", StartImportHandler), diff --git a/anywayapp/models.py b/anywayapp/models.py index 22127aaf5..1a769c265 100644 --- a/anywayapp/models.py +++ b/anywayapp/models.py @@ -13,7 +13,7 @@ class User(db.Model): def serialize(self): return { - "id" : self.key().id(), + "id" : str(self.key()), "first_name" : self.first_name, "last_name" : self.last_name, "username" : self.username, @@ -43,7 +43,7 @@ class Marker(db.Model): def serialize(self, current_user): return { - "id" : self.key().id(), + "id" : str(self.key()), "title" : self.title, "description" : self.description, "latitude" : self.location.lat, @@ -92,8 +92,7 @@ def bounding_box_fetch(cls, ne_lat, ne_lng, sw_lat, sw_lng): center_lat = (ne_lat + sw_lat) / 2 center_lng = (ne_lng + sw_lng) / 2 - distance = max(ne_lng - sw_lng, ne_lat - sw_lat) * 1000 - distance = 100000 + distance = max(ne_lng - sw_lng, ne_lat - sw_lat) * 10000 query = "distance(location, geopoint(%(lat)3.4f, %(lng)3.4f)) < %(distance)s" % { "lat" : center_lat, @@ -102,6 +101,7 @@ def bounding_box_fetch(cls, ne_lat, ne_lng, sw_lat, sw_lng): } search_query = search.Query( query_string=query, + options=search.QueryOptions(limit=20) ) results = index.search(search_query) return [Marker.get(result.doc_id) for result in results]