From 088a8f0a8c98d0a7c536dffe859ea46c508cac4b Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Mon, 26 Feb 2007 22:34:00 +0000 Subject: [PATCH 1/1] =?utf8?q?Hacer=20que=20Permiso=20sea=20un=20bit=20par?= =?utf8?q?a=20manejar=20los=20permisos=20como=20m=C3=A1scaras=20de=20bits.?= =?utf8?q?=20Cada=20vez=20que=20se=20instancia=20un=20Permiso,=20se=20le?= =?utf8?q?=20asigna=20un=20bit,=20aumentando=20la=20posici=C3=B3n=20de=20d?= =?utf8?q?erecha=20a=20izzquierda=20(es=20decir,=20cada=20vez=20tiene=20as?= =?utf8?q?ignado=20un=20entero=20m=C3=A1s=20grande).=20Esto=20permite=20ha?= =?utf8?q?cer=20muy=20f=C3=A1cil=20operaciones=20l=C3=B3gicas=20para=20ver?= =?utf8?q?=20si=20tiene=20varios=20permisos=20juntos=20o=20si=20tiene=20al?= =?utf8?q?g=C3=BAn=20permiso=20de=20una=20lista.=20Adem=C3=A1s=20hace=20qu?= =?utf8?q?e=20guardar=20los=20permisos=20en=20el=20Rol=20sea=20m=C3=A1s=20?= =?utf8?q?simple=20(hay=20que=20guardar=20s=C3=B3lo=20un=20entero=20en=20v?= =?utf8?q?ez=20de=20una=20PickeCol,=20pero=20igual=20la=20columna=20Custom?= =?utf8?q?=20todav=C3=ADa=20no=20est=C3=A1=20implementada).?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- sercom/model.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sercom/model.py b/sercom/model.py index 4ddab71..9124dde 100644 --- a/sercom/model.py +++ b/sercom/model.py @@ -841,7 +841,10 @@ class Rol(SQLObject): #{{{ # No es un SQLObject porque no tiene sentido agregar/sacar permisos, están # hardcodeados en el código class Permiso(object): #{{{ + max_valor = 1 def __init__(self, nombre, descripcion): + self.valor = Permiso.max_valor + Permiso.max_valor <<= 1 self.nombre = nombre self.descripcion = descripcion @@ -853,6 +856,12 @@ class Permiso(object): #{{{ def permission_name(self): # para identity return self.nombre + def __and__(self, other): + return self.valor & other.valor + + def __or__(self, other): + return self.valor | other.valor + def __repr__(self): return self.nombre #}}} -- 2.43.0