Ejemplo n.º 1
0
 def test_save_not_call(self, save, to_python):
     """gj.Document.save should be called if autosave is True."""
     to_python.return_value = self.ref_doc
     gj.FollowReferenceField(
         self.RefDoc, autosave=True
     ).to_python(self.ref_doc)
     self.assertEqual(save.call_count, 1)
     self.assertEqual(to_python.call_count, 1)
        class Ref2(Dictable, gj.Document):
            ref2_refs = db.ListField(gj.FollowReferenceField(Ref1))

            @classmethod
            def generate_test_data(cls, refs):
                ret = cls(ref2_refs=refs)
                ret.save()
                return ret
        class Ref3(Dictable, gj.Document):
            ref3_ref = gj.FollowReferenceField(Ref2)
            ref3_refs = db.ListField(gj.FollowReferenceField(Ref2))
            ref3_emb = db.EmbeddedDocumentField(Ref25)
            ref3_embs = db.EmbeddedDocumentListField(Ref25)
            ref3_oids = db.ListField(
                db.ObjectIdField(),
                default=[ObjectId() for ignore in range(3)])

            @classmethod
            def generate_test_data(cls, emb, embs, oids, ref, refs):
                ret = cls(ref3_emb=emb,
                          ref3_embs=embs,
                          ref3_oids=oids,
                          ref3_ref=ref,
                          ref3_refs=refs)
                ret.save()
                return ret
Ejemplo n.º 4
0
class Article(gj.Document):
    name = db.StringField(required=True, unique=True, min_length=2)
    description = db.StringField(required=True, min_length=2)
    link = db.URLField(required=True, unique=True)
    create_datetime = db.DateTimeField(required=True, default=datetime.utcnow)
    modify_datetime = db.DateTimeField(required=True, default=datetime.utcnow)
    categories = db.ListField(
        gj.FollowReferenceField('Category', reverse_delete_rule=db.DENY))
    added_by = db.ReferenceField('User')
Ejemplo n.º 5
0
class DisabledIDCheckDocument(gj_doc.Helper, db.Document):
    """Test document disabling id check."""

    ref = gj.FollowReferenceField(ReferencedDocument, id_check=False)

    def __init__(self, enable_gj=False, *args, **kwargs):
        """Init the class."""
        super(DisabledIDCheckDocument, self).__init__(*args, **kwargs)
        if enable_gj:
            self.begin_goodjson()
class Question(Document):
    question_text = db.StringField(max_length=500)
    word = gj.FollowReferenceField(Dictionary, reverse_delete_rule=CASCADE)

    def error_checker(id):
        if not ObjectId.is_valid(id):
            return Response('Failed: invalid Id', 400)

        if not Question.objects(id=id):
            return Response('', 204)
class Quiz(Document):
    quiz_name = db.StringField(required=True, max_length=100)
    details = db.StringField(max_length=500, required=True)
    questions = db.ListField(
        gj.FollowReferenceField(Question, reverse_delete_rule=PULL))

    def error_checker(id):
        if not ObjectId.is_valid(id):
            return Response('Failed: invalid Id', 400)

        if not Quiz.objects(id=id):
            return Response('', 204)
Ejemplo n.º 8
0
class IDCheckDocument(gj_doc.Helper, db.Document):
    """
    Test document.

    By default, the id must be checked.
    """

    ref = gj.FollowReferenceField(ReferencedDocument)

    def __init__(self, enable_gj=False, *args, **kwargs):
        """Init the class."""
        super(IDCheckDocument, self).__init__(*args, **kwargs)
        if enable_gj:
            self.begin_goodjson()
        class TestDoc(gj.Document):
            """Test document."""

            name = db.StringField()
            is_last = db.BooleanField()
            ref = gj.FollowReferenceField("self", max_depth=self.check_depth)

            def __str__(self):
                """Return stringified summary."""
                return ("TestDoc<ID: {}, is_last: {}, ref: {}>").format(
                    self.name, self.is_last, getattr(self.ref, "id", None))

            def to_dict(self):
                """Return the dict."""
                return str(self.id) if self.is_last else {
                    "id": str(self.id),
                    "name": self.name,
                    "is_last": self.is_last,
                    "ref": self.ref.to_dict()
                }
 class SubDocument(Dictable, gj.EmbeddedDocument):
     parent = gj.FollowReferenceField("MainDocument")
     ref_list = db.ListField(gj.FollowReferenceField("MainDocument"))
Ejemplo n.º 11
0
 class Ref2(gj.Document):
     refs = db.ListField(gj.FollowReferenceField(Ref1))
Ejemplo n.º 12
0
class Message(gj.Document):
    text = StringField(required=True, max_length=500)
    author = gj.FollowReferenceField(User, required=True)
    chat = ReferenceField(Chat, required=True)
    date_created = DateTimeField(default=datetime.utcnow)
 class MainDocument(Dictable, gj.Document):
     name = db.StringField()
     ref_list = db.ListField(gj.FollowReferenceField("self"))
     subdoc = db.EmbeddedDocumentField(SubDocument)
Ejemplo n.º 14
0
class Chat(gj.Document):
    title = StringField(max_length=25)
    members = ListField(gj.FollowReferenceField(User))
    date_created = DateTimeField(default=datetime.utcnow)
    last_message_date = DateTimeField()
Ejemplo n.º 15
0
 class ModelCls(Dictable, gj.Document):
     name = db.StringField()
     ref = gj.FollowReferenceField("self", **kwargs.copy())
Ejemplo n.º 16
0
 def test_super_function_call(self, to_python):
     """ReferenceField.to_python should be called."""
     gj.FollowReferenceField(self.RefDoc).to_python(self.ref_doc)
     self.assertEqual(to_python.call_count, 1)
Ejemplo n.º 17
0
class Quiz(Document):
    quiz_name = db.StringField(required=True, max_length=20)
    number_of_questions = db.IntField()
    details = db.StringField(max_length=500, required=True)
    questions = db.ListField(gj.FollowReferenceField('Question'))
Ejemplo n.º 18
0
 class Ref25(gj.EmbeddedDocument):
     ref = gj.FollowReferenceField(Ref2)
     refs = db.ListField(gj.FollowReferenceField(Ref2))
Ejemplo n.º 19
0
 class ModelCls(gj.Document):
     name = db.StringField()
     ref = gj.FollowReferenceField("self")
Ejemplo n.º 20
0
class PasswordReset(gj.Document):
    user = gj.FollowReferenceField(User, required=True)
    token = StringField(required=True)
    time = DateTimeField(default=datetime.utcnow)