/
model_datastore.py
56 lines (49 loc) · 1.75 KB
/
model_datastore.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
# Copyright 2016 Google Inc.
#
# 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.
from .Model import Model
from datetime import datetime
from google.cloud import datastore
def from_datastore(entity):
"""Translates Datastore results into the format expected by the
application.
Datastore typically returns:
[Entity{key: (kind, id), prop: val, ...}]
This returns:
[ name, email, date, message ]
where name, email, and message are Python strings
and where date is a Python datetime
"""
if not entity:
return None
if isinstance(entity, list):
entity = entity.pop()
return [entity['name'],entity['email'],entity['date'],entity['message']]
class model(Model):
def __init__(self):
self.client = datastore.Client('YOUR_PROJECT_ID')
def select(self):
query = self.client.query(kind = 'Review')
entities = list(map(from_datastore,query.fetch()))
return entities
def insert(self,name,email,message):
key = self.client.key('Review')
rev = datastore.Entity(key)
rev.update( {
'name': name,
'email' : email,
'date' : datetime.today(),
'message' : message
})
self.client.put(rev)
return True