Exemple #1
0
    def destroy(self, req, pk=None, format=None):
        if pk is not None:
            try:
                uw_rel = UserWebSite.objects.filter(id=pk)[0]
            except:
                return handle_exc(None,
                                  status_code=status.HTTP_404_NOT_FOUND,
                                  details="rel {id} not exist!".format(id=pk))
        else:
            website_name = req.query_params.get("website_name", '')
            try:
                wb = WebSite.objects.filter(name=website_name)[0]
            except:
                return handle_exc(
                    None,
                    status_code=status.HTTP_404_NOT_FOUND,
                    details="website {website_name} not exist!".format(
                        website_name=pk))

            username = req.query_params.get('username', '')
            try:
                user = User.objects.filter(username=username)[0]
            except:
                return handle_exc(None,
                                  status_code=status.HTTP_404_NOT_FOUND,
                                  details="user {username} not exist!".format(
                                      username=username))

            uw_rel = UserWebSite.objects.filter(user_id=user.id,
                                                website_id=wb.id)
        no, data = uw_rel.delete()
        return Response(data=data, status=status.HTTP_204_NO_CONTENT)
Exemple #2
0
    def create(self, req, format=None):
        website_name = req.query_params.get('website_name', '')
        try:
            wb = WebSite.objects.filter(name=website_name)[0]
        except:
            wb = WebSite(name=website_name)

        username = req.query_params.get('username', '')
        try:
            user = User.objects.filter(username=username)[0]
        except:
            return handle_exc(None,
                              status_code=status.HTTP_400_BAD_REQUEST,
                              details="no such user!")

        uw_rel = UserWebSite.objects.filter(user_id=user.id, website_id=wb.id)
        if len(uw_rel) is 0:
            uw_rel = UserWebSite(user_id=user.id, website_id=wb.id)
        else:
            uw_rel = uw_rel[0]

        wb.save()
        uw_rel.save()
        serialized = UserWebsiteSerializer(uw_rel)
        return Response(data=serialized.data,
                        status=status.HTTP_201_CREATED,
                        headers={'Location': serialized.data.get('url', None)})
Exemple #3
0
    def get_response(self, req, pk=None):
        def group(req):

            page = self.get_object_plural(req)
            repr = self.serializer(page, many=True)
            if hasattr(repr, '__len__') and \
                            len(repr) < self.PAGINATION_DEF:
                return Response(data=repr)
            else:
                return self.get_paginated_response(data=repr)

        def ins(req, pk):

            query_set = self.get_object(req, pk)
            repr = self.serializer(query_set)
            return Response(repr)

        try:
            if not pk:
                rep = group(req)
            else:
                rep = ins(req, pk)
        except Exception as err:
            import traceback
            traceback.print_exc()
            return handle_exc(
                None,
                status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
                details=err.message)
        return rep
Exemple #4
0
 def create_user_by_username(self, req, username, **param):
     password = req.query_params.get('password', None)
     email = req.query_params.get('email', None)
     if password is None or email is None:
         handle_exc(None,
                    status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
                    details="auth info like password or emails missed")
     AuthUser = get_user_model()
     auth_user = AuthUser.objects.create(username=username,
                                         password=password,
                                         email=email)
     user = User(username=username, auth=auth_user)
     user.save()
     serializer = UserSerializer(user)
     return Response(serializer.data,
                     status=status.HTTP_201_CREATED,
                     headers={'Location': serializer.data.get('url', None)})
Exemple #5
0
 def delete_website_by_name(self, req, name):
     wb = WebSite.objects.filter(name=name)
     if len(wb) == 0:
         return handle_exc(None,
                           status_code=status.HTTP_400_BAD_REQUEST,
                           details="Not exist!")
     data = WebSiteSerializer(wb, many=True).data
     wb.delete()
     return Response(data=data, status=status.HTTP_204_NO_CONTENT)
Exemple #6
0
    def username(self, req, username):
        user = User.objects.get(username=username)
        if user is None:
            return handle_exc(
                None,
                status_code=status.HTTP_404_NOT_FOUND,
                details="user {username} not exist!".format(username=username))
        # return self.get_response(req, user.id)
        def group(req, username):

            query_set = self.get_object_plural(req)
            repr = self.serializer(query_set, many=True)
            if hasattr(repr, '__len__') and \
                            len(repr) < self.PAGINATION_DEF:
                return Response(data=repr)
            else:
                return self.get_paginated_response(data=repr)

        return group(req, username)
Exemple #7
0
    def create_website_by_name(self, req, name, **param):
        url = req.query_params.get("url", '')
        tags = req.query_params.get("tags", '')

        if url is '' or tags is '':
            return handle_exc(None,
                              status_code=status.HTTP_400_BAD_REQUEST,
                              details="Not enough parameters")

        website = WebSite.objects.get(name=name)
        if len(website) == 0:
            website = WebSite(name=name, url=url, tags=tags)
            website.save()
        else:
            website = website[0]

        serialized = WebSiteSerializer(website)
        return Response(data=serialized.data,
                        status=status.HTTP_201_CREATED,
                        headers={'Location': serialized.data.get('url', None)})