class Persone(Document):
            TYPES = (("pf", "PF"), ("pj", "PJ"))
            name = StringField()
            tp = StringField(choices=TYPES)

            father = CachedReferenceField("self",
                                          fields=("tp", ),
                                          auto_sync=False)
    def test_cached_reference_fields_on_embedded_documents(self):
        with pytest.raises(InvalidDocumentError):

            class Test(Document):
                name = StringField()

            type(
                "WrongEmbeddedDocument",
                (EmbeddedDocument, ),
                {"test": CachedReferenceField(Test)},
            )
Exemplo n.º 3
0
class Group(Document):
    id = StringField(required=True, primary_key=True)
    trainees = ListField(CachedReferenceField(Trainee, auto_sync=True))
    level = EmbeddedDocumentField(Level, default=Level)
    is_deleted = BooleanField(default=False)

    class GroupQuerySet(ExtendedQuerySet):
        def create(self, id, trainees=None):
            if not trainees:
                trainees = []

            return super(Group.GroupQuerySet, self).create(id=unicode(id),
                                                           trainees=trainees)

    meta = {
        'queryset_class': GroupQuerySet,
    }

    def add_trainee(self, new_trainee):
        self.update(push__trainees=new_trainee)
        return self

    def get_trainees_of_today(self):
        today = datetime.now().strftime('%A')
        return self.get_trainees_in_day(today)

    def get_trainees_in_day(self, day_name):
        return [
            trainee for trainee in self.trainees
            if trainee.is_training_in_day(day_name)
        ]

    def __repr__(self):
        return '<Group {id}>'.format(id=self.id)

    def __str__(self):
        return repr(self)

    def __unicode__(self):
        return repr(self)

    def delete(self, *args, **kwargs):
        self.is_deleted = True
        self.save()
Exemplo n.º 4
0
class Group(Document):
    id = StringField(required=True, primary_key=True)
    trainees = ListField(CachedReferenceField(Trainee, auto_sync=True))

    class GroupQuerySet(ExtendedQuerySet):
        def create(self, id, trainees=[]):
            return super(Group.GroupQuerySet, self).create(id=unicode(id),
                                                           trainees=trainees)

    meta = {
        'queryset_class': GroupQuerySet,
    }

    def add_trainee(self, new_trainee):
        self.update(push__trainees=new_trainee)
        return self

    def get_trainees_of_today(self):
        today = datetime.now().strftime('%A')
        return self.get_trainees_in_day(today)

    def get_trainees_in_day(self, day_name):
        return [
            trainee for trainee in self.trainees
            if trainee.is_training_in_day(day_name)
        ]

    def __repr__(self):
        return '<Group {id}>'.format(id=self.id)

    def __str__(self):
        return repr(self)

    def __unicode__(self):
        return repr(self)

    def __iter__(self):
        return iter(self.trainees)
 class SocialTest(Document):
     group = StringField()
     person = CachedReferenceField(PersonAuto, fields=("salary", ))
 class Ocorrence(Document):
     person = StringField()
     animal = CachedReferenceField(Animal, fields=["tag"])
 def test_constructor_fail_bad_document_type(self):
     with pytest.raises(ValidationError,
                        match="must be a document class or a string"):
         CachedReferenceField(document_type=0)
 class Basket(Document):
     products = ListField(CachedReferenceField(Product,
                                               fields=["name"]))
 class SocialData(Document):
     obs = StringField()
     tags = ListField(StringField())
     person = CachedReferenceField(Person, fields=("group", ))