Example #1
0
def upload_sms_translations(request, domain):
    try:
        workbook = WorkbookJSONReader(request.file)
        translations = workbook.get_worksheet(title='translations')

        with StandaloneTranslationDoc.get_locked_obj(domain, "sms") as tdoc:
            msg_ids = sorted(_MESSAGES.keys())
            result = {}
            for lang in tdoc.langs:
                result[lang] = {}

            for row in translations:
                for lang in tdoc.langs:
                    if row.get(lang):
                        msg_id = row["property"]
                        if msg_id in msg_ids:
                            result[lang][msg_id] = str(row[lang]).strip()

            tdoc.translations = result
            tdoc.save()
        messages.success(request, _("SMS Translations Updated."))
    except Exception:
        notify_exception(request, 'SMS Upload Translations Error')
        messages.error(request, _("Update failed. We're looking into it."))

    return HttpResponseRedirect(reverse('sms_languages', args=[domain]))
Example #2
0
def edit_sms_languages(request, domain):
    """
    Accepts same post body as corehq.apps.app_manager.views.edit_app_langs
    """
    with StandaloneTranslationDoc.get_locked_obj(domain, "sms",
        create=True) as tdoc:
        try:
            from corehq.apps.app_manager.views import validate_langs
            langs, rename, build = validate_langs(request, tdoc.langs,
                validate_build=False)
        except AssertionError:
            return HttpResponse(status=400)

        for old, new in rename.items():
            if old != new:
                tdoc.translations[new] = tdoc.translations[old]
                del tdoc.translations[old]

        for lang in langs:
            if lang not in tdoc.translations:
                tdoc.translations[lang] = {}

        for lang in tdoc.translations.keys():
            if lang not in langs:
                del tdoc.translations[lang]

        tdoc.langs = langs
        tdoc.save()
        return json_response(langs)
Example #3
0
def sms_languages(request, domain):
    with StandaloneTranslationDoc.get_locked_obj(domain, "sms",
        create=True) as tdoc:
        if len(tdoc.langs) == 0:
            tdoc.langs = ["en"]
            tdoc.translations["en"] = {}
            tdoc.save()
    context = {
        "domain": domain,
        "always_deploy": True,
        "sms_langs": tdoc.langs,
        "bulk_upload": {
            "action": reverse("upload_sms_translations",
                              args=(domain,)),
            "download_url": reverse("download_sms_translations",
                                    args=(domain,)),
            "adjective": _("messaging translation"),
            "plural_noun": _("messaging translations"),
        },
    }
    context.update({
        "bulk_upload_form": get_bulk_upload_form(context),
    })

    return render(request, "sms/languages.html", context)
Example #4
0
def get_or_create_translation_doc(domain):
    with StandaloneTranslationDoc.get_locked_obj(domain, 'sms', create=True) as tdoc:
        if len(tdoc.langs) == 0:
            tdoc.langs = ['en']
            tdoc.translations['en'] = {}
            tdoc.save()

        return tdoc
Example #5
0
def get_or_create_translation_doc(domain):
    with StandaloneTranslationDoc.get_locked_obj(domain, 'sms', create=True) as tdoc:
        if len(tdoc.langs) == 0:
            tdoc.langs = ['en']
            tdoc.translations['en'] = {}
            tdoc.save()

        return tdoc