Exemple #1
0
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()
Exemple #2
0
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()
Exemple #3
0
 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
Exemple #4
0
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