Ejemplo n.º 1
0
class ProfessorMetadata(motorengine.EmbeddedDocument):

    meta = {"collection": "test_professor_metadata"}
    id = motorengine.StringField(primary_key=False)
    first_name = motorengine.StringField()
    last_name = motorengine.StringField()
    departments = motorengine.ListField(motorengine.StringField())
Ejemplo n.º 2
0
class WorkLog(me.Document):
    origin_id = me.StringField(required=True, unique=True)
    user_id = me.StringField(required=True)
    username = me.StringField(required=True)
    time = me.DateTimeField(required=True)
    text = me.StringField(required=True)
    deleted = me.BooleanField(default=False)
Ejemplo n.º 3
0
class Player(motorengine.Document):

    meta = {"collection": "test_player"}
    first_name = motorengine.StringField(required=True)
    last_name = motorengine.StringField(required=True)
    opponent = motorengine.ReferenceField("Player")
    players = motorengine.ListField(motorengine.ReferenceField("Player"))
    articles = motorengine.ListField(motorengine.ReferenceField("Article"))
    embedded_list_articles = motorengine.EmbeddedDocumentListField(
        EmbeddedArticle)
Ejemplo n.º 4
0
class EmbeddedArticle(motorengine.EmbeddedDocument):

    meta = {"collection": "test_embedded_article"}
    headline = motorengine.StringField(required=True)
    pub_date = motorengine.DateTimeField(default=datetime.now)
    editor = motorengine.ReferenceField(Editor)
    reporter = motorengine.ReferenceField("Reporter")
Ejemplo n.º 5
0
class Position(motorengine.Document):
    symbol = motorengine.StringField(max_length=6)
    units = motorengine.IntField(default=0)
    price = motorengine.DecimalField()

    def update(self, units, price):
        if self.units + units < 0:
            raise Exception('Position limit exceeded!')

        if units < 0:
            pnl = units * (price - float(self.price))
            self.units += units
        else:
            pnl = 0
            total_units = self.units + units
            price = (self.units * float(self.price) +
                     units * price) / total_units
            self.price = round(price, 2)
            self.units = total_units

        return pnl

    def serialize(self):
        return {
            'symbol': self.symbol,
            'units': self.units,
            'price': float(self.price),
        }
Ejemplo n.º 6
0
class ParentWithRelationship(motorengine.Document):

    meta = {"collection": "test_parent_reference"}
    before_child = motorengine.ListField(
        motorengine.ReferenceField("ChildRegisteredBefore"))
    after_child = motorengine.ListField(
        motorengine.ReferenceField("ChildRegisteredAfter"))
    name = motorengine.StringField()
Ejemplo n.º 7
0
class User(motorengine.Document):

    name = motorengine.StringField()
    email = motorengine.EmailField()

    @jsonapi.marker.method.attribute()
    def greetings_earthling(self):
        return "Greetings, earthling {}!".format(self.name)
Ejemplo n.º 8
0
class Editor(motorengine.Document):
    """
    An Editor of a publication.
    """

    meta = {"collection": "test_editor"}
    id = motorengine.StringField(primary_key=True)
    first_name = motorengine.StringField(required=True,
                                         help_text="Editor's first name.",
                                         db_field="fname")
    last_name = motorengine.StringField(required=True,
                                        help_text="Editor's last name.")
    metadata = motorengine.MapField(field=motorengine.StringField(),
                                    help_text="Arbitrary metadata.")
    company = motorengine.LazyReferenceField(Publisher)
    avatar = motorengine.FileField()
    seq = motorengine.SequenceField()
Ejemplo n.º 9
0
class Reporter(motorengine.Document):

    meta = {"collection": "test_reporter"}
    id = motorengine.StringField(primary_key=True)
    first_name = motorengine.StringField(required=True)
    last_name = motorengine.StringField(required=True)
    email = motorengine.EmailField()
    awards = motorengine.ListField(motorengine.StringField())
    articles = motorengine.ListField(motorengine.ReferenceField(Article))
    embedded_articles = motorengine.ListField(
        motorengine.EmbeddedDocumentField(EmbeddedArticle))
    embedded_list_articles = motorengine.EmbeddedDocumentListField(
        EmbeddedArticle)
    generic_reference = motorengine.GenericReferenceField(
        choices=[Article, Editor])
    generic_embedded_document = motorengine.GenericEmbeddedDocumentField(
        choices=[EmbeddedArticle, EmbeddedFoo])
    generic_references = motorengine.ListField(
        motorengine.GenericReferenceField(choices=[Article, Editor]))
Ejemplo n.º 10
0
class Publisher(motorengine.Document):

    meta = {"collection": "test_publisher"}
    name = motorengine.StringField()

    @property
    def legal_name(self):
        return self.name + " Inc."

    def bad_field(self):
        return None
Ejemplo n.º 11
0
class Article(motorengine.Document):

    meta = {"collection": "test_article"}
    headline = motorengine.StringField(required=True,
                                       help_text="The article headline.")
    pub_date = motorengine.DateTimeField(
        default=datetime.now,
        verbose_name="publication date",
        help_text="The date of first press.",
    )
    editor = motorengine.ReferenceField(Editor)
    reporter = motorengine.ReferenceField("Reporter")
Ejemplo n.º 12
0
class Portfolio(motorengine.Document):
    user = motorengine.StringField(max_length=128, required=True)
    cash = motorengine.IntField(default=1000000)
    positions = motorengine.ListField(
        motorengine.EmbeddedDocumentField(Position))

    async def make_deal(self, sym, units, price):
        if units == 0:
            raise Exception('Amount must be positive!')

        amount = units * price
        if amount > self.cash:
            raise Exception('Cash limit exceeded!')

        pnl = 0
        for position in self.positions:
            if position.symbol == sym:
                pnl = position.update(units, price)
                if position.units == 0:
                    self.positions.remove(position)
                break
        else:
            if units < 0:
                raise Exception('Position limit exceeded!')
            else:
                self.positions.append(
                    Position(symbol=sym, units=units, price=price))

        self.cash -= amount
        # self.cash += pnl
        await self.save()

    async def reset(self):
        self.cash = 1000000
        self.positions = []
        await self.save()

    def serialize(self):
        return {
            # 'user': self.user,
            'cash': self.cash,
            'positions': [p.serialize() for p in self.positions],
        }
Ejemplo n.º 13
0
class Post(motorengine.Document):

    text = motorengine.StringField()
    author = motorengine.ReferenceField(User)
Ejemplo n.º 14
0
class CellTower(motorengine.Document):

    meta = {"collection": "test_cell_tower"}
    code = motorengine.StringField()
    base = motorengine.PolygonField()
    coverage_area = motorengine.MultiPolygonField()
Ejemplo n.º 15
0
 class MotorDoc(motorengine.Document):
     __collection__ = 'IntegrationCanDeleteOneItem'
     string = motorengine.StringField()
Ejemplo n.º 16
0
 class MotorBase(motorengine.Document):
     __collection__ = 'IntegrationTestRefBase'
     string = motorengine.StringField()
Ejemplo n.º 17
0
class ErroneousModel(motorengine.Document):
    meta = {"collection": "test_colliding_objects_model"}

    objects = motorengine.ListField(motorengine.StringField())
Ejemplo n.º 18
0
def test_should_map_convert_json():
    assert_conversion(motorengine.MapField,
                      graphene.JSONString,
                      field=motorengine.StringField())
Ejemplo n.º 19
0
class Child(Parent):

    meta = {"collection": "test_child"}
    baz = motorengine.StringField()
    loc = motorengine.PointField()
Ejemplo n.º 20
0
class Parent(motorengine.Document):

    meta = {"collection": "test_parent", "allow_inheritance": True}
    bar = motorengine.StringField()
    loc = motorengine.MultiPolygonField()
Ejemplo n.º 21
0
class MotorDocument(motorengine.Document):
    __collection__ = "IntegrationTestStringField"
    name = motorengine.StringField()
Ejemplo n.º 22
0
class EmbeddedFoo(motorengine.EmbeddedDocument):
    meta = {"collection": "test_embedded_foo"}
    bar = motorengine.StringField()
Ejemplo n.º 23
0
class ChildRegisteredAfter(motorengine.Document):

    meta = {"collection": "test_child_after_reference"}
    parent = motorengine.ReferenceField(ParentWithRelationship)
    name = motorengine.StringField()
Ejemplo n.º 24
0
class MotorDocument(motorengine.Document):
    field1 = motorengine.StringField()
    field2 = motorengine.IntField()
    field3 = motorengine.DateTimeField(default=datetime.now)
Ejemplo n.º 25
0
def test_should_field_convert_list():
    assert_conversion(motorengine.ListField,
                      graphene.List,
                      field=motorengine.StringField())
Ejemplo n.º 26
0
 class MotorUser(motorengine.Document):
     __collection__ = "IntegrationTestUsers"
     email = motorengine.StringField()
Ejemplo n.º 27
0
class HackerNewsStory(me.Document):
    id = me.StringField(unique=True)
    time = me.DateTimeField()
Ejemplo n.º 28
0
class Bar(motorengine.EmbeddedDocument):
    some_list_field = motorengine.ListField(motorengine.StringField(),
                                            required=True)
Ejemplo n.º 29
0
class MotorDocument(motorengine.Document):
    __collection__ = "MotorBenchmarkQuery"
    field1 = motorengine.StringField()
    field2 = motorengine.IntField()
    field3 = motorengine.DateTimeField(default=datetime.now)
Ejemplo n.º 30
0
class User(motorengine.Document):

    name = motorengine.StringField()
    email = motorengine.EmailField()
    posts = motorengine.ListField(motorengine.ReferenceField("__main__.Post"))