Пример #1
0
def home(request):
    if request.user.is_authenticated():
        s = Session.objects.get(session_key=request.session.session_key)
        t = Tracker.objects.create(session=s, source='2')
        if request.user.userprofile.workplace_type in ['A', 'B']:
            return render(request, 'home.html')
        elif request.user.userprofile.workplace_type in ['C', 'O']:
            return redirect('/feed')
        else:
            return redirect('/set/')
    else:
        q = request.GET.get('q')
        try:
            s = Session.objects.get(session_key=request.session.session_key)
        except Exception:
            s = None
        t = Tracker.objects.create(session=s, source=q)
        if request.GET.get('audience') == 'team':
            return render(request, 'cover_team.html', {
                'form_signup': SignupForm(),
                'form_login': LoginForm()
            })
        else:
            return render(request, 'cover.html', {
                'form_signup': SignupForm(),
                'form_login': LoginForm()
            })
Пример #2
0
    def obj_create(self, bundle, **kwargs):
        #Validate that the needed fields exist
        validator = CustomFormValidation(form_class=UserForm, model_type=self._meta.resource_name)
        errors = validator.is_valid(bundle)
        if isinstance(errors, ErrorDict):
            raise BadRequest(errors.as_text())
        #Extract needed fields
        username, password, email = bundle.data['username'], bundle.data['password'], bundle.data['email']
        data_dict = {'username' : username, 'email' : email, 'password' : password, 'password1' : password, 'password2' : password}
        #Pass the fields to django-allauth.  We want to use its email verification setup.
        signup_form = SignupForm()
        signup_form.cleaned_data = data_dict
        try:
            try:
                user = signup_form.save(bundle.request)
                profile, created = UserProfile.objects.get_or_create(user=user)
            except AssertionError:
                #If this fails, the user has a non-unique email address.
                user = User.objects.get(username=username)
                user.delete()
                raise BadRequest("Email address has already been used, try another.")

            #Need this so that the object is added to the bundle and exists during the dehydrate cycle.
            html = complete_signup(bundle.request, user, "")
            bundle.obj = user
        except IntegrityError:
            raise BadRequest("Username is already taken, try another.")

        return bundle
Пример #3
0
    def obj_create(self, bundle, **kwargs):
        #Validate that the needed fields exist
        validator = CustomFormValidation(form_class=UserForm, model_type=self._meta.resource_name)
        errors = validator.is_valid(bundle)
        if isinstance(errors, ErrorDict):
            raise BadRequest(errors.as_text())
        #Extract needed fields
        username, password, email = bundle.data['username'], bundle.data['password'], bundle.data['email']
        data_dict = {'username' : username, 'email' : email, 'password' : password, 'password1' : password, 'password2' : password}
        #Pass the fields to django-allauth.  We want to use its email verification setup.
        signup_form = SignupForm()
        signup_form.cleaned_data = data_dict
        try:
            try:
                user = signup_form.save(bundle.request)
                profile, created = UserProfile.objects.get_or_create(user=user)
            except AssertionError:
                #If this fails, the user has a non-unique email address.
                user = User.objects.get(username=username)
                user.delete()
                raise BadRequest("Email address has already been used, try another.")

            #Need this so that the object is added to the bundle and exists during the dehydrate cycle.
            html = complete_signup(bundle.request, user, "")
            bundle.obj = user
        except IntegrityError:
            raise BadRequest("Username is already taken, try another.")

        return bundle
def create_allauth_user(email, username, password='', phonenumber='' ):
    # Create dictionary with given required params to generate signin_request
    post_dic = get_post_dic(email, username, password)
    # Generate signin_request that contains dictionary in POST params
    signin_request = get_signin_request(post_dic)

    # POST data as kwargs for signupForm
    signup_form_kwargs = {"files": {}, "initial": {},
                          "data": signin_request.POST}

    # SignUpForm Instatiation with post data 
    # makes SignupView.form_valid method activate
    signup_form = SignupForm(**signup_form_kwargs)
    signup_form.cleaned_data = post_dic              # Csrf token not neccesary either

    # Generates a user object from the form data
    user = signup_form.save(signin_request)
    # If phone number supplied add it to the model
    user.phone_number = phonenumber
    user.save()

    # Sends allauth.signed_up signal
    signals.user_signed_up.send(sender=user.__class__,
                                request=signin_request,
                                user=user,
                                signal_kwargs={})
    return user



# With `ACCOUNT_AUTHENTICATION_METHOD = "email"`
#allauth_regular_user = create_allauth_user("*****@*****.**")
Пример #5
0
 def test_signup_form(self):
     form = SignupForm({
         'username': '******',
         'email': '*****@*****.**',
         'password1': 'password',
         'password2': 'password'
     })
     self.assertTrue(form.is_valid())
Пример #6
0
 def _invalid_questionnaire(self, req):
     req.method = 'GET'  # very dirty hacking
     res = account_signup(req)
     form = AccountSignupForm(req.POST)
     form.is_valid()
     res.context_data['form'] = form
     res.context_data['questionnaire_form'] = self.questionnaire_form
     return redirect(reverse('dateprofile:account_signup'))
Пример #7
0
 def test_signup_form(self):
     form = SignupForm({
         'username': '******',
         'email': '*****@*****.**',
         'password1': 'password',
         'password2': 'password'
     })
     self.assertTrue(form.is_valid())
Пример #8
0
    def test_duplicate_email(self):
        User.objects.create_user("test1", "*****@*****.**", "testpass")

        form = SignupForm(
            {"username": "******", "email": "*****@*****.**", "password1": "password", "password2": "password"}
        )
        self.assertFalse(form.is_valid())
        self.assertIn("email", form.errors)
Пример #9
0
 def test_password_mismatch(self):
     form = SignupForm({
         'username': '******',
         'email': '*****@*****.**',
         'password1': 'password',
         'password2': 'passwordmismatch'
     })
     self.assertFalse(form.is_valid())
     self.assertIn('__all__', form.errors)
     self.assertIn('You must type the same password each time.',
                   form.errors['__all__'])
Пример #10
0
    def validate(self, attrs):
        self.signup_form = SignupForm(attrs)
        if False == self.signup_form.is_valid():
            errors = OrderedDict()
            form_errors = dict(self.signup_form.errors)
            for error_field in form_errors.keys():
                errors[error_field] = form_errors[error_field]

            raise serializers.ValidationError(errors)

        return serializers.Serializer.validate(self, attrs)
Пример #11
0
    def test_duplicate_email(self):
        User.objects.create_user('test1', '*****@*****.**', 'testpass')

        form = SignupForm({
            'username': '******',
            'email': '*****@*****.**',
            'password1': 'password',
            'password2': 'password'
        })
        self.assertFalse(form.is_valid())
        self.assertIn('email', form.errors)
Пример #12
0
    def test_duplicate_email(self):
        User.objects.create_user('test1', '*****@*****.**', 'testpass')

        form = SignupForm({
            'username': '******',
            'email': '*****@*****.**',
            'password1': 'password',
            'password2': 'password'
        })
        self.assertFalse(form.is_valid())
        self.assertIn('email', form.errors)
Пример #13
0
 def test_password_mismatch(self):
     form = SignupForm(
         {
             "username": "******",
             "email": "*****@*****.**",
             "password1": "password",
             "password2": "passwordmismatch",
         }
     )
     self.assertFalse(form.is_valid())
     self.assertIn("__all__", form.errors)
     self.assertIn("You must type the same password each time.", form.errors["__all__"])
Пример #14
0
 def test_non_ascii_username(self):
     form = SignupForm({
         'username': '******',
         'email': '*****@*****.**',
         'password1': 'password',
         'password2': 'password',
     })
     self.assertFalse(form.is_valid())
     self.assertEqual(form.errors['username'], [
         'Enter a valid username. This value may contain only '
         'English letters, numbers, and @/./+/-/_ characters.'
     ])
Пример #15
0
def modal_signup(request, **kwargs):
    
    if request.method == "POST":
        signup_form = SignupForm(request.POST)
        if signup_form.is_valid():
            user = signup_form.save(request)
            next = request.POST.get("next","/food/")
            complete_signup(request, user, "/food/")
            return HttpResponse(next)
        redirect_field_name, redirect_field_value = "next", request.referer
        response = render(request, "signup_error.html", locals())
        response.status_code = 400
        return response
Пример #16
0
 def test_password_mismatch(self):
     form = SignupForm({
         'username': '******',
         'email': '*****@*****.**',
         'password1': 'password',
         'password2': 'passwordmismatch'
     })
     self.assertFalse(form.is_valid())
     self.assertIn('__all__', form.errors)
     self.assertIn(
         'You must type the same password each time.',
         form.errors['__all__']
     )
Пример #17
0
    def signup(self, request, **kwargs):
        self.method_check(request, allowed=['post'])

        data = self.deserialize(
            request, request.body,
            format=request.META.get('CONTENT_TYPE', 'application/json'))

        try:
            form = SignupForm(data)
            if not form.is_valid():
                return self.create_response(request, {
                    'success': False,
                    'reason': 'form',
                    'error_type': 'dict',
                    'error': form.errors,
                }, HttpBadRequest)
            user = form.save(request)
            response = complete_signup(request, user,
                                       app_settings.EMAIL_VERIFICATION,
                                       success_url='/')
            if response.status_code not in [200, 201, 301, 302]:
                return self.create_response(request, {
                    'success': False,
                    'reason': 'status',
                    'error_type': 'str',
                    'error': 'Got bad status code {}'.format(response.status_code),
                })

            # Set session expiry
            request.session.set_expiry(settings.SESSION_COOKIE_AGE)

            return self.create_response(request, {
                'success': True,
                'id': user.id,
                'resource_uri': self.get_resource_uri(user),
            }, HttpCreated)
        except ValidationError as e:
            return self.create_response(request, {
                'success': False,
                'reason': 'invalid',
                'error_type': 'list',
                'error': e.messages,
            }, HttpBadRequest)
        except Exception as e:
            return self.create_response(request, {
                'success': False,
                'reason': 'exception',
                'error_type': 'str',
                'error': '{}'.format(e),
            }, HttpBadRequest)
Пример #18
0
 def test_password_mismatch(self):
     form = SignupForm({
         'username': '******',
         'email': '*****@*****.**',
         'password1': 'password',
         'password2': 'passwordmismatch'
     })
     self.assertFalse(form.is_valid())
     # Since django-allauth 0.27.0, the "You must type the same password
     # each time" form validation error that can be triggered during
     # signup is added to the 'password2' field instead of being added to
     # the non field errors.
     self.assertIn('password2', form.errors)
     self.assertEqual(form.errors['password2'],
                      ['You must type the same password each time.'])
Пример #19
0
    def get_context_data(self, **kwargs):
        context_data = super(StudentInfoView, self).get_context_data(**kwargs)

        context_data.update({
            'regInfo':
            self.request.session[REG_VALIDATION_STR].get('regInfo', {}),
            'payAtDoor':
            self.request.session[REG_VALIDATION_STR].get('payAtDoor', False),
            'currencySymbol':
            getConstant('general__currencySymbol'),
        })

        # Add the Series, Event, and DanceRole objects to the context data based on what was submitted
        # through the form.
        subtotal = 0

        for k, v in context_data['regInfo'].get('events', {}).items():
            event = Event.objects.prefetch_related('pricingTier').get(id=k)

            dropin_keys = [x for x in v.keys() if x.startswith('dropin_')]
            if dropin_keys:

                name = _('DROP IN: %s' % event.name)
                base_price = event.getBasePrice(dropIns=len(dropin_keys))
            else:
                name = event.name
                base_price = event.getBasePrice(
                    payAtDoor=context_data['payAtDoor'])

            subtotal += base_price

            if v.get('role'):
                role_name = DanceRole.objects.get(id=v.get('role')).name
            else:
                role_name = None

            context_data['regInfo']['events'][k].update({
                'name':
                name,
                'role_name':
                role_name,
                'base_price':
                base_price,
            })

        context_data['subtotal'] = subtotal

        if context_data[
                'payAtDoor'] or self.request.user.is_authenticated or not getConstant(
                    'registration__allowAjaxSignin'):
            context_data['show_ajax_form'] = False
        else:
            # Add a login form and a signup form
            context_data.update({
                'show_ajax_form': True,
                'login_form': LoginForm(),
                'signup_form': SignupForm(),
            })

        return context_data
Пример #20
0
    def get_context_data(self, **kwargs):
        context_data = super(StudentInfoView, self).get_context_data(**kwargs)
        reg = self.temporaryRegistration

        context_data.update({
            'reg':
            reg,
            'payAtDoor':
            reg.payAtDoor,
            'currencySymbol':
            getConstant('general__currencySymbol'),
            'subtotal':
            sum([x.price for x in reg.temporaryeventregistration_set.all()]),
        })

        if reg.payAtDoor or self.request.user.is_authenticated or not getConstant(
                'registration__allowAjaxSignin'):
            context_data['show_ajax_form'] = False
        else:
            # Add a login form and a signup form
            context_data.update({
                'show_ajax_form': True,
                'login_form': LoginForm(),
                'signup_form': SignupForm(),
            })

        return context_data
Пример #21
0
def create_allauth_user(email, password):
    post_dic = get_post_dic(email, password)
    signin_request = get_signin_request(post_dic)

    signup_form_kwargs = {"files": {}, "initial": {},
                          "data": signin_request.POST}
    signup_form = SignupForm(**signup_form_kwargs)
    signup_form.cleaned_data = post_dic  # Csrf token not neccesary either
    user = signup_form.save(signin_request)

    # Sends sign up mail, alter to invite mail later on
    signals.user_signed_up.send(sender=user.__class__,
                                request=signin_request,
                                user=user,
                                signal_kwargs={})

    return user
Пример #22
0
 def get_context_data(self, form, **kwargs):
     context = super(PremierPasWizard, self).get_context_data(form=form,
                                                              **kwargs)
     if self.steps.current == 'categorie_user':
         if self.request.method == "POST":
             form = SignupForm(self.request.POST)
             form.save(self.request)
     #   form = self.get_form('signup')
     #   form.save()
     elif self.steps.current == 'confirmation':
         categorie_user = self.get_cleaned_data_for_step('categorie_user')
         etude_user = self.get_cleaned_data_for_step('etude_user')
         faculte = etude_user['faculte']
         universite = etude_user['universite']
         cours = Cours.objects.filter(faculte=faculte)
         context.update({'cours': cours})
     return context
Пример #23
0
def create_allauth_user(email):
    post_dic = get_post_dic(email)
    signin_request = get_signin_request(post_dic)

    signup_form_kwargs = {"files": {}, "initial": {},
                          "data": signin_request.POST}
    # From allauth.account.views.SignupView.form_valid
    signup_form = SignupForm(**signup_form_kwargs)
    signup_form.cleaned_data = post_dic # Csrf token not neccesary either
    user = signup_form.save(signin_request)

    # Sends sign up mail
    signals.user_signed_up.send(sender=user.__class__,
                                request=signin_request,
                                user=user,
                                signal_kwargs={})
    return user
Пример #24
0
def iap_signup(request):
    if request.method == 'POST':
        data = JSONParser().parse(request)
        receipt = data['receipt']
        if ZappyUser.objects.filter(apple_receipt=receipt).exists():
            return JsonResponse({'error': 'This In App Purchase has already been used. Please contact [email protected]', 'kick_out': True},
                                status=400)
        verify_url = 'https://buy.itunes.apple.com/verifyReceipt'
        if 'debug' in data:
            if data['debug']:
                verify_url = 'https://sandbox.itunes.apple.com/verifyReceipt'
        receipt_json = json.dumps(
            {"receipt-data": receipt, 'password': env.str('APP_SHARED_SECRET', default='')})
        response = requests.request(
            method='POST',
            url=verify_url,
            headers={'Content-Type': 'application/x-www-form-urlencoded'},
            data=receipt_json
        )

        res_json = response.json()
        try:
            request.POST._mutable = True
            request.POST['email'] = data['email']
            request.POST['password1'] = data['password']
            form = SignupForm(request.POST)
            form.is_valid()
            user = form.save(request)
            user.apple_product_id = res_json['latest_receipt_info'][-1]['product_id']
            user.apple_expires_date = datetime.datetime.fromtimestamp(
                int(res_json['latest_receipt_info'][-1]['expires_date_ms']) / 1000)
            user.active_membership = True
            user.apple_receipt = receipt
            user.save()
            token = Token.objects.create(user=user)
            return JsonResponse({'token': str(token)}, status=201)
        except IntegrityError:
            return JsonResponse({'error': 'That email has already been taken'},
                                status=400)
        except KeyError:
            return JsonResponse({'error': 'We had problems verifying the receipt. Please contact [email protected]', 'kick_out': True},
                                status=400)
        except Exception as e:
            print(e)
            return JsonResponse({'error': 'Something went wrong. Please contact [email protected]', 'kick_out': True},
                                status=400)
Пример #25
0
	def get_context_data(self, **kwargs):
		context = super(LandingView, self).get_context_data(**kwargs)
		context['featured_everyday_cooks'] = Cook.objects.filter(is_featured=True, cook_type__name__icontains='Everyday Cook')[:3]
		context['featured_special_cooks'] = Cook.objects.filter(is_featured=True, cook_type__name__icontains='Special Cook')[:3]
		context['eventfood'] = EventFood.objects.order_by('-created_at')[:5]
		context['everydayfood'] = EverydayFood.objects.order_by('-created_at')[:5]
		context['bakedfood'] = BakedFood.objects.order_by('-created_at')[:5]
		context['form'] = SignupForm()
		return context
Пример #26
0
def sign_me_up(request, email, pw1, pw2):
    """
    Given data for the signup form from somewhere, sign up a user
    and return that user.

    Arguments:
    - `request`: Request
    - `email`: str
    - `pw1`: str
    - `pw2`: str

    Return: RMUser or form with errors (Wonky behaviour, but this shouldn't happen...)
    Exceptions: None
    """
    form = SignupForm(data=dict(email=email, password1=pw1, password2=pw2))
    if form.is_valid():
        return form.save(request)
    return form
Пример #27
0
def sign_me_up(request, email, pw1, pw2):
    """
    Given data for the signup form from somewhere, sign up a user
    and return that user.

    Arguments:
    - `request`: Request
    - `email`: str
    - `pw1`: str
    - `pw2`: str

    Return: RMUser or form with errors (Wonky behaviour, but this shouldn't happen...)
    Exceptions: None
    """
    form = SignupForm(data=dict(email=email, password1=pw1, password2=pw2))
    if form.is_valid():
        return form.save(request)
    return form
Пример #28
0
    def get(self, request, *args, **kwargs):
        # すでにログインしている場合はダッシュボード画面へリダイレクト
        if request.user.is_authenticated:
            return redirect(reverse('dashborad:index'))

        context = {
            'form': RegisterForm(),
            'auth_formm': SignupForm(),
        }
        return render(request, 'accounts/register.html', context)
Пример #29
0
    def get_context_data(self, **kwargs):
        if 'form' in self.request.session and 'login_form' in self.request.session:
            ctx = {}
            if self.request.session['form']:
                ctx['form'] = SignupForm(self.request.session['form'])
                ctx['form'].is_valid()
            else:
                ctx['form'] = SignupForm()
            if self.request.session['login_form']:
                ctx['login_form'] = LoginForm(self.request.session['login_form'])
                ctx['login_form'].is_valid()

            else:
                ctx['login_form'] = LoginForm()
            del self.request.session['form']
            del self.request.session['login_form']
        else:
            ctx = super(SignupView, self).get_context_data(**kwargs)
            ctx['login_form'] = LoginForm()
        return ctx
Пример #30
0
def create_allauth_user(email):
    post_dic = get_post_dic(email)
    signin_request = get_signin_request(post_dic)

    signup_form_kwargs = {
        "files": {},
        "initial": {},
        "data": signin_request.POST
    }
    # From allauth.account.views.SignupView.form_valid
    signup_form = SignupForm(**signup_form_kwargs)
    signup_form.cleaned_data = post_dic  # Csrf token not neccesary either
    user = signup_form.save(signin_request)

    # Sends sign up mail
    signals.user_signed_up.send(sender=user.__class__,
                                request=signin_request,
                                user=user,
                                signal_kwargs={})
    return user
Пример #31
0
 def test_newline_in_username(self):
     # django-allauth's default regex doesn't match '\n' at the
     # end of a string so as a result of this, users can signup
     # with a user name like 'username\n'.
     #
     # This is a problem when a user can fill the form via curl
     # and Content-Type header set to
     # 'application/x-www-form-urlencoded'.
     #
     # See #1045 and test_newline_in_username in
     # users/tests/test_views.py for details.
     form = SignupForm({
         'username': '******',
         'email': '*****@*****.**',
         'password1': 'password',
         'password2': 'password',
     })
     self.assertFalse(form.is_valid())
     self.assertEqual(
         form.errors['username'],
         ['Please don\'t use whitespace characters in username.'])
Пример #32
0
    def post(self, request):
        serializer = RegisterInputSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)

        signup_data = dict(serializer.validated_data)
        confirmation_query_args = signup_data.pop('confirmation_query_args',
                                                  {})
        email = signup_data.pop('email')
        signup_data['email'] = signup_data['email2'] = email
        if not settings.SET_PASSWORD_ON_EMAIL_CONFIRMATION:
            password = signup_data.pop('password')
            signup_data['password1'] = signup_data['password2'] = password

        email_verification = allauth_settings.EMAIL_VERIFICATION
        with transaction.atomic(), clear_messages(request):
            form = SignupForm(data=signup_data)
            if settings.SET_PASSWORD_ON_EMAIL_CONFIRMATION:
                form.fields.pop('password1', None)
                form.fields.pop('password2', None)

            form_valid_or_raise(form, {
                'password1': 'password',
                'password2': None,
                'email2': None
            })

            user = form.save(request=request)
            if email_verification != allauth_settings.EmailVerificationMethod.NONE and confirmation_query_args:
                user.extra_confirmation_data[
                    AccountAdapter.
                    CONFIRMATION_QUERY_ARGS] = confirmation_query_args
                user.save()

            response = complete_signup(request,
                                       user,
                                       email_verification,
                                       success_url=None)
            token = handle_login_response(response, user, allow_disabled=True)
            response_serializer = TokenResponseSerializer({'token': token})
            return Response(response_serializer.data)
Пример #33
0
def login(request):
    """
    A view to render the login page
    """
    login_form = LoginForm()
    signup_form = SignupForm()

    context = {
        'login_form': login_form,
        'signup_form': signup_form,
    }

    return render(request, 'login.html', context)
Пример #34
0
 def test_newline_in_username(self):
     # django-allauth's default regex doesn't match '\n' at the
     # end of a string so as a result of this, users can signup
     # with a user name like 'username\n'.
     #
     # This is a problem when a user can fill the form via curl
     # and Content-Type header set to
     # 'application/x-www-form-urlencoded'.
     #
     # See #1045 and test_newline_in_username in
     # users/tests/test_views.py for details.
     form = SignupForm({
         'username': '******',
         'email': '*****@*****.**',
         'password1': 'password',
         'password2': 'password',
     })
     self.assertFalse(form.is_valid())
     self.assertEqual(
         form.errors['username'],
         ['Please don\'t use whitespace characters in username.']
     )
Пример #35
0
 def test_newline_in_username(self):
     # Note that since Django 1.9, forms.CharField().strip is True
     # and it strips all whitespace characters by default so there
     # is no need to do anything on our side.
     #
     # django-allauth's default regex doesn't match '\n' at the
     # end of a string so as a result of this, users can signup
     # with a user name like 'username\n'.
     #
     # This is a problem when a user can fill the form via curl
     # and Content-Type header set to
     # 'application/x-www-form-urlencoded'.
     #
     # See #1045 and test_newline_in_username in
     # users/tests/test_views.py for details.
     form = SignupForm({
         'username': '******',
         'email': '*****@*****.**',
         'password1': 'password',
         'password2': 'password',
     })
     self.assertTrue(form.is_valid())
Пример #36
0
def user_signup(request):
    """
    Функция авторизации по ajax
    """
    if request.is_ajax:
        signup_form = SignupForm(request.POST)
        if signup_form.is_valid():
            signup_form.save(request)
            data = {'reload': True}
            return JsonResponse(data)

        context = {
            'reload': False,
            'login_form': LoginForm,
            'signup_form': signup_form
        }
        context.update(csrf(request))
        html_content = loader.render_to_string(
            template_name='include/user/user.html', context=context)
        data = {'html_content': html_content}
        return JsonResponse(data)
    else:
        return Http404
Пример #37
0
class SignupSerializer(serializers.Serializer):
    username = serializers.CharField()
    email = serializers.EmailField()
    password1 = serializers.CharField(write_only=True)
    password2 = serializers.CharField(write_only=True)

    def __init__(self, instance=None, data=empty, **kwargs):
        serializers.Serializer.__init__(self,
                                        instance=instance,
                                        data=data,
                                        **kwargs)
        self.new_user = None
        self.signup_form = None

    def validate(self, attrs):
        self.signup_form = SignupForm(attrs)
        if False == self.signup_form.is_valid():
            errors = OrderedDict()
            form_errors = dict(self.signup_form.errors)
            for error_field in form_errors.keys():
                errors[error_field] = form_errors[error_field]

            raise serializers.ValidationError(errors)

        return serializers.Serializer.validate(self, attrs)

    def save(self, **_kwargs):
        request = self.context.get('request')
        if self.signup_form is not None:
            self.new_user = self.signup_form.save(request)
        return self.new_user

    def to_representation(self, _instance):
        new_user = self.new_user
        if new_user is None:
            return dict()
        return UserSerializer(instance=new_user).data
Пример #38
0
def video_signup(request, slug):
    if not request.method == 'POST':
        raise Exception('This view is meant to be called via a POST request.')

    video, created = get_or_create_video(slug)
    login_success = False
    outbound_message = dict()
    outbound_message[DATA_KEY] = {}
    form = SignupForm(data=json.loads(request.raw_post_data))

    if form.is_valid():
        user = form.save(request)
        perform_login(request, user)
        login_success = True

        action.send(user, verb='registered account', action_object=video)
        action.send(user, verb='viewed video', action_object=video)

        userSerializer = UserSerializer(user)
        userSerialized = JSONRenderer().render(userSerializer.data)
        outbound_message[DATA_KEY]['user'] = json.loads(userSerialized)
        outbound_message[DATA_KEY]['share_url'] = reverse('profiles-share',
                                                          args=[
                                                              user.username,
                                                              slug,
                                                          ])
    else:
        outbound_message[DATA_KEY]['errors'] = \
            json.loads(errors_to_json(form.errors))

    outbound_message[EVENT_TYPE_KEY] = 'FB_SIGNUP'
    outbound_message[CHANNEL_KEY] = \
        '/framebuzz/session/%s' % request.session.session_key
    outbound_message[DATA_KEY]['login_success'] = login_success

    return HttpResponse(json.dumps(outbound_message),
                        content_type="application/json")
Пример #39
0
def signup_paciente(request):
    # return render(request, 'med_app/signup-paciente.html')

    if request.method == 'POST':
        form = SignupForm(request.POST)
        if form.is_valid():
            form.save(request)
            username = form.cleaned_data.get('email')
            raw_password = form.cleaned_data.get('password1')
            user = authenticate(username=username, password=raw_password)
            ##login(request, user)
            # return redirect('home')
    else:
        form = SignupForm()
    return render(request, 'med_app/signup-paciente.html', {'form': form})
Пример #40
0
def index(request):
    user = request.user

    context = {}
    if not user.is_authenticated:
        form = SignupForm()
        context['form'] = form
        template = loader.get_template('home.html')
        response = HttpResponse(template.render(context, request))
    else:
        socials = Social.objects.filter(account=user).order_by('-updated_at')
        if not socials:
            response = redirect('publisher:connect')
        else:
            response = redirect('publisher:content_create')

    return response
Пример #41
0
def finance_website(request):
    if request.method == "GET":
        stock = finance_stock(request)
        data = get_stock_price_data(stock)
        script, div = create_stock_price_plot(data)
        bid, ask, range_day, market_cap, beta, estimate, price = get_stock_summary_data(
            stock)

        movers = get_stock_movers(5)
        watchlist_list = Watchlist.objects.filter(user=request.user.id)
        feed = news_feed(stock)
        login_form = LoginForm()
        signup_form = SignupForm()

        context = {
            "stock": stock,
            "bid": bid,
            "ask": ask,
            "range": range_day,
            "market_cap": market_cap,
            "beta": beta,
            "estimate": estimate,
            "the_script": script,
            "the_div": div,
            "movers": movers,
            "watchlist_list": watchlist_list,
            "news": feed,
            "price": price,
            "login_form": login_form,
            "signup_form": signup_form
        }

        return render(request, "finance.html", context)

    else:
        form = WatchlistForm(request.POST)
        form.save()
        return redirect(request.get_full_path())
Пример #42
0
    def post(self, request, *args, **kwargs):
        logger.info("You're in post!!!")

        # リクエストからフォームを作成
        form = RegisterForm(request.POST)
        auth_form = SignupForm(request.POST)

        # バリデーション
        if not form.is_valid():
            # バリデーションNGの場合はアカウント登録画面のテンプレートを再表示
            return render(request, 'accounts/register.html', {'form': form})

        # 保存する前に一旦取り出す
        user = form.save(commit=False)
        # パスワードをハッシュ化してセット
        user.set_password(form.cleaned_data['password'])
        # ユーザーオブジェクトを保存
        user.save()

        # ログイン処理(取得した Userオブジェクトをセッションに保存 & Userデータを更新)
        auth_login(request, user)

        return redirect(settings.LOGIN_REDIRECT_URL)
Пример #43
0
def login(request, **kwargs):
    success_url = kwargs.pop("success_url", None)

    if success_url is None:
        success_url = "/"

    if request.method == "POST":
        form = LoginForm(request.POST)
        if form.is_valid():
            return form.login(request, redirect_url=success_url)
    else:
        form = LoginForm()

    registerform = SignupForm()

    ctx = {
        "form": form,
        "registerform": registerform,
        "redirect_field_name": "next",
        "redirect_field_value": request.REQUEST.get("next"),
        "apps": SocialApp.objects.all(),
    }
    return render_to_response('users/login.html', RequestContext(request, ctx))
Пример #44
0
 def test_signup_form(self):
     form = SignupForm(
         {"username": "******", "email": "*****@*****.**", "password1": "password", "password2": "password"}
     )
     self.assertTrue(form.is_valid())
Пример #45
0
def reservation(request, id):
    service = get_object_or_404(Service, id=id)

    chosen_employee = None
    emp_size = 0
    if not service.is_active():
        raise Http404
    minTime, maxTime = getMinMaxTime(service.service_provider)

    #step2 = request.session['_step'] if '_step' in request.session
    step2 = request.GET.get('step', None)

    # POST
    step = request.POST.get('step', None)

    data = None
    if step:
        try:
            data = pickle.loads(base64.b64decode(request.POST.get('data')))  # Serializes an object from request
        except:
            raise Http404
    elif step2:
        step = step2
        if 'reservation_data' in request.session:
            data = request.session['reservation_data']
        else:
            step = None

    if (request.method != 'POST' and data is None) or step is None:
        #form = ReservationForm(request, workingHours=None, service=None)
        form = ReservationForm(request, workingHours=None, service=service)
        data = {'service_provider_id': service.service_provider_id, 'service_id': service.id}
        return render_to_response('reservations/reservation.html', locals(), context_instance=RequestContext(request))

    workingHours = WorkingHours.objects.filter(service_provider_id=service.service_provider_id)

    #formNonRegisteredUser = NonRegisteredUserForm(prefix='nonRegBtn')
    formNonRegisteredUser = NonRegisteredUserForm(provider=service.service_provider)
    loginForm = LoginForm(prefix='loginBtn')
    signupForm = SignupForm(prefix='signupBtn')

    if step == '1':
        # Service, date, time
        # form = ReservationForm(request.POST, workingHours='gergerre')
        form = ReservationForm(request, request.POST, workingHours=workingHours, service=service)
        if form.is_valid():
            chosen_employee = form.cleaned_data['employees']
            data['date'] = form.cleaned_data['date']
            data['time'] = form.cleaned_data['time']
            data['number'] = form.cleaned_data['number']
            data['employees'] = form.cleaned_data['employees']

            if request.user.is_authenticated():
                data['user_id'] = request.user.id
                data['name'] = request.user.get_full_name()
                data['phone'] = request.user.phone
                data['email'] = request.user.email
                return render_to_response('reservations/confirmation.html', locals(),
                                          context_instance=RequestContext(request))

            return render_to_response('reservations/userinfo.html', locals(), context_instance=RequestContext(request))

        return render_to_response('reservations/reservation.html', locals(), context_instance=RequestContext(request))

    if step == '2':
        if data.get('date') is None or data.get('time') is None:
            raise Http404

        if 'signupBtn' in request.POST:
            signupForm = SignupForm(request.POST, prefix='signupBtn')

            if signupForm.is_valid():
                userr = signupForm.save(request)

                data['user_id'] = userr.id
                data['name'] = userr.get_full_name()
                data['phone'] = userr.phone
                data['email'] = userr.email

                return render_to_response('reservations/confirmation.html', locals(),
                                          context_instance=RequestContext(request))

        if 'loginBtn' in request.POST:
            loginForm = LoginForm(request.POST, prefix='loginBtn')

            if loginForm.is_valid():
                data['user_id'] = loginForm.user.id
                data['name'] = loginForm.user.get_full_name()
                data['phone'] = loginForm.user.phone
                data['email'] = loginForm.user.email

                request.session['reservation_data'] = data
                return loginForm.login(request, redirect_url=reverse('reservation', args=[service.id]) + "?step=2a")

        if 'nonRegBtn' in request.POST:

            formNonRegisteredUser = NonRegisteredUserForm(request.POST, provider=service.service_provider)
            if formNonRegisteredUser.is_valid():
                data['name'] = formNonRegisteredUser.cleaned_data['name']
                data['phone'] = formNonRegisteredUser.cleaned_data['phone']
                data['email'] = formNonRegisteredUser.cleaned_data['email']
                return render_to_response('reservations/confirmation.html', locals(),
                                          context_instance=RequestContext(request))
        return render_to_response('reservations/userinfo.html', locals(), context_instance=RequestContext(request))

    if step == '2a':
        if request.user.is_authenticated():
            return render_to_response('reservations/confirmation.html', locals(),
                                      context_instance=RequestContext(request))

    if step == '3':
        # Confirmation
        if data.get('date') is None or data.get('time') is None:  # or data.get('user_id') is None:
            raise Http404
        if data.get('user_id') is not None:
            ruser = get_object_or_404(User, id=data.get('user_id'))
        else:
            ruser = None

        sync(service.service_provider)

        # Checking again if form for reservation is valid
        chosen_employee = data.get('employees')
        emp_id = None
        if chosen_employee is not None and chosen_employee != '':
            emp_id = chosen_employee.id

        form = ReservationForm(request,
                               {'date': data.get('date'), 'time': data.get('time'), 'employees': emp_id},
                               workingHours=workingHours, service=service)

        if form.is_valid():
            form_emp = None
            if chosen_employee != '':
                form_emp = chosen_employee
            reserve = Reservation(user=ruser, service=service, date=data['date'], time=data['time'],
                                  employee=form_emp)
            # Add backup fields
            reserve.user_fullname = data.get('name')
            reserve.user_phone = data.get('phone')
            reserve.user_email = data.get('email')
            reserve.service_provider = service.service_provider
            reserve.service_name = service.name
            reserve.service_duration = service.duration
            reserve.service_price = service.discounted_price()
            reserve.show_up = False
            if chosen_employee is not None and chosen_employee != '':
                reserve.employee = chosen_employee
            else:
                # if employees assigned to service, randomly choose one who is free
                if service.employees.all().__len__() > 0:
                    today_r = Reservation.objects.filter(employee__in=service.employees.all(), date=reserve.date)
                    # find free employees
                    reserveDt = datetime.datetime.combine(reserve.date, reserve.time)
                    free_emp = list(service.employees.all())
                    free_emp_editable = list(service.employees.all())
                    for emp in free_emp:
                        emp_time = EmployeeWorkingHours.objects.filter(employee=emp.id)[0].get_for_day(emp,
                                                                                                       reserve.date.weekday())
                        if not EmployeeWorkingHours.objects.filter(employee=emp.id)[0].get_for_day(emp,
                                                                                                   reserve.date.weekday()):
                            free_emp_editable.remove(emp)
                        if reserve.time < emp_time.time_from or reserveDt + datetime.timedelta(
                                minutes=reserve.service_duration) > datetime.datetime.combine(reserve.date,
                                                                                              emp_time.time_to):
                            free_emp_editable.remove(emp)
                    for r in today_r:
                        rDt = datetime.datetime.combine(r.date, r.time)
                        if r.active_during(reserveDt):
                            if r.employee in free_emp:
                                free_emp_editable.remove(r.employee)
                                # choose random employee
                    if free_emp_editable:
                        random_employee = free_emp_editable[random.randint(0, len(free_emp_editable) - 1)]
                        reserve.employee = random_employee

            # Save
            reserve.user.notification_type = 'email'
            reserve.save()
            # saving coupon is_valid
            coupons = Coupon.objects.filter(service=service.id)
            coupon_is_used = False
            for coup in coupons:
                if data['number'] == coup.number:
                    coup.is_used = True
                    coup.save()
                    coupon_is_used = True
                    # Validation checking in form

            user_page_link = '%s/u/%s' % (settings.BASE_URL, reserve.service_provider.userpage_link)
            email_to1 = data.get('email')
            email_to2 = service.service_provider.user.email
            if service.service_provider.reservation_confirmation_needed:
                subject = _('Confirmation of service reservation')
                renderedToCustomer = render_to_string('emails/reservation_customer.html',
                                                      {'reservation': reserve, 'link': user_page_link})
                renderedToProvider = render_to_string('emails/reservation_provider.html',
                                                      {'reservation': reserve, 'link': user_page_link})
                message1 = (subject, renderedToCustomer, None, [email_to1])
                message2 = (subject, renderedToProvider, None, [email_to2])
                send_mass_mail((message1, message2), fail_silently=True)
            else:
                subject = _('Confirmation of service reservation')
                renderedToCustomer = render_to_string('emails/reservation_customer.html',
                                                      {'reservation': reserve, 'link': user_page_link})
                send_mail(subject, renderedToCustomer, email_to2, [email_to1],
                          fail_silently=False)

            start = datetime.datetime.combine(reserve.date, reserve.time)
            gcal_params = urllib.urlencode({
                'action': 'TEMPLATE',
                'text': reserve.service_name.encode('utf8'),
                'dates': '%s/%s' % (datetime_to_url_format(start),
                                    datetime_to_url_format(
                                        start + datetime.timedelta(minutes=reserve.service_duration))),
                'details': reserve.service.description.encode('utf8'),
                'location': reserve.service_provider.full_address().encode('utf8'),
                'trp': 'true',
                'sprop': 'E-Narocanje',
                'sprop': 'name:%s' % settings.BASE_URL,
            })
            url_service = settings.BASE_URL + reverse('service', args=(service.id,))

            sync(service.service_provider)

            return render_to_response('reservations/done.html', locals(), context_instance=RequestContext(request))

        # Someone else has made a reservation in the meantime
        return render_to_response('reservations/alreadyreserved.html', locals(),
                                  context_instance=RequestContext(request))
    raise Http404