47 lines
1.7 KiB
Python
47 lines
1.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from django.views.decorators.cache import cache_page
|
|
from django.utils.translation import ugettext_lazy as _
|
|
from django.utils.encoding import force_unicode
|
|
from django.http import HttpResponseRedirect, HttpResponse, Http404
|
|
from django.core.paginator import Paginator, InvalidPage, EmptyPage
|
|
from django.core.urlresolvers import reverse
|
|
from django.core.mail import EmailMessage
|
|
from django.shortcuts import render_to_response, get_object_or_404
|
|
from django.template.loader import render_to_string
|
|
from django.template import RequestContext, loader
|
|
from django.contrib import messages
|
|
from django.db.utils import IntegrityError
|
|
from django.utils.decorators import method_decorator
|
|
from superview.views import SuperView as View
|
|
|
|
from greenmine.core import permissions
|
|
from greenmine.core.middleware import PermissionDeniedException
|
|
|
|
|
|
class GenericView(View):
|
|
""" Generic view with some util methods. """
|
|
|
|
def render_to_ok(self, context={}):
|
|
response = {'valid': True, 'errors': []}
|
|
response.update(context)
|
|
return self.render_json(response, ok=True)
|
|
|
|
def render_to_error(self, context={}):
|
|
response = {'valid': False, 'errors': []}
|
|
response.update(context)
|
|
return self.render_json(response, ok=False)
|
|
|
|
def redirect_referer(self, msg=None):
|
|
if msg is not None:
|
|
messages.info(self.request, msg)
|
|
|
|
referer = self.request.META.get('HTTP_REFERER', '/')
|
|
return self.render_redirect(referer)
|
|
|
|
def check_role(self, user, project, perms, exception=PermissionDeniedException):
|
|
ok = permissions.has_perms(user, project, perms)
|
|
if exception is not None and not ok:
|
|
raise exception()
|
|
return ok
|