Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- curl --data "name=t-shirt&description=Star Trek&price=8.99&user=test1" -H "Accept: application/json" https://mywebsite.appspot.com/product
- {"description": "Star Trek", "price": 8.9900000000000002, "name": "t-shirt", "user": "test1", "key": 5206065687822336}
- from google.appengine.ext import ndb
- class Model(ndb.Model):
- def to_dict(self):
- d = super(Model, self).to_dict()
- d['key'] = self.key.id()
- return d
- class User(Model):
- username = ndb.StringProperty(required=True)
- password = ndb.StringProperty(required=True)
- class Product(Model):
- name = ndb.StringProperty(required=True)
- description = ndb.StringProperty(required=True)
- price = ndb.FloatProperty()
- color = ndb.StringProperty()
- size = ndb.StringProperty()
- user = ndb.StringProperty(required=True)
- class Sales(Model):
- products = ndb.KeyProperty(repeated=True)
- datetime = ndb.DateTimeProperty(required=True)
- quantity = ndb.IntegerProperty(repeated=True)
- product_cost = ndb.FloatProperty(repeated=True)
- total_cost = ndb.FloatProperty()
- latitude = ndb.FloatProperty()
- longitude = ndb.FloatProperty()
- user = ndb.KeyProperty(required=True)
- def to_dict(self):
- d = super(Sales, self).to_dict()
- d['products'] = [i.id() for i in d['products']]
- return d
- import webapp2
- from google.appengine.ext import ndb
- import models
- import json
- class Product(webapp2.RequestHandler):
- #Create a Product entity
- def post(self):
- if 'application/json' not in self.request.accept:
- self.response.status = 406
- self.response.status_message = 'Not acceptable, API only supports application/json MIME type.'
- return
- new_product = models.Product()
- name = self.request.get('name', default_value=None)
- description = self.request.get('description', default_value=None)
- price = self.request.get('price', default_value=0)
- color = self.request.get('color', default_value=None)
- size = self.request.get('size', default_value=None)
- user = self.request.get('user', default_value=None)
- if name:
- new_product.name = name
- else:
- self.response.status = 400
- self.response.status_message = 'Invalid request, name required'
- if description:
- new_product.description = description
- else:
- self.response.status = 400
- self.response.status_message = 'Invalid request, description required'
- if price:
- new_product.price = float(price)
- if color:
- new_product.color = color
- if size:
- new_product.size = size
- if user:
- new_product.user = user
- else:
- self.response.status = 400
- self.response.status_message = 'Invalid request, username required'
- key = new_product.put()
- out = new_product.to_dict()
- self.response.write(json.dumps(out))
- return
- #Return an Product entity
- def get(self, **kwargs):
- if 'application/json' not in self.request.accept:
- self.response.status = 406
- self.response.status_message = 'Not acceptable, API only supports application/json MIME type.'
- self.response.write(self.response.status_message)
- return
- #Return selected product details
- if 'id' in kwargs:
- out = ndb.Key(models.Product, int(kwargs['id'])).get().to_dict()
- self.response.write(json.dumps(out))
- #Return all product ids
- else:
- q = models.Product.query()
- keys = q.fetch(keys_only=False)
- results = {x.key.id() : x.to_dict() for x in keys}
- self.response.write(json.dumps(results))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement