Example #1
0
def get_sa_catalog(domain):
    """
    Retrieves all translations for locale and domain from database
    and stores in thread data.
    """

    if domain is None:
        domain = gearshift.config.get("i18n.domain", "messages")

    catalog = _catalogs.get(domain)
    if not catalog:

        catalog = {}

        query = session.query(TG_Domain)
        domain = query.filter(TG_Domain.name==domain).first()

        if not domain:
            return catalog

        query = session.query(TG_Message)
        query = query.filter(TG_Message.domain==domain)

        for message in query:
            locale = message.locale
            messages = catalog.get(locale, {})
            messages[message.name] = message.text
            catalog[locale] = messages

        _catalogs[domain.name] = catalog

    return catalog
Example #2
0
def get_sa_catalog(domain):
    """
    Retrieves all translations for locale and domain from database
    and stores in thread data.
    """

    if domain is None:
        domain = gearshift.config.get("i18n.domain", "messages")

    catalog = _catalogs.get(domain)
    if not catalog:

        catalog = {}

        query = session.query(TG_Domain)
        domain = query.filter(TG_Domain.name == domain).first()

        if not domain:
            return catalog

        query = session.query(TG_Message)
        query = query.filter(TG_Message.domain == domain)

        for message in query:
            locale = message.locale
            messages = catalog.get(locale, {})
            messages[message.name] = message.text
            catalog[locale] = messages

        _catalogs[domain.name] = catalog

    return catalog
def test_exc_done_rollback():
    """No problems with error handler if controller manually rollbacks."""
    app = make_app(RbRoot)
    response = app.get('/doerr?id=28&dorb=1')
    assert 'KARL27' in response, 'Exception handler should have answered'
    assert session.query(User).get(28) is None
    assert session.query(User).get(29) is not None
def test_exc_rollback():
    """An exception within a controller method causes a rollback.

    Try to create a user that should rollback because of an exception
    so user 25 should not exist, but user 26 should be present since it
    is created by the exception handler.

    """
    app = make_app(RbRoot)
    response = app.get('/doerr?id=26')
    assert 'KARL27' in response, 'Exception handler should have answered'
    assert session.query(User).get(26) is None
    assert session.query(User).get(27) is not None
        def zero_limit(self, method=None):
            if method == 'Q':
                data = session.query(Address)
            elif method == 'QA':
                data = session.query(Address).all()
            elif method == 'SO':
                data = SOAddress.select()
            elif method == 'SL':
                data = list(SOAddress.select())
            else:
                raise Exception("Invalid method")

            spy = Spy(var_name='data', pages=xrange(1, 2), limit=16, page_count=1,
                      order=None, row_count=16)
            return dict(data=data, spy=spy)
        def __common(self, method=None):
            if method == 'Q':
                data = session.query(Address)
            elif method == 'QA':
                data = session.query(Address).all()
            elif method == 'SO':
                data = SOAddress.select()
            elif method == 'SL':
                data = list(SOAddress.select())
            else:
                raise ValueError("Invalid method %r" % method)

            spy = Spy(var_name='data', pages=xrange(1, 3), limit=10, page_count=2,
                      order=None, row_count=16)
            return dict(data=data, spy=spy)
def test_cntrl_commit():
    """It's safe to commit a transaction in the controller."""
    app = make_app(MyRoot)
    response = app.get("/create_person?id=23&docom=1")
    assert 'InvalidRequestError' not in response
    assert session.query(Person).get(23) is not None, \
        'The Person 23 should have been saved during commit inside controller'
        def related(self):
            # only SA Query
            data = session.query(Address).outerjoin(['user', 'occupation'])

            spy = Spy(var_name='data', pages=xrange(1, 3), limit=10, page_count=2,
                      order=None, row_count=16)
            return dict(data=data, spy=spy)
def test_query_in_session():
    i = users_table.insert()
    i.execute(user_name="globbo", password="******")
    query = session.query(User)
    globbo = query.filter_by(user_name="globbo").one()
    assert globbo.password == "thegreat!"
    users_table.delete().execute()
def test_cntrl_commit2():
    """A commit inside the controller is not rolled back by the exception."""
    app = make_app(MyRoot)
    response = app.get("/create_person?id=24&docom=1&doerr=1")
    assert 'InvalidRequestError' not in response
    assert session.query(Person).get(24) is not None, \
        'The Person 24 should have been saved during commit' \
        ' inside controller and not rolled back'
Example #11
0
def dump_sa_catalogs(locales):
    """Takes all domains and messages and creates message catalogs
    """
    localedir = gearshift.config.get("i18n.locale_dir", "locales")

    for locale in locales:

        messages_dir = os.path.join(localedir, locale, "LC_MESSAGES")

        for domain in session.query(TG_Domain):
            pofile = os.path.join(messages_dir, "%s.po" % domain.name)
            f = codecs.open(pofile, "w", "UTF-8")
            f.write("""
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR ORGANIZATION
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\\n"
"POT-Creation-Date: CREATION_DATE\\n"
"PO-Revision-Date: REVISION_DATE\\n"
"Last-Translator: TRANSLATOR <EMAIL@ADDRESS>\\n"
"Language-Team: LANGUAGE <*****@*****.**>\\n"
"MIME-Version: 1.0\\n"
"Content-Type: text/plain; charset=UTF-8\\n"
"Content-Transfer-Encoding: 8bit\\n"
"Generated-By: gearshift\\n"

            """)

            query = session.query(TG_Message)
            query = query.filter(TG_Message.domain == domain)
            query = query.filter(TG_Message.locale == locale)

            for message in query:
                if message.name == "":
                    continue  # descriptive text

                f.write(u"""
msgid "%s"
msgstr "%s"
                """ % (message.name, message.text))

            f.close()
Example #12
0
def dump_sa_catalogs(locales):
    """Takes all domains and messages and creates message catalogs
    """
    localedir = gearshift.config.get("i18n.locale_dir", "locales")

    for locale in locales:

        messages_dir = os.path.join(localedir, locale, "LC_MESSAGES")

        for domain in session.query(TG_Domain):
            pofile=os.path.join(messages_dir, "%s.po" %domain.name)
            f = codecs.open(pofile, "w", "UTF-8")
            f.write("""
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR ORGANIZATION
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\\n"
"POT-Creation-Date: CREATION_DATE\\n"
"PO-Revision-Date: REVISION_DATE\\n"
"Last-Translator: TRANSLATOR <EMAIL@ADDRESS>\\n"
"Language-Team: LANGUAGE <*****@*****.**>\\n"
"MIME-Version: 1.0\\n"
"Content-Type: text/plain; charset=UTF-8\\n"
"Content-Transfer-Encoding: 8bit\\n"
"Generated-By: gearshift\\n"

            """)

            query = session.query(TG_Message)
            query = query.filter(TG_Message.domain==domain)
            query = query.filter(TG_Message.locale==locale)

            for message in query:
                if message.name == "":
                    continue # descriptive text

                f.write(u"""
msgid "%s"
msgstr "%s"
                """%(message.name, message.text))

            f.close()
 def empty_with_groupby(self):
     data = session.query(Address)
     try:
         data = data.filter(Address.c.id < 0).group_by(Address.c.user_id)
     except AttributeError: # SQLAlchemy >= 0.5
         data = data.filter(Address.id < 0).group_by(Address.user_id)
     spy = Spy(var_name='data', pages=xrange(1, 1), limit=10, page_count=0,
               order=None, row_count=0)
     return dict(data=data, spy=spy)
        def __common(self, method=None):
            if method == 'Q':
                data = session.query(Address)
            elif method == 'QA':
                data = session.query(Address).all()
            elif method == 'SO':
                data = SOAddress.select()
            elif method == 'SL':
                data = list(SOAddress.select())
            else:
                raise ValueError("Invalid method %r" % method)

            spy = Spy(var_name='data',
                      pages=xrange(1, 3),
                      limit=10,
                      page_count=2,
                      order=None,
                      row_count=16)
            return dict(data=data, spy=spy)
        def zero_limit(self, method=None):
            if method == 'Q':
                data = session.query(Address)
            elif method == 'QA':
                data = session.query(Address).all()
            elif method == 'SO':
                data = SOAddress.select()
            elif method == 'SL':
                data = list(SOAddress.select())
            else:
                raise Exception("Invalid method")

            spy = Spy(var_name='data',
                      pages=xrange(1, 2),
                      limit=16,
                      page_count=1,
                      order=None,
                      row_count=16)
            return dict(data=data, spy=spy)
def test_exc_rollback2():
    """An exception within a controller method causes a rollback.

    Try to create a user that should rollback because of an exception
    so user XX should not exist.

    """
    app = make_app(RbRoot)
    response = app.get('/doerr?id=XX')
    assert 'KARL27' in response, 'Exception handler should have answered'
    assert session.query(User).get('XX') is None
def test_user_exception():
    """If a controller raises an exception, transactions are rolled back."""
    capture_log("gearshift.database")
    app = make_app(MyRoot)
    response = app.get("/create_person?id=19&docom=0&doerr=1&name=Martin%20GAL")
    print_log()
    assert 'KARL25' in response, \
        'The exception handler should have answered us'
    p = session.query(Person).get(19)
    assert p is None, \
        'This Person should have been rolled back: %s' % p
        def related(self):
            # only SA Query
            data = session.query(Address).outerjoin(['user', 'occupation'])

            spy = Spy(var_name='data',
                      pages=xrange(1, 3),
                      limit=10,
                      page_count=2,
                      order=None,
                      row_count=16)
            return dict(data=data, spy=spy)
def test_implicit_trans_no_error():
    """If a controller runs sucessfully, the transaction is commited."""
    capture_log("gearshift.database")
    app = make_app(MyRoot)
    response = app.get("/no_error?name=A.%20Dent")
    print_log()
    q = session.query(Person)
    arthur = q.filter_by(name="A. Dent").first()
    assert 'someconfirmhandler' in response, \
        'The no error should have redirected to someconfirmhandler'
    assert arthur is not None, 'Person arthur should have been saved!'
    assert arthur.name == "A. Dent", 'Person arthur should be named "A. Dent"'
 def empty_with_groupby(self):
     data = session.query(Address)
     try:
         data = data.filter(Address.c.id < 0).group_by(
             Address.c.user_id)
     except AttributeError:  # SQLAlchemy >= 0.5
         data = data.filter(Address.id < 0).group_by(Address.user_id)
     spy = Spy(var_name='data',
               pages=xrange(1, 1),
               limit=10,
               page_count=0,
               order=None,
               row_count=0)
     return dict(data=data, spy=spy)
Example #21
0
def create_sa_catalog(locales, domain):
    """
    Creates a message catalog based on list of locales from existing
    GNU message catalog
    """

    tg_message_table.drop(checkfirst=True)
    tg_domain_table.drop(checkfirst=True)

    tg_domain_table.create(checkfirst=True)
    tg_message_table.create(checkfirst=True)

    localedir = gearshift.config.get("i18n.locale_dir", "locales")

    query = session.query(TG_Domain)
    domain = query.filter(TG_Domain.name==domain).first()
    if domain:
        return
    else:
        domain = TG_Domain()
        domain.name = domain
        session.save(domain)
        session.flush()

    for locale in locales:
        translations = translation(
                domain=domain.name,
                localedir=localedir,
                languages=[locale])
        catalog = translations._catalog

        for k, v in catalog.items():
            mess = TG_Message()
            mess.domain = domain
            mess.locale = locale
            mess.name = k
            mess.text = v
            session.save(mess)

        session.flush()
Example #22
0
def create_sa_catalog(locales, domain):
    """
    Creates a message catalog based on list of locales from existing
    GNU message catalog
    """

    tg_message_table.drop(checkfirst=True)
    tg_domain_table.drop(checkfirst=True)

    tg_domain_table.create(checkfirst=True)
    tg_message_table.create(checkfirst=True)

    localedir = gearshift.config.get("i18n.locale_dir", "locales")

    query = session.query(TG_Domain)
    domain = query.filter(TG_Domain.name == domain).first()
    if domain:
        return
    else:
        domain = TG_Domain()
        domain.name = domain
        session.save(domain)
        session.flush()

    for locale in locales:
        translations = translation(domain=domain.name,
                                   localedir=localedir,
                                   languages=[locale])
        catalog = translations._catalog

        for k, v in catalog.items():
            mess = TG_Message()
            mess.domain = domain
            mess.locale = locale
            mess.name = k
            mess.text = v
            session.save(mess)

        session.flush()
 def test2(self):
     session.query(Test).get(1).val = 'b'
     return dict()
 def test3(self):
     assert session.query(Test).get(1).val == 'b'
     return dict()
def test_user_redirect():
    """If a controller redirects, transactions are committed."""
    app = make_app(MyRoot)
    app.get("/create_person?id=22&doerr=2")
    assert session.query(Person).get(22) is not None, \
        'The controller only redirected, the Person should have been saved'