Ejemplo n.º 1
0
class Shelf(typesystem.Schema):
    id = typesystem.Integer(allow_null=True)
    organization = typesystem.Reference(Organization, allow_null=True)
    size = typesystem.Integer(allow_null=True)

    async def get_object(self) -> warehouse_models.Shelf:
        return await warehouse_models.Shelf.objects.get(id=self.id)
Ejemplo n.º 2
0
    def __init__(self, username, table, columns=None):
        self.name = table["name"]
        self.url = url_for("table",
                           username=username,
                           table_id=table["identity"])
        self.username = username
        self.table = table
        self.columns = columns
        self.query_limit = None
        self.query_offset = None
        self.uuid_filter = None
        self.search_term = None
        self.sort_func = None
        self.sort_reverse = False

        if columns is not None:
            fields = {}
            for column in columns:
                if column["datatype"] == "string":
                    fields[column["identity"]] = typesystem.String(
                        title=column["name"], max_length=100)
                elif column["datatype"] == "integer":
                    fields[column["identity"]] = typesystem.Integer(
                        title=column["name"])
            self.schema = type("Schema", (typesystem.Schema, ), fields)
Ejemplo n.º 3
0
class Organization(typesystem.Schema):
    id = typesystem.Integer(allow_null=True)
    name = typesystem.String(max_length=50, allow_blank=True)
    user = typesystem.Reference(users_serializers.UserRef, allow_null=True)

    async def get_object(self) -> warehouse_models.Organization:
        return await warehouse_models.Organization.objects.get(id=self.id)
Ejemplo n.º 4
0
class AuthenticationResultType(typesystem.Schema):
    AccessToken = typesystem.String(pattern=r"[A-Za-z0-9_=.-]+")
    ExpiresIn = typesystem.Integer()
    TokenType = typesystem.String()
    RefreshToken = typesystem.String(pattern=r"[A-Za-z0-9_=.-]+")
    IdToken = typesystem.String(pattern=r"[A-Za-z0-9_=.-]+")
    NewDeviceMetadata = typesystem.Reference(NewDeviceMetadataType,
                                             allow_null=True)
Ejemplo n.º 5
0
class JSONRPCResponse(typesystem.Schema):
    jsonrpc = typesystem.String(pattern="2.0", trim_whitespace=False)
    id = typesystem.Union(any_of=[
        typesystem.String(allow_null=True, min_length=1,
                          trim_whitespace=False),
        typesystem.Integer(allow_null=True),
    ])
    result = typesystem.Object()
Ejemplo n.º 6
0
class JSONRPCRequest(typesystem.Schema):
    jsonrpc = typesystem.String(pattern="2.0", trim_whitespace=False)
    id = typesystem.Union(
        any_of=[
            typesystem.String(allow_null=True, min_length=1, trim_whitespace=False),
            typesystem.Integer(allow_null=True),
        ]
    )
    params = typesystem.Union(
        any_of=[typesystem.Object(additional_properties=True), typesystem.Array()]
    )
    method = typesystem.String()
Ejemplo n.º 7
0
class Settings(BaseSchema):
    enforce_https = typesystem.Boolean(default=False)
    mode = typesystem.Choice(
        choices=(
            ("proxy", "Proxy"),
            ("redirect", "Redirect"),
        ),
        default="proxy",
    )
    headers = typesystem.Object(default={}, properties=typesystem.String(max_length=100))
    ttl = typesystem.Integer(allow_null=True)
    certificate_path = typesystem.String(allow_null=True)
    key_path = typesystem.String(allow_null=True)
Ejemplo n.º 8
0
class Config(typesystem.Schema):
    port = typesystem.Integer()
    logLevel = typesystem.Choice(
        title="LogLevel",
        choices=[(x, x)
                 for x in ["debug", "info", "warn", "error", "critical"]],
    )
    # not supported
    # secondary = typesystem.Reference(
    #     to="Config", allow_null=True, definitions=definitions
    # )
    xxxAPI = typesystem.Reference(to=XXXAPI,
                                  allow_null=True,
                                  definitions=definitions)
Ejemplo n.º 9
0
class Transaction(typesystem.Schema):
    sender = typesystem.String(title='Sender account', format='uuid')
    recipient = typesystem.String(title='Recipient account', format='uuid')
    amount = typesystem.Integer(title='Transaction amount', exclusive_minimum=0)
    label = typesystem.String(title='Label', max_length=100, default='')
    created_at = typesystem.DateTime(title='Date created', default=datetime.utcnow())

    @classmethod
    def validate(cls, *args, **kwargs):
        ret = super().validate(*args, **kwargs)
        if ret['sender'] == ret['recipient']:
            raise typesystem.ValidationError(
                text='Sender and recipient account should be different',
                code='identical_accounts'
            )
        return ret
Ejemplo n.º 10
0
def app():
    users = dashboard.MockDataSource(
        schema=typesystem.Schema(
            fields={
                "pk":
                typesystem.Integer(title="Identity",
                                   read_only=True,
                                   default=dashboard.autoincrement()),
                "username":
                typesystem.String(title="Username", max_length=100),
                "is_admin":
                typesystem.Boolean(title="Is Admin", default=False),
                "joined":
                typesystem.DateTime(title="Joined",
                                    read_only=True,
                                    default=datetime.datetime.now),
            }),
        initial=[{
            "username": f"user{i}@example.org",
            "is_admin": False,
        } for i in range(123)],
    )

    user_table = dashboard.DashboardTable(ident="users",
                                          title="Users",
                                          datasource=users)
    admin = dashboard.Dashboard(tables=[user_table])

    return Starlette(routes=[
        Mount(
            "/admin",
            admin,
            name="dashboard",
        ),
        Mount("/statics", ..., name="static"),
    ])
Ejemplo n.º 11
0
 class Example(typesystem.Schema):
     field = typesystem.Integer(default=0)
Ejemplo n.º 12
0
class Product(typesystem.Schema):
    name = typesystem.String(max_length=100, allow_blank=False)
    rating = typesystem.Integer(default=None)
Ejemplo n.º 13
0
 class Album(typesystem.Schema):
     title = typesystem.String(max_length=100)
     release_year = typesystem.Integer()
     artist = typesystem.Reference(Artist, allow_null=True)
Ejemplo n.º 14
0
class ErrorSchema(typesystem.Schema):
    code = typesystem.Integer()
    message = typesystem.String()
    data = typesystem.Object(additional_properties=True)
Ejemplo n.º 15
0
class Wallet(typesystem.Schema):
    id = typesystem.String(title='Wallet ID')
    name = typesystem.String(title='Wallet name')
    balance = typesystem.Integer(title='Balance in pennies')
    last_transaction = typesystem.DateTime(title='Last transaction')
Ejemplo n.º 16
0
class Player(typesystem.Schema):
    name = typesystem.String()
    age = typesystem.Integer()
Ejemplo n.º 17
0
 class FooSchema(typesystem.Schema):
     a = typesystem.Integer()
Ejemplo n.º 18
0
 class NumberName(typesystem.Schema):
     pair = typesystem.Array([typesystem.Integer(), typesystem.String()])
Ejemplo n.º 19
0
 class MealSchedule(typesystem.Schema):
     guest_id = typesystem.Integer()
     breakfast_at = typesystem.Time()
     dinner_at = typesystem.Time(allow_null=True)
Ejemplo n.º 20
0
class UserRef(typesystem.Schema):
    id = typesystem.Integer()

    async def get_object(self) -> users_models.User:
        return await users_models.User.objects.get(id=self.id)
Ejemplo n.º 21
0
class GameGuessSerializer(typesystem.Schema):
    number0 = typesystem.Integer(minimum=0, maximum=3)
    number1 = typesystem.Integer(minimum=0, maximum=3)
    number2 = typesystem.Integer(minimum=0, maximum=3)
Ejemplo n.º 22
0
     "items":
     JSON_SCHEMA,  # TODO: Should actually be a restricted subset
     "collectionFormat":
     typesystem.Choice(choices=["csv", "ssv", "tsv", "pipes", "multi"]),
     "default":
     typesystem.Any(),
     "maximum":
     typesystem.Number(),
     "exclusiveMaximum":
     typesystem.Boolean(),
     "minimum":
     typesystem.Number(),
     "exclusiveMinimum":
     typesystem.Boolean(),
     "maxLength":
     typesystem.Integer(),
     "minLength":
     typesystem.Integer(),
     "pattern":
     typesystem.String(allow_blank=True),
     "maxItems":
     typesystem.Integer(),
     "minItems":
     typesystem.Integer(),
     "uniqueItems":
     typesystem.Boolean(),
     "enum":
     typesystem.Array(items=typesystem.Any()),
     "multipleOf":
     typesystem.Integer(),
 },
Ejemplo n.º 23
0
 class Album(typesystem.Schema):
     title = typesystem.String(max_length=100)
     release_year = typesystem.Integer()
     artist = typesystem.Nested(Artist)
Ejemplo n.º 24
0
 class BarSchema(typesystem.Schema):
     id = typesystem.Integer(allow_null=True)
     foo = typesystem.Reference(to=FooSchema)
Ejemplo n.º 25
0
 class Example(typesystem.Schema):
     field = typesystem.Integer(allow_null=True, default=0)
Ejemplo n.º 26
0
 class Guest(typesystem.Schema):
     id = typesystem.Integer()
     name = typesystem.String()
     check_in = typesystem.DateTime()
     check_out = typesystem.DateTime(allow_null=True)
Ejemplo n.º 27
0
class Person(typesystem.Schema):
    name = typesystem.String(max_length=100, allow_blank=False)
    age = typesystem.Integer()
Ejemplo n.º 28
0
 class Album(typesystem.Schema):
     title = typesystem.String(max_length=100)
     release_year = typesystem.Integer()
     artists = typesystem.Array(items=typesystem.Reference(Artist))
Ejemplo n.º 29
0
JSON_SCHEMA = (
    typesystem.Object(
        properties={
            "$ref":
            typesystem.String(),
            "type":
            typesystem.String() | typesystem.Array(items=typesystem.String()),
            "enum":
            typesystem.Array(unique_items=True, min_items=1),
            "definitions":
            typesystem.Object(additional_properties=typesystem.Reference(
                "JSONSchema", definitions=definitions)),
            # String
            "minLength":
            typesystem.Integer(minimum=0),
            "maxLength":
            typesystem.Integer(minimum=0),
            "pattern":
            typesystem.String(format="regex"),
            "format":
            typesystem.String(),
            # Numeric
            "minimum":
            typesystem.Number(),
            "maximum":
            typesystem.Number(),
            "exclusiveMinimum":
            typesystem.Number(),
            "exclusiveMaximum":
            typesystem.Number(),
Ejemplo n.º 30
0
class Box(typesystem.Schema):
    id = typesystem.Integer(allow_null=True)
    shelf = typesystem.Reference(Shelf, allow_null=True)

    async def get_object(self) -> warehouse_models.Box:
        return await warehouse_models.Box.objects.get(id=self.id)