示例#1
0
 def mount(self):
     self.loggedIn = False
     self.username = ''
     self.password = ''
     self.loggedInMessage = ''
     self.failed = False
     self.users = User.all().serialize()
    def test_can_correct_incorrect_pagination_page(self):
        users = User.all()
        (self.get('/paginator').assertHasJson('count', 10).assertHasJson(
            'per_page',
            10).assertHasJson('current_page',
                              1).assertHasJson('from',
                                               1).assertHasJson('to', 10))

        (self.get('/paginate', {
            'page': 'hey',
            'page_size': 'hey'
        }).assertHasJson('total', len(users)).assertHasJson(
            'count', 10).assertHasJson('per_page', 10).assertHasJson(
                'current_page', 1).assertHasJson('from',
                                                 1).assertHasJson('to', 10))

        (self.get('/length_aware', {
            'page': 'hey',
            'page_size': 'hey'
        })
         # .assertHasJson('total', len(User.find(1)))
         # .assertHasJson('count', len(User.find(1)))
         .assertHasJson('per_page',
                        10).assertHasJson('current_page', 1).assertHasJson(
                            'from', 1).assertHasJson('to', 10))

        (self.get('/single_paginator', {
            'page': 'hey',
            'page_size': 'hey'
        }).assertHasJson('count',
                         1).assertHasJson('per_page', 10).assertHasJson(
                             'current_page',
                             1).assertHasJson('from',
                                              1).assertHasJson('to', 10))
    def store(self, request: Request, auth: Auth, validate: Validator,
              view: View):
        user = User.all()

        email = User.lists('email')
        pw = User.lists('password')

        errors = request.validate(validate.required(['email', 'password']),
                                  validate.email('email'))

        #checks for errors in login inputs and redirects user back to login page.
        if errors:
            return request.back().with_errors(errors).with_input()

        elif request.input('email') not in email and request.input(
                'password') not in pw:
            return request.back().with_errors(
                {'email': ["Email and password not found. Please register."]})

        #check to see if user already had an account which they may have closed/cancelled and need to register for a new account or reactivate account.
        if user.where('email',
                      request.input('email')).where('cancelled', 'Yes'):
            # cancelled = True
            user_id = User.where('email',
                                 request.input('email')).get().pluck('id')
            return request.redirect('/reregister/' + str(user_id[0]))

        #logins user if no errors and account has not been closed/cancelled before
        if auth.login(request.input('email'), request.input('password')):
            return request.redirect('/')

        # returns back to login page if email or password are incorrect
        return request.back().with_errors(
            {'email': ["Email or password is incorrect"]})
    def test_view_should_return_a_json_response_when_returning_paginator_instance(
            self):

        users = User.all()
        (self.get('/paginator').assertHasJson('count', 10).assertHasJson(
            'per_page',
            10).assertHasJson('current_page',
                              1).assertHasJson('from',
                                               1).assertHasJson('to', 10))
示例#5
0
 def check_exists(self):
     users = User.all()
     self.messages({'username': '******'})
     self.request.request_variables[
         'username'] = self.request.request_variables['username'].lower()
     return self.validate({
         'username': [
             Required,
             Not(In(users.pluck('name').map(lambda item: item.lower())))
         ]
     })
    def validate_input(self, data):
        users = User.all()
        rules = {
            'name': [Required, Not(Blank()), Length(3)],
            'email': [Required,
                      Not(Blank()),
                      Not(In(users.pluck('email')))],
            'password': [Required, Not(Blank()),
                         Length(6)],
        }

        return validate(rules, data)
    def update(self, request: Request, validate: Validator, auth: Auth,
               view: View):
        user = User.all()
        customer = request.user()

        email = User.lists('email')
        user_name = User.lists('username')

        #Checks to see if updated email or username already exists
        if request.input('email') != customer.email:
            if request.input('email') in email:
                return request.back().with_errors({
                    'error':
                    ['{} already exists'.format(request.input('email'))]
                })
        elif request.input('username') != customer.username:
            if request.input('username') in user_name:
                return request.back().with_errors({
                    'error':
                    ['{} already exists'.format(request.input('username'))]
                })

        #Inputs to update customer information
        user.where(
            'id',
            customer.id).first().update(firstname=request.input('firstname'))
        user.where(
            'id',
            customer.id).first().update(lastname=request.input('lastname'))
        user.where(
            'id', customer.id).first().update(address=request.input('address'))
        user.where(
            'id',
            customer.id).first().update(cell_phone=request.input('cell_phone'))
        user.where('id',
                   customer.id).first().update(email=request.input('email'))
        user.where(
            'id',
            customer.id).first().update(username=request.input('username'))

        #Checks that all information is filled out properly
        errors = request.validate(
            validate.required(
                ['firstname', 'lastname', 'address', 'email', 'username']),
            validate.email('email'))

        if errors:
            return request.back().with_errors(errors).with_input()
        else:
            request.session.flash(
                'success', 'Your account has been successfully updated.')
            return request.redirect('account')
    def update(self, view: View, request: Request, auth: Auth,
               validate: Validator):
        user = User.all()
        pws = User.lists('password')

        customer = request.user()
        pw = customer.password

        if bcrypt.checkpw(bytes(request.input('password'), 'utf-8'),
                          bytes(pw, 'utf-8')) == False:
            return request.back().with_errors(
                {'error': ['Please enter correct old password']})

        new_password = request.input('new_password')
        confirm_password = request.input('confirm_password')

        for pws in pws:
            if bcrypt.checkpw(bytes(request.input('new_password'), 'utf-8'),
                              bytes(pws, 'utf-8')):
                return request.back().with_errors({
                    'error': [
                        'Password already exists.  Please create a new password.'
                    ]
                })

        errors = request.validate(
            validate.required(['password', 'new_password',
                               'confirm_password']),
            validate.strong('new_password',
                            length=8,
                            special=1,
                            uppercase=1,
                            breach=False)
            # breach=True checks if the password has been breached before.
            # Requires 'pip install pwnedapi'
        )

        if errors:
            return request.back().with_errors(errors).with_input()
        elif new_password != confirm_password:
            return request.back().with_errors({
                'error':
                ['New password and confirm new password do not match!']
            })
        else:
            user.where(
                'id',
                customer.id).first().update(password=password(new_password))
            request.session.flash(
                'success', 'Your password has been successfully updated.')
            return request.redirect('account')
示例#9
0
    def login(self):
        users = User.all()
        self.messages({
            'username': '******',
            'password': '******',
        })

        return self.validate({
            'username': [
                Required,
                Length(1, 35),
                In(users.pluck('email').map(lambda item: item.lower()))
            ],
            'password': [Required, Length(1)]
        })
示例#10
0
    def register(self):
        users = User.all()
        self.messages({
            'email':
            'That email already exists',
            'username':
            '******'
        })

        return self.validate({
            'username': [Required, Length(3, 20)],
            'email': [Required,
                      Length(1),
                      Not(In(users.pluck('email')))],
            'password': [Required]
        })
示例#11
0
    def show(self, view: View, request: Request):
        """
        Show all users so player can pick one user to play with
        """
        users = User.all()
        table = Table.all()

        if request.user():
            cur_user = request.user().email
            return view.render(
                "game", {
                    'users': users,
                    'name': cur_user,
                    'table': table,
                    "cuser_id": cur_user
                })
        else:
            return view.render("invalid", {"message": 'Please log in'})
    def cancel(sef, request: Request, auth: Auth, validate: Validator,
               mail: Mail):
        user = User.all()
        customer = request.user()

        pw = customer.password

        reason = request.input('radio')
        confirm_password = request.input('password')

        #checking that all required fields are entered and no errors are found.
        errors = request.validate(
            validate.required(
                ['radio', 'password'],
                messages={'radio': "Please choose a reason for cancelling."}))

        if errors:
            return request.back().with_errors(errors)
        elif not bcrypt.checkpw(bytes(confirm_password, 'utf-8'),
                                bytes(pw, 'utf-8')):
            return request.back().with_errors(
                {'error': ["Are you sure that's the right password?"]})

        user_id = user.where('id', customer.id).first()
        # User.where('id', customer.id).where_null('cancelled').update(cancelled='Yes')
        User.where('id', customer.id).update(cancelled="Yes")

        CancelledAccount.insert({
            'user_id': user_id.id,
            'cancel_reason': request.input('radio'),
            'suggestions': request.input('suggestion')
        })

        request.session.flash(
            'success',
            'Your account has been successfully cancelled. Thank you for your business.'
        )
        mail.send_from('*****@*****.**').subject(
            'Cancellation Confirmation').to(customer.email).template(
                'mail/cancel_member', {
                    'title': 'Kennedy Pools & Supplies'
                }).send()
        auth.logout()
        return request.redirect('/')
    def schedule(self, view: View, request: Request, validate: Validator, mail: Mail):
        user = User.all()
        customer = request.user()
        
        name = request.input('name')
        address = request.input('address')
        
        schedule_date_info =  request.input('date')
        path = request.path
    
         #checking that all required fields are entered and no errors are found.
        errors = request.validate(
            validate.required(['service_type', 'name', 'address']))
            
        if errors:
            return request.back().with_errors(errors)

        if not schedule_date_info[0] or not schedule_date_info[1]:
            request.session.flash('success', "The service date and service time is required.")
            return request.back()

        schedule_id = user.where('id', customer.id).first()
        
        Schedule.insert({
            'schedule_id': schedule_id.id,
            'service': request.input('service_type'),
            'service_date': schedule_date_info[0],
            'service_time': schedule_date_info[1], 
            'customer_name': request.input('name')
        })

        #getting the schedules table data
        customer_schedule = Schedule.get().last()
        
         #sends email with pool appointment schedule details
        mail.subject('Pool Appointment Confirmation').to(customer.email).template('mail/appt_confirm', {'service_id': customer_schedule.id, 'service': customer_schedule.service, 
                                'service_date':customer_schedule.service_date, 'service_time':customer_schedule.service_time}).send()
        
        request.session.flash('success', 'Your appointment has been successfully scheduled!  A confirmation email has been sent.')
        
        return request.redirect('/') 
    def test_view_should_return_a_json_response_when_returning_length_aware_paginator_instance(
            self):

        users = User.all()

        # Page 1
        (self.get('/paginate').assertHasJson(
            'total', len(users)).assertHasJson('count', 10).assertHasJson(
                'per_page',
                10).assertHasJson('current_page',
                                  1).assertHasJson('from',
                                                   1).assertHasJson('to', 10))

        # Page 2
        (self.get('/paginate', {
            'page': 2
        }).assertHasJson('total', len(users)).assertHasJson(
            'count', 10).assertHasJson('per_page', 10).assertHasJson(
                'current_page', 2).assertHasJson('from',
                                                 11).assertHasJson('to', 20))

        factory(User).create()
        (self.get('/length_aware').assertHasJson('total',
                                                 1).assertHasJson('count', 1))
示例#15
0
 def test_returns_correct_data_type(self):
     self.assertIsInstance(User.all(), Collection)
     self.assertIsInstance(User.first(), User)
 def show(self, view: View):
     customers = User.all()
     return view.render('dashboard/customers', {'customers': customers})
 def paginator(self):
     return Paginator(User.all(), 10)