Esempio n. 1
0
    def post(self, request, format=None):
        if not request.user.is_authenticated:
            return Response(data={'data': 'Authentication Failed'},
                            status=status.HTTP_401_UNAUTHORIZED)

        if 'subscription_id' in request.POST.keys():
            subscription_set = get_subscription_by_id(
                request.POST['subscription_id'])

            if len(subscription_set) > 0:
                if subscription_set[0].user.email_verified:
                    token = generate_token(
                        email=subscription_set[0].user.email,
                        subscription_id=subscription_set[0].id)
                    confirmation_url = '{}/api/account/confirm_subscription?verification_code={}&format=json'.format(
                        get_host_origin(request), token)
                    send_subscription_verification_link(
                        subscription_set[0], confirmation_url)

                    return Response(
                        status=status.HTTP_200_OK,
                        data={'data': 'Subscription verification mail sent!!'})
                return Response(status=status.HTTP_400_BAD_REQUEST,
                                data={'data': 'User not Verified!!'})

            return Response(status=status.HTTP_400_BAD_REQUEST,
                            data={'data': 'Subscription not found!!'})

        return Response(status=status.HTTP_400_BAD_REQUEST,
                        data={'data': 'Invalid parameters!!'})
Esempio n. 2
0
    def post(self, request, format=None):
        if request_contain_keys(request.POST, ['user_email']):
            user_set = get_user_by_email(request.POST['user_email'])

            if len(user_set) > 0:
                token = generate_token(email=user_set[0].email,
                                       expire=1,
                                       user_id=user_set[0].id)
                password_reset_url = '{}/app/reset_password?verification_code={}'.format(
                    get_host_origin(request), token)
                send_password_reset_link(user_set[0], password_reset_url)
                return Response(
                    status=status.HTTP_200_OK,
                    data={
                        'data':
                        'Please check your mail for password reset link'
                    })
            else:
                return Response(status=status.HTTP_400_BAD_REQUEST,
                                data={'data': 'Email is not registered!!'})
        return Response(status=status.HTTP_400_BAD_REQUEST,
                        data={'data': 'Invalid Parameters!!'})
Esempio n. 3
0
def send_analysis(subscription, analysis):
    current_date = get_local_datetime(subscription.user.timezone_offset)
    token = generate_token(subscription.user.email,
                           expire=1,
                           subscription_id=subscription.id)
    analysis[
        'unsubscribe_link'] = 'https://tweet-summary.herokuapp.com/api/account/unsubscribe?verification_code={}'.format(
            token)
    template = get_template("app_ui/email_templates/tweet_analysis.html")

    mail_data = {
        'subject':
        '{} Tweet analysis on {}'.format(current_date.date(),
                                         subscription.topic),
        'email':
        subscription.user.email,
        'html_text':
        template.render(analysis),
    }

    mail_data['plain_text'] = strip_tags(mail_data['html_text'])

    return send_email(mail_data)
Esempio n. 4
0
    def post(self, request, format=None):
        if request_contain_keys(
                request.POST,
            ['user_email', 'user_password', 'user_cnf_password']):
            if request.POST['user_password'] != request.POST[
                    'user_cnf_password']:
                return Response(
                    data={'data': 'Password authentication failed'},
                    status=status.HTTP_400_BAD_REQUEST)

            form_data = {
                'email': request.POST['user_email'],
                'password': request.POST['user_password'],
                'timezone_offset': request.POST.get('timezone_offset')
            }

            form = CustomUserRegisterForm(form_data)

            if form.is_valid():
                user = form.save()
                if user is not None:
                    token = generate_token(email=user.email, user_id=user.id)
                    email_verification_url = '{}/api/account/confirm_email?verification_code={}&format=json'.format(
                        get_host_origin(request), token)
                    send_email_verification_link(user, email_verification_url)
                    return Response(data={'data': user.toJSON()},
                                    status=status.HTTP_200_OK)
                else:
                    return Response(data={'data': 'User not found'},
                                    status=status.HTTP_401_UNAUTHORIZED)
            else:
                return Response(data={'data': 'User already exist'},
                                status=status.HTTP_400_BAD_REQUEST)

        return Response(data={'data': 'Invalid User credentials'},
                        status=status.HTTP_400_BAD_REQUEST)
Esempio n. 5
0
    def post(self, request, format=None):
        if not request.user.is_authenticated:
            return Response(
                data={'data': 'Authentication Failed, Please login'},
                status=status.HTTP_401_UNAUTHORIZED)

        if request_contain_keys(
                request.POST,
            ['subscribe_start_date', 'subscribe_end_date', 'search_topic']):

            current_datetime = get_local_datetime(request.user.timezone_offset)

            start_date = datetime.strptime(
                request.POST['subscribe_start_date'], '%Y-%m-%d')
            end_date = datetime.strptime(request.POST['subscribe_end_date'],
                                         '%Y-%m-%d')

            if current_datetime.date() > start_date.date():
                return Response(
                    status=status.HTTP_400_BAD_REQUEST,
                    data={
                        'data':
                        'Subscription start date cannot be less than current date'
                    })
            elif start_date > end_date:
                return Response(
                    status=status.HTTP_400_BAD_REQUEST,
                    data={
                        'data':
                        'Subscription start date cannot be greater than end date'
                    })

            if (
                    end_date - start_date
            ).days > request.user.plan_subscribed.subscription_period_max_days:
                return Response(
                    status=status.HTTP_400_BAD_REQUEST,
                    data={
                        'data':
                        'Subscription period exceeded select plan {} days limit!!'
                        .format(request.user.plan_subscribed.
                                subscription_period_max_days)
                    })

            response = is_action_allowed(request.user)

            if response is True:
                subscription, status_msg = add_subscription(
                    request.user, request.POST['search_topic'], start_date,
                    end_date)
            else:
                return Response(data={'data': response},
                                status=status.HTTP_400_BAD_REQUEST)

            if isinstance(subscription, SubscriptionModel):
                if subscription.subscription_status == 'IDLE':
                    token = generate_token(email=subscription.user.email,
                                           subscription_id=subscription.id)
                    confirmation_url = '{}/api/account/confirm_subscription?verification_code={}&format=json'.format(
                        get_host_origin(request), token)
                    send_subscription_verification_link(
                        subscription, confirmation_url)
                if status_msg == 'CREATED':
                    return Response(
                        status=status.HTTP_200_OK,
                        data={
                            'data':
                            'Subscription created, please check email to verify the subscription'
                        })
                elif status_msg == 'UPDATED':
                    return Response(status=status.HTTP_200_OK,
                                    data={'data': 'Subscription updated'})
            else:
                if status_msg == 'NOT_VERIFIED':
                    return Response(status=status.HTTP_400_BAD_REQUEST,
                                    data={'data': 'Email is not verified!!'})
                if status_msg == 'QUOTA_EXHAUSTED':
                    return Response(
                        status=status.HTTP_400_BAD_REQUEST,
                        data={
                            'data':
                            'You have reached your ACTIVE subscriptions quota!!'
                        })

        return Response(status=status.HTTP_400_BAD_REQUEST,
                        data={'data': 'Something went wrong!!'})