コード例 #1
0
class Rental(gj.Document):
    rental_id = mongoengine.SequenceField(collection_name='Rental',
                                          unique=True)
    book = gj.FollowReferenceField(Book)
    customer = gj.FollowReferenceField(Customer)
    rental_start = mongoengine.DateTimeField()
    rental_end = mongoengine.DateTimeField()
コード例 #2
0
class Servicios(mge.Document):
    codigo = mge.SequenceField(primary_key=True)
    nombre = mge.StringField(max_length=255)
    estado = mge.StringField(default="ACTIVO", choices=("ACTIVO", "NO ACTIVO"))

    def __eq__(self, serv):
        return self.codigo == serv.codigo
コード例 #3
0
class User(mongoengine.Document):
    user_id = mongoengine.SequenceField(collection_name='sequences',
                                        unique=True)
    user_name = mongoengine.StringField(required=True, unique=True)
    first_name = mongoengine.StringField()
    last_name = mongoengine.StringField()
    meta = {'indexes': ['user_id', 'user_name'], 'ordering': ['+user_id']}
コード例 #4
0
class ServiciosPlanMovil(mge.Document):
    codigo = mge.SequenceField(primary_key=True)
    id_plan = mge.StringField(required=True, max_length=255)
    id_servicio = mge.IntField(required=True)

    def __eq__(self, sp):
        return self.id_plan == sp.id_plan and self.id_servicio == sp.id_ser
コード例 #5
0
class Karma(mongoengine.Document):
    id = mongoengine.SequenceField(primary_key=True)

    chat_id = mongoengine.LongField(required=True)
    message_id = mongoengine.LongField(required=True)
    response_message_id = mongoengine.LongField(null=True)

    message = mongoengine.StringField(required=True)

    giver_user_id = mongoengine.LongField(required=True)
    giver_username = mongoengine.StringField(required=True)

    receiver_user_id = mongoengine.LongField(required=True)
    receiver_username = mongoengine.StringField(required=True)

    vote = mongoengine.IntField(required=True)

    date_added = mongoengine.DateTimeField(default=localized_date)
    date_modified = mongoengine.DateTimeField(default=localized_date)
    date_deleted = mongoengine.DateTimeField(required=False, null=True)

    @classmethod
    def by_id(cls, id):
        try:
            return cls.objects.get(id=id)
        except cls.DoesNotExist:
            return None

    @classmethod
    def by_chat_id_and_receiver_user_id(cls, chat_id, receiver_user_id):
        try:
            return cls.objects.get(chat_id=chat_id,
                                   receiver_user_id=receiver_user_id)
        except cls.DoesNotExist:
            return None
コード例 #6
0
class TipoPlanMovil(mge.Document):
    codigo = mge.SequenceField(primary_key=True)
    tipo = mge.StringField()
    estado = mge.StringField(default="ACTIVO", choices=("ACTIVO", "NO ACTIVO"))

    def __eq__(self, tipo):
        return self.codigo == tipo.codigo
コード例 #7
0
ファイル: comment.py プロジェクト: obasys/hikka
class Comment(mongoengine.Document):
    account = mongoengine.ReferenceField("User", required=True)
    subject = mongoengine.GenericReferenceField(required=True)
    created = mongoengine.DateTimeField(default=datetime.now)
    updated = mongoengine.DateTimeField(default=datetime.now)
    text = mongoengine.StringField(required=True)
    counter = mongoengine.SequenceField()

    meta = {
        "alias": "default",
        "collection": "comments",
        "indexes": [
            "subject",
            "account",
        ]
    }

    def dict(self):
        return {
            "created": int(datetime.timestamp(self.created)),
            "updated": int(datetime.timestamp(self.updated)),
            "account": self.account.dict(),
            "counter": self.counter,
            "text": self.text
        }
コード例 #8
0
class GameTime(mongoengine.Document):
    gametime_id = mongoengine.SequenceField(collection_name='sequences',
                                            unique=True)
    game_id = mongoengine.ReferenceField(Game)
    user_id = mongoengine.ReferenceField(User)
    start_date = mongoengine.DateTimeField()
    end_date = mongoengine.DateTimeField()
    meta = {'indexes': ['gametime_id'], 'ordering': ['+gametime_id']}
コード例 #9
0
class Snapshot(me.Document):
    id = me.SequenceField(primary_key=True)
    created_at = me.DateTimeField(default=datetime.now(), required=True)
    trained_at = me.DateTimeField()
    types = me.MapField(me.EmbeddedDocumentField(Type), required=True)
    semaphore = me.IntField(default=0)

    meta = {'indexes': ['semaphore']}

    @staticmethod
    def from_string(version_string):
        if 'CURRENT' in version_string:
            return Snapshot.current()
        return Snapshot.objects.get(id=int(version_string[1:]))

    @staticmethod
    def current():
        return Snapshot.objects.get(id=CURRENT_ID)

    def __str__(self):
        return f'v{"CURRENT" if self.id == CURRENT_ID else self.id}'

    @contextmanager
    def training_lock(self, un_train: bool = False):
        if Snapshot.objects(id=self.id,
                            semaphore=0).update_one(dec__semaphore=1) == 1:
            try:
                yield self
            finally:
                if Snapshot.objects(id=self.id, semaphore=-1).update_one(
                        inc__semaphore=1,
                        trained_at=None if un_train else datetime.now()) == 1:
                    self.reload()
                else:
                    raise TrainingLockFreeError
        else:
            raise TrainingLockAcquireError

    @contextmanager
    def loading_lock(self):
        if Snapshot.objects(
                id=self.id,
                semaphore__gte=0).update_one(inc__semaphore=1) == 1:
            try:
                yield self
            finally:
                if Snapshot.objects(
                        id=self.id,
                        semaphore__gt=0).update_one(dec__semaphore=1) == 1:
                    self.reload()
                else:
                    raise LoadingLockFreeError
        else:
            raise LoadingLockAcquireError
コード例 #10
0
ファイル: cobranza.py プロジェクト: acostamatt/cooperadora_qt
class Cobranza(mongoengine.Document):
    nroDocumento = mongoengine.SequenceField()
    socio = mongoengine.ReferenceField("Socio")
    alumno = mongoengine.ReferenceField("Alumno")
    formaPago = mongoengine.StringField(required=True, max_length=25)
    fechaCobranza = mongoengine.DateField(required=True)
    mes = mongoengine.StringField(required=True, max_length=15)
    monto = mongoengine.FloatField(required=True, max_length=11)
    isAnulada = mongoengine.BooleanField(default=False)
    fechaCobranzaAnulada = mongoengine.DateField(required=False)
    descripcionCobranzaAnulada = mongoengine.StringField(required=False, max_length=100)
コード例 #11
0
class TransactionLog(me.Document):
    """Capped Collection to Log transactions."""

    timestamp = me.DateTimeField(
        required=True,
        default=datetime.utcnow()
    )
    collection = me.StringField(required=True)
    doc_id = me.DynamicField()
    ts = me.SequenceField()

    meta = {"max_documents": 100000}
コード例 #12
0
ファイル: models.py プロジェクト: zhaolixiang/graphene-mongo
class Editor(mongoengine.Document):
    """
    An Editor of a publication.
    """

    meta = {'collection': 'test_editor'}
    id = mongoengine.StringField(primary_key=True)
    first_name = mongoengine.StringField(required=True, help_text="Editor's first name.", db_field='fname')
    last_name = mongoengine.StringField(required=True, help_text="Editor's last name.")
    metadata = mongoengine.MapField(field=mongoengine.StringField(), help_text="Arbitrary metadata.")
    company = mongoengine.LazyReferenceField(Publisher)
    avatar = mongoengine.FileField()
    seq = mongoengine.SequenceField()
コード例 #13
0
ファイル: db_models.py プロジェクト: dpnetca/emerg_shutdown
class MessageRequest(mongoengine.Document):
    m_id = mongoengine.SequenceField(required=True)
    urgency = mongoengine.StringField(required=True)

    caller_name = mongoengine.StringField(required=True)
    caller_number = mongoengine.StringField(required=True)

    called_name = mongoengine.StringField(required=True)
    called_num = mongoengine.StringField(required=True)

    message = mongoengine.StringField(required=False)

    meta = {"db_alias": "core", "collection": "messageRequests"}
コード例 #14
0
class Game(mongoengine.Document):
    game_id = mongoengine.SequenceField(collection_name='sequences',
                                        unique=True)
    game_title = mongoengine.StringField(required=True)
    platform = mongoengine.StringField()
    genre = mongoengine.StringField()
    release_year = mongoengine.IntField(required=True)
    developer = mongoengine.StringField()
    publisher = mongoengine.StringField()
    franchise = mongoengine.StringField()
    series = mongoengine.StringField()
    image_path = mongoengine.StringField()
    game_note = mongoengine.StringField()
    meta = {'indexes': ['game_id'], 'ordering': ['+game_id']}
コード例 #15
0
class SimpleReply(mongoengine.Document):
    id = mongoengine.SequenceField(primary_key=True)
    pattern = mongoengine.StringField(unique=True)
    pattern_type = mongoengine.StringField(choices=PATTERN_TYPES,
                                           default='exact',
                                           required=True)
    response = mongoengine.StringField(required=True)
    response_type = mongoengine.StringField(choices=RESPONSE_TYPES,
                                            default="text",
                                            required=True)
    mime_type = mongoengine.StringField(required=False)
    file_name = mongoengine.StringField(required=False)
    caption = mongoengine.StringField(required=False)
    parse_mode = mongoengine.StringField(required=False)
    user_id = mongoengine.LongField(required=True)
    username = mongoengine.StringField(required=True)

    date_added = mongoengine.DateTimeField(default=localized_date)
    date_modified = mongoengine.DateTimeField(default=localized_date)
    date_deleted = mongoengine.DateTimeField(required=False, null=True)

    @classmethod
    def by_id(cls, id):
        try:
            return cls.objects.get(id=id)
        except cls.DoesNotExist:
            return None

    @classmethod
    def by_pattern(cls, pattern):
        try:
            return cls.objects.get(pattern=pattern)
        except cls.DoesNotExist:
            return None

    @classmethod
    def all(cls):
        try:
            return cls.objects(date_deleted=None)
        except:
            return None

    def __str__(self):
        return "{{ id = {id}, pattern = \"{pattern}\", pattern_type = {pattern_type}, response = \"{response}\", response_type = {response_type} }}".format(
            id=self.id,
            pattern=self.pattern,
            pattern_type=self.pattern_type,
            response=self.response,
            response_type=self.response_type)
class Company(mongoengine.Document):
    name = mongoengine.StringField(max_length=255, required=True)
    lagel_person = mongoengine.StringField(max_length=255, null=True)
    register_capital = mongoengine.StringField(null=True)
    # register_time = db.DateTimeField(null=True)
    register_time = mongoengine.StringField(null=True)
    tel = mongoengine.StringField(null=True)
    area = mongoengine.StringField(required=True, default="中国")
    update_time = mongoengine.DateTimeField(default=datetime.now)
    company_id = mongoengine.SequenceField(required=True)
    reg_time = mongoengine.StringField(default="0")
    reg_capital = mongoengine.StringField(default="0")
    # 定义为索引
    meta = {
         'indexes': ["name", "lagel_person", "area"]
    }
コード例 #17
0
ファイル: models.py プロジェクト: lvh/pc-bot
class Meeting(mongoengine.Document):
    """
    Records details about a meeting - when it starts/stops, which talks were
    debated, and the complete meeting transcript.
    """
    number = mongoengine.SequenceField()
    start = mongoengine.DateTimeField()
    end = mongoengine.DateTimeField()
    talks_decided = mongoengine.ListField(
        mongoengine.ReferenceField(TalkProposal))
    transcript = mongoengine.ListField(
        mongoengine.EmbeddedDocumentField(TranscriptMessage))

    def add_to_transcript(self, timestamp, user, message):
        t = TranscriptMessage(timestamp=timestamp, user=user, message=message)
        Meeting.objects(id=self.id).update_one(push__transcript=t)
コード例 #18
0
class manufacturer(mongoengine.Document):
    iterID = mongoengine.SequenceField(primary_key=True)
    name = mongoengine.StringField()
    contactInfo = mongoengine.DictField(required=False)

    @property
    def prefix(self):
        return str(self._id).zfill(3)

    def nextSKU(self):
        objects = product.objects(manufacturer=self).order_by("$natural")
        if objects.count() == 0:
            return f"{self.prefix}00001"
        else:
            lastSKU = objects.first.sku
            lastID = int(lastSKU[3:])
            nextID = str(lastID + 1)
            return f"{self.prefix}{nextID.zfill(5)}"
コード例 #19
0
ファイル: models.py プロジェクト: usudaysingh/library
class Books(mongoengine.DynamicDocument):
    book_name = mongoengine.StringField()
    book_id = mongoengine.SequenceField()
    author = mongoengine.StringField()
    available = mongoengine.BooleanField()
    added_in_library = mongoengine.DateTimeField()
    modified = mongoengine.DateTimeField()
    publisher = mongoengine.StringField()
    publishing_year = mongoengine.IntField()
    fine_amount = mongoengine.IntField(default=0)
    status = mongoengine.EmbeddedDocumentField(StatusLog, default=StatusLog())

    # status_history = mongoengine.ListField(mongoengine.EmbeddedDocumentField(BookStatus))

    def save(self, *args, **kwargs):
        if not self.added_in_library:
            self.added_in_library = timezone.now()
        self.modified = timezone.now()
        super(Books, self).save(*args, **kwargs)
コード例 #20
0
class Topic(mongoengine.Document):
    id = mongoengine.SequenceField(primary_key=True)

    chat_id = mongoengine.LongField(required=True, unique=True)

    text = mongoengine.StringField(required=True)

    subtopics = mongoengine.ListField(
        mongoengine.ReferenceField(Subtopic,
                                   reverse_delete_rule=mongoengine.PULL))

    separator = mongoengine.StringField(default=' | ')

    user_id = mongoengine.LongField(required=True)
    username = mongoengine.StringField()

    date_added = mongoengine.DateTimeField(default=localized_date)
    date_modified = mongoengine.DateTimeField(default=localized_date)
    date_deleted = mongoengine.DateTimeField(required=False, null=True)

    @classmethod
    def by_id(cls, id):
        try:
            return cls.objects.get(id=id)
        except cls.DoesNotExist:
            return None

    @classmethod
    def by_chat_id(cls, chat_id):
        try:
            return cls.objects.get(chat_id=chat_id)
        except cls.DoesNotExist:
            return None

    def __repr__(self):
        return self.text if len(self.subtopics) == 0 else '{}{}{}'.format(
            self.text, self.separator,
            self.separator.join(subtopic.text for subtopic in self.subtopics))

    def __str__(self):
        return self.__repr__()
コード例 #21
0
class ProbeAlias(mongoengine.Document):
    id = mongoengine.SequenceField(primary_key=True)
    alias = mongoengine.StringField(unique=True)
    probe_id = mongoengine.LongField(required=True)
    user_id = mongoengine.LongField(required=True)
    username = mongoengine.StringField(required=True)

    date_added = mongoengine.DateTimeField(default=localized_date)
    date_modified = mongoengine.DateTimeField(default=localized_date)
    date_deleted = mongoengine.DateTimeField(required=False, null=True)

    @classmethod
    def by_id(cls, id):
        try:
            return cls.objects.get(id=id)
        except cls.DoesNotExist:
            return None

    @classmethod
    def by_probe_id(cls, probe_id):
        try:
            return cls.objects.get(probe_id=probe_id)
        except cls.DoesNotExist:
            return None

    @classmethod
    def by_alias(cls, alias):
        try:
            return cls.objects.get(alias__iexact=alias)
        except cls.DoesNotExist:
            return None

    @classmethod
    def all(cls):
        try:
            return cls.objects(date_deleted=None)
        except:
            return None

    def __str__(self):
        return "{{ id = {id}, alias = \"{alias}\", probe_id = \"{probe_id}\" }}".format(id=self.id, probe_id=self.probe_id, alias=self.alias)
コード例 #22
0
class ToDo(mongoengine.Document):
    """Data of the todo containing multiple tasks."""

    def __unicode__(self):
        return self.slug

    hid = mongoengine.SequenceField()  # helper_id
    title = mongoengine.StringField()
    slug = mongoengine.StringField()
    tasks = mongoengine.EmbeddedDocumentListField(Task)

    def populate_embedded(self, elements):
        for data in elements:
            hid = data.get('hid')
            try:
                task = self.tasks.get(hid=hid)
            except mongoengine.errors.DoesNotExist:
                task = self.tasks.create(**data)
            else:
                for k, v in data.items():
                    setattr(task, k, v)
            task.save()
コード例 #23
0
class User(me.Document):
    test_key = me.SequenceField(primary_key=True, value_decorator=str)
    is_anonymous = me.BooleanField(db_field='anon', default=False)
    nickname = me.StringField(required=True)
    test_login = me.StringField(required=False)
コード例 #24
0
class Task(mongoengine.EmbeddedDocument):
    """An element of the ToDo."""

    hid = mongoengine.SequenceField()
    content = mongoengine.StringField()
    is_done = mongoengine.BooleanField(default=False)
コード例 #25
0
class ParameterInfo(mongoengine.Document):
    para_id = mongoengine.SequenceField(primary_key=True)
    para_name = mongoengine.StringField()
    para_desc = mongoengine.StringField()
コード例 #26
0
class Doc(me.Document):
    _id = me.SequenceField(primary_key=True)
    file_path = me.StringField()
    course = me.StringField()
    num_terms = me.IntField()
    downloaded_at = me.DateTimeField()
コード例 #27
0
class Territory(me.Document):
    """ Implements a territory. """

    id = me.SequenceField(primary_key=True)
    name = me.StringField(required=True)
    start = me.DictField(required=True)
    end = me.DictField(required=True)
    area = me.FloatField(default=0.)
    painted_area = me.IntField(default=0)
    squares = me.ListField(me.ReferenceField(sq.Square))

    def clean(self):
        """
    Invalidates insert of overlapping territory.
    Calculates derived attributes.
    """

        if self.overlapping_territories():
            raise me.ValidationError('Overlapping territory')

        self.area = self.calculate_area()

        self.painted_area = self.calculate_painted_area()

        if len(self.squares) == 0:
            self.squares = sq.Square.generate_squares(self.start, self.end)

    def overlapping_territories(self):
        """
    Determines if there is another registered territory overlapping this
    location.
    Two territories do NOT overlap if one is totally to the left/right/
    up/down of the other.
    """

        self_left = min(self.start['x'], self.end['x'])
        self_right = max(self.start['x'], self.end['x'])
        self_down = min(self.start['y'], self.end['y'])
        self_up = max(self.start['y'], self.end['y'])

        for t in Territory.objects:

            t_left = min(t.start['x'], t.end['x'])
            t_right = max(t.start['x'], t.end['x'])
            t_down = min(t.start['y'], t.end['y'])
            t_up = max(t.start['y'], t.end['y'])

            overlap = not ((self_left > t_right) or (self_right < t_left) or
                           (self_up < t_down) or (self_down > t_up))

            if overlap:
                return True

        return False

    def calculate_area(self):
        """ Find total area. """

        delta_x = abs(self.start['x'] - self.end['x'])  # + 1
        delta_y = abs(self.start['y'] - self.end['y'])  # + 1

        return delta_x * delta_y

    def calculate_painted_area(self):
        """ Find total painted area. """

        return len(self.painted_squares())

    def painted_squares(self):
        return [s for s in self.squares if s.painted is True]

    def serialize(self, include_squares=False):

        _dict = {
            'id': str(self.id),
            'name': self.name,
            'start': self.start,
            'end': self.end,
            'area': self.area,
            'painted_area': self.calculate_painted_area()
        }

        if include_squares:

            _dict['painted_squares'] = [{
                'x': s.x,
                'y': s.y
            } for s in self.painted_squares()]

        return _dict

    @classmethod
    def post_delete(cls, sender, document, **kwargs):

        for s in document.squares:
            s.delete()
コード例 #28
0
class NierGames(medb.Document):
    weapon_id = medb.SequenceField(primary_key=True)
    urlIma = medb.StringField()
    game = medb.StringField()  # Replicant or Automata in this field
    status = medb.EmbeddedDocumentField(WeaponStatus)
コード例 #29
0
class DeviceInfo(mongoengine.Document):
    dev_id = mongoengine.SequenceField()
    dev_name = mongoengine.StringField(required=True)
    dev_desc = mongoengine.StringField()
    dev_paras = mongoengine.ListField()
コード例 #30
0
class Users(medb.Document):
    user_id = medb.SequenceField(primary_key=True)
    userName = medb.StringField(max_length=10, required=True)
    email = medb.EmailField(required=True)
    paswd = medb.StringField(max_length=30, required=True)
    kind = medb.StringField(max_length=1)  # A or N in this field