示例#1
0
def init_cached_languages():
    """This method initializes the app cached translations"""
    global languages, lang_codes, lang_map

    del languages[:]
    del lang_codes[:]
    lang_map.clear()

    for lang in Language.all().order("-date"):
        logging.info("Generating cache for language %s" % lang.code)
        languages.append(
            {
                "id": lang.key().id(),
                "code": lang.code,
                "label": lang.label,
                "enabled_in_tool": lang.enabled_in_tool,
                "enabled_on_site": lang.enabled_on_site,
            }
        )

    lang_codes = [i["code"] for i in languages]

    for lang in languages:
        lang_map[lang["code"].lower().replace("_", "-")] = lang["code"]
        lang_map[lang["code"].split("_")[0]] = lang["code"]
示例#2
0
    def post(self):
        """Create a new language and fill it with empty translations"""
        if not users.is_current_user_admin():
            self.error(403)

        code = self.request.get('code')
        label = self.request.get('label')

        language = Language.all().filter('code =', code).get()
        if language is not None:
            self.error(500)
        else:
            language = Language(code=code,
                                label=label,
                                enabled_in_tool=False,
                                enabled_on_site=False)
            for phrase in Phrase.all():
                translation = Translation(phrase=phrase, text='')
                translation.put()
                language.translations.append(translation.key())
            language.put()

        init_cached_languages()

        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('')
示例#3
0
    def post(self):
        """Deploy action"""
        json = {}
        for language in Language.all().filter('enabled_on_site =', True):
            logging.info("Buiding translation snapshot for " + language.code)
            translations = {}
            for key in language.translations:
                translation = db.get(key)
                translations[translation.phrase.text] = translation.text
            json[language.code] = translations

        logging.info("Encoding snapshot JSON")
        json = simplejson.dumps(json)

        logging.info("Switching active snapshot")

        active_snapshot = SnapshotMetadata.all().filter('active =', True).get()
        if active_snapshot:
            active_snapshot.active = False
            active_snapshot.save()

        metadata = SnapshotMetadata(active=True)
        metadata.put()
        content = SnapshotContent(metadata=metadata, json=json)
        content.put()

        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('success')
示例#4
0
    def post(self):
        """Deploy action"""
        json = {}
        for language in Language.all().filter('enabled_on_site =', True):
            logging.info("Buiding translation snapshot for " + language.code)
            translations = {}
            for key in language.translations:
                translation = db.get(key)
                translations[translation.phrase.text] = translation.text
            json[language.code] = translations

        logging.info("Encoding snapshot JSON")
        json = simplejson.dumps(json)

        logging.info("Switching active snapshot")

        active_snapshot = SnapshotMetadata.all().filter('active =', True).get()
        if active_snapshot:
            active_snapshot.active = False
            active_snapshot.save()

        metadata = SnapshotMetadata(active=True)
        metadata.put()
        content = SnapshotContent(metadata=metadata, json=json)
        content.put()

        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('success')
示例#5
0
    def post(self):
        """Post new suggestion"""
        lang_code = self.request.path.split('/')[-3]
        language = Language.all().filter('code =', lang_code).get()

        if language is None:
            self.error(404)

        user = get_current_youtify_user_model()

        if not (users.is_current_user_admin()
                or user.key() in language.leaders):
            self.error(403)

        translation_id = self.request.path.split('/')[-1]
        translation = Translation.get_by_id(int(translation_id))

        if translation is None:
            self.error(404)

        translation.text = self.request.get('text')
        translation.save()

        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('success')
示例#6
0
    def post(self):
        """Deploy action"""
        json = {}
        for language in Language.all():
            translations = {}
            for key in language.translations:
                translation = db.get(key)
                translations[translation.phrase.text] = translation.text
            json[language.code] = translations
        json = simplejson.dumps(json)

        active_snapshot = SnapshotMetadata.all().filter('active =', True).get()
        if active_snapshot:
            active_snapshot.active = False
            active_snapshot.save()

        metadata = SnapshotMetadata(active=True)
        metadata.put()
        content = SnapshotContent(metadata=metadata, json=json)
        content.put()

        init_cached_translations()

        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('success')
示例#7
0
    def get(self):
        lang_code = self.request.path.split("/")[-2]
        language = Language.all().filter("code =", lang_code).get()

        if language is None:
            self.error(404)

        json = []

        for key in language.leaders:
            user = db.get(key)
            json.append({"id": user.key().id(), "name": user.google_user.nickname(), "email": user.google_user.email()})

        self.response.headers["Content-Type"] = "application/json"
        self.response.out.write(simplejson.dumps(json))
示例#8
0
    def post(self):
        """Create a new phrase"""
        if not users.is_current_user_admin():
            self.error(403)
        else:
            text = self.request.get('text')
            phrase = Phrase(text=text)
            phrase.put()

            for lang in Language.all():
                translation = Translation(phrase=phrase, text='')
                translation.save()

                lang.translations.append(translation.key())
                lang.save()
示例#9
0
    def post(self):
        """Create a new phrase"""
        if not users.is_current_user_admin():
            self.error(403)
        else:
            text = self.request.get('text')
            phrase = Phrase(text=text)
            phrase.put()

            for lang in Language.all():
                translation = Translation(phrase=phrase, text='')
                translation.save()

                lang.translations.append(translation.key())
                lang.save()
示例#10
0
    def get(self):
        """Get all translations for a specific language"""
        lang_code = self.request.path.split("/")[-2]
        language = Language.all().filter("code =", lang_code).get()

        if language is None:
            self.error(404)

        json = []
        translations = db.get(language.translations)
        for translation in translations:
            json.append(
                {"id": translation.key().id(), "original": translation.phrase.text, "translation": translation.text}
            )

        self.response.headers["Content-Type"] = "application/json"
        self.response.out.write(simplejson.dumps(json))
示例#11
0
    def delete(self):
        """Remove a user from the list of leaders"""
        lang_code = self.request.path.split('/')[-3]
        user_id = self.request.path.split('/')[-1]
        language = Language.all().filter('code =', lang_code).get()
        user = YoutifyUser.get_by_id(int(user_id))

        if language is None:
            self.error(404)

        if user is None:
            self.error(404)
        
        language.leaders.remove(user.key())
        language.save()

        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('success')
示例#12
0
    def delete(self):
        """Remove a user from the list of leaders"""
        lang_code = self.request.path.split('/')[-3]
        user_id = self.request.path.split('/')[-1]
        language = Language.all().filter('code =', lang_code).get()
        user = YoutifyUser.get_by_id(int(user_id))

        if language is None:
            self.error(404)

        if user is None:
            self.error(404)

        language.leaders.remove(user.key())
        language.save()

        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('success')
示例#13
0
    def get(self):
        lang_code = self.request.path.split('/')[-2]
        language = Language.all().filter('code =', lang_code).get()

        if language is None:
            self.error(404)

        json = []

        for key in language.leaders:
            user = db.get(key)
            json.append({
                'id': user.key().id(),
                'name': user.google_user2.nickname(),
                'email': user.google_user2.email(),
            })

        self.response.headers['Content-Type'] = 'application/json'
        self.response.out.write(simplejson.dumps(json))
示例#14
0
    def get(self):
        lang_code = self.request.path.split('/')[-2]
        language = Language.all().filter('code =', lang_code).get()

        if language is None:
            self.error(404)

        json = []

        for key in language.leaders:
            user = db.get(key)
            json.append({
                'id': user.key().id(),
                'name': user.google_user2.nickname(),
                'email': user.google_user2.email(),
            })

        self.response.headers['Content-Type'] = 'application/json'
        self.response.out.write(simplejson.dumps(json))
示例#15
0
    def post(self):
        """Add a new leader for this language"""
        lang_code = self.request.path.split('/')[-2]
        language = Language.all().filter('code =', lang_code).get()
        user_id = self.request.get('user')

        if language is None:
            self.error(404)

        if user_id is None:
            self.error(400)

        user = YoutifyUser.get_by_id(int(user_id))

        if user.key() not in language.leaders:
            language.leaders.append(user.key())
            language.save()

        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('success')
示例#16
0
    def post(self):
        """Add a new leader for this language"""
        lang_code = self.request.path.split('/')[-2]
        language = Language.all().filter('code =', lang_code).get()
        user_id = self.request.get('user')

        if language is None:
            self.error(404)

        if user_id is None:
            self.error(400)

        user = YoutifyUser.get_by_id(int(user_id))
        
        if user.key() not in language.leaders:
            language.leaders.append(user.key())
            language.save()

        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('success')
示例#17
0
    def post(self):
        """Add a new leader for this language"""
        lang_code = self.request.path.split("/")[-2]
        language = Language.all().filter("code =", lang_code).get()
        user_id = self.request.get("user")

        if language is None:
            self.error(404)

        if user_id is None:
            self.error(400)

        user = YoutifyUser.get_by_id(int(user_id))

        if user.key() not in language.leaders:
            language.leaders.append(user.key())
            language.save()

        self.response.headers["Content-Type"] = "text/plain"
        self.response.out.write("success")
示例#18
0
    def get(self):
        """Get all translations for a specific language"""
        lang_code = self.request.path.split('/')[-2]
        language = Language.all().filter('code =', lang_code).get()

        if language is None:
            self.error(404)

        json = []
        translations = db.get(language.translations)
        for translation in translations:
            try:
                json.append({
                    'id': translation.key().id(),
                    'original': translation.phrase.text,
                    'translation': translation.text,
                })
            except:
                translation.delete()

        self.response.headers['Content-Type'] = 'application/json'
        self.response.out.write(simplejson.dumps(json))
示例#19
0
    def get(self):
        """Get all translations for a specific language"""
        lang_code = self.request.path.split('/')[-2]
        language = Language.all().filter('code =', lang_code).get()

        if language is None:
            self.error(404)

        json = []
        translations = db.get(language.translations)
        for translation in translations:
            try:
                json.append({
                    'id': translation.key().id(),
                    'original': translation.phrase.text,
                    'translation': translation.text,
                })
            except:
                translation.delete()

        self.response.headers['Content-Type'] = 'application/json'
        self.response.out.write(simplejson.dumps(json))
示例#20
0
    def delete(self):
        """Delete a specific phrase and all its translations"""
        if not users.is_current_user_admin():
            self.error(403)

        phrase_id = self.request.path.split('/')[-1]
        phrase = Phrase.get_by_id(int(phrase_id))

        if phrase:
            for lang in Language.all():
                for translation in db.get(lang.translations):
                    if translation.phrase.key() == phrase.key():
                        lang.translations.remove(translation.key())
                        translation.delete()
                        lang.save()

            phrase.delete()

            self.response.headers['Content-Type'] = 'text/plain'
            self.response.out.write('success');
        else:
            self.error(404)
示例#21
0
    def delete(self):
        """Delete a specific phrase and all its translations"""
        if not users.is_current_user_admin():
            self.error(403)

        phrase_id = self.request.path.split('/')[-1]
        phrase = Phrase.get_by_id(int(phrase_id))

        if phrase:
            for lang in Language.all():
                for translation in db.get(lang.translations):
                    if translation.phrase.key() == phrase.key():
                        lang.translations.remove(translation.key())
                        translation.delete()
                        lang.save()

            phrase.delete()

            self.response.headers['Content-Type'] = 'text/plain'
            self.response.out.write('success')
        else:
            self.error(404)
示例#22
0
def init_cached_languages():
    """This method initializes the app cached translations"""
    global languages, lang_codes, lang_map

    del languages[:]
    del lang_codes[:]
    lang_map.clear()

    for lang in Language.all().order('-date'):
        logging.info("Generating cache for language %s" % lang.code)
        languages.append({
            'id': lang.key().id(),
            'code': lang.code,
            'label': lang.label,
            'enabled_in_tool': lang.enabled_in_tool,
            'enabled_on_site': lang.enabled_on_site,
        })

    lang_codes = [i['code'] for i in languages]

    for lang in languages:
        lang_map[lang['code'].lower().replace('_', '-')] = lang['code']
        lang_map[lang['code'].split('_')[0]] = lang['code']
示例#23
0
    def post(self):
        """Create a new language and fill it with empty translations"""
        if not users.is_current_user_admin():
            self.error(403)

        code = self.request.get('code')
        label = self.request.get('label')

        language = Language.all().filter('code =', code).get()
        if language is not None:
            self.error(500)
        else:
            language = Language(code=code, label=label, enabled_in_tool=False, enabled_on_site=False)
            for phrase in Phrase.all():
                translation = Translation(phrase=phrase, text='')
                translation.put()
                language.translations.append(translation.key())
            language.put()

        init_cached_languages()

        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('')
示例#24
0
def init_cached_languages():
    """This method initializes the app cached translations"""
    global languages, lang_codes, lang_map

    del languages[:]
    del lang_codes[:]
    lang_map.clear()

    for lang in Language.all().order('-date'):
        logging.info("Generating cache for language %s" % lang.code)
        languages.append({
            'id': lang.key().id(),
            'code': lang.code,
            'label': lang.label,
            'enabled_in_tool': lang.enabled_in_tool,
            'enabled_on_site': lang.enabled_on_site,
        })

    lang_codes = [i['code'] for i in languages]

    for lang in languages:
        lang_map[lang['code'].lower().replace('_', '-')] = lang['code']
        lang_map[lang['code'].split('_')[0]] = lang['code']
示例#25
0
    def post(self):
        """Post new suggestion"""
        lang_code = self.request.path.split('/')[-3]
        language = Language.all().filter('code =', lang_code).get()

        if language is None:
            self.error(404)

        user = get_current_youtify_user_model()

        if not (users.is_current_user_admin() or user.key() in language.leaders):
            self.error(403)

        translation_id = self.request.path.split('/')[-1]
        translation = Translation.get_by_id(int(translation_id))

        if translation is None:
            self.error(404)

        translation.text = self.request.get('text')
        translation.save()

        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('success')
示例#26
0
def get_leader_langs_for_user(youtify_user):
    ret = []
    for language in Language.all():
        if youtify_user.key() in language.leaders:
            ret.append(language.code)
    return ret
示例#27
0
def get_leader_langs_for_user(youtify_user):
    ret = []
    for language in Language.all():
        if youtify_user.key() in language.leaders:
            ret.append(language.code)
    return ret