Пример #1
0
        def test_inheritance(self):
            trans = translate(Parent)
            self.assertEqual(list(trans.keys()), ['Parent'])
            self.assertFields(trans['Parent'], [
                ('id', PrimaryKeyField),])

            trans = translate(Child)
            self.assertEqual(sorted(trans.keys()), ['Child', 'Parent'])
            self.assertFields(trans['Child'], [
                ('id', PrimaryKeyField),
                ('parent_ptr', ForeignKeyField)])
Пример #2
0
        def test_cycle(self):
            trans = translate(A)
            self.assertFields(trans['A'], [('id', PrimaryKeyField),
                                           ('a_field', IntegerField),
                                           ('b', ForeignKeyField)])
            self.assertFields(trans['B'], [('id', PrimaryKeyField),
                                           ('a', IntegerField)])

            trans = translate(B)
            self.assertFields(trans['A'], [('id', PrimaryKeyField),
                                           ('a_field', IntegerField),
                                           ('b', IntegerField)])
            self.assertFields(trans['B'], [('id', PrimaryKeyField),
                                           ('a', ForeignKeyField)])
Пример #3
0
        def test_graph(self):
            P = translate(User, Tag, Comment)
            self.assertEqual(sorted(P.keys()),
                             ['Comment', 'Post', 'Tag', 'Tag_posts', 'User'])

            # Test the models that were found.
            user = P['User']
            self.assertFields(user, [('id', PrimaryKeyField),
                                     ('username', CharField)])
            self.assertEqual(user.posts.rel_model, P['Post'])
            self.assertEqual(user.comments.rel_model, P['Comment'])

            post = P['Post']
            self.assertFields(post, [('id', PrimaryKeyField),
                                     ('author', ForeignKeyField),
                                     ('content', TextField)])
            self.assertEqual(post.comments.rel_model, P['Comment'])

            comment = P['Comment']
            self.assertFields(comment, [('id', PrimaryKeyField),
                                        ('post', ForeignKeyField),
                                        ('commenter', ForeignKeyField),
                                        ('comment', TextField)])

            tag = P['Tag']
            self.assertFields(tag, [('id', PrimaryKeyField),
                                    ('tag', CharField)])

            thru = P['Tag_posts']
            self.assertFields(thru, [('id', PrimaryKeyField),
                                     ('tag', ForeignKeyField),
                                     ('post', ForeignKeyField)])
Пример #4
0
 def test_max_depth(self):
     trans = translate(C, max_depth=1)
     self.assertFields(trans['C'], [
         ('id', PrimaryKeyField),
         ('b', ForeignKeyField)])
     self.assertFields(trans['B'], [
         ('id', PrimaryKeyField),
         ('a', IntegerField)])
Пример #5
0
 def test_simple(self):
     P = translate(Simple)
     self.assertEqual(list(P.keys()), ['Simple'])
     self.assertFields(P['Simple'], [
         ('id', PrimaryKeyField),
         ('char_field', CharField),
         ('int_field', IntegerField),
     ])
Пример #6
0
        def test_cycle(self):
            trans = translate(A)
            self.assertFields(trans['A'], [
                ('id', PrimaryKeyField),
                ('a_field', IntegerField),
                ('b', ForeignKeyField)])
            self.assertFields(trans['B'], [
                ('id', PrimaryKeyField),
                ('a', IntegerField)])

            trans = translate(B)
            self.assertFields(trans['A'], [
                ('id', PrimaryKeyField),
                ('a_field', IntegerField),
                ('b', IntegerField)])
            self.assertFields(trans['B'], [
                ('id', PrimaryKeyField),
                ('a', ForeignKeyField)])
Пример #7
0
    def test_exclude(self):
        trans = translate(Comment, exclude=(User, ))
        self.assertFields(trans['Post'], [('id', PrimaryKeyField),
                                          ('author', IntegerField),
                                          ('content', TextField)])
        self.assertEqual(trans['Post'].comments.rel_model, trans['Comment'])

        self.assertFields(trans['Comment'], [('id', PrimaryKeyField),
                                             ('post', ForeignKeyField),
                                             ('commenter', IntegerField),
                                             ('comment', TextField)])
Пример #8
0
 def test_docs_example(self):
     # The docs don't lie.
     PEvent = translate(Event)['Event']
     hour = timedelta(hours=1)
     query = (PEvent.select().where(
         (PEvent.end_time - PEvent.start_time) > hour))
     sql, params = query.sql()
     self.assertEqual(
         sql,
         'SELECT t1."id", t1."start_time", t1."end_time", t1."title" '
         'FROM "events_tbl" AS t1 '
         'WHERE ((t1."end_time" - t1."start_time") > %s)')
     self.assertEqual(params, [hour])
Пример #9
0
        def test_fk_query(self):
            trans = translate(User, Post, Comment, Tag)
            U = trans['User']
            P = trans['Post']
            C = trans['Comment']

            query = (U.select().join(P).join(C).where(C.comment == 'test'))
            sql, params = query.sql()
            self.assertEqual(
                sql, 'SELECT t1."id", t1."username" FROM "user_tbl" AS t1 '
                'INNER JOIN "playhouse_post" AS t2 '
                'ON (t1."id" = t2."author_id") '
                'INNER JOIN "playhouse_comment" AS t3 '
                'ON (t2."id" = t3."post_id") WHERE (t3."comment" = %s)')
            self.assertEqual(params, ['test'])
Пример #10
0
        def test_exclude(self):
            trans = translate(Comment, exclude=(User,))
            self.assertFields(trans['Post'], [
                ('id', PrimaryKeyField),
                ('author', IntegerField),
                ('content', TextField)])
            self.assertEqual(
                trans['Post'].comments.rel_model,
                trans['Comment'])

            self.assertFields(trans['Comment'], [
                ('id', PrimaryKeyField),
                ('post', ForeignKeyField),
                ('commenter', IntegerField),
                ('comment', TextField)])
Пример #11
0
 def test_docs_example(self):
     # The docs don't lie.
     PEvent = translate(Event)['Event']
     hour = timedelta(hours=1)
     query = (PEvent
              .select()
              .where(
                  (PEvent.end_time - PEvent.start_time) > hour))
     sql, params = query.sql()
     self.assertEqual(
         sql,
         'SELECT t1."id", t1."start_time", t1."end_time", t1."title" '
         'FROM "events_tbl" AS t1 '
         'WHERE ((t1."end_time" - t1."start_time") > %s)')
     self.assertEqual(params, [hour])
Пример #12
0
        def test_m2m_query(self):
            trans = translate(Post, Tag)
            P = trans['Post']
            U = trans['User']
            T = trans['Tag']
            TP = trans['Tag_posts']

            query = (P.select().join(TP).join(T).where(T.tag == 'test'))
            sql, params = query.sql()
            self.assertEqual(
                sql, 'SELECT t1."id", t1."author_id", t1."content" '
                'FROM "playhouse_post" AS t1 '
                'INNER JOIN "playhouse_tag_posts" AS t2 '
                'ON (t1."id" = t2."post_id") '
                'INNER JOIN "playhouse_tag" AS t3 '
                'ON (t2."tag_id" = t3."id") WHERE (t3."tag" = %s)')
            self.assertEqual(params, ['test'])
Пример #13
0
        def test_fk_query(self):
            trans = translate(User, Post, Comment, Tag)
            U = trans['User']
            P = trans['Post']
            C = trans['Comment']

            query = (U.select()
                     .join(P)
                     .join(C)
                     .where(C.comment == 'test'))
            sql, params = query.sql()
            self.assertEqual(
                sql,
                'SELECT t1."id", t1."username" FROM "user_tbl" AS t1 '
                'INNER JOIN "playhouse_post" AS t2 '
                'ON (t1."id" = t2."author_id") '
                'INNER JOIN "playhouse_comment" AS t3 '
                'ON (t2."id" = t3."post_id") WHERE (t3."comment" = %s)')
            self.assertEqual(params, ['test'])
Пример #14
0
        def test_graph(self):
            P = translate(User, Tag, Comment)
            self.assertEqual(sorted(P.keys()), [
                'Comment',
                'Post',
                'Tag',
                'Tag_posts',
                'User'])

            # Test the models that were found.
            user = P['User']
            self.assertFields(user, [
                ('id', PrimaryKeyField),
                ('username', CharField)])
            self.assertEqual(user.posts.rel_model, P['Post'])
            self.assertEqual(user.comments.rel_model, P['Comment'])

            post = P['Post']
            self.assertFields(post, [
                ('id', PrimaryKeyField),
                ('author', ForeignKeyField),
                ('content', TextField)])
            self.assertEqual(post.comments.rel_model, P['Comment'])

            comment = P['Comment']
            self.assertFields(comment, [
                ('id', PrimaryKeyField),
                ('post', ForeignKeyField),
                ('commenter', ForeignKeyField),
                ('comment', TextField)])

            tag = P['Tag']
            self.assertFields(tag, [
                ('id', PrimaryKeyField),
                ('tag', CharField)])

            thru = P['Tag_posts']
            self.assertFields(thru, [
                ('id', PrimaryKeyField),
                ('tag', ForeignKeyField),
                ('post', ForeignKeyField)])
Пример #15
0
        def test_m2m_query(self):
            trans = translate(Post, Tag)
            P = trans['Post']
            U = trans['User']
            T = trans['Tag']
            TP = trans['Tag_posts']

            query = (P.select()
                     .join(TP)
                     .join(T)
                     .where(T.tag == 'test'))
            sql, params = query.sql()
            self.assertEqual(
                sql,
                'SELECT t1."id", t1."author_id", t1."content" '
                'FROM "playhouse_post" AS t1 '
                'INNER JOIN "playhouse_tag_posts" AS t2 '
                'ON (t1."id" = t2."post_id") '
                'INNER JOIN "playhouse_tag" AS t3 '
                'ON (t2."tag_id" = t3."id") WHERE (t3."tag" = %s)')
            self.assertEqual(params, ['test'])
Пример #16
0
from django.db import models
from playhouse.djpeewee import translate

class Word(models.Model):
    infinite_en = models.CharField(max_length=255)
    infinite_es = models.CharField(max_length=255)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

PWord = translate(Word).Word

class Tense(models.Model):
    name = models.CharField(max_length=255)

PTense = translate(Tense).Tense

class Person(models.Model):
    name = models.CharField(max_length=255)

PPerson = translate(Person).Person

class Conjugation(models.Model):
    form = models.CharField(max_length=255)
    person = models.ForeignKey(Person)
    tense = models.ForeignKey(Tense)

PConjugation = translate(Conjugation).Conjugation
# Create your models here.
Пример #17
0
 def test_self_referential(self):
     trans = translate(Category)
     self.assertFields(trans['Category'], [
         ('id', PrimaryKeyField),
         ('parent', IntegerField)])
Пример #18
0
 def test_backrefs(self):
     trans = translate(User, backrefs=True)
     self.assertEqual(sorted(trans.keys()), [
         'Comment',
         'Post',
         'User'])