Advertisement
Guest User

Untitled

a guest
Oct 21st, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.72 KB | None | 0 0
  1. curl --data "name=t-shirt&description=Star Trek&price=8.99&user=test1" -H "Accept: application/json" https://mywebsite.appspot.com/product
  2.  
  3. {"description": "Star Trek", "price": 8.9900000000000002, "name": "t-shirt", "user": "test1", "key": 5206065687822336}
  4.  
  5. from google.appengine.ext import ndb
  6.  
  7. class Model(ndb.Model):
  8. def to_dict(self):
  9. d = super(Model, self).to_dict()
  10. d['key'] = self.key.id()
  11. return d
  12.  
  13. class User(Model):
  14. username = ndb.StringProperty(required=True)
  15. password = ndb.StringProperty(required=True)
  16.  
  17. class Product(Model):
  18. name = ndb.StringProperty(required=True)
  19. description = ndb.StringProperty(required=True)
  20. price = ndb.FloatProperty()
  21. color = ndb.StringProperty()
  22. size = ndb.StringProperty()
  23. user = ndb.StringProperty(required=True)
  24.  
  25. class Sales(Model):
  26. products = ndb.KeyProperty(repeated=True)
  27. datetime = ndb.DateTimeProperty(required=True)
  28. quantity = ndb.IntegerProperty(repeated=True)
  29. product_cost = ndb.FloatProperty(repeated=True)
  30. total_cost = ndb.FloatProperty()
  31. latitude = ndb.FloatProperty()
  32. longitude = ndb.FloatProperty()
  33. user = ndb.KeyProperty(required=True)
  34.  
  35.  
  36. def to_dict(self):
  37. d = super(Sales, self).to_dict()
  38. d['products'] = [i.id() for i in d['products']]
  39. return d
  40.  
  41. import webapp2
  42. from google.appengine.ext import ndb
  43. import models
  44. import json
  45.  
  46. class Product(webapp2.RequestHandler):
  47. #Create a Product entity
  48. def post(self):
  49. if 'application/json' not in self.request.accept:
  50. self.response.status = 406
  51. self.response.status_message = 'Not acceptable, API only supports application/json MIME type.'
  52. return
  53. new_product = models.Product()
  54. name = self.request.get('name', default_value=None)
  55. description = self.request.get('description', default_value=None)
  56. price = self.request.get('price', default_value=0)
  57. color = self.request.get('color', default_value=None)
  58. size = self.request.get('size', default_value=None)
  59. user = self.request.get('user', default_value=None)
  60.  
  61. if name:
  62. new_product.name = name
  63. else:
  64. self.response.status = 400
  65. self.response.status_message = 'Invalid request, name required'
  66. if description:
  67. new_product.description = description
  68. else:
  69. self.response.status = 400
  70. self.response.status_message = 'Invalid request, description required'
  71. if price:
  72. new_product.price = float(price)
  73. if color:
  74. new_product.color = color
  75. if size:
  76. new_product.size = size
  77. if user:
  78. new_product.user = user
  79. else:
  80. self.response.status = 400
  81. self.response.status_message = 'Invalid request, username required'
  82. key = new_product.put()
  83. out = new_product.to_dict()
  84. self.response.write(json.dumps(out))
  85. return
  86.  
  87. #Return an Product entity
  88. def get(self, **kwargs):
  89. if 'application/json' not in self.request.accept:
  90. self.response.status = 406
  91. self.response.status_message = 'Not acceptable, API only supports application/json MIME type.'
  92. self.response.write(self.response.status_message)
  93. return
  94. #Return selected product details
  95. if 'id' in kwargs:
  96. out = ndb.Key(models.Product, int(kwargs['id'])).get().to_dict()
  97. self.response.write(json.dumps(out))
  98. #Return all product ids
  99. else:
  100. q = models.Product.query()
  101. keys = q.fetch(keys_only=False)
  102. results = {x.key.id() : x.to_dict() for x in keys}
  103. self.response.write(json.dumps(results))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement