diff --git a/hamnadmin/hamnadmin/register/forms.py b/hamnadmin/hamnadmin/register/forms.py index 07ff913..df8d7ba 100644 --- a/hamnadmin/hamnadmin/register/forms.py +++ b/hamnadmin/hamnadmin/register/forms.py @@ -9,7 +9,7 @@ from hamnadmin.util.aggregate import FeedFetcher class BlogEditForm(forms.ModelForm): class Meta: model = Blog - fields = ('feedurl', 'team', 'twitteruser', 'authorfilter') + fields = ('feedurl', 'team', 'twitteruser', 'authorfilter', 'language') def __init__(self, request, *args, **kwargs): self.request = request diff --git a/hamnadmin/hamnadmin/register/migrations/0006_blog_language.py b/hamnadmin/hamnadmin/register/migrations/0006_blog_language.py index e69de29..0633cc6 100644 --- a/hamnadmin/hamnadmin/register/migrations/0006_blog_language.py +++ b/hamnadmin/hamnadmin/register/migrations/0006_blog_language.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('register', '0005_add_team_manager'), + ] + + operations = [ + migrations.AddField( + model_name='blog', + name='language', + field=models.CharField(default=b'en', max_length=2), + ), + ] diff --git a/hamnadmin/hamnadmin/register/models.py b/hamnadmin/hamnadmin/register/models.py index e01e87e..cd4594a 100644 --- a/hamnadmin/hamnadmin/register/models.py +++ b/hamnadmin/hamnadmin/register/models.py @@ -1,8 +1,11 @@ -from django.db import models -from django.contrib.auth.models import User from datetime import datetime, timedelta +from django.contrib.auth.models import User +from django.db import models + from hamnadmin.util.shortlink import urlvalmap +from .util import LANGUAGES + class Team(models.Model): teamurl = models.CharField(max_length=255, blank=False) @@ -30,6 +33,7 @@ class Blog(models.Model): team = models.ForeignKey(Team,db_column='team', blank=True, null=True) twitteruser = models.CharField(max_length=255, default='', blank=True) excludestats = models.BooleanField(null=False, blank=False, default=False) + language = models.CharField(max_length=2, choices=LANGUAGES, default='en') # Things that may change new_blogurl = None diff --git a/hamnadmin/hamnadmin/register/util.py b/hamnadmin/hamnadmin/register/util.py index e69de29..5c9ad0e 100644 --- a/hamnadmin/hamnadmin/register/util.py +++ b/hamnadmin/hamnadmin/register/util.py @@ -0,0 +1,195 @@ +# -*- coding: utf-8 -*- +from django.utils.translation import ugettext_lazy as _ + +LANGUAGES = ( + ("aa", _(u"Afar")), + ("ab", _(u"Abkhazian")), + ("ae", _(u"Avestan")), + ("af", _(u"Afrikaans")), + ("ak", _(u"Akan")), + ("am", _(u"Amharic")), + ("an", _(u"Aragonese")), + ("ar", _(u"Arabic")), + ("as", _(u"Assamese")), + ("av", _(u"Avaric")), + ("ay", _(u"Aymara")), + ("az", _(u"Azerbaijani")), + ("ba", _(u"Bashkir")), + ("be", _(u"Belarusian")), + ("bg", _(u"Bulgarian")), + ("bh", _(u"Bihari languages")), + ("bi", _(u"Bislama")), + ("bm", _(u"Bambara")), + ("bn", _(u"Bengali")), + ("bo", _(u"Tibetan")), + ("br", _(u"Breton")), + ("bs", _(u"Bosnian")), + ("ca", _(u"Catalan")), + ("ce", _(u"Chechen")), + ("ch", _(u"Chamorro")), + ("co", _(u"Corsican")), + ("cr", _(u"Cree")), + ("cs", _(u"Czech")), + ("cu", _(u"Church Slavic")), + ("cv", _(u"Chuvash")), + ("cy", _(u"Welsh")), + ("da", _(u"Danish")), + ("de", _(u"German")), + ("dv", _(u"Dhivehi")), + ("dz", _(u"Dzongkha")), + ("ee", _(u"Ewe")), + ("el", _(u"Modern Greek")), + ("en", _(u"English")), + ("eo", _(u"Esperanto")), + ("es", _(u"Spanish")), + ("et", _(u"Estonian")), + ("eu", _(u"Basque")), + ("fa", _(u"Persian")), + ("ff", _(u"Fulah")), + ("fi", _(u"Finnish")), + ("fj", _(u"Fijian")), + ("fo", _(u"Faroese")), + ("fr", _(u"French")), + ("fy", _(u"Western Frisian")), + ("ga", _(u"Irish")), + ("gd", _(u"Scottish Gaelic")), + ("gl", _(u"Galician")), + ("gn", _(u"Guarani")), + ("gu", _(u"Gujarati")), + ("gv", _(u"Manx")), + ("ha", _(u"Hausa")), + ("he", _(u"Hebrew")), + ("hi", _(u"Hindi")), + ("ho", _(u"Hiri Motu")), + ("hr", _(u"Croatian")), + ("ht", _(u"Haitian")), + ("hu", _(u"Hungarian")), + ("hy", _(u"Armenian")), + ("hz", _(u"Herero")), + ("ia", _(u"Interlingua")), + ("id", _(u"Indonesian")), + ("ie", _(u"Interlingue")), + ("ig", _(u"Igbo")), + ("ii", _(u"Sichuan Yi")), + ("ik", _(u"Inupiaq")), + ("in", _(u"Indonesian")), + ("io", _(u"Ido")), + ("is", _(u"Icelandic")), + ("it", _(u"Italian")), + ("iu", _(u"Inuktitut")), + ("iw", _(u"Hebrew")), + ("ja", _(u"Japanese")), + ("ji", _(u"Yiddish")), + ("jv", _(u"Javanese")), + ("jw", _(u"Javanese")), + ("ka", _(u"Georgian")), + ("kg", _(u"Kongo")), + ("ki", _(u"Kikuyu")), + ("kj", _(u"Kuanyama")), + ("kk", _(u"Kazakh")), + ("kl", _(u"Kalaallisut")), + ("km", _(u"Central Khmer")), + ("kn", _(u"Kannada")), + ("ko", _(u"Korean")), + ("kr", _(u"Kanuri")), + ("ks", _(u"Kashmiri")), + ("ku", _(u"Kurdish")), + ("kv", _(u"Komi")), + ("kw", _(u"Cornish")), + ("ky", _(u"Kirghiz")), + ("la", _(u"Latin")), + ("lb", _(u"Luxembourgish")), + ("lg", _(u"Ganda")), + ("li", _(u"Limburgan")), + ("ln", _(u"Lingala")), + ("lo", _(u"Lao")), + ("lt", _(u"Lithuanian")), + ("lu", _(u"Luba-Katanga")), + ("lv", _(u"Latvian")), + ("mg", _(u"Malagasy")), + ("mh", _(u"Marshallese")), + ("mi", _(u"Maori")), + ("mk", _(u"Macedonian")), + ("ml", _(u"Malayalam")), + ("mn", _(u"Mongolian")), + ("mo", _(u"Moldavian")), + ("mr", _(u"Marathi")), + ("ms", _(u"Malay")), + ("mt", _(u"Maltese")), + ("my", _(u"Burmese")), + ("na", _(u"Nauru")), + ("nb", _(u"Norwegian Bokmål")), + ("nd", _(u"North Ndebele")), + ("ne", _(u"Nepali")), + ("ng", _(u"Ndonga")), + ("nl", _(u"Dutch")), + ("nn", _(u"Norwegian Nynorsk")), + ("no", _(u"Norwegian")), + ("nr", _(u"South Ndebele")), + ("nv", _(u"Navajo")), + ("ny", _(u"Nyanja")), + ("oc", _(u"Occitan")), + ("oj", _(u"Ojibwa")), + ("om", _(u"Oromo")), + ("or", _(u"Oriya")), + ("os", _(u"Ossetian")), + ("pa", _(u"Panjabi")), + ("pi", _(u"Pali")), + ("pl", _(u"Polish")), + ("ps", _(u"Pushto")), + ("pt", _(u"Portuguese")), + ("qu", _(u"Quechua")), + ("rm", _(u"Romansh")), + ("rn", _(u"Rundi")), + ("ro", _(u"Romanian")), + ("ru", _(u"Russian")), + ("rw", _(u"Kinyarwanda")), + ("sa", _(u"Sanskrit")), + ("sc", _(u"Sardinian")), + ("sd", _(u"Sindhi")), + ("se", _(u"Northern Sami")), + ("sg", _(u"Sango")), + ("sh", _(u"Serbo-Croatian")), + ("si", _(u"Sinhala")), + ("sk", _(u"Slovak")), + ("sl", _(u"Slovenian")), + ("sm", _(u"Samoan")), + ("sn", _(u"Shona")), + ("so", _(u"Somali")), + ("sq", _(u"Albanian")), + ("sr", _(u"Serbian")), + ("ss", _(u"Swati")), + ("st", _(u"Southern Sotho")), + ("su", _(u"Sundanese")), + ("sv", _(u"Swedish")), + ("sw", _(u"Swahili")), + ("ta", _(u"Tamil")), + ("te", _(u"Telugu")), + ("tg", _(u"Tajik")), + ("th", _(u"Thai")), + ("ti", _(u"Tigrinya")), + ("tk", _(u"Turkmen")), + ("tl", _(u"Tagalog")), + ("tn", _(u"Tswana")), + ("to", _(u"Tonga")), + ("tr", _(u"Turkish")), + ("ts", _(u"Tsonga")), + ("tt", _(u"Tatar")), + ("tw", _(u"Twi")), + ("ty", _(u"Tahitian")), + ("ug", _(u"Uighur")), + ("uk", _(u"Ukrainian")), + ("ur", _(u"Urdu")), + ("uz", _(u"Uzbek")), + ("ve", _(u"Venda")), + ("vi", _(u"Vietnamese")), + ("vo", _(u"Volapük")), + ("wa", _(u"Walloon")), + ("wo", _(u"Wolof")), + ("xh", _(u"Xhosa")), + ("yi", _(u"Yiddish")), + ("yo", _(u"Yoruba")), + ("za", _(u"Zhuang")), + ("zh", _(u"Chinese")), + ("zu", _(u"Zulu")), +) diff --git a/hamnadmin/hamnadmin/register/views.py b/hamnadmin/hamnadmin/register/views.py index 8471f4f..072bd99 100644 --- a/hamnadmin/hamnadmin/register/views.py +++ b/hamnadmin/hamnadmin/register/views.py @@ -18,9 +18,15 @@ import feedparser from forms import BlogEditForm, ModerateRejectForm # Public planet -def planet_home(request): +def planet_home(request, keys): statdate = datetime.datetime.now() - datetime.timedelta(days=61) - posts = Post.objects.filter(hidden=False, feed__approved=True).order_by('-dat')[:30] + langs = keys.split('-') + + posts = Post.objects.select_related('feed__team').filter( + hidden=False, + feed__approved=True, + feed__language__in=set(langs)).order_by('-dat')[:30] + topposters = Blog.objects.filter(approved=True, excludestats=False, posts__hidden=False, posts__dat__gt=statdate).annotate(numposts=Count('posts__id')).order_by('-numposts')[:10] topteams = Team.objects.filter(blog__approved=True, blog__excludestats=False, blog__posts__hidden=False, blog__posts__dat__gt=statdate).annotate(numposts=Count('blog__posts__id')).order_by('-numposts')[:10] return render_to_response('index.tmpl', { diff --git a/hamnadmin/hamnadmin/urls.py b/hamnadmin/hamnadmin/urls.py index 540eabf..65fe7a4 100644 --- a/hamnadmin/hamnadmin/urls.py +++ b/hamnadmin/hamnadmin/urls.py @@ -4,10 +4,14 @@ from django.conf.urls import * # Uncomment the next two lines to enable the admin: # from django.contrib import admin # admin.autodiscover() +from django.views.generic import RedirectView + from hamnadmin.register.feeds import PostFeed urlpatterns = patterns('', - (r'^$', 'hamnadmin.register.views.planet_home'), + (r'^$', RedirectView.as_view(url='/en', permanent=True)), + (r'^(?P[a-z]{2})/$', 'hamnadmin.register.views.planet_home'), + (r'^(?P[a-z]{2}(-[a-z]{2})+)/$', 'hamnadmin.register.views.planet_home'), (r'^add.html$', 'hamnadmin.register.views.planet_add'), (r'^feeds.html$', 'hamnadmin.register.views.planet_feeds'),