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