Пример #1
0
class SubTask(Document):
    """"""
    task = fields.ReferenceField('Task',
                                 required=True,
                                 unique=True,
                                 reverse_delete_rule=mongoengine.CASCADE)
    created_on = fields.DateTimeField()
    modified_on = fields.DateTimeField(default=datetime.datetime.now())
    task_parent = fields.ReferenceField('Task',
                                        required=False,
                                        null=True,
                                        blank=True,
                                        unique=False)
    sub_task = fields.ListField(fields.ReferenceField(
        'Task',
        required=False,
        null=True,
        reverse_delete_rule=mongoengine.PULL),
                                blank=True)

    def save(self, *args, **kwargs):
        if not self.created_on:
            self.created_on = datetime.datetime.now()
        self.modified_on = datetime.datetime.now()
        return super(SubTask, self).save(*args, **kwargs)
Пример #2
0
class Task(Document):
    """"""
    name = fields.StringField(required=True)
    description = fields.StringField()
    start_date = fields.DateField()
    end_date = fields.DateField()
    phase = fields.StringField(choices=PHASES_CHOICE, required=True)
    project = fields.ReferenceField('Project',
                                    required=True,
                                    reverse_delete_rule=mongoengine.CASCADE)
    assignee = fields.ReferenceField('User',
                                     required=True,
                                     reverse_delete_rule=mongoengine.CASCADE)
    reporter = fields.ReferenceField('User',
                                     reverse_delete_rule=mongoengine.NULLIFY)
    comments = fields.StringField(null=True)
    created_on = fields.DateTimeField()
    modified_on = fields.DateTimeField(default=datetime.datetime.now())
    parent_task = fields.ReferenceField(
        'self',
        required=False,
        blank=True,
        null=True,
        reverse_delete_rule=mongoengine.CASCADE)

    def save(self, *args, **kwargs):
        if not self.created_on:
            self.created_on = datetime.datetime.now()
        self.modified_on = datetime.datetime.now()
        return super(Task, self).save(*args, **kwargs)
Пример #3
0
class Liga(gj.Document):
    nombre = fields.StringField(max_length=100)

    lugar = fields.ReferenceField(Localidad, requered=False)

    integrantes = fields.ListField(fields.ReferenceField(Heroe),
                                   required=False)
Пример #4
0
class Appointment(mongoengine.Document):

	id = fields.SequenceField(primary_key=True, sequence_name='appointment')
	professional = fields.ReferenceField(Professional, required=True)
	patient = fields.ReferenceField(Patient, required=True)
	start_date = fields.StringField(required=True)
	end_date = fields.StringField(required=True)

	def to_dict(self, professional_info=False, patient_info=False):
		return {
			'id': str(self.id),
			'professional': self.professional.to_dict(),
			'patient_id': str(self.patient.id),
			'start_date': self.start_date,
			'end_date': self.end_date,
		}

	@classmethod
	def find_by_professional(cls, professional):
		try:
			return cls.objects(professional=professional)
		except errors.DoesNotExist:
			return None

	@classmethod
	def find_by_patient(cls, patient):
		try:
			return cls.objects(patient=patient)
		except errors.DoesNotExist:
			return None
Пример #5
0
class Professional(User):

    specialties = fields.ListField(fields.ReferenceField(Specialty,
                                                         required=True),
                                   required=True)
    insurances = fields.ListField(fields.ReferenceField(Insurance,
                                                        required=True),
                                  required=True)
    rating = fields.IntField(min_value=0, max_value=5)
    address = fields.EmbeddedDocumentField(Address, required=True)

    def to_dict(self):
        result = super(Professional, self).to_dict()
        result['address'] = self.address.to_dict()
        result['rating'] = self.rating
        result['specialties'] = []
        for specialty in self.specialties:
            result['specialties'].append(specialty.to_dict())
        result['insurances'] = []
        for insurance in self.insurances:
            result['insurances'].append(insurance.to_dict())
        return result

    def get_role(self):
        return 'professional'

    @classmethod
    def get_all(cls):
        result = []
        for professional in cls.objects:
            result.append(professional.to_dict())
        return result
Пример #6
0
class Usuario(Document):
    usuario = fields.StringField(required=True, max_length=30)
    email = fields.EmailField(required=True, max_length=150)
    nombre = fields.StringField(max_length=50)
    password = fields.StringField(required=True, min_length=8)
    imagen = fields.URLField(required=False)
    descripcion = fields.StringField(max_length=500)
    listaSeguidores = fields.ListField(fields.ReferenceField('Usuario'))
    listaSeguidos = fields.ListField(fields.ReferenceField('Usuario'))
    listaPublicaciones = fields.ListField(fields.ReferenceField('Publicacion'))
    listaComentariosPublicaciones = fields.ListField(
        fields.ReferenceField('Publicacion'))
    listaGraffitisPublicaciones = fields.ListField(
        fields.ReferenceField('Publicacion'))

    def delete(self, *args, **kwargs):
        for publicacion in self.listaComentariosPublicaciones:
            comentarios = publicacion.listaComentarios
            for comentario in comentarios:
                if comentario.autor == self:
                    publicacion.__class__.objects.update(
                        pull__listaComentarios=comentario)

        for publicacion in self.listaGraffitisPublicaciones:
            graffitis = publicacion.listaGraffitis
            for graffiti in graffitis:
                if graffiti.autor == self:
                    publicacion.__class__.objects.update(
                        pull__listaGraffitis=graffiti)

        super().delete()
Пример #7
0
class InvoicingSettings(EmbeddedDocument):
    """A wrapper to Invoicing's module settings."""
    TAXES_APPLICATION = TAXES_APPLICATION
    PAYMENT_TYPES = PAYMENT_TYPES
    PAYMENT_CONDITIONS = PAYMENT_CONDITIONS

    supported_currencies = fields.ListField(fields.ReferenceField("Currency"))
    default_currency = fields.ReferenceField("Currency", required=True)
    fy_start_month = fields.IntField(required=True,
                                     default=0,
                                     min_value=0,
                                     max_value=11)
    inv_taxes_application = fields.StringField(required=True,
                                               choices=TAXES_APPLICATION,
                                               default="EXCLUSIVE")
    quotation_validity = fields.IntField(required=True, default=30)
    payment_conditions = fields.StringField(required=True,
                                            choices=PAYMENT_CONDITIONS,
                                            default="CASH")
    custom_payment_conditions = fields.StringField()
    accepted_payment_types = fields.ListField(
        fields.StringField(choices=PAYMENT_TYPES),
        required=True,
        default=lambda: ["CHECK", "CASH", "CREDIT_CARD", "TRANSFER"])
    late_fee_rate = fields.DecimalField()
    down_payment_percent = fields.DecimalField(required=True,
                                               default=lambda: Decimal("0"))
    automatic_reminders = fields.BooleanField(required=True, default=False)
    automatic_reminders_text = fields.StringField(max_length=1024)
    automatic_reminders_send_copy = fields.BooleanField(required=True,
                                                        default=True)
    numbering = fields.EmbeddedDocumentField(
        "InvoicingNumberingSettings",
        required=True,
        default=lambda: InvoicingNumberingSettings())
Пример #8
0
class LocationUpdate(Document):
    driver = fields.ReferenceField(User)
    timestamp = fields.DateTimeField()
    location = fields.StringField()
    checkin = fields.BooleanField()
    vehicle = fields.ReferenceField(Vehicle)
    handoff = fields.ReferenceField(User)
Пример #9
0
class Message(Document):
    author = fields.ReferenceField(User, required=True)
    addressee = fields.ReferenceField(User, required=True)
    text = fields.StringField(required=True, max_length=40)
    created = fields.DateTimeField(required=True,
                                   default=datetime.datetime.now)
    read = fields.BooleanField(required=True, default=False)
Пример #10
0
class Notification(DynamicDocument):
    tenant = fields.ReferenceField("Tenant", required=False)
    recipient = fields.ReferenceField("VosaeUser", required=True)
    sent_at = fields.DateTimeField(required=True, default=datetime_now)
    read = fields.BooleanField(required=True, default=False)

    meta = {
        "indexes": ["tenant", "recipient", "sent_at", "read"],
        "ordering": ["-sent_at"],
        "allow_inheritance": True
    }

    @classmethod
    def post_save(self, sender, document, **kwargs):
        """
        Post save hook handler

        Emits notification through the realtime service
        """
        from notification.api.resources import NotificationResource
        nr = NotificationResource()
        try:
            resource_type = nr._get_type_from_class(nr._meta.polymorphic,
                                                    document.__class__)
        except:
            resource_type = None
        emit_to_channel(
            u'private-user-{0}'.format(unicode(document.recipient.id)),
            u'new-notification', {
                u'id': unicode(document.id),
                u'type': resource_type
            })
Пример #11
0
class DislikeShop(Document):
    user = fields.ReferenceField(User, reverse_delete_rule=mongoengine.CASCADE)
    shop = fields.ReferenceField(Shop, reverse_delete_rule=mongoengine.CASCADE)
    created_at = fields.DateTimeField(auto_now = True, default=timezone.now)
    
    def __str__(self):
        return self.shop
Пример #12
0
class ChargeStation(Document):
    meta = {
        "indexes": [
            'network',
            'locationId',
        ]
    }
    id = fields.IntField(required=True, primary_key=True)
    network = fields.ReferenceField(Network)
    locationId = fields.IntField(required=True)
    name = fields.StringField(required=True, max_length=200)

    #0 = Unknown
    #1 = Free
    #2 = Fee
    cost = fields.IntField()
    cost_description = fields.StringField(max_length=1000)
    address = fields.StringField(max_length=300)
    available = fields.IntField(required=True)
    hours = fields.StringField(max_length=400)
    geoLocation = fields.PointField(auto_index=True)
    score = fields.FloatField(min_value=0, max_value=10.0, required=True)
    images = fields.ListField(fields.URLField())
    chargePoints = fields.ListField(fields.ReferenceField(ChargePoint))
    created_at = fields.DateTimeField()
    modified_at = fields.DateTimeField(default=datetime.datetime.utcnow())
Пример #13
0
class Race(BaseDocument):
    meta = {'collection': 'mop_races'}

    name = fields.StringField(required=True)
    description = fields.StringField(required=True)
    restrictions = fields.ListField(fields.ReferenceField('Skill'), required=False)
    exclusive_skills = fields.ListField(fields.ReferenceField('Skill'), required=False)
Пример #14
0
class GroupJoinRequest(BaseModel):
    uid = fields.StringField(required=True, primary_key=True)
    group = fields.ReferenceField(Group, required=True, reverse_delete_rule=2)
    user = fields.ReferenceField(User, required=True, reverse_delete_rule=2)
    created_at = fields.IntField(required=True)
    # db collection
    meta = {"collection": "join_requests"}
Пример #15
0
class Event(SintelDocument):
    """Event object.

    An Event represents an anomalous period on a Signal.
    It is descrived by start and stop times and, optionally, a severity score.

    It is always associated to a Signal and, optionally, to a Signalrun.
    """
    SOURCE_ORION = 'ORION'
    SOURCE_SHAPE_MATCHING = 'SHAPE_MATCHING'
    SOURCE_MANUALLY_CREATED = 'MANUALLY_CREATED'
    SOURCE_CHOICES = (SOURCE_ORION, SOURCE_SHAPE_MATCHING,
                      SOURCE_MANUALLY_CREATED)

    signalrun = fields.ReferenceField(Signalrun, reverse_delete_rule=CASCADE)
    signal = fields.ReferenceField(Signal, reverse_delete_rule=CASCADE)
    start_time = fields.IntField(required=True)
    stop_time = fields.IntField(required=True)
    severity = fields.FloatField()
    source = fields.StringField(required=True, choices=SOURCE_CHOICES)
    num_annotations = fields.IntField(default=0)
    # HACK - do not have tag currently
    tag = fields.StringField()

    @property
    def annotations(self):
        return Annotation.find(event=self)

    @property
    def event_interactions(self):
        return EventInteraction.find(event=self)

    @property
    def latest_event_interaction(self):
        return self.event_interactions.last()
Пример #16
0
class Place(gj.Document):
    title = fields.StringField(required=True,
                               max_length=70,
                               unique_with='address')
    main_category = fields.StringField(max_length=30, choices=src.categories)
    categories = fields.ListField(fields.StringField(max_length=30,
                                                     choices=src.categories),
                                  default=[])
    main_cuisine = fields.StringField(max_length=30, choices=src.cuisines)
    cuisines = fields.ListField(fields.StringField(max_length=30,
                                                   choices=src.cuisines),
                                default=[])
    additional_services = fields.ListField(fields.StringField(
        max_length=30, choices=src.additional_services),
                                           default=[])
    description = fields.StringField(max_length=3000)
    phone = fields.StringField(required=True, max_length=20, unique=True)
    instagram = fields.URLField()
    website = fields.URLField()
    timezone = fields.StringField(required=True)
    opening_hours = fields.ListField(field=fields.ListField(
        field=fields.DateTimeField(default=datetime.utcnow), max_length=2),
                                     max_length=7,
                                     default=[[None, None]] * 7)
    address = fields.EmbeddedDocumentField(Address, required=True)
    main_photo = fields.ReferenceField(Image, reverse_delete_rule=NULLIFY)
    photos = fields.ListField(fields.ReferenceField(Image,
                                                    reverse_delete_rule=PULL),
                              default=[])
    general_review = fields.ReferenceField(GeneralReview,
                                           reverse_delete_rule=NULLIFY,
                                           unique=True)
    configuration = fields.EmbeddedDocumentField(Configuration)
    is_active = fields.BooleanField(default=False)
Пример #17
0
 class TestDocument(db.DynamicDocument):
     user = fields.ReferenceField(UserTest,
                                  reverse_delete_rule=mongoengine.CASCADE,
                                  required=True)
     data_list = fields.ListField(fields.ReferenceField(DataTest))
     count = fields.IntField()
     factor = fields.FloatField()
class MessageDocument(Document):
    text = fields.StringField(required=False)
    images = fields.ListField(
        fields.ImageField(collection_name='message_images'), required=False)
    document = fields.FileField(collection_name='message_documents',
                                required=False)
    session = fields.ReferenceField(document_type=SessionDocument,
                                    required=True)
    room = fields.ReferenceField(document_type=ChatRoomDocument, required=True)
    seen_by = fields.ListField(
        fields.ReferenceField(document_type=SessionDocument), required=False)
    created_at = fields.DateTimeField(required=False)

    meta = {'collection': 'messages', 'ordering': ['-created_at']}

    @classmethod
    def set_timings(cls, sender, document, **kwargs):
        """
        Set Created and expiration at on Save
        :param sender:
        :param document:
        :param kwargs:
        :return:
        """
        document.created_at = datetime.utcnow()
Пример #19
0
class Activity(Document):
    url_number = fields.IntField()
    name = fields.StringField(verbose_name=u'活动名称')
    detail = fields.StringField(verbose_name=u'活动详情')
    creator = fields.GenericReferenceField()  # 发起社团

    start_time = fields.DateTimeField()
    finish_time = fields.DateTimeField()
    place = fields.StringField(verbose_name=u'活动地点')
    max_student = fields.IntField()  # 人数上限

    pay = fields.IntField(verbose_name=u'人均花费')

    who_likes = fields.ListField(
        fields.ReferenceField(Student, reverse_delete_rule=PULL))  # 喜欢活动的人
    who_entered = fields.ListField(
        fields.ReferenceField(Student, reverse_delete_rule=PULL))  # 参加这个活动的人
    clicks = fields.IntField()  # 点击数
    is_active = fields.BooleanField()

    def description(self):
        return self.creator.corporation.name + "发起了" + self.name

    def is_started(self):  # 判断是否已经开始
        if self.finish_time < datetime.datetime.now():
            return True
        else:
            return False

    def get_reply(self):
        from reply.models import Reply
        return Reply.objects(target=self)
Пример #20
0
class Signalrun(OrionDocument, Status):
    """Signalrun object.

    The Signalrun object represents a single executions of a Pipeline on a Signal
    within a Datarun.

    It contains information about whether the execution was successful or not, when
    it started and ended, the number of events that were found by the Pipeline, and
    where the model and metrics are stored.
    """
    datarun = fields.ReferenceField(Datarun, reverse_delete_rule=CASCADE)
    signal = fields.ReferenceField(Signal, reverse_delete_rule=CASCADE)
    start_time = fields.DateTimeField()
    end_time = fields.DateTimeField()
    model_location = fields.StringField()
    metrics_location = fields.StringField()
    num_events = fields.IntField(default=0)

    @property
    def events(self):
        return Event.find(signalrun=self)

    def start(self):
        """Mark this Signalrun as started on DB.

        The ``start_time`` will be set to ``datetime.utcnow()``,
        the ``status`` will be set to RUNNING.
        """
        self.start_time = datetime.utcnow()
        self.status = self.STATUS_RUNNING
        self.save()

    def end(self, status, events):
        """Mark this Signalrun as ended on DB.

        The ``end_time`` will be set to ``datetime.utcnow()``, the ``status``
        will be set to the given value, and the given events will be inserted
        into the Database.
        """
        try:
            if events is None:
                events = []
            for start_time, stop_time, severity in events:
                Event.insert(
                    signalrun=self,
                    signal=self.signal,
                    start_time=start_time,
                    stop_time=stop_time,
                    severity=severity,
                    source=Event.SOURCE_ORION,
                )
        except Exception:
            LOGGER.exception('Error storing signalrun %s events', self.id)
            status = self.STATUS_ERRORED

        self.end_time = datetime.utcnow()
        self.status = status
        self.num_events = len(events)
        self.save()
Пример #21
0
class Content(Document):
    project = fields.ReferenceField(Project, required=True)
    content = fields.DictField(required=True)
    file_name = fields.StringField(required=True)
    sheet_name = fields.StringField(required=True)
    input_headers = fields.ReferenceField(Input_headers, required=True)
    status = fields.BooleanField(default=False)
    created_at = fields.DateTimeField(default=datetime.utcnow)
Пример #22
0
class ProblemCondition(Document):
    _id = fields.ObjectIdField()
    name = fields.StringField()
    student = fields.ReferenceField(Student)
    problem = fields.ReferenceField(Problem)
    result = fields.StringField()
    wrong = fields.ListField(fields.StringField())
    times = fields.IntField()
Пример #23
0
class RideRequest(Document):
    start = fields.StringField(required=True, null=False)
    destination = fields.StringField(required=True, null=False)
    start_time = fields.StringField(required=True, null=False)
    status = fields.StringField(required=True,
                                null=False)  #pending or fullfilled
    requester_id = fields.ReferenceField(User, required=True, null=False)
    rider_id = fields.ReferenceField(User)
Пример #24
0
class Exam(Document):
    examName = fields.StringField(max_length=200)
    userId = fields.ReferenceField(User)
    questionIds = fields.ReferenceField(Question)
    categoryId = fields.ReferenceField(Category)

    def __str__(self):
        self.examName
Пример #25
0
class Trainer(Document):
    user_id = fields.ReferenceField(User)
    student_ids = fields.ListField(fields.ReferenceField(Student))
    workout_ids = fields.ListField(fields.ReferenceField(Workout))

    def add_student(self, student_id):
        self.student_ids.append(student_id)
        self.save()
Пример #26
0
class Tag(Document):
    _id = fields.ObjectIdField()
    name = fields.StringField()
    description = fields.StringField()
    types = fields.StringField()
    difficulty = fields.IntField()
    book = fields.ReferenceField(Book)
    topic = fields.ListField(fields.ListField(fields.ReferenceField(Chapter)))
Пример #27
0
class Issue(Document):
    name = fields.StringField(max_length=20)
    tags = fields.ListField(fields.ReferenceField(Tag))
    description = fields.StringField()
    createdAt = fields.DateTimeField()
    resolved = fields.DateTimeField()
    vehicle = fields.ReferenceField(Vehicle)

    meta = {'collection': 'issues'}
Пример #28
0
class GroupMembership(BaseModel):
    uid = fields.StringField(required=True, primary_key=True)
    group = fields.ReferenceField(Group, required=True, reverse_delete_rule=2)
    user = fields.ReferenceField(User, required=True, reverse_delete_rule=2)
    role = fields.StringField(required=True, choise=['admin', 'member'])
    joined_at = fields.IntField()
    added_by = fields.ReferenceField(User, required=True)
    # db collection
    meta = {"collection": "group_membership"}
Пример #29
0
class Announcement(BaseModel):
    uid = fields.StringField(required=True, primary_key=True)
    content = fields.StringField(required=True, min_length=1, max_length=10000)
    group = fields.ReferenceField(Group, required=True, reverse_delete_rule=2)
    created_at = fields.IntField(required=True)
    created_by = fields.ReferenceField(User, required=True)
    updated_at = fields.IntField()
    # db collection
    meta = {"collection": "announcements"}
Пример #30
0
class Group(BaseModel):
    uid = fields.StringField(required=True, primary_key=True)
    name = fields.StringField(required=True, min_length=3, max_length=50)
    description = fields.StringField(required=True, max_length=100)
    created_by = fields.ReferenceField(User, required=True)
    created_at = fields.IntField(required=True)
    updated_at = fields.IntField()
    updated_by = fields.ReferenceField(User)
    # db collection
    meta = {"collection": "groups"}