示例#1
0
 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
     })
示例#2
0
    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
示例#3
0
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()
示例#4
0
    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