def validate_email(self, email):
     user = db.scan(TableName='customers',
             FilterExpression='#name = :val',
             ExpressionAttributeNames={
                 '#name': 'email'
             },
             ExpressionAttributeValues={
                 ':val': {'S': email.data.lower()}
             }
         )
     if user.get('Items') != []:
         raise ValidationError('It looks like the email: '+ email.data + ' has already been registered.')
 def validate_kitchenName(self, kitchenName):
     user = db.scan(TableName="kitchens",
             FilterExpression='#name = :val',
             ExpressionAttributeNames={
                 '#name': 'kitchen_name'
             },
             ExpressionAttributeValues={
                 ':val': {'S': kitchenName.data}
             }
         )
     if user.get('Items') != []:
         raise ValidationError('That kitchen name is taken. Please choose another one.')
 def validate_email(self, email):
     user = db.scan(TableName="kitchens",
             FilterExpression='#name = :val',
             ExpressionAttributeNames={
                 '#name': 'email'
             },
             ExpressionAttributeValues={
                 ':val': {'S': email.data.lower()}
             }
         )
     if user.get('Items') != []:
         raise ValidationError('That email is taken. Please choose another one.')
 def validate(self):
     if not super(LoginForm, self).validate():
         return False
     user = db.scan(TableName="kitchens",
             FilterExpression='#name = :val',
             ExpressionAttributeNames={
                 '#name': 'email'
             },
             ExpressionAttributeValues={
                 ':val': {'S': self.email.data.lower()}
             }
         )
     if user.get('Items') == []:
         self.email.errors.append(self.email.data + ' has not been registered with Serving Now.')
         return False
     if user.get('Items') != []:
         if not check_password_hash(user['Items'][0]['password']['S'], \
           self.password.data):
             self.password.errors.append('Invalid Password, please try again.')
             return False
     return True
    def validate_phoneNumber(self, phoneNumber):
        user = db.scan(TableName="customers",
                FilterExpression='#name = :val',
                ExpressionAttributeNames={
                    '#name': 'phone_number'
                },
                ExpressionAttributeValues={
                    ':val': {'S': phoneNumber.data}
                }
            )
        if user.get('Items') != []:
            raise ValidationError('It looks like the phone number: '+ phoneNumber.data + ' has already been registered.')

        if len(phoneNumber.data) > 16:
            raise ValidationError('Invalid phone number.')
        try:
            input_number = phonenumbers.parse(phoneNumber.data)
            if not (phonenumbers.is_valid_number(input_number)):
                raise ValidationError('Invalid phone number.')
        except:
            input_number = phonenumbers.parse("+1"+phoneNumber.data)
            if not (phonenumbers.is_valid_number(input_number)):
                raise ValidationError('Invalid phone number.')