Source code for tally_system.apps.tally.views.home

from django.core.urlresolvers import reverse
from django.shortcuts import redirect, render_to_response
from django.template import RequestContext
from django.views.generic import TemplateView

from guardian.mixins import LoginRequiredMixin

from tally_system.libs.permissions import groups


GROUP_URLS = {
    groups.ADMINISTRATOR: "administrator",
    groups.ARCHIVE_CLERK: "archive",
    groups.ARCHIVE_SUPERVISOR: "archive",
    groups.AUDIT_CLERK: "audit",
    groups.AUDIT_SUPERVISOR: "audit",
    groups.CLEARANCE_CLERK: "clearance",
    groups.CLEARANCE_SUPERVISOR: "clearance",
    groups.CORRECTIONS_CLERK: "corrections",
    groups.DATA_ENTRY_1_CLERK: "data-entry",
    groups.DATA_ENTRY_2_CLERK: "data-entry",
    groups.INTAKE_CLERK: "intake",
    groups.INTAKE_SUPERVISOR: "intake",
    groups.QUALITY_CONTROL_CLERK: "quality-control",
    groups.SUPER_ADMINISTRATOR: "super-administrator",
}


[docs]def permission_denied(request): context = RequestContext(request) return render_to_response('errors/403.html', context_instance=context)
[docs]def not_found(request): context = RequestContext(request) return render_to_response('errors/404.html', context_instance=context)
[docs]def bad_request(request): context = RequestContext(request) return render_to_response('errors/400.html', context_instance=context)
[docs]def server_error(request): context = RequestContext(request) return render_to_response('errors/500.html', context_instance=context)
[docs]def suspicious_error(request): context = RequestContext(request) error_message = request.session.get('error_message') if error_message: del request.session['error_message'] return render_to_response('errors/suspicious.html', {'error_message': error_message}, context_instance=context)
[docs]class HomeView(LoginRequiredMixin, TemplateView): template_name = "home.html"
[docs] def get_user_role_url(self, user): if user.groups.count(): user_group = user.groups.all()[0] return reverse(GROUP_URLS.get(user_group.name)) return None
[docs] def redirect_user_to_role_view(self): user = self.request.user redirect_url = self.get_user_role_url(user) if redirect_url: return redirect(redirect_url) return None
[docs] def dispatch(self, request, *args, **kwargs): self.request = request redirect_response = self.redirect_user_to_role_view() if redirect_response: return redirect_response return super(HomeView, self).dispatch(request, *args, **kwargs)
[docs]class LocaleView(TemplateView):
[docs] def get(self, *args, **kwargs): get_data = self.request.GET locale = get_data.get('locale') if locale: self.request.session['locale'] = locale self.request.session['django_language'] = locale next_url = get_data.get('next', 'home') if not len(next_url) or next_url.startswith('locale'): next_url = 'home' return redirect(next_url)