Пример #1
0
    def closest_match(cls, urlconf_path):
        page_class = cls.parent.field.rel.to

        contents = cls.objects.filter(
            parent__in=page_class.objects.active(),
            urlconf_path=urlconf_path,
        ).order_by('pk').select_related('parent')

        if len(contents) > 1:
            try:
                current = short_language_code(get_language())
                return [
                    content for content in contents if
                    short_language_code(content.parent.language) == current
                ][0]

            except (AttributeError, IndexError):
                pass

        try:
            return contents[0]
        except IndexError:
            pass

        return None
Пример #2
0
    def closest_match(cls, urlconf_path):
        page_class = cls.parent.field.rel.to

        contents = cls.objects.filter(
            parent__in=page_class.objects.active(),
            urlconf_path=urlconf_path,
        ).order_by('pk').select_related('parent')

        if len(contents) > 1:
            try:
                current = short_language_code(get_language())
                return [
                    content for content in contents
                    if short_language_code(content.parent.language) == current
                ][0]

            except (AttributeError, IndexError):
                pass

        try:
            return contents[0]
        except IndexError:
            pass

        return None
Пример #3
0
    def process(self, request, **kwargs):
        if self.featured_only:
            entries = Entry.objects.featured()
        else:
            entries = Entry.objects.active()

        if self.category:
            entries = entries.filter(categories=self.category)

        if self.only_active_language:
            entries = entries.filter(
                language__istartswith=short_language_code())

        entries = entries.transform(entry_list_lookup_related)

        if self.paginate_by:
            paginator = Paginator(entries, self.paginate_by)
            page = request.GET.get('page', 1)
            try:
                self.entries = paginator.page(page).object_list
            except PageNotAnInteger:
                self.entries = paginator.page(1).object_list
            except EmptyPage:
                self.entries = paginator.page(paginator.num_pages).object_list

        else:
            self.entries = entries
Пример #4
0
    def process(self, request, **kwargs):
        if self.featured_only:
            entries = Entry.objects.featured().transform(
                entry_list_lookup_related)
        else:
            entries = Entry.objects.active().transform(
                entry_list_lookup_related)

        if self.category:
            entries = entries.filter(categories=self.category)

        if self.only_active_language:
            entries = entries.filter(
                language__istartswith=short_language_code())

        if self.paginate_by:
            paginator = Paginator(entries, self.paginate_by)
            page = request.GET.get('page', 1)
            try:
                self.entries = paginator.page(page).object_list
            except PageNotAnInteger:
                self.entries = paginator.page(1).object_list
            except EmptyPage:
                self.entries = paginator.page(paginator.num_pages).object_list

        else:
            self.entries = entries
Пример #5
0
    def get_queryset(self):
        queryset = Entry.objects.active().transform(entry_list_lookup_related)

        if self.only_active_language:
            queryset = queryset.filter(
                language__istartswith=short_language_code())

        return queryset
Пример #6
0
    def get_queryset(self):
        queryset = Entry.objects.active().transform(entry_list_lookup_related)

        if self.only_active_language:
            queryset = queryset.filter(
                language__istartswith=short_language_code())

        return queryset
Пример #7
0
def get_frontpage(context, category=None):
    try:
        queryset = Entry.objects.featured().filter(language=short_language_code())
    except (AttributeError, FieldError):
        queryset = Entry.objects.featured()

    if category:
        queryset = queryset.filter(categories__translations__title=category).distinct()

    context['entries'] = queryset
    return ''
Пример #8
0
def get_entries(context, limit):
    try:
        queryset = Entry.objects.active().filter(language=short_language_code())
    except (AttributeError, FieldError):
        queryset = Entry.objects.active()

    if limit:
        queryset = queryset[:limit]

    context['entries'] = queryset
    return u''
Пример #9
0
def get_entries(context, limit):
    try:
        queryset = Entry.objects.active().filter(
            language=short_language_code())
    except (AttributeError, FieldError):
        queryset = Entry.objects.active()

    if limit:
        queryset = queryset[:limit]

    context['entries'] = queryset
    return u''
Пример #10
0
def get_frontpage(context, category=None):
    try:
        queryset = Entry.objects.featured().filter(
            language=short_language_code())
    except (AttributeError, FieldError):
        queryset = Entry.objects.featured()

    if category:
        queryset = queryset.filter(
            categories__translations__title=category).distinct()

    context['entries'] = queryset
    return ''
Пример #11
0
    def get_queryset(self):
        slug = self.kwargs['slug']

        try:
            self.category = Category.objects.get(translations__slug=slug, )
        except Category.DoesNotExist:
            raise Http404('Category with slug %s does not exist' % slug)

        except Category.MultipleObjectsReturned:
            self.category = get_object_or_404(
                Category,
                translations__slug=slug,
                translations__language_code__startswith=short_language_code(),
            )

        queryset = super(CategoryArchiveIndexView, self).get_queryset()
        return queryset.filter(categories=self.category)
Пример #12
0
    def get_queryset(self):
        slug = self.kwargs['slug']

        try:
            self.category = Category.objects.get(
                translations__slug=slug,
                )
        except Category.DoesNotExist:
            raise Http404('Category with slug %s does not exist' % slug)

        except Category.MultipleObjectsReturned:
            self.category = get_object_or_404(Category,
                translations__slug=slug,
                translations__language_code__startswith=short_language_code(),
                )

        queryset = super(CategoryArchiveIndexView, self).get_queryset()
        return queryset.filter(categories=self.category)
Пример #13
0
def feincms_pages(request):
    lang = short_language_code()

    try:
        feincms_page = Page.objects.for_request(request, best_match=True)
    except Page.DoesNotExist:
        try:
            feincms_page = Page.objects.get(slug=lang)
        except Page.DoesNotExist:
            feincms_page = None

    try:
        footer = Page.objects.get(language=lang, slug="footer")
    except Page.DoesNotExist:
        try:
            footer = Page.objects.filter(slug="footer")[0]
        except:
            footer = None

    return {
        'feincms_page': feincms_page,
        'footer': footer
    }
Пример #14
0
    def testTranslation(self):
        create_chinese_entries(EntryFactory)

        # Make sure the Entry has a translation extension
        entry = Entry()
        self.assertTrue(hasattr(entry, 'language'))
        self.assertTrue(hasattr(entry, 'translation_of'))

        # define the language of entry 2
        entries = Entry.objects.order_by('pk')
        entry1 = entries[0]
        self.assertEqual(entry1.pk, 1)
        self.assertEqual(entry1.title, 'Entry 1')
        entry1.language = 'en'
        entry1.save()
        entry2 = entries[1]
        self.assertEqual(entry2.pk, 2)
        self.assertEqual(entry2.title, 'Eintrag 1')
        entry2.language = 'de'
        entry2.translation_of = entry1
        entry2.save()
        entry3 = entries[2]
        entry4 = entries[3]
        self.assertEqual(entry3.language, 'zh-hans')
        self.assertEqual(entry4.language, 'zh-hant')

        entry = Entry.objects.get(language='de')
        self.assertEqual(entry.title, 'Eintrag 1')

        with translation.override('de'):
            c = Client()
            self.assertEqual(short_language_code(), 'de')
            # Test Archive URL
            response = c.get('/blog/', HTTP_ACCEPT_LANGUAGE='de')
            self.assertEqual(len(response.context['object_list']), 1)
            self.assertEqual(response.status_code, 200)
            self.assertNotContains(response, 'Entry 1')
            self.assertContains(response, 'Eintrag 1')
            # test all languages override
            response = c.get('/multilang/', HTTP_ACCEPT_LANGUAGE='de')
            self.assertEqual(len(response.context['object_list']), 4)
            self.assertEqual(response.status_code, 200)

        with translation.override('en'):
            c = Client()
            response = c.get('/blog/', HTTP_ACCEPT_LANGUAGE='en')
            self.assertEqual(short_language_code(), 'en')
            self.assertEqual(len(response.context['object_list']), 1)
            self.assertEqual(response.status_code, 200)
            self.assertContains(response, 'Entry 1')
            self.assertNotContains(response, 'Eintrag 1')

        with translation.override('zh-hans'):
            c = Client()
            self.assertEqual(translation.get_language(), 'zh-hans')
            self.assertEqual(short_language_code(), 'zh')
            response = c.get('/blog/', HTTP_ACCEPT_LANGUAGE='zh-hans')
            self.assertEqual(len(response.context['object_list']), 1)
            self.assertEqual(response.status_code, 200)
            self.assertContains(response, 'Entry 2 chinese traditional')
            self.assertNotContains(response, 'Eintrag 1')

        with translation.override('zh-hant'):
            c = Client()
            self.assertEqual(translation.get_language(), 'zh-hant')
            self.assertEqual(short_language_code(), 'zh')
            response = c.get('/blog/', HTTP_ACCEPT_LANGUAGE='zh-hant')
            self.assertEqual(len(response.context['object_list']), 1)
            self.assertEqual(response.status_code, 200)
            self.assertContains(response, 'Entry 2 chinese simplified')
            self.assertNotContains(response, 'Eintrag 1')
    def testTranslation(self):
        # Make sure the Entry has a translation extension
        entry = Entry()
        self.assertTrue(hasattr(entry, 'language'))
        self.assertTrue(hasattr(entry, 'translation_of'))
        # define the language of entry 2
        entries = Entry.objects.order_by('pk')
        entry1 = entries[0]
        self.assertEqual(entry1.pk, 1)
        self.assertEqual(entry1.title, u'Entry 1')
        entry1.language = 'en'
        entry1.save()
        entry2 = entries[1]
        self.assertEqual(entry2.pk, 2)
        self.assertEqual(entry2.title, u'Eintrag 1')
        entry2.language = 'de'
        entry2.translation_of = entry1
        entry2.save()
        entry3 = entries[2]
        entry4 = entries[3]
        self.assertEqual(entry3.language, 'zh-cn')
        self.assertEqual(entry4.language, 'zh-tw')

        entry = Entry.objects.get(language='de')
        self.assertEqual(entry.title, u'Eintrag 1')

        with translation.override('de'):
            c = Client()
            self.assertEqual(short_language_code(), 'de')
            # Test Archive URL
            response = c.get('/blog/', HTTP_ACCEPT_LANGUAGE='de')
            self.assertEqual(len(response.context['object_list']), 1)
            self.assertEqual(response.status_code, 200)
            self.assertNotContains(response, u'Entry 1')
            self.assertContains(response, u'Eintrag 1')
            # test all languages override
            response = c.get('/multilang/', HTTP_ACCEPT_LANGUAGE='de')
            self.assertEqual(len(response.context['object_list']), 4)
            self.assertEqual(response.status_code, 200)

        with translation.override('en'):
            c = Client()
            response = c.get('/blog/', HTTP_ACCEPT_LANGUAGE='en')
            self.assertEqual(short_language_code(), 'en')
            self.assertEqual(len(response.context['object_list']), 1)
            self.assertEqual(response.status_code, 200)
            self.assertContains(response, u'Entry 1')
            self.assertNotContains(response, u'Eintrag 1')

        with translation.override('zh-cn'):
            c = Client()
            self.assertEqual(translation.get_language(), 'zh-cn')
            self.assertEqual(short_language_code(), 'zh')
            response = c.get('/blog/', HTTP_ACCEPT_LANGUAGE='zh-cn')
            self.assertEqual(len(response.context['object_list']), 1)
            self.assertEqual(response.status_code, 200)
            self.assertContains(response, u'Entry 2 chinese traditional')
            self.assertNotContains(response, u'Eintrag 1')

        with translation.override('zh-tw'):
            c = Client()
            self.assertEqual(translation.get_language(), 'zh-tw')
            self.assertEqual(short_language_code(), 'zh')
            response = c.get('/blog/', HTTP_ACCEPT_LANGUAGE='zh-tw')
            self.assertEqual(len(response.context['object_list']), 1)
            self.assertEqual(response.status_code, 200)
            self.assertContains(response, u'Entry 2 chinese simplified')
            self.assertNotContains(response, u'Eintrag 1')
Пример #16
0
    def test_10_mediafile_and_imagecontent(self):
        self.create_default_page_set()

        page = Page.objects.get(pk=1)
        self.create_pagecontent(page)

        path = os.path.join(settings.MEDIA_ROOT, "somefile.jpg")
        f = open(path, "wb")
        f.write("blabla")
        f.close()

        category = Category.objects.create(title="Category", parent=None)
        category2 = Category.objects.create(title="Something", parent=category)

        self.assertEqual(unicode(category2), "Category - Something")
        self.assertEqual(unicode(category), "Category")

        mediafile = MediaFile.objects.create(file="somefile.jpg")
        mediafile.categories = [category]
        page.mediafilecontent_set.create(mediafile=mediafile, region="main", position="block", ordering=1)

        self.assertEqual(unicode(mediafile), "somefile.jpg")

        mediafile.translations.create(caption="something", language_code="%s-ha" % short_language_code())

        assert "something" in unicode(mediafile)

        mf = page.content.main[1].mediafile

        self.assertEqual(mf.translation.caption, "something")
        self.assertEqual(mf.translation.short_language_code(), short_language_code())
        self.assertNotEqual(mf.get_absolute_url(), "")
        self.assertEqual(unicode(mf), "something")
        self.assertEqual(mf.file_type(), "Image")

        self.assertEqual(MediaFile.objects.only_language("de").count(), 0)
        self.assertEqual(MediaFile.objects.only_language("en").count(), 0)
        self.assertEqual(MediaFile.objects.only_language("%s-ha" % short_language_code()).count(), 1)

        assert "%s-ha" % short_language_code() in mf.available_translations

        os.unlink(path)

        # this should not raise
        self.client.get("/admin/page/page/1/")

        assert 'alt="something"' in page.content.main[1].render()

        page.imagecontent_set.create(image="somefile.jpg", region="main", position="default", ordering=2)
        page.filecontent_set.create(file="somefile.jpg", title="thetitle", region="main", ordering=3)

        assert "somefile.jpg" in page.content.main[2].render()
        assert '<a href="/media/somefile.jpg">thetitle</a>' in page.content.main[3].render()

        page.mediafilecontent_set.update(mediafile=3)
        # this should not raise
        self.client.get("/admin/page/page/1/")

        field = MediaFile._meta.get_field("file")
        old = (field.upload_to, field.storage)
        from django.core.files.storage import FileSystemStorage

        MediaFile.reconfigure(
            upload_to=lambda: "anywhere", storage=FileSystemStorage(location="/wha/", base_url="/whe/")
        )
        mediafile = MediaFile.objects.get(pk=1)
        self.assertEqual(mediafile.file.url, "/whe/somefile.jpg")

        MediaFile.reconfigure(upload_to=old[0], storage=old[1])
        mediafile = MediaFile.objects.get(pk=1)
        self.assertEqual(mediafile.file.url, "/media/somefile.jpg")
Пример #17
0
 def entries(self, obj):
     if 'translations' in getattr(Entry, '_feincms_extensions', ()):
         return Entry.objects.filter(
             categories=obj, language=short_language_code()).count()
     return Entry.objects.filter(categories=obj)
Пример #18
0
 def entries(self, obj):
     if 'translations' in getattr(AppPromo, '_feincms_extensions', ()):
         return AppPromo.objects.filter(categories=obj, language=short_language_code()).count()
     return AppPromo.objects.filter(categories=obj)
Пример #19
0
 def media(self):
     media = forms.Media()
     media.add_js(('http://connect.facebook.net/%s/all.js#xfbml=1' % FACEBOOK_LOCALES.get(short_language_code()),))
     return media
Пример #20
0
    def test_10_mediafile_and_imagecontent(self):
        self.create_default_page_set()

        page = Page.objects.get(pk=1)
        self.create_pagecontent(page)

        path = os.path.join(settings.MEDIA_ROOT, 'somefile.jpg')
        f = open(path, 'wb')
        f.write('blabla')
        f.close()

        category = Category.objects.create(title='Category', parent=None)
        category2 = Category.objects.create(title='Something', parent=category)

        self.assertEqual(unicode(category2), 'Category - Something')
        self.assertEqual(unicode(category), 'Category')

        mediafile = MediaFile.objects.create(file='somefile.jpg')
        mediafile.categories = [category]
        page.mediafilecontent_set.create(mediafile=mediafile,
                                         region='main',
                                         position='block',
                                         ordering=1)

        self.assertEqual(unicode(mediafile), 'somefile.jpg')

        mediafile.translations.create(caption='something',
                                      language_code='%s-ha' %
                                      short_language_code())

        self.assertTrue('something' in unicode(mediafile))

        mf = page.content.main[1].mediafile

        self.assertEqual(mf.translation.caption, 'something')
        self.assertEqual(mf.translation.short_language_code(),
                         short_language_code())
        self.assertNotEqual(mf.get_absolute_url(), '')
        self.assertEqual(unicode(mf), 'something')
        self.assertEqual(unicode(mf.file_type()),
                         u'Binary')  # Ok, so it's not really an image...

        self.assertEqual(MediaFile.objects.only_language('de').count(), 0)
        self.assertEqual(MediaFile.objects.only_language('en').count(), 0)
        self.assertEqual(
            MediaFile.objects.only_language('%s-ha' %
                                            short_language_code()).count(), 1)

        self.assertTrue('%s-ha' %
                        short_language_code() in mf.available_translations)

        os.unlink(path)

        # this should not raise
        self.client.get('/admin/page/page/1/')

        #self.assertTrue('alt="something"' in page.content.main[1].render()) Since it isn't an image

        page.imagecontent_set.create(image='somefile.jpg',
                                     region='main',
                                     position='default',
                                     ordering=2)
        page.filecontent_set.create(file='somefile.jpg',
                                    title='thetitle',
                                    region='main',
                                    ordering=3)

        self.assertTrue('somefile.jpg' in page.content.main[2].render())
        self.assertTrue('<a href="/media/somefile.jpg">thetitle</a>' in
                        page.content.main[3].render())

        page.mediafilecontent_set.update(mediafile=3)
        # this should not raise
        self.client.get('/admin/page/page/1/')

        field = MediaFile._meta.get_field('file')
        old = (field.upload_to, field.storage)
        from django.core.files.storage import FileSystemStorage
        MediaFile.reconfigure(upload_to=lambda: 'anywhere',
                              storage=FileSystemStorage(location='/wha/',
                                                        base_url='/whe/'))
        mediafile = MediaFile.objects.get(pk=1)
        self.assertEqual(mediafile.file.url, '/whe/somefile.jpg')

        MediaFile.reconfigure(upload_to=old[0], storage=old[1])
        mediafile = MediaFile.objects.get(pk=1)
        self.assertEqual(mediafile.file.url, '/media/somefile.jpg')
Пример #21
0
from django.conf.urls import patterns, include, url
from django.conf import settings
from django.contrib import admin
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.shortcuts import redirect

from feincms.translations import short_language_code


admin.autodiscover()

urlpatterns = patterns('',
    url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', lambda request: redirect('/%s/' % short_language_code())),
)

if not settings.DEBUG:
    urlpatterns += patterns('',
        url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {
            'document_root': settings.STATIC_ROOT
        }),
    )
else:
    urlpatterns += staticfiles_urlpatterns()
    urlpatterns += patterns('',
        url(r'^uploads/(.*)', 'django.views.static.serve', {
            'document_root': settings.MEDIA_ROOT,
        }),
    )
    def testTranslation(self):
        # Make sure the Entry has a translation extension
        entry = Entry()
        self.assertTrue(hasattr(entry, 'language'))
        self.assertTrue(hasattr(entry, 'translation_of'))
        # define the language of entry 2
        entries = Entry.objects.order_by('pk')
        entry1 = entries[0]
        self.assertEqual(entry1.pk, 1)
        self.assertEqual(entry1.title, u'Entry 1')
        entry1.language = 'en'
        entry1.save()
        entry2 = entries[1]
        self.assertEqual(entry2.pk, 2)
        self.assertEqual(entry2.title, u'Eintrag 1')
        entry2.language = 'de'
        entry2.translation_of = entry1
        entry2.save()
        entry3 = entries[2]
        entry4 = entries[3]
        self.assertEqual(entry3.language, 'zh-cn')
        self.assertEqual(entry4.language, 'zh-tw')

        entry = Entry.objects.get(language='de')
        self.assertEqual(entry.title, u'Eintrag 1')

        with translation.override('de'):
            c = Client()
            self.assertEqual(short_language_code(), 'de')
            # Test Archive URL
            response = c.get('/blog/', HTTP_ACCEPT_LANGUAGE='de')
            self.assertEqual(len(response.context['object_list']), 1)
            self.assertEqual(response.status_code, 200)
            self.assertNotContains(response, u'Entry 1')
            self.assertContains(response, u'Eintrag 1')
            # test all languages override
            response = c.get('/multilang/', HTTP_ACCEPT_LANGUAGE='de')
            self.assertEqual(len(response.context['object_list']), 4)
            self.assertEqual(response.status_code, 200)


        with translation.override('en'):
            response = c.get('/blog/', HTTP_ACCEPT_LANGUAGE='en')
            self.assertEqual(short_language_code(), 'en')
            self.assertEqual(len(response.context['object_list']), 1)
            self.assertEqual(response.status_code, 200)
            self.assertContains(response, u'Entry 1')
            self.assertNotContains(response, u'Eintrag 1')


        with translation.override('zh-cn'):
            self.assertEqual(translation.get_language(), 'zh-cn')
            self.assertEqual(short_language_code(), 'zh')
            response = c.get('/blog/', HTTP_ACCEPT_LANGUAGE='zh-cn')
            self.assertEqual(len(response.context['object_list']), 1)
            self.assertEqual(response.status_code, 200)
            self.assertContains(response, u'Entry 2 chinese traditional')
            self.assertNotContains(response, u'Eintrag 1')


        with translation.override('zh-tw'):
            self.assertEqual(translation.get_language(), 'zh-tw')
            self.assertEqual(short_language_code(), 'zh')
            response = c.get('/blog/', HTTP_ACCEPT_LANGUAGE='zh-tw')
            self.assertEqual(len(response.context['object_list']), 1)
            self.assertEqual(response.status_code, 200)
            self.assertContains(response, u'Entry 2 chinese simplified')
            self.assertNotContains(response, u'Eintrag 1')





# AttributeError: 'Settings' object has no attribute '_original_allowed_hosts'
# fixed in Django 1.6

# https://github.com/django/django/commit/e2b86571bfa3503fe43adfa92e9c9f4271a7a135
    def testTranslation(self):
        # Make sure the Entry has a translation extension
        entry = Entry()
        self.assertTrue(hasattr(entry, 'language'))
        self.assertTrue(hasattr(entry, 'translation_of'))
        # define the language of entry 2
        entries = Entry.objects.order_by('pk')
        entry1 = entries[0]
        self.assertEqual(entry1.pk, 1)
        self.assertEqual(entry1.title, u'Entry 1')
        entry1.language = 'en'
        entry1.save()
        entry2 = entries[1]
        self.assertEqual(entry2.pk, 2)
        self.assertEqual(entry2.title, u'Eintrag 1')
        entry2.language = 'de'
        entry2.translation_of = entry1
        entry2.save()
        entry3 = entries[2]
        entry4 = entries[3]
        self.assertEqual(entry3.language, 'zh-cn')
        self.assertEqual(entry4.language, 'zh-tw')

        entry = Entry.objects.get(language='de')
        self.assertEqual(entry.title, u'Eintrag 1')

        with translation.override('de'):
            c = Client()
            self.assertEqual(short_language_code(), 'de')
            # Test Archive URL
            response = c.get('/blog/', HTTP_ACCEPT_LANGUAGE='de')
            self.assertEqual(len(response.context['object_list']), 1)
            self.assertEqual(response.status_code, 200)
            self.assertNotContains(response, u'Entry 1')
            self.assertContains(response, u'Eintrag 1')
            # test all languages override
            response = c.get('/multilang/', HTTP_ACCEPT_LANGUAGE='de')
            self.assertEqual(len(response.context['object_list']), 4)
            self.assertEqual(response.status_code, 200)

        with translation.override('en'):
            response = c.get('/blog/', HTTP_ACCEPT_LANGUAGE='en')
            self.assertEqual(short_language_code(), 'en')
            self.assertEqual(len(response.context['object_list']), 1)
            self.assertEqual(response.status_code, 200)
            self.assertContains(response, u'Entry 1')
            self.assertNotContains(response, u'Eintrag 1')

        with translation.override('zh-cn'):
            self.assertEqual(translation.get_language(), 'zh-cn')
            self.assertEqual(short_language_code(), 'zh')
            response = c.get('/blog/', HTTP_ACCEPT_LANGUAGE='zh-cn')
            self.assertEqual(len(response.context['object_list']), 1)
            self.assertEqual(response.status_code, 200)
            self.assertContains(response, u'Entry 2 chinese traditional')
            self.assertNotContains(response, u'Eintrag 1')

        with translation.override('zh-tw'):
            self.assertEqual(translation.get_language(), 'zh-tw')
            self.assertEqual(short_language_code(), 'zh')
            response = c.get('/blog/', HTTP_ACCEPT_LANGUAGE='zh-tw')
            self.assertEqual(len(response.context['object_list']), 1)
            self.assertEqual(response.status_code, 200)
            self.assertContains(response, u'Entry 2 chinese simplified')
            self.assertNotContains(response, u'Eintrag 1')


# AttributeError: 'Settings' object has no attribute '_original_allowed_hosts'
# fixed in Django 1.6

# https://github.com/django/django/commit/e2b86571bfa3503fe43adfa92e9c9f4271a7a135
    def testTranslation(self):
        create_chinese_entries(EntryFactory)

        # Make sure the Entry has a translation extension
        entry = Entry()
        self.assertTrue(hasattr(entry, "language"))
        self.assertTrue(hasattr(entry, "translation_of"))

        # define the language of entry 2
        entries = Entry.objects.order_by("pk")
        entry1 = entries[0]
        self.assertEqual(entry1.pk, 1)
        self.assertEqual(entry1.title, "Entry 1")
        entry1.language = "en"
        entry1.save()
        entry2 = entries[1]
        self.assertEqual(entry2.pk, 2)
        self.assertEqual(entry2.title, "Eintrag 1")
        entry2.language = "de"
        entry2.translation_of = entry1
        entry2.save()
        entry3 = entries[2]
        entry4 = entries[3]
        self.assertEqual(entry3.language, "zh-hans")
        self.assertEqual(entry4.language, "zh-hant")

        entry = Entry.objects.get(language="de")
        self.assertEqual(entry.title, "Eintrag 1")

        with translation.override("de"):
            c = Client()
            self.assertEqual(short_language_code(), "de")
            # Test Archive URL
            response = c.get("/blog/", HTTP_ACCEPT_LANGUAGE="de")
            self.assertEqual(len(response.context["object_list"]), 1)
            self.assertEqual(response.status_code, 200)
            self.assertNotContains(response, "Entry 1")
            self.assertContains(response, "Eintrag 1")
            # test all languages override
            response = c.get("/multilang/", HTTP_ACCEPT_LANGUAGE="de")
            self.assertEqual(len(response.context["object_list"]), 4)
            self.assertEqual(response.status_code, 200)

        with translation.override("en"):
            c = Client()
            response = c.get("/blog/", HTTP_ACCEPT_LANGUAGE="en")
            self.assertEqual(short_language_code(), "en")
            self.assertEqual(len(response.context["object_list"]), 1)
            self.assertEqual(response.status_code, 200)
            self.assertContains(response, "Entry 1")
            self.assertNotContains(response, "Eintrag 1")

        with translation.override("zh-hans"):
            c = Client()
            self.assertEqual(translation.get_language(), "zh-hans")
            self.assertEqual(short_language_code(), "zh")
            response = c.get("/blog/", HTTP_ACCEPT_LANGUAGE="zh-hans")
            self.assertEqual(len(response.context["object_list"]), 1)
            self.assertEqual(response.status_code, 200)
            self.assertContains(response, "Entry 2 chinese traditional")
            self.assertNotContains(response, "Eintrag 1")

        with translation.override("zh-hant"):
            c = Client()
            self.assertEqual(translation.get_language(), "zh-hant")
            self.assertEqual(short_language_code(), "zh")
            response = c.get("/blog/", HTTP_ACCEPT_LANGUAGE="zh-hant")
            self.assertEqual(len(response.context["object_list"]), 1)
            self.assertEqual(response.status_code, 200)
            self.assertContains(response, "Entry 2 chinese simplified")
            self.assertNotContains(response, "Eintrag 1")
Пример #25
0
    def test_10_mediafile_and_imagecontent(self):
        self.create_default_page_set()

        page = Page.objects.get(pk=1)
        self.create_pagecontent(page)

        path = os.path.join(settings.MEDIA_ROOT, 'somefile.jpg')
        f = open(path, 'wb')
        f.write('blabla')
        f.close()

        category = Category.objects.create(title='Category', parent=None)
        category2 = Category.objects.create(title='Something', parent=category)

        self.assertEqual(unicode(category2), 'Category - Something')
        self.assertEqual(unicode(category), 'Category')

        mediafile = MediaFile.objects.create(file='somefile.jpg')
        mediafile.categories = [category]
        page.mediafilecontent_set.create(
            mediafile=mediafile,
            region='main',
            position='block',
            ordering=1)

        self.assertEqual(unicode(mediafile), 'somefile.jpg')

        mediafile.translations.create(caption='something',
            language_code='%s-ha' % short_language_code())

        self.assertTrue('something' in unicode(mediafile))

        mf = page.content.main[1].mediafile

        self.assertEqual(mf.translation.caption, 'something')
        self.assertEqual(mf.translation.short_language_code(), short_language_code())
        self.assertNotEqual(mf.get_absolute_url(), '')
        self.assertEqual(unicode(mf), 'something')
        self.assertEqual(unicode(mf.file_type()), u'Binary') # Ok, so it's not really an image...

        self.assertEqual(MediaFile.objects.only_language('de').count(), 0)
        self.assertEqual(MediaFile.objects.only_language('en').count(), 0)
        self.assertEqual(MediaFile.objects.only_language('%s-ha' % short_language_code()).count(),
                         1)

        self.assertTrue('%s-ha' % short_language_code() in mf.available_translations)

        os.unlink(path)

        # this should not raise
        self.client.get('/admin/page/page/1/')

        #self.assertTrue('alt="something"' in page.content.main[1].render()) Since it isn't an image

        page.imagecontent_set.create(image='somefile.jpg', region='main', position='default', ordering=2)
        page.filecontent_set.create(file='somefile.jpg', title='thetitle', region='main', ordering=3)

        self.assertTrue('somefile.jpg' in page.content.main[2].render())
        self.assertTrue('<a href="/media/somefile.jpg">thetitle</a>' in page.content.main[3].render())

        page.mediafilecontent_set.update(mediafile=3)
        # this should not raise
        self.client.get('/admin/page/page/1/')

        field = MediaFile._meta.get_field('file')
        old = (field.upload_to, field.storage)
        from django.core.files.storage import FileSystemStorage
        MediaFile.reconfigure(upload_to=lambda: 'anywhere',
                              storage=FileSystemStorage(location='/wha/', base_url='/whe/'))
        mediafile = MediaFile.objects.get(pk=1)
        self.assertEqual(mediafile.file.url, '/whe/somefile.jpg')

        MediaFile.reconfigure(upload_to=old[0], storage=old[1])
        mediafile = MediaFile.objects.get(pk=1)
        self.assertEqual(mediafile.file.url, '/media/somefile.jpg')
Пример #26
0
def entry_list(request, category=None, year=None, month=None, day=None, page=0, 
               paginate_by=10, template_name='blog/entry_list.html', limit=None,
               exclude=None, **kwargs):
    extra_context = { 'request' : request }

    if getattr(djangosettings, 'LANGUAGES', False) and len(djangosettings.LANGUAGES)>1:
        language_code = short_language_code()
        queryset = Entry.objects.active().filter(language=language_code)
    else:
        try:
            language_code = request._feincms_page.language
            queryset = Entry.objects.active().filter(language=language_code)
        except (AttributeError, FieldError):
            queryset = Entry.objects.active()
        """ You can define a dict of fields and values to exclude. """
    if exclude:
        queryset = queryset.exclude(**exclude)
    if limit:
        queryset = queryset[:limit]
    if category:
        queryset = queryset.filter(categories__translations__slug=category)
        extra_context.update({'category': category})
    if year:
        queryset = queryset.filter(published_on__year=int(year))
        extra_context.update({'drilldown_mode': 'year', 'title' : year })
    else:
        year = datetime.now().year
    if month:
        # display month as full word.
        from django.template import defaultfilters
        queryset = queryset.filter(published_on__month=int(month))
        extra_context.update({'drilldown_mode': 'month', 'title' : defaultfilters.date(date(int(year), int(month), 1), 'E Y')})
    else:
        month = datetime.now().month
    if day:
        from django.contrib.humanize.templatetags.humanize import naturalday
        queryset = queryset.filter(published_on__day=int(day))
        extra_context.update({'drilldown_mode': 'day', 'title' : naturalday(date(int(year), int(month), int(day))) })
    else:
        day = 1
    
    extra_context.update({'date':date(int(year), int(month), int(day)),
                          'comments' : settings.BLOG_COMMENTS})

    '''
    if this app runs without ApplicationContent integration we have to make sure
    the template extends from the basic_template so we prepend 'standalone/'
    to the template_name
    '''
    if recognize_app_content(request):
        template_name = '/'.join(['standalone', template_name,])
        #print request._feincms_extra_context
        from django.views.generic import list_detail
    else:
        from feincms.views.generic import list_detail

    return list_detail.object_list(
      request,
      queryset = queryset,
      paginate_by = paginate_by,
      page = page,
      template_name = template_name,
      extra_context = extra_context,
      **kwargs)