Exemplo n.º 1
0
 def create(self, request, *args, **kwargs):
     serializer = self.get_serializer(data=request.data)
     serializer.is_valid(raise_exception=True)
     self.perform_create(serializer)
     headers = self.get_success_headers(serializer.data)
     data = serializers.UserSerializer(instance=request.user).data
     return Response(data, status=status.HTTP_201_CREATED, headers=headers)
Exemplo n.º 2
0
    def register_user(self, request):
        user_data = request.data
        serializer = accounts_serializers.UserSerializer(data=user_data)
        serializer.is_valid(raise_exception=True)  # run validate method
        serializer.save()   # run create method

        user = accounts_models.User.objects.get(email=user_data['email'])
        token = RefreshToken.for_user(user).access_token
        try:
            current_site = get_current_site(request).domain
            relative_link = reverse('user-verify_email')

            absolute_url = 'http://' + current_site +\
                relative_link + '?token=' + str(token)

            email_body = 'Hi ' + user.username + \
                "\nClick on the link below to verify your email\n\n"\
                + absolute_url

            payload = {
                'email_body': email_body,
                'to_email': [user.email],
                'email_subject': "SMOKIN ACE EMAIL VERIFICATION"
            }

            notification.broad_cast_system_notification(payload)
        except Exception as e:
            print(e)
            pass

        return Response(
            {"details": 'successfully created an account',
             "token": serializer.data
             },
            status=status.HTTP_201_CREATED)
Exemplo n.º 3
0
 def put(self, request, pk, format=None):
     account = self.get_object(pk)
     serializer = accounts_serializers.UserSerializer(account, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 4
0
def user_api_login(request):
    """ 用户登录接口-POST """
    # 获取输入的内容
    if request.method == 'POST':
        # 表单验证
        form = LoginForm(request.POST)
        # 如果通过了验证,执行登录
        if form.is_valid():
            user = form.do_login(request)
            # 返回内容:用户的信息(用户的基本信息、详细信息)
            profile = user.profile  # 1对1的反向查询,返回一个profile对象
            data = {
                'user': serializers.UserSerializer(user).to_dict(),
                'profile':
                serializers.UserProfileSerializer(profile).to_dict()
            }
            return http.JsonResponse(data)
            # return HttpResponse("oK")
        else:
            # 如果没有通过表单验证,返回表单的错误信息
            err = json.loads(form.errors.as_json(
            ))  # form.errors.as_json()就是一个json,通过.loads转换成python对象
            return BadRequestJsonResponse(
                err)  # 因为这个函数里要放入python对象,err里装的就是form里raise抛出的错误信息
    else:
        # 请求不被允许
        return MethodNotAllowedJsonResponse()
Exemplo n.º 5
0
class ProfileSerializer(serializers.HyperlinkedModelSerializer):
    url = serializers.HyperlinkedIdentityField(
        view_name='employees:profile-detail')
    user = account_serializers.UserSerializer(read_only=True)
    positions = PositionHistorySerializer(many=True,
                                          read_only=True,
                                          source='positionhistory_set')
    add_position = serializers.SerializerMethodField()

    def get_add_position(self, instance) -> str:
        """Returns the full uri for the add position detail route

		Args:
		    instance: A profile instance

		Returns:
		    A URI string
		"""
        return reverse('employees:profile-add-position',
                       kwargs={'pk': instance.pk},
                       request=self.context['request'])

    class Meta:
        model = employee_models.Profile
        fields = ('id', 'user', 'phone_number', 'github_user', 'birth_date',
                  'date_started', 'gender', 'race', 'age', 'years_worked',
                  'days_to_birthday', 'about_me', 'picture_uri', 'positions',
                  'add_position', 'url')
Exemplo n.º 6
0
    def get_response(self, request):
        """Return response for given view."""
        user = request.user
        project_id = request.GET.get('project')
        if project_id:
            project = (models.Project.objects.filter(
                id=project_id).select_related('organization').first())
            if not project:
                raise Http404()
            organization = project.organization
        else:
            organization = user.default_organization
            project = organization.project_set.get(default=True)

        logged_in = not user.is_anonymous
        response = {'logged_in': logged_in}
        if logged_in:
            userSerializer = serializers.UserSerializer(user)
            organizationSerializer = serializers.OrganizationSerializer(
                organization, many=False)
            projectSerializer = serializers.ProjectSerializer(project,
                                                              many=False)

            response.update({
                'user': userSerializer.data,
                'organization': organizationSerializer.data,
                'project': projectSerializer.data,
            })

        return response
Exemplo n.º 7
0
	def current_user(self, request: Request) -> Response:
		"""List route to return the request user's details

		Args:
		    request: A DRF request object

		Returns:
		    A DRF response object
		"""		
		serializer = account_serializers.UserSerializer(request.user, context={'request': request})
		return Response(serializer.data)
Exemplo n.º 8
0
 def form_valid(self, form):
     """ 表单已经通过验证 """
     result = form.modify(request=self.request)
     if result is not None:
         user, profile = result
         data = {
             'user': serializers.UserSerializer(user).to_dict(),
             'profile':
             serializers.UserProfileSerializer(profile).to_dict()
         }
         return http.JsonResponse(data, status=201)
     return ServerErrorJsonResponse()
Exemplo n.º 9
0
 def get(self, request):  # 登录完成之后,Django会把user设置到request这个模块里去
     # 获取用户信息
     user = request.user
     # 用户:是游客吗?
     if not user.is_authenticated:
         # 返回401状态码
         return UnauthorizedJsonResponse()
     else:
         # 返回详细信息
         profile = user.profile
         data = {
             'user': serializers.UserSerializer(user).to_dict(),
             'profile':
             serializers.UserProfileSerializer(profile).to_dict()
         }
         return http.JsonResponse(data)
Exemplo n.º 10
0
    def post(self, request, *args, **kwargs ):
        if 'username' not in request.data or 'password' not in request.data:
            return Response("'username' and 'password' is needed", status=400)

        username = request.data['username']
        password = request.data['password']

        user = authenticate(username=username, password=password)

        if not user:
            return Response("'username' and 'password' incorrect", status=400)

        if not user.is_active:
            return Response("'username' and 'password' incorrect", status=400)

        token, created = Token.objects.get_or_create(user=user)

        value = User.objects.get(pk=user.id)
        serializer = accounts_serializers.UserSerializer(value)

        return Response({'token': token.key, 'user': serializer.data}, status=200)
Exemplo n.º 11
0
def get_loggedin_user(request):
    serialized_user = ser.UserSerializer(request.user)
    return Response(serialized_user.get_data)
Exemplo n.º 12
0
 def get(self, request, pk, format=None):
     account = self.get_object(pk)
     serializer = accounts_serializers.UserSerializer(account)
     return Response(serializer.data, status=200)
Exemplo n.º 13
0
class PollSerializer(serializers.ModelSerializer):
    created_by = user_serializer.UserSerializer(partial=True, required=False)

    class Meta:
        model = Poll
        fields = ['id', 'name', 'created_on', 'created_by']
Exemplo n.º 14
0
 def _serializer_user(self):
     self.data["user"] = serializers.UserSerializer(self._user).data