def post(self, request): """Make a token based on `uesrname`, `password` and `expires`. """ data = request.data username = data.get('username') password = data.get('password') # `expires` is optional expires = data.get('expires') if expires is None: expires = settings.TOKEN_EXPIRES pk, secret = self.token_user.get_key(username, password) if pk is None or secret is None: errors = {'errors': 'username or password is wrong'} return Response(errors, status=status.HTTP_400_BAD_REQUEST) token_data = {'pk': pk, 'secret': secret} token = make_token(settings.SECRET_KEY, token_data, expires) return Response({ 'id': pk, 'token': token, 'expires': expires }, status=status.HTTP_201_CREATED)
def put(self, request, pk): form = self.form_cls(request.data) if form.is_valid(): doc = form.document doc.update({'_id': self.get_pk(pk)}) self.engine.remove({'_id': doc['_id']}) self.engine.insert(doc) return Response(status=status.HTTP_204_NO_CONTENT) return Response(form.errors, status=status.HTTP_400_BAD_REQUEST)
def put(self, request, pk): form = self.form_cls(request.data) if form.is_valid(): doc = form.document doc.update({'id': self.get_pk(pk)}) self.query.filter_by(id=doc['id']).delete() self.add_row(doc) return Response(status=status.HTTP_204_NO_CONTENT) return Response(form.errors, status=status.HTTP_400_BAD_REQUEST)
def delete_item(self, request, pk): pk = int(pk) try: del todos[pk] return Response(status=status.HTTP_204_NO_CONTENT) except KeyError: raise NotFoundError()
def delete(self, request, pk): """Invalidate the token related to the user matches `pk`.""" ok = self.token_user.invalidate_key(pk) if not ok: raise NotFoundError() return Response(status=status.HTTP_204_NO_CONTENT)
def patch(self, request, pk): pk = int(pk) try: todos[pk].update(request.data) return Response(status=status.HTTP_204_NO_CONTENT) except KeyError: raise NotFoundError()
def patch(self, request, pk): doc = self.get_doc(pk) # do JSON-Patch patch_data = JsonPatch(request.data) try: patch_data.apply(doc, in_place=True) except Exception as e: return Response({'jsonpatch_error': get_exception_detail(e)}, status=status.HTTP_400_BAD_REQUEST) # validate data after JSON-Patch form = self.form_cls(doc) if form.is_valid(): self.engine.save(form.document) return Response(status=status.HTTP_204_NO_CONTENT) return Response(form.errors, status=status.HTTP_400_BAD_REQUEST)
def get_item(self, request, list_id, pk): list_id = int(list_id) pk = int(pk) query_func = lambda c: c['list_id'] == list_id and c['id'] == pk result_cards = filter(query_func, cards.values()) if result_cards: return Response(result_cards[0]) else: raise NotFoundError()
def patch(self, request, pk): row = self.get_row(pk) doc = self.as_dict(row) # do JSON-Patch patch_data = JsonPatch(request.data) try: patch_data.apply(doc, in_place=True) except Exception as e: return Response({'jsonpatch_error': get_exception_detail(e)}, status=status.HTTP_400_BAD_REQUEST) # validate data after JSON-Patch form = self.form_cls(doc) if form.is_valid(): self.from_dict(row, doc) self.session.commit() return Response(status=status.HTTP_204_NO_CONTENT) return Response(form.errors, status=status.HTTP_400_BAD_REQUEST)
def get_list(self, request): page = request.kwargs['page'] per_page = request.kwargs['per_page'] lookup = request.kwargs['lookup'] skip, limit = (page - 1) * per_page, per_page fields = self.to_mongo_fields(request.kwargs['fields']) docs = self.engine.find( spec=lookup, skip=skip, limit=limit, sort=request.kwargs['sort'], fields=fields ) count = self.engine.find(spec=lookup).count() headers = self.make_pagination_headers(page, per_page, count) return Response(list(docs), headers=headers)
def get_list(self, request): page = request.kwargs['page'] per_page = request.kwargs['per_page'] content = self.do_filtering(self.links, request.kwargs['lookup']) count = len(content) content = self.do_paginating(content, page, per_page) headers = self.make_pagination_headers(page, per_page, count) content = self.do_sorting(content, request.kwargs['sort']) content = self.do_fields_selecting(content, request.kwargs['fields']) return Response(content, headers=headers)
def get_list(self, request): page = request.kwargs['page'] per_page = request.kwargs['per_page'] fields = request.kwargs['fields'] skip, limit = (page - 1) * per_page, per_page sort = self.to_sqla_sort(request.kwargs['sort']) mq = MongoQuery.get_for(self.model, self.query) query = mq.filter(request.kwargs['lookup'] or None) rows = query.sort(sort).limit(limit, skip).end() count = query.end().count() content = [self.as_dict(row, fields) for row in rows] headers = self.make_pagination_headers(page, per_page, count) return Response(content, headers=headers)
def get_list(self, request, list_id): list_id = int(list_id) query_func = lambda c: c['list_id'] == list_id result_cards = filter(query_func, cards.values()) return Response(result_cards)
def post(self, request): form = self.form_cls(request.data) if form.is_valid(): id = self.add_row(form.document) return Response({'id': id}, status=status.HTTP_201_CREATED) return Response(form.errors, status=status.HTTP_400_BAD_REQUEST)
def get_item(self, request, pk): row = self.as_dict(self.get_row(pk)) return Response(row)
def delete_item(self, request, pk): row = self.get_row(pk) self.session.delete(row) self.session.commit() return Response(status=status.HTTP_204_NO_CONTENT)
def delete_list(self, request): self.query.delete() self.session.commit() return Response(status=status.HTTP_204_NO_CONTENT)
def get_list(self, request): return Response(todos.values())
def delete_item(self, request, pk): doc = self.get_doc(pk) self.engine.remove({'_id': doc['_id']}) return Response(status=status.HTTP_204_NO_CONTENT)
def delete_list(self, request): self.engine.remove() return Response(status=status.HTTP_204_NO_CONTENT)
def get_item(self, request, pk): pk = int(pk) try: return Response(todos[pk]) except KeyError: raise NotFoundError()
def post(self, request): pk = len(todos) + 1 item = dict(id=pk, **request.data) todos[pk] = item return Response({'id': pk}, status=status.HTTP_201_CREATED)
def get_item(self, request, pk): return Response(self.get_doc(pk))
def put(self, request, pk): pk = int(pk) item = dict(id=pk, **request.data) todos[pk] = item return Response(status=status.HTTP_204_NO_CONTENT)
def delete_list(self, request): todos.clear() return Response(status=status.HTTP_204_NO_CONTENT)