예제 #1
0
    def post(self):
        user = users.get_current_user()

#        if not user:
#            self.response.out.write(json_response(NOT_LOGGED_IN))
#            return

        data = self.request.get('data')
        if data is None:
            self.response.out.write(json_response(BAD_REQUEST))
            return

        try:
            transactions = process_ing_csv(data)
        except Exception, e:
            self.response.out.write(json_response(EX_PROCESS_DATA))
            return
예제 #2
0
    def post(self):
        #TODO: security???
        #TODO: logging
        #TODO: test ex handling
        user = users.get_current_user()

        if not user:
            self.response.out.write(json_response(NOT_LOGGED_IN))
            return

        j_str = self.request.get('json')

        try:
            json_r = json.loads(j_str)
            ent_name = json_r['ent']
            op = json_r['op']
            params = json_r['params']
        except (ValueError, KeyError):
            self.response.out.write(json_response(BAD_REQUEST))
            return

        try:
            ent_class = crud_entities[ent_name]
        except KeyError:
            self.response.out.write(json_response(ENT_NOT_SUPPORTED))
            return

        ## execute operation ##
        if op == 'put':
            try:
                entities = []
                new_amount = 0

                for cat_j in params:
                    if cat_j.has_key('key'):
                        entity =  ent_class.load(cat_j)
                    else:
                        entity = ent_class.create(cat_j)
                        new_amount += 1

                    entities.append(entity)

                db.put(entities)
                counter.update_counter(ent_name, new_amount)

                self.response.out.write(json_response(OP_END_SUCCESS))
            except (KeyError, ValueError, BadValueError):
                self.response.out.write(json_response(OP_BAD_VALUE))
            except Error:
                self.response.out.write(json_response(OP_DS_FAILED))

        elif op == 'del':
            try:
                db.delete(params)
                counter.update_counter(ent_name, -len(params))
                self.response.out.write(json_response(OP_END_SUCCESS))
            except BadKeyError:
                self.response.out.write(json_response(OP_BAD_VALUE))
            except Error:
                self.response.out.write(json_response(OP_DS_FAILED))

        elif op == 'lst':
            offset = params['offset']
            limit = params['limit']
            #filter = params['filter']

            q = ent_class.query()
            #filter

            rs = q.fetch(limit=limit, offset=offset)

            res = []
            for e in rs:
                res.append(ent_class.serialize(e))

            _counter = counter.get_counter(ent_name)
            self.response.out.write(json_response(OP_END_SUCCESS, {
                'result': res,
                'total': _counter.count if _counter is not None else 0
            }))
        else:
            self.response.out.write(json_response(ENT_NOT_SUPPORTED))