def test05_lock(self): languages.lock('en') self.assertEqual(languages.is_locked(), True) self.assertEqual(languages.get_active(), 'en') languages.release() self.assertEqual(languages.is_locked(), False) self.assertEqual(languages.get_active(), 'cs')
def test_lock(self): activate('en') self.assertFalse(languages.is_locked()) self.assertEqual(languages.get_active(), 'en') languages.lock('fr') self.assertTrue(languages.is_locked()) self.assertEqual(languages.get_active(), 'fr') languages.release() self.assertFalse(languages.is_locked()) self.assertEqual(languages.get_active(), 'en')
def query_from_untranslated_model(): lock('en') try: # Use prefetch_related; start the query from an untranslated model qs = Untranslated.objects\ .select_related('basic')\ .prefetch_related('basic__translations') self.assertEqual( ','.join( '%s %s' % (u.name, u.basic.title) for u in qs ), 'u1 content,u2 only english' ) finally: release()
def render(self, context): # If language_code is string, strip quotes # otherwise resolve variable if self.language_code[0] == self.language_code[-1] and self.language_code[0] in ('"',"'"): language_code = self.language_code[1:-1] else: # Do not catch VariableDoesNotExist exception language_code = template.Variable(self.language_code).resolve(context) # Lock language, store code into context, render, restore context and release lock languages.lock(language_code) context.push() context[self.varname] = languages.get_active() output = self.nodelist.render(context) context.pop() languages.release() return output
def change_view(self, request, object_id, extra_context=None): """ Lock language over change_view and add extra_context """ try: lock(request.POST.get("language", request.GET.get("language", get_active()))) model = self.model opts = model._meta context = { "title": _("Add %s for language %s") % (force_unicode(opts.verbose_name), force_unicode(get_dict()[get_active()])) } context.update(extra_context or {}) return super(MultilingualModelAdmin, self).change_view(request, object_id, context) finally: release()
def add_view(self, request, form_url='', extra_context=None): """ Lock language over 'add' view and update context. """ try: lock(request.POST.get('ml_admin_language', request.GET.get('ml_admin_language', get_active()))) model = self.model opts = model._meta context = { 'title': _('Add %s for language %s') % ( force_unicode(opts.verbose_name), force_unicode(get_dict()[get_active()]) ), } context.update(extra_context or {}) return super(MultilingualModelAdmin, self).add_view(request, form_url=form_url, extra_context=context) finally: release()
def test03_proxy_fields_fallbacks(self): # Test proxy fields reading obj = Basic.objects.get(pk=2) self.assertEqual(obj.title, u'pouze čeština') self.assertEqual(obj.title_cs, u'pouze čeština') self.assertEqual(obj.title_en, None) lock('en') self.assertEqual(obj.title, u'pouze čeština') release() obj = Basic.objects.get(pk=3) # Do not forget we have activated czech language self.assertEqual(obj.title, None) self.assertEqual(obj.title_cs, None) self.assertEqual(obj.title_en, u'only english') obj = Basic.objects.get(pk=4) self.assertEqual(obj.title, None) self.assertEqual(obj.title_cs, None) self.assertEqual(obj.title_en, None)
def change_view(self, request, object_id, **kwargs): """ Lock language over change_view and add extra_context """ # In Django 1.4 number of arguments have changed. extra_context = kwargs.get('extra_context') try: lock(request.POST.get('language', request.GET.get('language', get_active()))) model = self.model opts = model._meta context = { 'title': _('Change %s for language %s') % ( force_unicode(opts.verbose_name), force_unicode(get_dict()[get_active()]) ), } context.update(extra_context or {}) kwargs['extra_context'] = context return super(MultilingualModelAdmin, self).change_view(request, object_id, **kwargs) finally: release()
def wrapped(cls, request, *args, **kwargs): lock(request.POST.get('language', request.GET.get('language', get_active()))) resp = func(cls, request, *args, **kwargs) release() return resp
def tearDown(self): deactivate_all() release()
def tearDown(self): # Remove language locks if any remains # TODO: rollback after each test, to get database to the same initial state release()
def tearDown(self): # Reset old language activate(self.old_language) languages.release() settings.LANGUAGES = self.old_languages settings.LANGUAGE_CODE = self.old_language_code
def tearDown(self): # Reset languages deactivate_all() languages.release()
def tearDown(self): # Remove language locks if any remains release()