def update(self, d): ''' Create or update ''' id = self.request.get_range('id') params = tools.gets(self, strings=['title', 'details', 'color'], dates=['date_start', 'date_end'], booleans=['ongoing'], supportTextBooleans=True ) event = self.user.get(Event, id=id) if not event: start = params.get('date_start') if start: event = Event.Create(self.user, params.get('date_start')) if event: event.Update(**params) event.put() self.success = True self.message = "Event saved" else: self.message = "Couldn't create event" self.set_response({ 'event': event.json() if event else None })
def test_event_calls(self): date_start = datetime.today() e = Event.Create(self.u, date_start) e.Update(title="New Event", details="Details") e.put() self.assertEqual(e.title, "New Event") self.assertEqual(e.details, "Details") # List response = self.get_json("/api/event", {}, headers=self.api_headers) h = response.get('events')[0] self.assertEqual(h.get('title'), "New Event") # Update response = self.post_json("/api/event", { 'id': h.get('id'), 'title': 'New Name' }, headers=self.api_headers) h = response.get('event') self.assertEqual(h.get('title'), 'New Name') # Delete response = self.post_json("/api/event/delete", {'id': h.get('id')}, headers=self.api_headers) h = self.u.get(Event, id=h.get('id')) self.assertIsNone(h) # Confirm deletion
class EventAPI(handlers.JsonRequestHandler): @authorized.role('user') def list(self, d): page, max, offset = tools.paging_params(self.request) events = Event.Fetch(self.user, limit=max, offset=offset) self.set_response({ 'events': [event.json() for event in events] }, debug=True, success=True) @authorized.role('user') def update(self, d): ''' Create or update ''' id = self.request.get_range('id') params = tools.gets(self, strings=['title', 'details', 'color'], dates=['date_start', 'date_end'], booleans=['ongoing'], supportTextBooleans=True ) event = self.user.get(Event, id=id) if not event: start = params.get('date_start') if start: event = Event.Create(self.user, params.get('date_start')) if event: event.Update(**params) event.put() self.success = True self.message = "Event saved" else: self.message = "Couldn't create event" self.set_response({ 'event': event.json() if event else None }) @authorized.role('user') def batch_create(self, d): try: events = json.loads(self.request.get('events')) except ValueError, e: self.message = "Malformed JSON" events = [] dbp = [] for e in events: if 'date_start' in e and isinstance(e['date_start'], basestring): e['date_start'] = tools.fromISODate(e['date_start']) if 'date_end' in e and isinstance(e['date_end'], basestring): e['date_end'] = tools.fromISODate(e['date_end']) if e.get('date_end') else e.get('date_start') if not e.get('date_end'): e['date_end'] = e.get('date_start') e = Event.Create(self.user, **e) dbp.append(e) if dbp: ndb.put_multi(dbp) self.success = True self.message = "Creating %d event(s)" % len(dbp) self.set_response()
def test_event_calls(self): date_start = datetime.today() e = Event.Create(self.u, date_start) e.Update(title="New Event", details="Details") e.put() self.assertEqual(e.title, "New Event") self.assertEqual(e.details, "Details") # Batch create params = { 'events': json.dumps([{ 'title': "Batch event 1", 'date_start': '2017-01-01', 'date_end': '2017-02-01' }, { 'title': "Batch event 2", 'date_start': '2017-04-04', 'date_end': '2017-04-06' }, { 'title': "Batch event 3", 'date_start': '2017-05-01', 'date_end': '2017-05-20' }]) } response = self.post_json("/api/event/batch", params, headers=self.api_headers) message = response.get('message') self.assertEqual(message, "Creating 3 event(s)") # List response = self.get_json("/api/event", {}, headers=self.api_headers) h = response.get('events')[-1] self.assertEqual(h.get('title'), "New Event") # Update response = self.post_json("/api/event", { 'id': h.get('id'), 'title': 'New Name' }, headers=self.api_headers) h = response.get('event') self.assertEqual(h.get('title'), 'New Name') # Delete response = self.post_json("/api/event/delete", {'id': h.get('id')}, headers=self.api_headers) h = self.u.get(Event, id=h.get('id')) self.assertIsNone(h) # Confirm deletion