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
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))