def downgrade(pyramid_env): from assembl import models as m db = m.get_session_maker()() with transaction.manager: ls = m.LangString.create(u'Video', 'en') ls.add_value(u'Vidéo', 'fr') db.add( m.LandingPageModuleType(identifier="VIDEO", title=ls, default_order=6.0, editable_order=True, required=False)) lpmt = db.query(m.LandingPageModuleType).filter( m.LandingPageModuleType.identifier == u"INTRODUCTION").first() if lpmt: ls = lpmt.title ls.add_entry( m.LangStringEntry(langstring=ls, value=u"Introduction", locale_id=m.Locale.get_id_of("en"))) ls.add_entry( m.LangStringEntry(langstring=ls, value=u"Introduction", locale_id=m.Locale.get_id_of("fr"))) db.flush()
def update_langstring_from_input_entries(obj, attr, entries): """Update langstring from getattr(obj, attr) based on GraphQL LangStringEntryInput entries. """ langstring = getattr(obj, attr, None) if langstring is None: new_langstring = langstring_from_input_entries(entries) if new_langstring is not None: setattr(obj, attr, new_langstring) return current_title_entries_by_locale_code = { e.locale_code: e for e in get_entries(langstring) } if entries is not None: for entry in entries: locale_code = entry['locale_code'] current_entry = current_title_entries_by_locale_code.get( locale_code, None) if current_entry is not None: if current_entry.value != entry['value']: if not entry['value']: current_entry.tombstone_date = datetime.utcnow() else: current_entry.change_value(entry['value']) else: locale_id = models.Locale.get_id_of(locale_code) langstring.add_entry( models.LangStringEntry(langstring=langstring, value=entry['value'], locale_id=locale_id)) # need to flush or get_entries(langstring) will not give the new entries langstring.db.flush()
def as_lang_string(text, based_on): if idea.tombstone_date is None or based_on is None: ls = m.LangString.create(text, lang) ls.tombstone_date = idea.tombstone_date return ls else: db.add( m.LangStringEntry(langstring=based_on, value=text, locale=lang, tombstone_date=idea.tombstone_date)) return based_on
def langstring_from_input_entries(entries): """Return a LangString SA object based on GraphQL LangStringEntryInput entries. """ if entries is not None and len(entries) > 0: langstring = models.LangString.create(entries[0]['value'], entries[0]['locale_code']) for entry in entries[1:]: locale_id = models.Locale.get_id_of(entry['locale_code']) langstring.add_entry( models.LangStringEntry(langstring=langstring, value=entry['value'], locale_id=locale_id)) return langstring return None