From a8cb12cc72c185f395c001f8c48427f6e98c3157 Mon Sep 17 00:00:00 2001 From: joamag Date: Wed, 5 Dec 2018 09:51:44 +0000 Subject: [PATCH] Bundle export support in locale --- src/appier_extras/parts/admin/models/locale.py | 8 ++++++++ src/appier_extras/parts/admin/part.py | 15 +++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/appier_extras/parts/admin/models/locale.py b/src/appier_extras/parts/admin/models/locale.py index 8422c9f0..a96b29df 100644 --- a/src/appier_extras/parts/admin/models/locale.py +++ b/src/appier_extras/parts/admin/models/locale.py @@ -191,6 +191,14 @@ def post_delete(self): base.Base.post_delete(self) self.owner.trigger_bus("locale/reload") + @appier.link(name = "Export Bundle") + def bundle_url(self, absolute = False): + return appier.get_app().url_for( + "admin.bundle_locale_json", + id = self.id, + absolute = absolute + ) + @property def data_u(self): cls = self.__class__ diff --git a/src/appier_extras/parts/admin/part.py b/src/appier_extras/parts/admin/part.py index 1faff70d..1f748993 100644 --- a/src/appier_extras/parts/admin/part.py +++ b/src/appier_extras/parts/admin/part.py @@ -226,6 +226,7 @@ def routes(self): (("GET",), "/admin/peers", self.list_peers), (("GET",), "/admin/counters", self.list_counters), (("GET",), "/admin/events.csv", self.list_events_csv), + (("GET",), "/admin/locales//bundle.json", self.bundle_locale_json, None, True), (("GET",), "/admin/database", self.database), (("GET",), "/admin/database/export", self.database_export), (("GET",), "/admin/database/import", self.database_import), @@ -1137,6 +1138,15 @@ def list_events_csv(self): self.content_type("text/csv") return result + @appier.ensure(token = "admin", context = "admin") + def bundle_locale_json(self, id): + name = self.field("name", None) + locale = models.Locale.get(id = id, rules = False) + name = name or locale.context or "global" + file_name = "%s.%s.json" % (name, locale.locale) + self.content_disposition("filename=\"%s\"" % file_name) + return self.json(locale.data_j, sort_keys = True) + @appier.ensure(token = "admin.database", context = "admin") def database(self): return self.template( @@ -1159,10 +1169,7 @@ def database_export(self): file_name = "%s_%s.dat" % (self.owner.name, date_time_s) self.content_type("application/octet-stream") - self.request.set_header( - "Content-Disposition", - "attachment; filename=\"%s\"" % file_name - ) + self.content_disposition("attachment; filename=\"%s\"" % file_name) return file.getvalue()