Esempio n. 1
0
class ModelConnectionsCache(Document):
    meta = {
        "collection": "noc.inv.objectconnectionscache",
        "allow_inheritance": False,
        "indexes": ["model", ("type", "gender")]
    }
    # Connection type
    type = ObjectIdField()
    gender = StringField(choices=["s", "m", "f"])
    model = ObjectIdField()
    name = StringField()

    @classmethod
    def rebuild(cls):
        """
        Rebuild cache
        """
        nc = []
        for m in ObjectModel.objects.all():
            for c in m.connections:
                nc += [{
                    "type": c.type.id,
                    "gender": c.gender,
                    "model": m.id,
                    "name": c.name
                }]
        collection = ModelConnectionsCache._get_collection()
        collection.drop()
        if nc:
            collection.insert(nc)
Esempio n. 2
0
class OAuth2Client(Document):
    meta = {'collection': 'oauth2_client'}

    id = ObjectIdField(primary_key=True, required=True)
    client_id = StringField(required=True)
    account_id = ObjectIdField(required=True)
    secret = StringField(required=True)
    scopes = ListField(required=True)
    created_time = DateTimeField(default=datetime.utcnow())
Esempio n. 3
0
class Tips(mongoengine.DynamicDocument):
    """Tips Document Schema"""

    title = StringField(required=True)
    content = StringField(required=True)
    author = ObjectIdField(required=True)
    posted_time = DateTimeField(required=True)
    status = StringField(required=True)
    latitude = FloatField(required=True)
    longitude = FloatField(required=True)
    category = StringField(required=True)
    upvotes = ListField(ObjectIdField())
    downvotes = ListField(ObjectIdField())
Esempio n. 4
0
class Loan(Document):
    meta = {
      'collection': 'loans',
      'strict': False,
    }
    _id = ObjectIdField()
    borrower_id = ObjectIdField()
    loan_category = StringField()
    city = StringField()
    state = StringField()
    zip_code = StringField()
    stage = StringField()
    number = StringField()
    value = FloatField()
Esempio n. 5
0
class Answer(Document):
    '''
    测试
    :param id: 答案ID
    :param account_id: 用户ID
    :param test_id: 测试 id
    :param score: 分数
    :param status: 测试状态(pending|finished)
    :param created_time: 开始答题时间
    :param updated_time: 最后答题时间
    :param answers: 答案 {question_id: [options]}
    '''

    STATUS_FINISHED = 'finished'
    STATUS_PENDING = 'pending'

    id = ObjectIdField(primary_key=True)
    test_id = StringField(required=True)
    account_id = StringField(required=True)
    score = IntField(default=0)
    answers = DictField(default={})
    status = StringField(required=True, default=STATUS_PENDING)
    created_time = DateTimeField(default=datetime.utcnow())
    updated_time = DateTimeField()

    meta = {
        "collection_name":
        'answer',
        'indexes': [
            ('account_id', 'status', '-score'),
            ('account_id', 'status', '-updated_time'),
        ]
    }
Esempio n. 6
0
class Role(mongo.Document):
    name = StringField(required=True, max_length=50)
    guard_name = StringField(max_length=50, default="api")
    created_at = DateTimeField(default=datetime.datetime.now)
    updated_at = DateTimeField(null=True)
    profile_ids = ListField(ObjectIdField())

    meta = {"collection": 'roles'}

    def __str__(self):
        return self.name

    @staticmethod
    def input_roles():
        return [
            'Super Admin',
            'Admin',
            'Moderator',
            'Citizen',
            'State Admin',
            'District Admin',
            'ULB Admin',
            'Civic Agency Admin',
            'Civic Agency User',
            'Engineer',
            'Escalations Engineer',
            'MP',
            'MLA',
            'Corporator',
            'SQS admin',
            'Nodal Officer',
            'MOUH',
            'Event Admin',
            'Event Moderator',
        ]
Esempio n. 7
0
class Account(Document):
    '''
    帐号
    :param _id: account ID
    :param username: 用户ID
    :param created_time: 创建时间
    :param password: 密码
    :param authentications: 认证信息 {'wxapp': 'openid', 'mobile': 'mobile_num'}
    :param status: 状态(active|发布|forbidden)
    '''

    meta = {
        'collection': 'account',
        'indexes': [
            '$username',  # text index
        ]
    }

    id = ObjectIdField(primary_key=True, required=True)
    nickname = StringField(required=True)
    avatar = StringField(required=True)
    username = StringField()
    password = StringField()
    authentications = EmbeddedDocumentField(Authentications)
    created_time = DateTimeField(default=datetime.utcnow())
    updated_time = DateTimeField()

    @classmethod
    def get_by_wxapp(cls, openid):
        try:
            account = cls.objects(authentications__wxapp=openid).first()
            return account
        except Exception as e:
            print(e)
            return None
Esempio n. 8
0
class EmailJob(EmbeddedDocument):
    job_id = ObjectIdField()
    subject = StringField()
    emails = EmbeddedDocumentListField(Email)
    type = StringField(choices=["Manual", "Scheduled"])
    initiated_at = DateTimeField(default=datetime.utcnow)
    included_feedback = BooleanField()
Esempio n. 9
0
class Cluster(Document):
    meta = {"collection": "clusters"}
    ID = ObjectIdField(primary_key=True)
    value = StringField()
    label = StringField()
    status = StringField()
    containers = ListField(ReferenceField(Container))
Esempio n. 10
0
class Posts(Document):
    post_id = IntField()
    username = StringField()
    author_id = ObjectIdField()
    created = DateTimeField(default=datetime.datetime.utcnow)
    title = StringField()
    body = StringField()
Esempio n. 11
0
class Capability(Document):
    meta = {
        "collection": "noc.inv.capabilities",
        "json_collection": "inv.capabilities"
    }
    name = StringField(unique=True)
    uuid = UUIDField(binary=True)
    description = StringField(required=False)
    type = StringField(choices=["bool", "str", "int", "float"])
    category = ObjectIdField()

    def __unicode__(self):
        return self.name

    @property
    def json_data(self):
        r = {
            "name": self.name,
            "$collection": self._meta["json_collection"],
            "uuid": self.uuid,
            "description": self.description,
            "type": self.type
        }
        return r

    def to_json(self):
        return to_json(
            self.json_data,
            order=["name", "$collection", "uuid", "description", "type"])

    def get_json_path(self):
        p = [quote_safe_path(n.strip()) for n in self.name.split("|")]
        return os.path.join(*p) + ".json"
Esempio n. 12
0
class ObjectLog(Document):
    meta = {
        "collection": "noc.objectlog",
        "strict": False,
        "auto_create_index": False,
        "indexes": ["object"]
    }

    # Inventory object reference
    object = ObjectIdField()
    # Timestamp
    ts = DateTimeField()
    # Username
    user = StringField()
    # NOC subsystem
    system = StringField()
    # Managed object name
    managed_object = StringField()
    # Operation
    # * CREATE - Object created
    # * CHANGE - Object changed
    # * CONNECT - Object connected
    # * DISCONNECT - Object disconnected
    # * INSERT - Object moved into container
    # * REMOVE - Object removed from container
    op = StringField()
    # Message
    message = StringField()
Esempio n. 13
0
class ChatMessage(Document):
    meta = {"collection": "chatmessages"}

    user = StringField(required=True)
    message = StringField(required=True)
    timestamp = DateTimeField(required=False)
    chat_id = ObjectIdField(required=True)
Esempio n. 14
0
class LayerUserSettings(Document):
    meta = {
        "collection": "noc.layerusersettings",
        "allow_inheritance": False
    }
    # User Id
    user = IntField()
    # Layer Id
    layer = ObjectIdField()
    # Visibility
    is_visible = BooleanField(default=True)

    @classmethod
    def is_visible_by_user(cls, user, layer):
        s = LayerUserSettings.objects.filter(user=user.id, layer=layer.id).first()
        if s:
            return s.is_visible
        else:
            return True

    @classmethod
    def set_layer_visibility(cls, user, layer, status):
        s = LayerUserSettings.objects.filter(user=user.id, layer=layer.id).first()
        if not s:
            s = LayerUserSettings(user=user.id, layer=layer.id)
        s.is_visible = status
        s.save()
Esempio n. 15
0
class Vulnerability(Document):
    meta = {"collection": "vulnerabilities"}
    ID = ObjectIdField(primary_key=True)
    value = StringField()
    label = StringField()
    type = StringField()
    exploitDbUrl = URLField()
Esempio n. 16
0
class Credential(Document):
    meta = {"collection": "credentials"}
    ID = ObjectIdField()
    username = StringField()
    password = StringField()
    publicKey = StringField()
    privateKey = StringField()
Esempio n. 17
0
class ObjectFile(Document):
    """
    Inventory object
    """
    meta = {
        "collection": "noc.objectfiles",
        "strict": False,
        "auto_create_index": False,
        "indexes": ["object"]
    }

    object = ObjectIdField()
    name = StringField()
    file = FileField()
    ts = DateTimeField()
    description = StringField()
    size = IntField()
    mime_type = StringField()

    def __unicode__(self):
        return unicode(self.name or self.id)

    def delete_file(self):
        if self.file:
            self.file.delete()

    @classmethod
    def delete_files(cls, sender, document, target=None):
        for o in ObjectFile.objects.filter(object=document.id):
            o.delete_file()
            o.delete()

    @classmethod
    def on_delete(cls, sender, document, target=None):
        document.delete_file()
Esempio n. 18
0
class Subscription(Document):
    meta = {"collection": "subscriptions"}
    ID = ObjectIdField()
    stripeCustomerPlan = StringField()
    stripeCustomerId = StringField()
    stripeCustomerSubscriptionId = StringField()
    active = BooleanField()
Esempio n. 19
0
class Service(Document):
    meta = {"collection": "services"}
    ID = ObjectIdField()
    value = StringField()
    label = StringField()
    type = StringField()
    applications = ListField(ReferenceField(Application))
Esempio n. 20
0
class Question(Document):
    meta = {"collection": "questions"}
    ID = ObjectIdField()
    solutions = ReferenceField(Solution)
    scope = ReferenceField(Scope)
    attempts = IntField()
    value = StringField()
Esempio n. 21
0
class StrainProject(EmbeddedDocument):
    _id = ObjectIdField()
    name = StringField(required=True)
    description = StringField(default="")
    date = DateTimeField(default=datetime.datetime.now)
    strains = ListField(StringField())
    trees = ListField(DictField())
    user = StringField(default="demo")
Esempio n. 22
0
class Metric(Document):
    meta = {"collection": "metrics"}
    ID = ObjectIdField()
    uptime = DateTimeField()
    downtime = DateTimeField()
    activeUsers = IntField()
    purchases = IntField()
    revenue = FloatField()
Esempio n. 23
0
class Application(Document):
    meta = {"collection": "applications"}
    ID = ObjectIdField()
    name = StringField()
    version = StringField()
    configuration = ReferenceField(Configuration)
    questions = ListField(ReferenceField(Question))
    dummies = ListField(ReferenceField(Dummy))
Esempio n. 24
0
class InformationTypes(Document):

    name = StringField(max_length=100, required=True)
    security_reasoning = StringField(max_length=2000, null=True)
    triad_rating = DictField(required=True)
    information_categories = ListField(field=ObjectIdField())

    meta = {'collection': settings.COLLECTION_NAMES.get('information_types')}
Esempio n. 25
0
class Application(BaseDocument):
    client_id = ObjectIdField(required=True)
    name = StringField(required=True)
    description = StringField()
    type = StringField(choices=APPLICATION_TYPES)
    is_active = BooleanField(default=True)

    
Esempio n. 26
0
class Capability(Document):
    meta = {
        "collection": "noc.inv.capabilities",
        "strict": False,
        "auto_create_index": False,
        "json_collection": "inv.capabilities",
        "json_unique_fields": ["name", "uuid"],
    }
    name = StringField(unique=True)
    uuid = UUIDField(binary=True)
    description = StringField(required=False)
    type = StringField(choices=["bool", "str", "int", "float"])
    # Jinja2 template for managed object's card tags
    card_template = StringField(required=False)
    category = ObjectIdField()

    _id_cache = cachetools.TTLCache(maxsize=1000, ttl=60)
    _name_cache = cachetools.TTLCache(maxsize=1000, ttl=60)

    def __str__(self):
        return self.name

    @classmethod
    @cachetools.cachedmethod(operator.attrgetter("_id_cache"),
                             lock=lambda _: id_lock)
    def get_by_id(cls, id):
        return Capability.objects.filter(id=id).first()

    @classmethod
    @cachetools.cachedmethod(operator.attrgetter("_name_cache"),
                             lock=lambda _: id_lock)
    def get_by_name(cls, name):
        return Capability.objects.filter(name=name).first()

    @property
    def json_data(self):
        r = {
            "name": self.name,
            "$collection": self._meta["json_collection"],
            "uuid": self.uuid,
            "description": self.description,
            "type": self.type,
            "card_template": self.card_template,
        }
        return r

    def to_json(self):
        return to_json(
            self.json_data,
            order=[
                "name", "$collection", "uuid", "description", "type",
                "card_template"
            ],
        )

    def get_json_path(self):
        p = [quote_safe_path(n.strip()) for n in self.name.split("|")]
        return os.path.join(*p) + ".json"
Esempio n. 27
0
class Bike(Document):
    meta = {"collection": "bike"}
    ID = ObjectIdField()
    name = StringField()
    brand = StringField()
    year = StringField()
    size = ListField(StringField())
    wheel_size = FloatField()
    type = StringField()
Esempio n. 28
0
class Unit(Document):
    ID = ObjectIdField()
    title = StringField(unique=True, required=True)
    about = ListField(StringField())
    description = StringField()
    image_url = URLField()
    date_created = DateTimeField(default=datetime.utcnow)
    position = IntField(default=0, required=True)
    slug = StringField(unique=True, required=True)
Esempio n. 29
0
class LightPollution(Document):

    meta = {"collection": "lightpollution"}

    ID = ObjectIdField()
    sourceposition = ListField()
    targetPosition = ListField()
    longitude = FloatField()
    latitude = FloatField()
Esempio n. 30
0
class Weather(Document):

    meta = {"db_alias": "db_weather", "collection": "weather"}
    _id = ObjectIdField()
    country = StringField()
    time_pulled = DateTimeField(default=datetime.now)
    currentsummary = StringField()
    weeklysummary = StringField()
    dailysummary = StringField()