from django.contrib.sites.models import Site from django.conf import settings from django_cas.backends import CASBackend from django.db import models, connection from gestioncof.models import CofProfile class COFCASBackend(CASBackend): def authenticate(self, ticket, service): """Authenticates CAS ticket and retrieves user data""" user = super(COFCASBackend, self).authenticate(ticket, service) try: profile = user.get_profile() except CofProfile.DoesNotExist: profile, created = CofProfile.objects.get_or_create(user = user) profile.save() if not profile.login_clipper: profile.login_clipper = user.username profile.save() if not user.email: user.email = settings.CAS_EMAIL_FORMAT % profile.login_clipper user.save() if profile.is_buro and not user.is_superuser: user.is_superuser = True user.is_staff = True user.save() return user def context_processor (request): '''Append extra data to the context of the given request''' data = { "user": request.user, "site": Site.objects.get_current(), } return data def lock_table(model): cursor = connection.cursor() table = model._meta.db_table cursor.execute("LOCK TABLES %s WRITE" % table) row = cursor.fetchone() return row def unlock_table(model): cursor = connection.cursor() cursor.execute("UNLOCK TABLES") row = cursor.fetchone() return row