示例#1
0
文件: view.py 项目: lampard1010/mock
    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)
示例#2
0
文件: view.py 项目: lampard1010/mock
 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)
示例#3
0
 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)
示例#4
0
 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()
示例#5
0
文件: view.py 项目: lampard1010/mock
    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)
示例#6
0
 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()
示例#7
0
文件: view.py 项目: lampard1010/mock
    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)
示例#8
0
 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()
示例#9
0
    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)
示例#10
0
文件: view.py 项目: lampard1010/mock
    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)
示例#11
0
文件: root.py 项目: lampard1010/mock
    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)
示例#12
0
    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)
示例#13
0
 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)
示例#14
0
 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)
示例#15
0
 def get_item(self, request, pk):
     row = self.as_dict(self.get_row(pk))
     return Response(row)
示例#16
0
 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)
示例#17
0
 def delete_list(self, request):
     self.query.delete()
     self.session.commit()
     return Response(status=status.HTTP_204_NO_CONTENT)
示例#18
0
 def get_list(self, request):
     return Response(todos.values())
示例#19
0
文件: view.py 项目: lampard1010/mock
 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)
示例#20
0
文件: view.py 项目: lampard1010/mock
 def delete_list(self, request):
     self.engine.remove()
     return Response(status=status.HTTP_204_NO_CONTENT)
示例#21
0
 def get_item(self, request, pk):
     pk = int(pk)
     try:
         return Response(todos[pk])
     except KeyError:
         raise NotFoundError()
示例#22
0
 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)
示例#23
0
文件: view.py 项目: lampard1010/mock
 def get_item(self, request, pk):
     return Response(self.get_doc(pk))
示例#24
0
 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)
示例#25
0
 def delete_list(self, request):
     todos.clear()
     return Response(status=status.HTTP_204_NO_CONTENT)