示例#1
0
    def post(self, request):

        user_id = request.POST.get('user_id', None)

        user = User.objects.get(id=user_id)

        new_password = request.POST.get('password', 1)
        confirm_password = request.POST.get('password_repeat', 2)

        if new_password != confirm_password:
            return HttpResponseRedirect(
                generate_url_for("accounts/change_password.html",
                                 query={
                                     "type": "danger",
                                     "content": "Password doesn't match"
                                 }))

        user.set_password(new_password)

        user.save()

        return HttpResponseRedirect(
            generate_url_for('accounts:login',
                             query={
                                 'type': 'success',
                                 'content':
                                 'Password changed, You may now log in!'
                             }))
示例#2
0
    def get(self, request):

        token = request.GET.get('t', None)

        if not token:
            return HttpResponseRedirect(
                generate_url_for('accounts:login',
                                 query={
                                     'type': 'danger',
                                     'content':
                                     'You were not allowed to be there!'
                                 }))

        payload = None

        try:
            payload = jwt.decode(token, settings.SECRET_KEY,
                                 settings.JWT_ALGORITHM)
        except:
            return HttpResponseRedirect(
                generate_url_for(
                    'accounts:login',
                    query={
                        'type':
                        'danger',
                        'content':
                        'The password reset link has expired or is invalid!'
                    }))

        user_id = payload['user_id']
        user_email = payload['email']

        if not user_id:
            return HttpResponseRedirect(
                generate_url_for(
                    'accounts:login',
                    query={
                        'type':
                        'danger',
                        'content':
                        "There's no account associated with email : {}".format(
                            user_email)
                    }))

        return HttpResponse(
            loader.get_template('accounts/change_password.html').render(
                {
                    'user_id': user_id,
                    "message": {
                        'type':
                        'success',
                        'content':
                        'Verification Successfull! You may now set a new password!'
                    }
                }, request))
示例#3
0
    def post(self, request):

        raw_response = api_call(method='post',
                                request=request,
                                reverse_for="articles-api:list",
                                data=request.POST.dict(),
                                files=request.FILES.dict())

        response = raw_response.json()

        if response['status'] == 200:
            if response['data']['article']['is_drafted']:
                return HttpResponseRedirect(
                    generate_url_for(
                        'articles:create',
                        query={
                            "type":
                            "success",
                            "content":
                            "Article Drafted, to publish it, go to your profile"
                        }))
            else:
                return HttpResponseRedirect(
                    response['data']['article']['absolute_url'])
        else:
            return suitableRedirect(response=raw_response,
                                    reverse_name="articles:create")
示例#4
0
def api_call(*args, **kwargs):

    request = kwargs['request']

    csrftoken = kwargs['request'].POST.get('csrfmiddlewaretoken', '')

    headers = {
        'X-CSRFToken': csrftoken,
        'Token': request.headers.get('Token', None)
    }

    cookies = {
        'csrftoken': csrftoken,
        'accessToken': request.COOKIES.get('accessToken', None)
    }

    reverse_kwargs = kwargs.get('reverse_kwargs', None)
    reverse_params = kwargs.get('reverse_params', None)
    reverse_for = kwargs.get('reverse_for', '')

    data = kwargs.get('data', None)
    files = kwargs.get('files', None)

    return getattr(requests,
                   kwargs.get('method', 'get'))(url=request.build_absolute_uri(
                       generate_url_for(reverse_for,
                                        kwargs=reverse_kwargs,
                                        query=reverse_params)),
                                                headers=headers,
                                                cookies=cookies,
                                                data=data,
                                                files=files)
示例#5
0
    def post(self, request, slug):

        deleteMode = request.POST.get('deletemode', False)

        if deleteMode:

            raw_response = api_call(method='delete',
                                    request=request,
                                    reverse_for="articles-api:detail",
                                    reverse_kwargs={'slug': slug})

            response = raw_response.json()

            if response['status'] == 200:
                return HttpResponseRedirect(
                    generate_url_for("articles:list",
                                     query={
                                         "type": "success",
                                         "content":
                                         "Article deletion successful!"
                                     }))
            else:
                return suitableRedirect(response=raw_response,
                                        reverse_name="articles:list")

        else:

            raw_response = api_call(method='post',
                                    request=request,
                                    reverse_for="articles-api:detail",
                                    reverse_kwargs={'slug': slug},
                                    data=request.POST.dict())

            response = raw_response.json()

            if response['status'] == 200:
                return HttpResponseRedirect(
                    generate_url_for("articles:detail",
                                     kwargs={"slug": slug},
                                     query={
                                         "type": "success",
                                         "content": "Comment Added!"
                                     }))
            else:
                return suitableRedirect(response=raw_response,
                                        reverse_name="articles:detail",
                                        reverse_kwargs={"slug": slug})
示例#6
0
    def post(self, request):

        query = {}

        if request.POST.get("profile_update", False):
            query = self.handle_profile_update(request)

        elif request.POST.get("social_update", False):
            query = self.handle_social_update(request)

        elif request.POST.get("account_update", False):
            query = self.handle_account_update(request)

        elif request.POST.get("password_update", False):
            query = self.handle_password_update(request)

        elif request.POST.get("billing_update", False):
            query = self.handle_billing_update(request)

        return HttpResponseRedirect(
            generate_url_for("user:settings", query=query))
示例#7
0
def suitableRedirect(*args, **kwargs):

    raw_response = kwargs.get('response', None)
    reverse_kwargs = kwargs.get('reverse_kwargs', None)
    reverse_name = kwargs.get('reverse_name', None)

    response = raw_response.json()

    togo = reverse_name
    message = response['message']

    query = {"type": "danger", "content": message}

    if not response or response['status'] == 404:
        return Http404()

    elif response['status'] == 403:
        togo = "auth-api:logout"
        message = "Please login to continue"
        reverse_kwargs = None
        query['next'] = response['from']

    return HttpResponseRedirect(
        generate_url_for(togo, kwargs=reverse_kwargs, query=query))
示例#8
0
    def post(self, request, model, slug):

        delete_mode = request.POST.get('delete_mode', False)

        if not delete_mode:

            response = api_call(method='post',
                                request=request,
                                reverse_for="comments-api:detail",
                                reverse_kwargs={
                                    'slug': slug
                                },
                                data=request.POST.dict()).json()

            if response['status'] == 200:
                return HttpResponseRedirect(
                    generate_url_for("comments:detail",
                                     kwargs={
                                         "model": model,
                                         "slug": slug
                                     },
                                     query={
                                         'type': 'success',
                                         'content': 'Reply Added!'
                                     }))
            else:
                return suitableRedirect(response=response,
                                        reverse_name="comments:detail",
                                        reverse_kwargs={
                                            "slug": slug,
                                            "model": model
                                        })

        else:

            response = api_call(method='delete',
                                request=request,
                                reverse_for="comments-api:detail",
                                reverse_kwargs={
                                    'slug': slug
                                }).json()

            togo = model

            if response['status'] == 200:
                kwargs = {'slug': response['data']['parent_slug']}
                query = {'type': 'success', 'content': 'Comment Removed!'}
                if not response['data']['is_parent']:
                    togo = "comments"
                    kwargs['model'] = model
                    query = {'type': 'success', 'content': 'Reply Removed!'}
                return HttpResponseRedirect(
                    generate_url_for("{}:detail".format(togo),
                                     kwargs=kwargs,
                                     query=query))
            else:
                return suitableRedirect(response=response,
                                        reverse_name="comments:detail",
                                        reverse_kwargs={
                                            "slug": slug,
                                            "model": model
                                        })
示例#9
0
 def wrapper(*args, **kwargs):
     if not args[1].user.is_authenticated:
         return callback(*args, **kwargs)
     else:
         return HttpResponseRedirect(generate_url_for('home'))