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 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'
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 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 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 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)
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 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'