From ebdb732921116736b12075d1580619e10f89a3b6 Mon Sep 17 00:00:00 2001 From: Sanj Date: Sun, 19 Feb 2012 18:24:28 +0530 Subject: [PATCH] added api call to edit stop --- chaloBEST/mumbai/apiviews.py | 8 ++++++++ chaloBEST/mumbai/models.py | 11 +++++++++++ 2 files changed, 19 insertions(+) diff --git a/chaloBEST/mumbai/apiviews.py b/chaloBEST/mumbai/apiviews.py index 2c7044f..6c8f6ce 100644 --- a/chaloBEST/mumbai/apiviews.py +++ b/chaloBEST/mumbai/apiviews.py @@ -1,5 +1,6 @@ from models import * from ox.django.shortcuts import get_object_or_404_json, render_to_json_response +from django.contrib.auth.decorators import login_required def route(request, alias): @@ -12,3 +13,10 @@ def route(request, alias): 'features': stops } }) + +@login_required(request, id): + if not id: + stop = Stop() #FIXME: should this return an error instead? + else: + stop = get_object_or_404_json(Stop, id=id) + return stop.from_geojson(request.POST) diff --git a/chaloBEST/mumbai/models.py b/chaloBEST/mumbai/models.py index b8aca72..e938621 100644 --- a/chaloBEST/mumbai/models.py +++ b/chaloBEST/mumbai/models.py @@ -1,4 +1,5 @@ from django.contrib.gis.db import models +from django.contrib.gis.geos import Point from django import forms from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes import generic @@ -123,6 +124,16 @@ class Stop(models.Model): 'geometry': geom } + def from_geojson(self, geojson): + geom = geojson['geometry']['coordinates'] + data = geojson['properties'] + self.point = Point(geom[0], geom[1]) + self.display_name = data['display_name'] + self.name_mr = data['name_mr'] + #FIXME: add alt names logic + self.save() + return self.get_geojson() + def __unicode__(self): return self.name