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
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()))
class Review(Document): meta = {"collection": "review"} date = DateTimeField(default=datetime.now) rating = DecimalField() organization = ReferenceField(Organization) user = ReferenceField(UserAccount)
class Project(Document): meta = {"collection": "project"} location = IntField() number_participants = IntField() organization = ReferenceField(Organization) part_of = ReferenceField("Project")
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)
class User(Document): meta = {"collection": "users"} username = StringField() email = StringField() posts = ListField(ReferenceField('Post')) friends = ListField(ReferenceField('User')) datetime_created = DateTimeField()
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
class CloudAccount(Document): meta = {'collection': 'cloud_account'} uid = StringField() # 3xm-security name = StringField() # 3XM Organizations Security customer = ReferenceField(Customer) cloud_provider = ReferenceField(CloudProvider)
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()
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")
class SmallGraph(Document): meta = {'collection': 'bigGraph'} node1 = ReferenceField(Nodes) type = StringField() node2 = ReferenceField(Nodes) weight = FloatField() rank = IntField()
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
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
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
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='')
class Case(Document): meta = {'collection': 'cases'} number = IntField() stage = StringField() member = ReferenceField(Person) analyst = ReferenceField(Person) group = ReferenceField(Group)
class Trabajador(Document): meta = {'collection': 'trabajador'} negocio = ReferenceField(Negocio) usuario = ReferenceField(Usuario) horas_trabajadas = IntField() sueldo_actual_mensual = FloatField()
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()
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)
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
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)
class Question(Document): meta = {"collection": "questions"} ID = ObjectIdField() solutions = ReferenceField(Solution) scope = ReferenceField(Scope) attempts = IntField() value = StringField()
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') ] }
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()
class Application(Document): meta = {"collection": "applications"} ID = ObjectIdField() name = StringField() version = StringField() configuration = ReferenceField(Configuration) questions = ListField(ReferenceField(Question)) dummies = ListField(ReferenceField(Dummy))
class Usuario(Document): meta = {'collection': 'usuario'} rol = ReferenceField(Rol) persona = ReferenceField(Persona) estado = StringField() nombre = StringField() clave = StringField()
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 }
class Historique(Document): meta = {'collection': 'historique'} text = StringField() result = StringField() dateCreation = DateTimeField(default=datetime.now) user = ReferenceField(User) operation = ReferenceField(Operation)
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)