Example #1
0
class PendingRepairDataModel(Model):
    Data = DictionaryField("d",
                           default=ModelDefaultValueExt.Required,
                           allow_none=False)
    MissingKeys = ArrayField("m",
                             str,
                             default=ModelDefaultValueExt.Required,
                             allow_none=False)
Example #2
0
class ChannelCollectionModel(Model):
    DefaultName = TextField("dn",
                            default=ModelDefaultValueExt.Required,
                            must_have_content=True)
    Name = DictionaryField("n", allow_none=False, default={})
    Platform = PlatformField("p", default=ModelDefaultValueExt.Required)
    Token = TextField("t",
                      default=ModelDefaultValueExt.Required,
                      must_have_content=True)
    BotAccessible = BooleanField("acc", default=True)
    ChildChannelOids = ArrayField("ch", ObjectId)
Example #3
0
class APIStatisticModel(Model):
    Timestamp = DateTimeField("t",
                              default=ModelDefaultValueExt.Required,
                              allow_none=False)
    SenderOid = ObjectIDField("sd",
                              default=ModelDefaultValueExt.Optional,
                              allow_none=True,
                              stores_uid=True)
    ApiAction = APICommandField("a")
    Parameter = DictionaryField("p", allow_none=True)
    PathParameter = DictionaryField("pp", allow_none=True)
    Response = DictionaryField("r", allow_none=True)
    Success = BooleanField("s", allow_none=True)
    PathInfo = TextField("pi",
                         default=ModelDefaultValueExt.Required,
                         must_have_content=True,
                         allow_none=False)
    PathInfoFull = TextField("pf",
                             default=ModelDefaultValueExt.Required,
                             must_have_content=True,
                             allow_none=False)
Example #4
0
class ChannelProfileModel(Model):
    # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    # !!! Check `ProfileManager.process_create_profile_kwargs` when changing the variable name of this class. !!!
    # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    ChannelOid = ObjectIDField("c", default=ModelDefaultValueExt.Required)
    Name = TextField("n", default="-", must_have_content=True)
    Color = ColorField("col")
    # 0 means no need to vote, > 0 means # votes needed to get this profile
    PromoVote = IntegerField("promo", positive_only=True)
    Permission = DictionaryField(
        "perm",
        default=ProfilePermissionDefault.get_default_code_str_dict(),
        allow_none=False)
    PermissionLevel = PermissionLevelField("plv")

    EmailKeyword = ArrayField("e-kw", str)

    @property
    def is_mod(self):
        return self.permission_level >= PermissionLevel.MOD

    @property
    def is_admin(self):
        return self.permission_level >= PermissionLevel.ADMIN

    @property
    def permission_list(self) -> List[ProfilePermission]:
        ret = set()

        for cat, permitted in self.permission.items():
            if permitted:
                perm = ProfilePermission.cast(cat, silent_fail=True)
                if perm:
                    ret.add(perm)

        ret = ret.union(
            ProfilePermissionDefault.get_overridden_permissions(
                self.permission_level))

        return list(sorted(ret, key=lambda x: x.code))

    def pre_iter(self):
        # Will be used when the data will be passed to MongoDB
        d = [
            p.code_str
            for p in ProfilePermissionDefault.get_overridden_permissions(
                self.permission_level)
        ]

        for perm_cat in ProfilePermission:
            k = perm_cat.code_str
            if k not in self.permission:
                self.permission[k] = k in d
Example #5
0
class ChannelModel(Model):
    Platform = PlatformField("p", default=ModelDefaultValueExt.Required)
    Token = TextField("t",
                      default=ModelDefaultValueExt.Required,
                      must_have_content=True)
    Name = DictionaryField("n", allow_none=False, default={})
    Config = ModelField("c", ChannelConfigModel)
    BotAccessible = BooleanField("acc", default=True)

    def get_channel_name(self, root_oid: ObjectId):
        oid_str = str(root_oid)

        if oid_str in self.name:
            return self.name[oid_str]
        else:
            return self.config.default_name or self.token
Example #6
0
class ModelTest(Model):
    FModel = ModelField("m", SubModel)
    FInt = IntegerField("i", default=ModelDefaultValueExt.Required)
    FModelArray = ModelArrayField("ma",
                                  SubModel,
                                  default=ModelDefaultValueExt.Optional)
    FDict = DictionaryField("d")
    FFloat = FloatField("f", default=7.5)
    FBool = BooleanField("b")
    FUrl = UrlField("u", default=ModelDefaultValueExt.Optional)
    FText = TextField("t")
    FOid = ObjectIDField("o")
    FGeneral = GeneralField("g")
    FDatetime = DateTimeField("dt")
    FColor = ColorField("c")
    FArray = ArrayField("a", int, default=[17, 21])
    FArContent = AutoReplyContentTypeField("ac")
Example #7
0
 def get_field(self) -> BaseField:
     return DictionaryField("k", allow_none=True)
Example #8
0
 def get_field(self) -> BaseField:
     return DictionaryField("k")
Example #9
0
 def get_field(self) -> BaseField:
     return DictionaryField("k", auto_cast=False)
Example #10
0
 def test_repair_d(self):
     self.missing_has_default("d", {"d": DictionaryField.none_obj()})