# -*- coding: utf-8 -*-

from django.utils import translation
from django.db.models import ObjectDoesNotExist
from pybb import util

from pybb.signals import user_saved


class PybbMiddleware(object):
    def process_request(self, request):
        if request.user.is_authenticated():
            try:
                # Here we try to load profile, but can get error
                # if user created during syncdb but profile model
                # under south control. (Like pybb.Profile).
                profile = util.get_pybb_profile(request.user)
            except ObjectDoesNotExist:
                # Ok, we should create new profile for this user
                # and grant permissions for add posts
                user_saved(request.user, created=True)
                profile = util.get_pybb_profile(request.user)

            language = translation.get_language_from_request(request)

            if not profile.language:
                profile.language = language
                profile.save()

            if profile.language and profile.language != language:
                request.session['django_language'] = profile.language
                translation.activate(profile.language)
                request.LANGUAGE_CODE = translation.get_language()

[(24, 'django.utils.translation.get_language_from_request', 'translation.get_language_from_request', False, 'from django.utils import translation\n'), (17, 'pybb.util.get_pybb_profile', 'util.get_pybb_profile', False, 'from pybb import util\n'), (32, 'django.utils.translation.activate', 'translation.activate', False, 'from django.utils import translation\n'), (33, 'django.utils.translation.get_language', 'translation.get_language', False, 'from django.utils import translation\n'), (21, 'pybb.signals.user_saved', 'user_saved', False, 'from pybb.signals import user_saved\n'), (22, 'pybb.util.get_pybb_profile', 'util.get_pybb_profile', False, 'from pybb import util\n')]