예제 #1
0
def user_detail(request, id, format=None):
    """
    Retrieve, update or delete a server assets instance.
    """
    try:
        snippet = User.objects.get(id=id)
    except User.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)

    if request.method == 'GET':
        serializer = serializers.UserSerializer(snippet)
        return Response(serializer.data)

    elif request.method == 'PUT':
        serializer = serializers.UserSerializer(snippet, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

    elif request.method == 'DELETE':
        if not request.user.has_perm('OpsManage.delete_user'):
            return Response(status=status.HTTP_403_FORBIDDEN)
        snippet.delete()
        return Response(status=status.HTTP_204_NO_CONTENT)
예제 #2
0
파일: views.py 프로젝트: yhbyj/dg_proj
 def get(self, request, *args, **kwargs):
     pk = kwargs.get('pk')
     if pk:
         try:
             # 用户对象不能直接作为数据返回给前台
             user_obj = models.User.objects.get(pk=pk)
             # 序列化一下用户对象
             user_ser = serializers.UserSerializer(user_obj)
             return Response({
                 'status': 0,
                 'msg': 'ok',
                 'results': user_ser.data
             })
         except:
             return Response({'status': 2, 'msg': '用户不存在'})
     else:
         # 用户对象列表(queryset)不能直接作为数据返回给前台
         user_obj_list = models.User.objects.all()
         # 序列化一下用户对象
         user_ser = serializers.UserSerializer(user_obj_list, many=True)
         return Response({
             'status': 0,
             'msg': 'ok',
             'results': user_ser.data
         })
예제 #3
0
def user_list(request, format=None):
    """
    List all order, or create a server assets order.
    """
    if request.method == 'GET':
        snippets = User.objects.all()
        serializer = serializers.UserSerializer(snippets, many=True)
        return Response(serializer.data)
    elif request.method == 'POST':
        serializer = serializers.UserSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
예제 #4
0
    def post(self, request, format='json'):
        serializer = serializers.UserSerializer(data=request.data,
                                                context={'request': request})

        if serializer.is_valid(raise_exception=True):
            user = serializer.save()

            # confirmation_url = request.build_absolute_uri(reverse('confirmation'))
            token = tokens.user_confirmation_token.make_token(user)
            uid = urlsafe_base64_encode(force_bytes(user.pk)).decode()

            try:
                mailer.send_confirmation_email(
                    user,
                    {
                        # 'confirmation_url': confirmation_url,
                        'token': token,
                        'uid': uid,
                    })
                return Response({'id': user.pk})
            except:
                print('Unexpected errors on sending an e-mail')
                user.delete()
                raise

        return Response(status=status.HTTP_422_UNPROCESSABLE_ENTITY)
예제 #5
0
 def put(self, request, format=None):
     user = self.get_object(request.user.id)
     serializer = serializers.UserSerializer(user, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
예제 #6
0
 def put(self, request, *args, **kwargs):
     body = json.loads(request.body)
     user = models.User.objects.get(username=request.user.username)
     serializer = serializers.UserSerializer(instance=user, data=body)
     serializer.is_valid()
     serializer.save()
     return Response(serializer.data, status=status.HTTP_201_CREATED)
예제 #7
0
파일: views.py 프로젝트: LVH-27/dreamy
def register(request):
    serialized = serializers.UserSerializer(data=request.DATA)
    if serialized.is_valid():
        User.objects.create_user(serialized.init_data['username'],
                                 serialized.init_data['password'])
        return Response(serialized.data, status=status.HTTP_201_CREATED)
    else:
        return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST)
예제 #8
0
    def get(self, request, userId):
        obj = {'userId': userId}
        self.check_object_permissions(request, obj)

        user = models.Users.objects.get(uuid=userId)
        user = serializers.UserSerializer(user)

        return Response(user.data, status.HTTP_200_OK)
예제 #9
0
def sign_in(request):
    try:
        query = models.User.objects.get(username=request.data['username'],
                                        password=request.data['password'])
        serializer = serializers.UserSerializer(query)
    except models.User.DoesNotExist:
        return Response({'details': ['Invalid username or password']},
                        status=status.HTTP_404_NOT_FOUND)
    return Response(serializer.data)
예제 #10
0
    def get(self, request, *args, **kwargs):
        # ret = {'code':1001, 'msg':None, 'data': None}
        try:
            username = request._request.GET.get('username')
            user_obj = models.UserInfo.objects.filter(
                username=username).first()
            if not user_obj:
                user = models.UserInfo.objects.all()
                ser = serializers.UserSerializer(instance=user, many=True)
                ret = json.dumps(ser.data, ensure_ascii=False)
            else:
                ser = serializers.UserSerializer(instance=user_obj, many=False)
                ret = json.dumps(ser.data, ensure_ascii=False)
            # ret['msg'] = '用户查找成功'

        except Exception as e:
            pass
        return HttpResponse(ret)
예제 #11
0
def update_user(request, id):
    data = {}
    person = models.Person.objects.get(id=id)
    if person:
        if request.data["user_type"] == "1":
            user = models.User.objects.get(id=person.user_id)
            address = request.data["address"]
            if address:
                serializer = serializers.UserSerializer(
                    user, data={"address": request.data["address"]})
                if serializer.is_valid():
                    serializer.save()

        elif request.data["user_type"] == "2":
            organizer = models.Organizer.objects.get(id=person.organizer_id)
            serializer = serializers.OrganizerSerializer(
                organizer,
                data={
                    "address": request.data["address"],
                    "experience": request.data["experience"],
                    "organization": request.data["organization"]
                })
            if serializer.is_valid():
                serializer.save()

            data["errors"] = str(serializer.errors)

        if request.data.get("first_name", None):
            data["first_name"] = request.data.get("first_name", None)

        if request.data.get("last_name", None):
            data["last_name"] = request.data.get("last_name", None)

        if request.data.get("phone_no", None):
            data["phone_no"] = request.data.get("phone_no", None)

        if "image" in request.data:
            if person.image:
                image = str(person.image)
                path = "media\\uploads\\users\\" + image.split("/")[-1]
                os.remove(path)
            data["image"] = request.data["image"]
        else:
            data["image"] = person.image

        serializer = serializers.PersonOnlySerializer(person, data=data)
        if serializer.is_valid():
            person = serializer.save()
            serializer = serializers.PersonSerializer(person)
            return Response(status=status.HTTP_200_OK, data=serializer.data)

        if "errors" not in data:
            data["errors"] = str(serializer.errors)
        else:
            data["errors"] += str(serializer.errors)
        return Response(status=status.HTTP_400_BAD_REQUEST, data=data)
    return Response(status=status.HTTP_400_BAD_REQUEST, data={})
예제 #12
0
 def me(self, request, *args, **kwargs):
     if request.user.is_authenticated():
         if 'expand_accounts' in request.GET:
             request.user.all_accounts = request.user.accounts_set.all()
         if 'expand_links' in request.GET:
             request.user.all_links = request.user.links.all()
         serializer = serializers.UserSerializer(
             request.user, context={'request': request})
         return Response(serializer.data)
     raise PermissionDenied()
예제 #13
0
파일: views.py 프로젝트: gsdt/events_app
def gen_token_response(user):
    jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
    jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER

    payload = jwt_payload_handler(user)
    token = jwt_encode_handler(payload)
    return OrderedDict(user=serializers.UserSerializer(user).data,
                       token=token,
                       expired=api_settings.JWT_EXPIRATION_DELTA,
                       type=api_settings.JWT_AUTH_HEADER_PREFIX)
예제 #14
0
def upload_profile_picture(request):
    decoded_image = base64.b64decode(request.data)
    img_content = ContentFile(decoded_image, f'{request.user.username}.jpg')
    data = {'profile_picture': img_content}
    serializer = serializers.UserSerializer(request.user,
                                            data=data,
                                            partial=True)
    serializer.is_valid(raise_exception=True)
    serializer.save()
    print(serializer.data)
    return Response(serializer.data)
예제 #15
0
    def get(self, *args, **kwargs):

        uid = self.kwargs.get('id')

        try:
            user_object = models.User.objects.get(id=uid)
            serializer = serializers.UserSerializer(user_object)

            return Response(serializer.data)

        except ObjectDoesNotExist:
            return Response(data={'message': 'Object does not exist!'})
예제 #16
0
 def create(self, request, *args, **kwargs):
     """
     Append token on user registration
     """
     context = {'request': request}
     serializer = serializers.UserSerializer(data=request.data,
                                             context=context)
     if serializer.is_valid():
         model_obj = serializer.save()
         token = get_tokens_for_user(model_obj)
         response = {'user': serializer.data, 'token': token}
         return Response(response, status=status.HTTP_201_CREATED)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
예제 #17
0
    def get(self, *args, **kwargs):
        queryset = models.User.objects.all()

        paginator = Paginator(
            queryset, settings.REST_FRAMEWORK.get('PAGE_SIZE'))
        page = self.request.GET.get('page')

        try:
            queryset = paginator.page(page)
        except (PageNotAnInteger, EmptyPage):
            return Response(data={})

        serializer = serializers.UserSerializer(queryset, many=True)
        return Response(serializer.data)
예제 #18
0
    def post(self, request, version, GUID):

        try:
            data = json.loads(request.body)
        except Exception as e:
            return Response('request body not set',
                            status=status.HTTP_400_BAD_REQUEST)

        try:
            Device = models.Device.objects.get(GUID=GUID)
        except models.Device.DoesNotExist:
            return Response('device with selected GUID not found',
                            status=status.HTTP_404_NOT_FOUND)

        if not Device.active:
            return Response('device with selected GUID is inactive',
                            status=status.HTTP_403_FORBIDDEN)

        try:
            code = str(data['code'])
        except Exception as e:
            return Response('code is not set',
                            status=status.HTTP_400_BAD_REQUEST)

        if not code.isdigit():
            return Response('wrong data format',
                            status=status.HTTP_400_BAD_REQUEST)

        if Device.verification_code == code:
            Device.verified = True
            Device.save()
        else:
            return Response('wrong verification code',
                            status=status.HTTP_403_FORBIDDEN)

        try:
            User = models.User.objects.get(devices=Device)
            for device in User.devices.all():
                if device.id != Device.id:
                    device.active = False
                    device.save()
        except Exception as e:
            User = None

        if User is not None:
            content = serializers.UserSerializer(User).data
        else:
            content = None

        return Response(content, status=status.HTTP_202_ACCEPTED)
예제 #19
0
    def post(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)

        # email field in User isn't unique & setting it manually caused failure in CI, so ...
        if User.objects.filter(email=request.data['email']).exists():
            return Response({
                "email": ["user with this email address already exists."]
            }, status=400)

        serializer.is_valid(raise_exception=True)
        user = serializer.save()
        return Response({
            "user": serializers.UserSerializer(user, context=self.get_serializer_context()).data,
            "token": AuthToken.objects.create(user)[1]
        })
예제 #20
0
 def upload_profile_image(self, request):
     '''
     profile image should be passed the the body
     of the request
     '''
     try:
         user = am.GidaUser.objects.get(username=request.user.username)
         serializer = aps.UserSerializer(data=request.data)
         if serializer.is_valid():
             data = request.data['image']
             # image = cloudinary.uploader.upload(data)
             # user.header_image = image['url']
             user.save()
         return Response({'header_image': data})
     except Exception:
         return Response({'status': 'Upload failed'})
예제 #21
0
    def status(self, request):
        """Get the current API status (user, team, competition)."""

        current = models.Competition.current()
        response = {
            'competition': {
                'start': current.competition_start,
                'end': current.competition_end
            }
        }
        if request.user.is_authenticated:
            response['user'] = serializers.UserSerializer(request.user).data
            response['user']['eligible'] = request.user.profile.eligible
            if request.user.profile.current_team:
                response['team'] = serializers.TeamProfileSerializer(
                    request.user.profile.current_team).data
        return Response(response)
예제 #22
0
파일: views.py 프로젝트: cccb/meteme
    def retrieve(self, request, pk=None):
        """
        Fetch barcode and return serialized product
        or serialized user.
        """
        barcode, _ = Barcode.objects.get_or_create(number=pk)

        # Return 404 if barcode is not associated
        if not barcode.account and not barcode.product:
            return Response({'error': 'Barcode not found.'},
                            status=404)

        if barcode.account:
            serializer = serializers.UserSerializer(barcode.account.user)
        else:
            serializer = serializers.ProductSerializer(barcode.product)

        return Response(serializer.data)
예제 #23
0
파일: views.py 프로젝트: cccb/meteme
    def deposit(self, request, pk=None):
        """
        Make deposit using the deposit serializer
        """
        user = auth_models.User.objects.get(id=pk)

        serializer = DepositSerializer(data=request.data)
        if not serializer.is_valid():
            return Response(serializer.errors,
                            status=status.HTTP_400_BAD_REQUEST)

        deposit = serializer.create(user)

        # Serialize result and create response
        user_serializer = serializers.UserSerializer(deposit['user'])
        return Response({
            "user": user_serializer.data,
            "old_balance": str(deposit['old_balance']),
            "new_balance": str(deposit['new_balance']),
        })
예제 #24
0
def admin_detail(request):
    '''
    Retrieve, update or delete a admin instance.
    检索、更新或删除管理员实例。
    '''
    ids = request.POST.get('ids')
    id = request.POST.get('id')

    if request.method == "DELETE":

        print(id)
        print(ids)

        if ids:
            try:
                #批量删除
                User.objects.extra(where=['id IN (' + ids[:-1] + ')']).delete()
                return JsonResponse({"status": 200, "msg": "删除成功"})
            except:
                return JsonResponse({"status": 400, "msg": "删除失败"})
        else:
            try:
                snippet = User.objects.get(id=id)
            except User.DoesNotExist:
                return Response(status=status.HTTP_404_NOT_FOUND)

            snippet.delete()
            return JsonResponse({"status": 200, "msg": "删除成功"})

    if request.method == "PUT":
        print(request.data)
        try:
            snippet = User.objects.get(id=id)
        except User.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)

        serializer = serializers.UserSerializer(snippet, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response({"status": 200, "msg": "修改成功"})
        return Response({"status": 400, "msg": "登录名重复,请检查表单"})
예제 #25
0
파일: views.py 프로젝트: yhbyj/dg_proj
 def post(self, request, *args, **kwargs):
     request_data = request.data
     # 数据是否合法(增加对象需要一个字典数据)
     if not isinstance(request_data, dict) or request_data == {}:
         return Response({'status': 1, 'msg': '数据有误'})
     # 数据类型合法,但数据内容不一定合法,需要校验数据
     user_ser = serializers.UserDeserializer(data=request_data)
     if user_ser.is_valid():
         # 校验通过,完成新增
         user_obj = user_ser.save()
         # print('user_obj', user_obj)
         return Response({
             'status':
             0,
             'msg':
             'ok',
             'results':
             serializers.UserSerializer(user_obj).data
             # 'results': ''
         })
     else:
         # 校验失败
         return Response({'status': 1, 'msg': user_ser.errors})
예제 #26
0
    def test_serializers(self):
        """ Test that serializers work """
        def printJson(header, testSerializer):
            print("---------------------------{}---------------------------".
                  format(header))
            print(JsonResponse(testSerializer.data, safe=False))
            print("\n")

        acSerializer = s.AircraftSerializer(self.ac)
        printJson("Aircraft Data", acSerializer)
        spareSerializer = s.SpareSerializer(self.spare)
        printJson("Spare Data", spareSerializer)
        sDet = s.OutputSpareDetailSerializer(self.spareDetail)
        printJson("Spare Detail Data", sDet)
        userSerializer = s.UserSerializer(self.user)
        printJson("User Data", userSerializer)
        profileSerializer = s.ProfileSerializer(self.user.profile)
        printJson("Normal Profile Data", profileSerializer)
        techProfileSerializer = s.TechnicianSerializer(self.user.profile)
        printJson("Technician Profile Data", techProfileSerializer)
        updateSerializer = s.UpdateSerializer(self.testUpdate)
        printJson("Update Data", updateSerializer)
        defectSerializer = s.OutputDefectSerializer(self.defect)
        printJson("Defect Data", defectSerializer)
예제 #27
0
파일: views.py 프로젝트: cccb/meteme
    def purchase(self, request, pk=None):
        """
        Make purchase using the purchase serializer
        """
        user = auth_models.User.objects.get(id=pk)

        # Get purchase serializer
        serializer = self.get_serializer(data=request.data)
        if not serializer.is_valid():
            return Response(serializer.errors,
                            status=status.HTTP_400_BAD_REQUEST)

        purchase = serializer.create(user)

        # Create serializer for docs
        user_serializer = serializers.UserSerializer(purchase['user'])
        product_serializer = serializers.ProductSerializer(purchase['product'])

        return Response({
            "product": product_serializer.data,
            "user": user_serializer.data,
            "old_balance": str(purchase['old_balance']),
            "new_balance": str(purchase['new_balance']),
        })
예제 #28
0
 def post(self, request, format=None):
     body = json.loads(request.body)
     serializer = serializers.UserSerializer(data=body)
     serializer.is_valid()
     serializer.save()
     return Response(serializer.data, status=status.HTTP_201_CREATED)
예제 #29
0
def admin_list(request):
    '''
    List all order, or create a server admin order.
    '''
    if request.method == "GET":
        page = int(request.GET.get('page'))
        limit = int(request.GET.get('limit'))

        if page == 1:
            stat = page - 1
            end = page * limit
        else:
            stat = (page - 1) * limit
            end = page * limit
        # 直接展示表单
        queryset = User.objects.order_by('id').all()
        count = User.objects.order_by('id').all().count()
        serializer = serializers.UserSerializer(queryset, many=True)
        data = {
            "code": 0,
            "msg": '',
            "count": count,
            "data": serializer.data[stat:end]
        }
        return Response(data)

    if request.method == "POST":
        username = request.POST.get('username')
        role = request.POST.get('role')
        email = request.POST.get('email')
        infopass = request.POST.get('infopass')
        repass = request.POST.get('repass')

        if infopass and repass:

            if infopass != repass:
                return JsonResponse({"status": 400, "msg": '密码不一致'})

            try:
                User.objects.get(username=username)
                return JsonResponse({
                    "user": username,
                    "status": 400,
                    "msg": '用户已存在'
                })

            except:

                if role == "general":
                    password = infopass
                    try:
                        User.objects.create_user(username,
                                                 email=email,
                                                 password=password)
                    except Exception as e:
                        return JsonResponse({"status": 400, "msg": e})

                    return JsonResponse({"status": 200, "msg": '增加成功'})

                elif role == "super":
                    password = infopass
                    try:
                        User.objects.create_superuser(username,
                                                      email=email,
                                                      password=password)
                    except Exception as e:
                        return JsonResponse({"status": 400, "msg": e})

                    return JsonResponse({"status": 200, "msg": '增加成功'})
        else:
            return JsonResponse({{"status": 400, "msg": '密码不能为空'}})
예제 #30
0
def current_user(request):
    """
    Determine the current user by their token, and return their data
    """
    serializer = serializers.UserSerializer(request.user)
    return Response(serializer.data)