Esempio n. 1
0
class CreateBookSchema(ma.Schema):
    title = ma.Str(required=True, validate=Length(max=30))
    description = ma.Str(required=True, validate=Length(max=120))
    authors = ma.List(ma.Integer, required=True)

    class Meta:
        model = Book
Esempio n. 2
0
class ContentSchema(Schema):
    class Meta:
        unknown = EXCLUDE

    id = ma.Int(
        required=True,
        error_messages={"invalid": "Missing ID number"},
    )
    content = ma.Str(
        required=True,
        validate=validate.Length(min=1, error='Missing Content'),
    )
    group = ma.Int(
        required=True,
        error_messages={"invalid": "Missing group number"},
    )
    question = ma.Str(
        required=True,
        validate=validate.Length(min=1, error='Missing Content'),
    )
    image = ma.Str(required=True)

    @validates("image")
    def validate_quantity(self, value):
        if (not os.path.isfile('resources/master/images/' + value)):
            raise ValidationError("Missing file: " + value)
Esempio n. 3
0
class LoginSchema(ma.Schema):
    username = ma.Str()
    email = ma.Str()
    password = ma.Str()

    @validates_schema()
    def check_password_provided(self, data):
        password = data.get('password', None)

        if password is None or password.strip() == '':
            raise ValidationError('Password is required',
                                  field_names=['password'])

    @validates_schema()
    def check_username_or_email_provided(self, data):
        username = data.get('username', None)
        email = data.get('email', None)

        if username is None or username.strip() == '':
            if email is None or email.strip() == '':
                raise ValidationError('Username or Email is required',
                                      field_names=['username_email'])
            elif not is_valid_email(email.strip()):
                raise ValidationError('Not a valid email address',
                                      field_names=['email'])

    @post_load
    def strip_data(self, data):
        for field, value in data.items():
            data[field] = value.strip()
Esempio n. 4
0
class PostGalleryValidateSchema(ma.Schema):
    name = ma.Str(required=True,
                  validate=Length(max=30, min=1),
                  allow_none=False)
    explain = ma.Str(required=True, validate=Length(max=255, min=0))
    gallery_id = ma.Str(required=True, validate=Length(max=30, min=1))
    gallery_type = ma.Integer(
        required=True,
        allow_none=False,
        validate=Range(min=0, max=2),
    )
Esempio n. 5
0
class PostTokenValidateSchema(ma.Schema):
    @staticmethod
    def check_is_school_email(email):
        email_domain = email.rsplit("@")[-1]

        if not email_domain == "dsm.hs.kr":
            raise ValidationError("Email is not email of DSM.")

    password = ma.Str(required=True, validate=validate.Length(min=8))
    email = ma.Str(
        required=True,
        validate=[validate.Email(), check_is_school_email.__func__],
    )
Esempio n. 6
0
class AccountChangePasswordInputSchema(ma.Schema):
    password = ma.Str(
        required=True,
        validate=validate.Regexp(
            re.compile(
                r"^(?=.*\d)(?=.*[a-zA-Z])[0-9a-zA-Z*.!@$%^&(){}\[\]:;<>,.?/~_+-=|\\]{8,36}$"
            )),
    )

    new_password = ma.Str(
        required=True,
        validate=validate.Regexp(
            re.compile(
                r"^(?=.*\d)(?=.*[a-zA-Z])[0-9a-zA-Z*.!@$%^&(){}\[\]:;<>,.?/~_+-=|\\]{8,36}$"
            )),
    )
Esempio n. 7
0
class GetCommentParameterSchema(ma.Schema):
    post_id = ma.Integer(data_key="post-id", required=False)
    username = ma.Str(required=False)
    page = ma.Integer(required=False, validate=Range(min=0))
    per_page = ma.Integer(data_key="per-page",
                          required=False,
                          validate=Range(min=1))
Esempio n. 8
0
class ReportCommentInputSchema(ma.Schema):
    reason = ma.Integer(required=True, validate=Range(min=1, max=10))
    detail_reason = ma.Str(required=True, validate=Length(max=500))
    reported_content_type = ma.Integer(
        required=True, validate=Range(min=1, max=2)
    )
    post_id = ma.Integer(required=False, allow_none=True)
    comment_id = ma.Integer(required=True)
Esempio n. 9
0
class MessageSchema(ma.ModelSchema):
    class Meta:
        fields = ('msg', 'author', 'created_at', 'photos')

    photos = ma.Raw()
    msg = ma.Str()
    created_at = ma.Date()
    author = ma.Nested(UserSchemaWithoutRooms)
Esempio n. 10
0
class PostGetQueryParameterValidateSchema(ma.Schema):
    page = ma.Integer(required=False, validate=Range(min=1))
    per_page = ma.Integer(required=False,
                          validate=Range(min=1),
                          data_key="per-page")
    username = ma.Str(required=False, validate=Length(min=2, max=20))
    gallery_id = ma.String(required=False,
                           validate=Length(min=1, max=30),
                           data_key="gallery-id")
Esempio n. 11
0
class UserSchema(ma.Schema):
    username = ma.Str(required=True)
    email = ma.Email(required=True)

    class Meta:
        fields = ('username', 'email')

    @post_load
    def make_user(self, data, **kwargs):
        return User(**data)
Esempio n. 12
0
class CreateUserSchema(ma.Schema):
    username = LowerCased(required=True, validate=Length(max=30))
    email = ma.Str(required=True, validate=Length(max=120))
    first_name = ma.Str(required=True, validate=Length(max=30))
    last_name = ma.Str(required=True, validate=Length(max=30))
    password = ma.Str(required=True, validate=Length(min=8))
    active = ma.Str(missing=True)
    roles = ma.List(ma.Str(validate=Length(max=30)), missing=['user'])

    @validates('email')
    def is_valid_email(self, value):
        regex = '^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$'
        if not re.search(regex, value):
            raise ValidationError("Email must be in valid format!")

    @validates('password')
    def is_valid_password(self, value):
        '''
        Should have at least one number.
        Should have at least one uppercase and one lowercase character.
        Should have at least one special symbol.
        Should be at least 8 characters long.
        '''
        regex = '^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!#%*?&]{8,}$'
        pat = re.compile(regex)
        mat = re.search(pat, value)
        if not mat:
            raise ValidationError("Password invalid!")

    class Meta:
        model = User
Esempio n. 13
0
class AccountRegisterSchema(ma.Schema):
    email = ma.Str(
        required=True,
        validate=[
            validate.Email(error="Email parameter is not email"),
            validate.Regexp(".*@dsm.hs.kr", error="Email is not of dsm"),
        ],
    )
    username = ma.Str(
        required=True,
        validate=[
            validate.Length(min=2, max=20),
            validate.Regexp(re.compile(r"^[가-힣\w]+$")),
        ],
    )
    password = ma.Str(
        required=True,
        validate=validate.Regexp(
            re.compile(
                r"^(?=.*\d)(?=.*[a-zA-Z])[0-9a-zA-Z*.!@$%^&(){}\[\]:;<>,.?/~_+-=|\\]{8,36}$"
            ))
        # 비밀번호 8자리 이상 36자리 이하 숫자, 알파벳 1개씩 포함
    )
Esempio n. 14
0
class AccountLoginInputSchema(ma.Schema):
    password = ma.Str(required=True, validate=validate.Length(min=8))
    email = ma.Str(required=True, validate=validate.Email())
Esempio n. 15
0
class FakeUserSchema(ma.ModelSchema):
    user_id = ma.Int()
    username = ma.Str()
Esempio n. 16
0
class CreateAuthorSchema(ma.Schema):
    first_name = ma.Str(required=True, validate=Length(max=100))
    middle_name = ma.Str(validate=Length(max=100), missing=None)
    last_name = ma.Str(validate=Length(max=100), missing=None)
    bio = ma.Str(validate=Length(max=100000), missing=None)
    books = ma.List(ma.Integer, missing=[])
Esempio n. 17
0
class CommentInputSchema(ma.Schema):
    content = ma.Str(required=True, validate=Length(min=1, max=100))
    upper_comment_id = ma.Integer(required=False, allow_none=True)
    is_anonymous = ma.Boolean(required=True)
Esempio n. 18
0
class CommentPatchInputSchema(ma.Schema):
    content = ma.Str(required=False, validate=Length(min=1, max=100))
Esempio n. 19
0
class GetEmailDuplicationSchema(ma.Schema):
    email = ma.Str(required=True, validate=validate.Email())
Esempio n. 20
0
class RatingsSchema(ma.Schema):
    rating = ma.Str()
    notes = ma.Str()
    book = ma.Nested(BookSchema)
Esempio n. 21
0
class DeleteUserSchema(ma.Schema):
    password = ma.Str(required=True, validate=validate.Length(min=8))
Esempio n. 22
0
class PostPatchInputValidateSchema(ma.Schema):
    content = ma.Str(required=False, validate=Length(min=1))
    title = ma.Str(required=False, validate=Length(min=1, max=30))
    images = ma.List(ma.String(validate=Length(max=100)), required=False)
Esempio n. 23
0
class PostPostInputValidateSchema(ma.Schema):
    content = ma.Str(required=True, validate=Length(min=1))
    title = ma.Str(required=True, validate=Length(min=1, max=30))
    images = ma.List(ma.String(validate=Length(max=100), required=True))
    is_anonymous = ma.Boolean(required=True)
Esempio n. 24
0
class CompanySchema(ma.Schema):
    company_name = ma.Str()
    company_url = ma.Str()
    company_street_address = ma.Str()
    country = ma.Str()
    company_description = ma.Str()
    categories = ma.List(ma.Str(), attribute="category")
    businesses = ma.List(ma.Str(), attribute="business")
    company_phone_number = ma.Str()
    company_website = ma.Str()
    company_email = ma.Str()
    contacts = ma.List(ma.Str())
Esempio n. 25
0
class EmailVerificationCodePostSchema(ma.Schema):
    verification_code = ma.Str(data_key="verification-code", required=True)
Esempio n. 26
0
class LoginSchema(ma.Schema):
    username = ma.Str(required=True, validate=Length(max=30))
    password = ma.Str(required=True, validate=Length(min=8))
Esempio n. 27
0
class GetUsernameDuplicationSchema(ma.Schema):
    username = ma.Str(required=True, validate=validate.Length(min=2, max=20))
Esempio n. 28
0
class TokenSchema(Schema):
    class Meta:
        unknown = INCLUDE

    token = ma.Str(required=True)
Esempio n. 29
0
class UserPutInputSchema(ma.Schema):
    username = ma.Str(required=True, validate=validate.Length(min=2, max=20))
    user_explain = ma.Str(required=True, validate=validate.Length(max=400))
    profile_image = ma.String(required=False,
                              allow_null=True,
                              validate=validate.Length(max=100))
Esempio n. 30
0
class UpdateAuthorSchema(ma.Schema):
    first_name = ma.Str(required=True, validate=Length(max=100))
    middle_name = ma.Str(validate=Length(max=100), missing=None)
    last_name = ma.Str(validate=Length(max=100), missing=None)
    bio = ma.Str(validate=Length(max=100000), missing=None)
    approved = ma.Boolean(missing=False)