Пример #1
0
    def validateGroupParams(params):
        if len(params['name']) <= 4:
            raise ValidationError(
                errors={
                    'name': 'Use a name that\'s at least 5 letters or numbers'
                })

        slots = params['slots']
        if slots != '':
            try:
                slots = int(params['slots'])
            except ValueError as e:
                raise ValidationError(
                    errors={'slots': 'Number of spots must be a whole number'})

            if slots > 30:
                raise ValidationError(
                    errors={'slots': 'Maximum group size is 30'})

            if slots < 0:
                raise ValidationError(errors={'slots': 'Nice try, but no'})

        params['slots'] = slots

        if len(params['password']) <= 4:
            raise ValidationError(errors={
                'password':
                '******'s at least 5 letters or numbers'
            })

        return params
Пример #2
0
    def post(self):
        waiver = self.request.get('waiver')
        if waiver != 'yes':
            raise ValidationError(
                errors={'waiver': 'You must accept the waiver'})

        name = self.request.get('name')

        email = self.request.get('email')
        user = User.findByEmail(email)
        if user != None:
            code = 9202 if user.pending == True else 4482
            return self.redirect('/sign-in', {'error': code, 'email': email})

        password = self.request.get('password')
        if len(password) < 5:
            raise ValidationError(
                errors={'password': '******'})

        pid = self.request.get('pid')
        project = Project.get(pid) if pid else None

        gid = self.request.get('group[key]')
        group = Group.get(gid) if gid else None
        group_code = self.request.get('group[password]')
        group = group if group and group.password == group_code else None

        user = User.create(name, email, password, project, group)
        self.setUser(user)

        redirect = self.request.get('redirect')
        redirect = redirect if redirect else '/account'
        self.redirect(redirect)
Пример #3
0
    def post(self, key):
        group = self.getGroup(key)
        if group is None:
            group = Group()

        group.name = self.request.get('group[name]')
        group.password = self.request.get('group[password]')
        try:
            slots = int(self.request.get('group[slots]'))
            if slots <= 0:
                raise ValueError('Below zero')
            group.slots = slots
        except ValueError as e:
            raise ValidationError(
                errors={
                    'group[slots]': 'Must be an integer number above zero'
                })

        project_key = self.request.get('group[project]')
        project = Project.get(project_key) if project_key != '' else None
        group.setProject(project)

        group.put()
        error_code = 1 if key == 'new' else 2
        self.redirect('/admin/groups/{}'.format(group.key()),
                      {'error': error_code})
Пример #4
0
    def post(self):
        self.throw404If(self.user.is_group_leader == False)
        group = self.user.group
        params = {
            'name': self.request.get('name'),
            'slots': self.request.get('slots'),
            'password': self.request.get('password'),
        }
        logging.info(params)
        params = Create.validateGroupParams(params)
        slots = params['slots']
        if slots != '':
            if slots < group.members.count():
                raise ValidationError(
                    errors={
                        'slots':
                        'Too few slots for the number of people in your group already'
                    })
            group.slots = slots

        group.name = params['name']
        group.password = params['password']
        group.put()

        self.redirect('/groups/edit', {'errors': 1})
Пример #5
0
    def post(self, key):
        project = self.getProject(key)
        if project is None:
            project = Project()

        project.name = self.request.get('project[name]')
        project.description = self.request.get('project[description]')
        project.location = self.request.get('project[location]')
        project.type_of_work = self.request.get('project[type_of_work]')
        try:
            spots = int(self.request.get('project[max_volunteers]'))
            if spots <= 0:
                raise ValueError('Below zero')
            project.max_volunteers = spots
        except ValueError as e:
            raise ValidationError(errors={
                'project[max_volunteers]':
                'Must be an integer number above zero'
            })

        project.put()

        error_code = 1 if key == 'new' else 2
        self.redirect('/admin/projects/{}'.format(project.key()),
                      {'error': error_code})
Пример #6
0
    def post(self):
        key = self.request.get('key')
        user = User.get(key)
        code = self.request.get("code")
        password = self.request.get("password")
        password_match = self.request.get("password_match")

        if password == '':
            raise ValidationError(
                errors={'password': '******'})
        if password_match != password:
            raise ValidationError(
                errors={'password_match': 'Password does not match'})

        user.setPassword(password)
        self.redirect('/sign-in', {'error': 23455})
Пример #7
0
    def post(self):
        verification = self.request.get('verification')
        if verification != 'delete all groups':
            raise ValidationError(
                errors={'verification': 'Insufficient verification'})

        taskqueue.add(url='/tasks/delete-all-groups')
        return self.redirect('/admin/groups', {'error': '2'})
Пример #8
0
    def post(self):
        verification = self.request.get('verification')
        if verification != 'clear all flags':
            raise ValidationError(
                errors={'verification': 'Insufficient verification'})

        taskqueue.add(url='/tasks/clear-flags-on-all-volunteers')
        return self.redirect('/admin/volunteers', {'error': '2'})
Пример #9
0
    def post(self):
        verification = self.request.get('verification')
        if verification != 'close group registration':
            raise ValidationError(
                errors={'verification': 'Insufficient verification'})

        groups = Group.all()
        for group in groups:
            group.slots = group.spots_taken
            group.put()

        return self.redirect('/admin/groups', {'error': '3'})
Пример #10
0
    def post(self):
        email = self.request.get('email')
        logging.info('Trying to reset {}'.format(email))

        user = User.findByEmail(email)
        if not user:
            raise ValidationError(
                errors={'email': "No user with that email. Try another?"})

        PasswordResetEmail(user).send()
        self.addFlash('success', 'Password reset email sent')
        return {}
Пример #11
0
 def post(self):
     group = self.getGroup()
     if group == None:
         raise Exception('Failed to find group')
     password = self.request.get('password')
     if group.password != password:
         raise ValidationError(errors={'password': '******'},
                               values={
                                   'group': group,
                                   'password': password
                               })
     self.user.setGroup(group)
     self.redirect('/account')
Пример #12
0
    def post(self):
        email = self.request.get('email')
        password = self.request.get('password')

        logging.info("Trying to login {}".format(email))
        user = User.findByEmail(email)

        if user is None:
            raise ValidationError(errors={'email': "No user with that email"},
                                  values=self.getAllParams())
            return {'message': "No account for that email", 'email': email}
        elif user.password != User.digestPassword(password):
            raise ValidationError(errors={'password': "******"},
                                  values=self.getAllParams())
        elif user.pending == True:
            raise ValidationError(errors={
                'email':
                "Pending account confirmation. Check your inbox."
            },
                                  values=self.getAllParams())

        self.setUser(user)
        redirect = self.request.get('redirect')
        self.redirect(redirect if redirect else '/account')