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