class CloudAccount(Document):

    meta = {'collection': 'cloud_account'}
    uid = StringField()
    name = StringField()
    customer = ReferenceField(Customer)
    cloud_provider = ReferenceField(CloudProvider)

    def to_dict(self):

        data = self.to_mongo().to_dict()

        if self.customer:
            data["customer"] = {
                key: self.customer[key]
                for key in Customer._fields if key != "id"
            }
            data["customer_uid"] = data["customer"]["uid"]
        if self.cloud_provider:
            data["cloud_provider"] = {
                key: self.cloud_provider[key]
                for key in CloudProvider._fields if key != "id"
            }
            data["cloud_provider_uid"] = data["cloud_provider"]["uid"]

        return data
Пример #2
0
class Guy(DynamicDocument):
    meta = {'collection': 'guys'}

    ref_id = StringField()
    ref_name = StringField()

    name = StringField()
    email = EmailField()
    pages_today = IntField(default=0)
    pages_total = IntField(default=0)
    shares_today = IntField(default=0)
    updated = DateTimeField(default=datetime.now())
    earnings = FloatField()
    level = IntField()

    ref = ReferenceField('Guy')
    refs = ListField(ReferenceField('Guy'))

    def next_ref_name(self, n):
        return '{}_{}'.format(self.ref_name, n)

    def next_email(self, n):
        name, domain = self.email.split('@')
        return '@'.join(['{}+{}'.format(name, n), domain])

    def __repr__(self):
        return 'Guy({})'.format(str(self.to_json()))
Пример #3
0
class Review(Document):
    meta = {"collection": "review"}

    date = DateTimeField(default=datetime.now)
    rating = DecimalField()
    organization = ReferenceField(Organization)
    user = ReferenceField(UserAccount)
Пример #4
0
class Project(Document):
    meta = {"collection": "project"}

    location = IntField()
    number_participants = IntField()
    organization = ReferenceField(Organization)
    part_of = ReferenceField("Project")
Пример #5
0
class EmojiDownloads(Document):
    emoji = ReferenceField(Emoji)
    user = ReferenceField(User)
    country = ReferenceField(Country)
    region = StringField()
    date_created = DateTimeField(default=datetime.datetime.utcnow)
    date_modified = DateTimeField(default=datetime.datetime.utcnow)
Пример #6
0
class User(Document):
    meta = {"collection": "users"}
    username = StringField()
    email = StringField()
    posts = ListField(ReferenceField('Post'))
    friends = ListField(ReferenceField('User'))
    datetime_created = DateTimeField()
Пример #7
0
class Playing(Document):
    """
    At a given time, a media source could play multiple Campaigns.
    The time is captured as start and end, where the relationship is valid.
    This class realizes a  relationship.

    If the media owner decides to abrupt the campaign, he sets the flag
    is_valid to False through Media dash-board. deletion_date will be updated
    for records.
    """
    # for e.g. Mall's default source
    primary_media_source = ReferenceField('MediaSource', required=False)
    playing_content = ReferenceField('Campaign', default=None, required=False)
    # for e.g. VOD, OOH, Sensor etc.
    source_type = StringField()
    # official start-end date
    start_date = DateTimeField(default=datetime.now())
    end_date = DateTimeField()
    # forceful setting of the play flag
    pause_playing = BooleanField(default=False)
    # book-keeping entries
    creation_date = DateTimeField(default=datetime.now())
    deletion_date = DateTimeField()

    # Status
    state = StringField(required=False)

    # vendor book-keeping (campaign-id, sensor-id, zone-id etc.)
    playing_vendor_attributes = DictField(required=False)

    def get_absolute_url(self):
        return "/mediacontent/playing/%i/" % self.id
Пример #8
0
class CloudAccount(Document):

    meta = {'collection': 'cloud_account'}
    uid = StringField() # 3xm-security
    name = StringField() # 3XM Organizations Security
    customer = ReferenceField(Customer)
    cloud_provider = ReferenceField(CloudProvider)
Пример #9
0
class ExtractEventsJob(Job):
    session = ReferenceField(Session)
    event_query = EmbeddedDocumentField(DataModelQuery)
    analytic_result = ReferenceField(AnalyticResult)
    analytic = ReferenceField(Analytic)
    mode = StringField(default=Analytic.FIRST_PASS, choices=Analytic.modes)

    def __init__(self, *args, **values):
        super(ExtractEventsJob, self).__init__(*args, **values)

        if self.session is None:
            self.session = self.analytic_result.session
        if self.analytic is None:
            self.analytic = self.analytic_result.analytic
        if self.uuid is None:
            self.uuid = self.get_uuid()

    def get_uuid_tuple(self):
        return self.analytic_result.id, hash(lift_query(self.event_query))

    def run(self):
        self.update_start()
        query_context = self.get_query_context()

        event_class = self.event_query.object
        event_action = self.event_query.action

        for result in query_context.query(self.event_query):
            event = event_class.update_existing(action=event_action, **result)
            self.update(add_to_set__events=event, inc__count=1)
            self.analytic_result.update(add_to_set__events=event)
            if self.mode in (Analytic.FIRST_PASS, Analytic.SECOND_PASS):
                investigate_job = InvestigateJob.update_existing(
                    event=event, session=self.session, user=self.user)
                investigate_job.submit()
Пример #10
0
class ServiceProfile(Document):
    meta = {
        "collection": "noc.serviceprofiles",
        "strict": False,
        "auto_create_index": False
    }
    name = StringField(unique=True)
    description = StringField()
    # Jinja2 service label template
    card_title_template = StringField()
    # Short service code for reporting
    code = StringField()
    # FontAwesome glyph
    glyph = StringField()
    # Glyph order in summary
    display_order = IntField(default=100)
    # Show in total summary
    show_in_summary = BooleanField(default=True)
    workflow = PlainReferenceField(Workflow)
    # Auto-assign interface profile when service binds to interface
    interface_profile = ReferenceField(InterfaceProfile)
    # Alarm weight
    weight = IntField(default=0)
    # Capabilities
    caps = ListField(EmbeddedDocumentField(CapsItem))
    # Integration with external NRI and TT systems
    # Reference to remote system object has been imported from
    remote_system = ReferenceField(RemoteSystem)
    # Object id in remote system
    remote_id = StringField()
    # Object id in BI
    bi_id = LongField(unique=True)
    # Labels
    labels = ListField(StringField())
    effective_labels = ListField(StringField())

    _id_cache = cachetools.TTLCache(maxsize=100, 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 ServiceProfile.objects.filter(id=id).first()

    def on_save(self):
        if not hasattr(self, "_changed_fields"
                       ) or "interface_profile" in self._changed_fields:
            call_later(
                "noc.sa.models.serviceprofile.refresh_interface_profiles",
                sp_id=self.id,
                ip_id=self.interface_profile.id
                if self.interface_profile else None,
            )

    @classmethod
    def can_set_label(cls, label):
        return Label.get_effective_setting(label, "enable_serviceprofile")
Пример #11
0
class SmallGraph(Document):
    meta = {'collection': 'bigGraph'}
    node1 = ReferenceField(Nodes)
    type = StringField()
    node2 = ReferenceField(Nodes)
    weight = FloatField()
    rank = IntField()
Пример #12
0
class AmenityExtension(Document):
    """
    Each Mediaaggregate instance can be supplemented using
    different extension. And it is purely based on the
    choice of the Mediaaggregate owner.
    For example, adding or listing brands in a shopping mall.
    or listing the retail extensions in a Shopping mall.
    """
    ex_name = StringField()
    ex_type = StringField()
    userref = ReferenceField('MediaUser')
    amenityref = ReferenceField('MediaAggregate')
    common_name = StringField(required=True)
    image_url = StringField(required=False)
    image = ReferenceField('JpegImageContent', required=False)
    valid_from = DateTimeField(default=datetime.now())
    category = StringField(required=False)
    tagwords = StringField(required=False)
    # Contact details
    phone_numbers = ListField()
    email = StringField()
    # Exact location where the services are offered. (optional)
    point = GeoPointField(required=False)
    # meta
    meta = {'allow_inheritance': True}

    class Meta:
        abstract = True
Пример #13
0
class OOHMediaSource(MediaSource):
    """
    Out of house advertising media type.
    """
    type = 'ooh'
    point = GeoPointField()
    # Uniquely identify OOH instance
    # by location
    location_hash = StringField()

    # Basic attributes
    street_name = StringField()
    city = StringField()
    state = StringField()
    country = StringField()
    pin = StringField()

    # Other attributes
    # 40,30
    size = ListField(default=[])
    lighting_type = StringField()
    ooh_type = StringField()
    area = FloatField()
    min_booking_days = FloatField(default=15.0)

    # Pricing
    pricing = ReferenceField('Pricing', required=False)
    # Bookings
    booking = ReferenceField('Booking', required=False)
    # Advanced parameters
    image_url = StringField()
    primary_image_content = ReferenceField('JpegImageContent')

    def get_absolute_url(self):
        return "/mediasource/ooh/%i/" % self.id
Пример #14
0
class MediaSource(Document):
    """
    Different types of media we integrate our solution with.
    """
    # Basic properties
    name = StringField()
    display_name = StringField()
    caption = StringField(required=False)
    type = StringField()
    # tag data
    tags = StringField(required=False)
    # Can display
    enabled = BooleanField(default=True, required=False)
    # Verification,
    verified = BooleanField(default=False)
    verified_by = ReferenceField('MediaUser', required=False)
    # Media Owner
    owner = ReferenceField('MediaUser', required=False)
    # Creation attributes
    operated_by = ReferenceField('MediaUser', required=False)
    created_time = DateTimeField(default=datetime.now())
    updated_time = DateTimeField(required=False)
    # Subscription details
    #     subscription = ReferenceField('Subscription', required=False)

    meta = {'allow_inheritance': True}

    class Meta:
        abstract = True

    def get_absolute_url(self):
        return "/mediasource/%i/" % self.id
Пример #15
0
class Activity(Document):
    """Activity - a model defined in OpenAPI

    :param id: The id of this Activity.  # noqa: E501
    :type id: str
    :param used: The used of this Activity.  # noqa: E501
    :type used: List[Reference]
    :param generated: The generated of this Activity.  # noqa: E501
    :type generated: List[Reference]
    :param agents: The agents of this Activity.  # noqa: E501
    :type agents: List[Agent]
    :param created_by: The created_by of this Activity.  # noqa: E501
    :type created_by: str
    :param etag: The etag of this Activity.  # noqa: E501
    :type etag: str
    :param modified_on: The modified_on of this Activity.  # noqa: E501
    :type modified_on: datetime
    :param modified_by: The modified_by of this Activity.  # noqa: E501
    :type modified_by: str
    :param created_on: The created_on of this Activity.  # noqa: E501
    :type created_on: datetime
    :param name: The name of this Activity.  # noqa: E501
    :type name: str
    :param description: The description of this Activity.  # noqa: E501
    :type description: str
    """
    meta = {'collection': 'activities'}
    activity_id = StringField(unique=True, default='')
    used = ListField(ReferenceField('Reference'), required=True, default=[])
    generated = ListField(ReferenceField('Reference'),
                          required=True,
                          default=[])
    agents = ListField(ReferenceField(Agent), required=False)
    name = StringField(default='')
    description = StringField(default='')
Пример #16
0
class Case(Document):
    meta = {'collection': 'cases'}
    number = IntField()
    stage = StringField()
    member = ReferenceField(Person)
    analyst = ReferenceField(Person)
    group = ReferenceField(Group)
Пример #17
0
class Trabajador(Document):
    
    meta = {'collection': 'trabajador'}
    negocio = ReferenceField(Negocio)
    usuario = ReferenceField(Usuario)
    horas_trabajadas = IntField()
    sueldo_actual_mensual = FloatField()
Пример #18
0
class CustomQueryJob(Job):
    mode = StringField(default=Analytic.FIRST_PASS, choices=Analytic.modes)
    session = ReferenceField(Session)
    events = ListField(ReferenceField(DataModelEvent))
    event_query = EmbeddedDocumentField(DataModelQuery)

    def get_uuid_tuple(self):
        return hash(lift_query(self.event_query)), self.mode, self.session.id

    def get_query_context(self):
        if self.mode == Analytic.SECOND_PASS:
            return QueryContext(mongo_query_layer, session=self.session)
        else:
            return super(CustomQueryJob, self).get_query_context()

    def run(self):
        self.update_start()
        query_context = self.get_query_context()

        event_class = self.event_query.object
        event_action = self.event_query.action

        for result in query_context.query(self.event_query):
            event = event_class.update_existing(action=event_action, **result)
            self.update(add_to_set__events=event, inc__count=1)
            self.add_to_session(self.session, event)

            if self.mode in (Analytic.FIRST_PASS, Analytic.SECOND_PASS):
                investigate_job = InvestigateJob.update_existing(
                    event=event, session=self.session, user=self.user)
                investigate_job.submit()
Пример #19
0
class Comment(Document, DocumentHelperMixin):
    TYPE_COMMENT = 1
    TYPE_INSIGHT = 10
    TYPE_ANALYSIS = 20
    TYPE_SYNTHESIS = 30

    VISIBILITY_PUBLIC  = 1
    VISIBILITY_GROUP   = 10
    VISIBILITY_PRIVATE = 20

    nature = IntField(default=TYPE_COMMENT)
    visibility = IntField(default=VISIBILITY_PUBLIC)

    is_synthesis = BooleanField()
    is_analysis = BooleanField()
    content = StringField()

    feedback = EmbeddedDocumentField(FeedbackDocument)

    # We don't comment reads. We comment articles.
    #read = ReferenceField('Read')
    article = ReferenceField('Article', reverse_delete_rule=CASCADE)

    # Thus, we must store
    user = ReferenceField('User', reverse_delete_rule=CASCADE)

    in_reply_to = ReferenceField('Comment', reverse_delete_rule=NULLIFY)
Пример #20
0
class EmbeddedArticle(EmbeddedDocument):

    meta = {'collection': 'test_embedded_article'}
    headline = StringField(required=True)
    pub_date = DateTimeField(default=datetime.now)
    editor = ReferenceField(Editor)
    reporter = ReferenceField('Reporter')
class Appointment(db.Document):
    creationDate = DateTimeField(required=True)
    closedDate = DateTimeField()
    nextAppointment = DateTimeField(required=True)
    hospital = ReferenceField(Hospital, required=True)
    patient = ReferenceField(User, required=True)
    closed = BooleanField(default=False)
    appointments = EmbeddedDocumentListField(AppointmentDetail, default=[])

    def format(self):
        response = {
            "id":
            str(self.id),
            "creationDate":
            datetime.strftime(self.creationDate, '%d/%m/%Y %H:%M'),
            "nextAppointment":
            datetime.strftime(self.nextAppointment, '%d/%m/%Y %H:%M'),
            "hospital":
            self.hospital.get_obj(),
            "patient":
            self.patient.format(),
            "closed":
            self.closed,
            "visits":
            [appointment.format() for appointment in self.appointments],
            "cancellable":
            len(self.appointments) == 0
        }
        if self.closedDate:
            response["closedDate"] = datetime.strftime(self.closedDate,
                                                       '%d/%m/%Y %H:%M')
        return response
Пример #22
0
class Player(Document):
    first_name = StringField(required=True)
    last_name = StringField(required=True)
    opponent = ReferenceField('Player')
    players = ListField(ReferenceField('Player'))
    articles = ListField(ReferenceField('Article'))
    embedded_list_articles = EmbeddedDocumentListField(EmbeddedArticle)
Пример #23
0
class Question(Document):
    meta = {"collection": "questions"}
    ID = ObjectIdField()
    solutions = ReferenceField(Solution)
    scope = ReferenceField(Scope)
    attempts = IntField()
    value = StringField()
Пример #24
0
class PlayerReplay(Document):
    player = ReferenceField(Player, required=True)
    replay = ReferenceField(Replay, required=True)
    is_winner = BooleanField(required=True)
    player_hero = ReferenceField(PlayerHero, required=True)
    hero_level = IntField(required=True)
    mmr_before = IntField(required=True)
    mmr_after = IntField()
    talents = ListField(ReferenceField(Talent))
    kills = IntField()
    assists = IntField()
    deaths = IntField()
    time_dead = IntField()
    hero_damage = IntField()
    siege_damage = IntField()
    healing = IntField()
    self_healing = IntField()
    damage_taken = IntField()
    experience_earned = IntField()
    meta = {
        'indexes': [
            'player_hero',
            'replay',
            ('player_hero', 'replay')
        ]
    }
Пример #25
0
class Message(Document):
    id = UUIDField(primary_key=True, default=lambda: uuid4())
    user = ReferenceField('User')
    room = ReferenceField('Room')
    message = StringField(max_length=500, required=True)
    timestamp = DateTimeField(required=True,
                              default=lambda: datetime.datetime.now())
    location = PointField()
Пример #26
0
class Application(Document):
    meta = {"collection": "applications"}
    ID = ObjectIdField()
    name = StringField()
    version = StringField()
    configuration = ReferenceField(Configuration)
    questions = ListField(ReferenceField(Question))
    dummies = ListField(ReferenceField(Dummy))
Пример #27
0
class Usuario(Document):

    meta = {'collection': 'usuario'}
    rol = ReferenceField(Rol)
    persona = ReferenceField(Persona)
    estado = StringField()
    nombre = StringField()
    clave = StringField()
Пример #28
0
class BaseDocument(Document):
    name = StringField(required=True, max_length=30)
    author = ReferenceField(User)
    assigned_users = ListField(ReferenceField(User, reverse_delete_rule='CASCADE'))

    meta = {
        'allow_inheritance': True
    }
Пример #29
0
class Historique(Document):
    meta = {'collection': 'historique'}

    text = StringField()
    result = StringField()
    dateCreation = DateTimeField(default=datetime.now)
    user = ReferenceField(User)
    operation = ReferenceField(Operation)
Пример #30
0
class Operation(Document):
    meta = {'collection': 'operation'}
    text = StringField(required=True)
    textType = StringField(default='input')
    result = StringField()
    dateCr = DateTimeField(default=datetime.now)
    user = ReferenceField(User)
    operation_type = ReferenceField(OperationType)