def post(self, *args, **kw): """ Crea un nuevo rol plantilla o con contexto""" pp = None ctx = "" if kw["id_proyecto"]: ctx = "id_proyecto" pp = PoseePermiso('crear rol', id_proyecto=int(kw["id_proyecto"])) elif kw["id_fase"]: ctx = "id_fase" pp = PoseePermiso('crear rol', id_fase=int(kw["id_fase"])) elif kw["id_tipo_item"]: ctx = "id_tipo_item" pp = PoseePermiso('crear rol', id_tipo_item=int(kw["id_tipo_item"])) else: pp = PoseePermiso('crear rol') if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect(self.action) #en caso de exito ok_url = u"" #url que redirige al new y rellena los parametros que ya ingreso error_url = u"/rolesplantilla/new/" if ctx == "id_proyecto": ok_url = "/proyectos/%s/edit" % kw[ctx] error_url += "proyecto?{ctx}={val}".format(ctx=ctx, val=kw[ctx]) elif ctx == "id_fase": ok_url = "/fases/%s/edit" % kw[ctx] error_url += "fase?{ctx}={val}".format(ctx=ctx, val=kw[ctx]) elif ctx == "id_tipo_item": ok_url = "/tipositems/%s/edit" % kw[ctx] error_url += "ti?{ctx}={val}".format(ctx=ctx, val=kw[ctx]) else: tipo = unicode(kw["tipo"].lower()) ok_url = "/rolesplantilla/" if tipo.find(u"proyecto") >= 0: error_url += "proyecto?" elif tipo.find(u"fase") >= 0: error_url += "fase?" else: error_url += "ti?" #agregamos los parametros que ya ingreso el usuario. nombre = kw.get("nombre_rol", None).encode("utf-8") nombre_q = urllib.quote(nombre) desc = kw.get("descripcion", None).encode("utf-8") desc_q = urllib.quote(desc) params = "&nombre_rol=" + nombre_q + "&descripcion=" + desc_q error_url += params if not (kw.has_key("permisos") and kw["permisos"]): flash("Debe seleccionar al menos un permiso", 'warning') redirect(error_url) else: Rol.crear_rol(**kw) flash(u"El Rol se ha creado correctamente") redirect(ok_url)
def __actions__(self, obj): """Links de acciones para un registro dado""" value = '<div>' clase = 'actions' contexto = "" perm_mod = PoseePermiso('modificar rol') perm_del = PoseePermiso('eliminar rol') url_cont = "/rolesplantilla/" tipo = obj.tipo.lower() if (tipo.find(u"proyecto") >= 0): contexto = "proyecto" elif (tipo.find(u"fase") >= 0): contexto = "fase" else: contexto = "ti" if perm_mod.is_met(request.environ): value += '<div>' + \ '<a href="' + url_cont + str(obj.id_rol) + "/edit?contexto="+ \ contexto + '" class="' + clase + '">Modificar</a>' + \ '</div><br />' if perm_del.is_met(request.environ): value += '<div><form method="POST" action="./' + str(obj.id_rol) + '" class="button-to">'+\ '<input type="hidden" name="_method" value="DELETE" />' +\ '<input onclick="return confirm(\'Está seguro?\');" value="Eliminar" type="submit" '+\ 'style="background-color: transparent; float:left; border:0; color: #286571;'+\ 'display: inline; margin: 0; padding: 0; margin-left:-3px;" class="' + clase + '"/>'+\ '</form></div><br />' value += '</div>' return value
def put(self, *args, **kw): """actualiza un rol""" pp = None atras = "/roles/" msg = u"El Rol se ha actualizado con éxito" if kw["id_proyecto"]: pp = PoseePermiso('modificar rol', id_proyecto=int(kw["id_proyecto"])) elif kw["id_fase"]: pp = PoseePermiso('modificar rol', id_fase=int(kw["id_fase"])) elif kw["id_tipo_item"]: pp = PoseePermiso('modificar rol', id_tipo_item=int(kw["id_tipo_item"])) else: pp = PoseePermiso('modificar rol') atras = "/rolesplantilla/" msg = u"El de Plantilla se ha actualizado con éxito" if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect(atras) if not (kw.has_key("permisos") and kw["permisos"]): flash("Debe seleccionar al menos un permiso", 'warning') redirect("./edit?contexto=%s" % kw["contexto"]) Rol.actualizar_rol(**kw) flash(msg) redirect(atras)
def __actions__(self, obj): """Links de acciones para un registro dado""" value = '<div>' clase = 'actions' id = str(obj.id_atributos_por_tipo_item) id_tipo = UrlParser.parse_id(request.url, "tipositems") if PoseePermiso('redefinir tipo item', id_tipo_item=obj.id_tipo_item).is_met(request.environ): value += '<div>' + \ '<a href="./' + id + '/edit" ' + \ 'class="' + clase + '">Modificar</a>' + \ '</div><br />' if obj.puede_eliminarse(): if PoseePermiso('redefinir tipo item', id_tipo_item=obj.id_tipo_item).is_met( request.environ): value += '<div><form method="POST" action="' + id + '" class="button-to">'+\ '<input type="hidden" name="_method" value="DELETE" />' +\ '<input onclick="return confirm(\'Está seguro?\');" value="Eliminar" type="submit" '+\ 'style="background-color: transparent; float:left; border:0; color: #286571;'+\ 'display: inline; margin: 0; padding: 0; margin-left:-3px;" class="' + clase + '"/>'+\ '</form></div><br />' value += '</div>' return value
def post_buscar(self, *args, **kw): """ Controlador que recibe los parámetros de búsqueda para devolver el resultado esperado. """ puede_crear = PoseePermiso("crear proyecto").is_met(request.environ) pp = PoseePermiso('consultar proyecto') if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect("/proyectos/") tmpl_context.widget = self.table buscar_table_filler = ProyectoTableFiller(DBSession) buscar_table_filler.filtros = kw proyectos = buscar_table_filler.get_value() atras = '/proyectos/' return dict(lista_elementos=proyectos, page=self.title, titulo=self.title, modelo=self.model.__name__, columnas=self.columnas, url_action="/proyectos/", puede_crear=puede_crear, comboboxes=self.comboboxes, opciones=self.opciones, atras=atras)
def __actions__(self, obj): """Links de acciones para un registro dado""" value = '<div>' clase = 'actions' perm_mod = PoseePermiso('modificar rol', id_tipo_item=obj.id_tipo_item) perm_del = PoseePermiso('eliminar rol', id_tipo_item=obj.id_tipo_item) url = "./" if UrlParser.parse_nombre(request.url, "post_buscar"): url = "../" if perm_mod.is_met(request.environ): value += '<div>' + \ '<a href="' + url + str(obj.id_rol) + "/edit"+ \ '" class="' + clase + '">Modificar</a>' + \ '</div><br />' if perm_del.is_met(request.environ): value += '<div><form method="POST" action="' + url + str(obj.id_rol) + '" class="button-to">'+\ '<input type="hidden" name="_method" value="DELETE" />' +\ '<input onclick="return confirm(\'Está seguro?\');" value="Eliminar" type="submit" '+\ 'style="background-color: transparent; float:left; border:0; color: #286571;'+\ 'display: inline; margin: 0; padding: 0; margin-left:-3px;" class="' + clase + '"/>'+\ '</form></div><br />' value += '</div>' return value
def __actions__(self, obj): """Links de acciones para un registro dado""" value = '<div>' clase = 'actions' id_proyecto = UrlParser.parse_id(request.url, "proyectos") if id_proyecto: url_cont = "/proyectos/%d/" % id_proyecto else: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase") url_cont = "/proyectos_fase/%d/" % id_proyecto id_fase = UrlParser.parse_id(request.url, "fases") url_cont += "fases/%d/rolesfase/" url_cont %= id_fase perm_mod = PoseePermiso('modificar rol', id_fase=id_fase) perm_del = PoseePermiso('eliminar rol', id_fase=id_fase) if perm_mod.is_met(request.environ): value += '<div>' + \ '<a href="' + url_cont + str(obj.id_rol) + "/edit"+ \ '" class="' + clase + '">Modificar</a>' + \ '</div><br />' if perm_del.is_met(request.environ): value += '<div><form method="POST" action="./' + str(obj.id_rol) + '" class="button-to">'+\ '<input type="hidden" name="_method" value="DELETE" />' +\ '<input onclick="return confirm(\'Está seguro?\');" value="Eliminar" type="submit" '+\ 'style="background-color: transparent; float:left; border:0; color: #286571;'+\ 'display: inline; margin: 0; padding: 0; margin-left:-3px;" class="' + clase + '"/>'+\ '</form></div><br />' value += '</div>' return value
def __actions__(self, obj): """Links de acciones para un registro dado""" value = '<div>' clase = 'actions_fase' id_proyecto = UrlParser.parse_id(request.url, "proyectos") url_proy = "/proyectos/" if not id_proyecto: #desde el submenu fase. id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase") url_proy = "/proyectos_fase/" url_cont = url_proy + "%d/fases/" url_cont %= id_proyecto if PoseePermiso('modificar fase', id_fase=obj.id_fase).is_met(request.environ): value += '<div>' + \ '<a href="'+ url_cont + str(obj.id_fase) + '/edit" ' + \ 'class="' + clase + '">Modificar</a>' + \ '</div><br />' value += '<div>' + \ '<a href="'+ url_cont + str(obj.id_fase) + '/rolesfase" ' + \ 'class="' + clase + '">Roles de Fase</a>' + \ '</div><br />' value += '<div>' + \ '<a href="'+ url_cont + str(obj.id_fase) + '/tipositems" ' + \ 'class="' + clase + '">Tipos de Ítem</a>' + \ '</div><br />' value += '<div>' + \ '<a href="'+ url_cont + str(obj.id_fase) + '/miembrosfase" ' + \ 'class="' + clase + '">Usuarios</a>' + \ '</div><br />' ''' value += '<div>' + \ '<a href="'+ url_cont + str(obj.id_fase) + '/nomiembrosfase" ' + \ 'class="' + clase + '">No miembros</a>' + \ '</div><br />' ''' proy = Proyecto.por_id(obj.id_proyecto) if proy.estado != "Iniciado" and \ PoseePermiso('eliminar fase', id_fase=obj.id_fase).is_met(request.environ): value += '<div><form method="POST" action="' + str(obj.id_fase) + '" class="button-to">'+\ '<input type="hidden" name="_method" value="DELETE" />' +\ '<input onclick="return confirm(\'¿Está seguro?\');" value="Eliminar" type="submit" '+\ 'style="background-color: transparent; float:left; border:0; color: #286571; display: inline;'+\ 'margin: 0; padding: 0; margin-left: -3px; margin-top: -3px;' + clase + '"/>'+\ '</form></div><br />' value += '</div>' return value
def __actions__(self, obj): """Links de acciones para un registro dado""" value = '<div>' clase = 'actions' if PoseePermiso('modificar proyecto', id_proyecto=obj.id_proyecto).is_met(request.environ): value += '<div>' + \ '<a href="/proyectos/'+ str(obj.id_proyecto) + '/edit" ' + \ 'class="' + clase + '">Modificar</a>' + \ '</div><br />' value += '<div>' + \ '<a href="/proyectos/'+ str(obj.id_proyecto) + '/fases" ' + \ 'class="' + clase + '">Fases</a>' + \ '</div><br />' value += '<div>' + \ '<a href="/proyectos/'+ str(obj.id_proyecto) + '/tipositems" ' + \ 'class="' + clase + '">Tipos de Ítem</a>' + \ '</div><br />' value += '<div>' + \ '<a href="/proyectos/'+ str(obj.id_proyecto) + '/rolesproyecto" ' + \ 'class="' + clase + '">Roles de Proyecto</a>' + \ '</div><br />' value += '<div>' + \ '<a href="/proyectos/'+ str(obj.id_proyecto) + '/miembros" ' + \ 'class="' + clase + '">Usuarios</a>' + \ '</div><br />' ''' value += '<div>' + \ '<a href="/proyectos/'+ str(obj.id_proyecto) + '/nomiembros" ' + \ 'class="' + clase + '">No miembros</a>' + \ '</div><br />' ''' if obj.estado == u"No Iniciado": if (PoseePermiso('iniciar proyecto', id_proyecto=obj.id_proyecto).is_met(request.environ) and\ obj.numero_fases > 0): value += '<div>' + \ '<a href="/proyectos/iniciar/' + str(obj.id_proyecto) + '" ' +\ 'class="' + clase + '">Iniciar</a>' + \ '</div><br />' if PoseePermiso('eliminar proyecto', id_proyecto=obj.id_proyecto).is_met(request.environ): url = "/proyectos/post_delete/%d" % obj.id_proyecto value += '<div><form method="POST" action="' + url + '" class="button-to">'+\ '<input onclick="return confirm(\'¿Está seguro?\');" value="Eliminar" type="submit" '+\ 'style="background-color: transparent; float:left; border:0; color: #286571;'+\ 'display: inline; margin: 0; padding: 0; margin-left: -3px;" class="' + clase + '"/>'+\ '</form></div><br />' value += '</div>' return value
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ puede_crear = PoseePermiso("crear proyecto").is_met(request.environ) if pylons.request.response_type == 'application/json': return dict(lista=self.table_filler.get_value(**kw)) if not getattr(self.table.__class__, ' ', False): proyectos = self.table_filler.get_value(**kw) else: proyectos = [] tmpl_context.widget = self.table atras = '/' return dict(lista_elementos=proyectos, page=self.title, titulo=self.title, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, url_action="/proyectos/", puede_crear=puede_crear, comboboxes=self.comboboxes, atras=atras)
def __actions__(self, obj): """Links de acciones para un registro dado""" if UrlParser.parse_nombre(request.url, "versiones"): #no se hace nada desde el controlador de versiones. return '<div></div>' value = '<div>' clase = 'actions_fase' id = str(obj.id_relacion) controller = "./" + id id_item = UrlParser.parse_id(request.url, "items") if id_item: item = Item.por_id(id_item) p_item = PropiedadItem.por_id(item.id_propiedad_item) otro = obj.obtener_otro_item(id_item) p_otro = PropiedadItem.por_id(otro.id_propiedad_item) if (p_item.estado not in [u"Bloqueado", u"Revisión-Bloq", u"Eliminado"] and\ obj.id_anterior != id_item or p_otro.estado == u"Eliminado"): if (PoseePermiso('modificar item', id_fase=item.id_fase).is_met( request.environ)): value += '<div><form method="POST" action="' + controller + '" class="button-to">'+\ '<input type="hidden" name="_method" value="DELETE" />' +\ '<input onclick="return confirm(\'¿Está seguro?\');" value="Eliminar" type="submit" '+\ 'style="background-color: transparent; float:left; border:0; color: #286571; display: inline;'+\ 'margin: 0; padding: 0;' + clase + '"/>'+\ '</form></div><br />' value += '</div>' return value
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_tipo_item = UrlParser.parse_id(request.url, "tipositems") tipo = TipoItem.por_id(id_tipo_item) titulo = "Lista de Usuarios" puede_incorporar = PoseePermiso("asignar-desasignar rol", id_tipo_item=id_tipo_item).is_met( request.environ) if request.response_type == 'application/json': return self.table_filler.get_value(id_tipo_item=id_tipo_item, **kw) if not getattr(self.table.__class__, '__retrieves_own_value__', False): nomiembros = self.table_filler.get_value(id_tipo_item=id_tipo_item, **kw) else: nomiembros = [] tmpl_context.widget = self.table atras = "../" return dict(lista_elementos=nomiembros, page=titulo, titulo=titulo, columnas=self.columnas, opciones=self.opciones, url_action=self.action, atras=atras, puede_incorporar=puede_incorporar)
def post_buscar(self, *args, **kw): id_fase = UrlParser.parse_id(request.url, "fases") id_usuario = UrlParser.parse_id(request.url, "miembrosfase") usuario = Usuario.por_id(id_usuario) fase = Fase.por_id(id_fase) puede_desasignar = PoseePermiso("asignar-desasignar rol", id_fase=id_fase).is_met( request.environ) titulo = "Roles de: %s" % usuario.nombre_usuario tmpl_context.widget = self.table buscar_table_filler = MiembrosFaseRolesTableFiller(DBSession) buscar_table_filler.filtros = kw usuarios = buscar_table_filler.get_value(usuario=usuario, id_fase=id_fase, **kw) atras = "../../" return dict(lista_elementos=usuarios, page=titulo, titulo=titulo, columnas=self.columnas, opciones=self.opciones, comboboxes=self.comboboxes, url_action="../", atras=atras, puede_desasignar=puede_desasignar)
def __actions__(self, obj): """Links de acciones para un registro dado""" id_proyecto = UrlParser.parse_id(request.url, "proyectos") clase = 'actions' value = "<div>" url_cont = "/proyectos/%d/" % id_proyecto value += '<div>' + \ '<a href="' + url_cont + "miembros/" + str(obj.id_usuario) + '" ' + \ 'class="' + clase + '">Ver</a>' + \ '</div><br />' if PoseePermiso("asignar-desasignar rol", id_proyecto=id_proyecto).is_met(request.environ): value += '<div>' + \ '<a href="'+ url_cont + "miembros/" + str(obj.id_usuario) + \ "/rolesasignados/" '" ' + \ 'class="' + clase + '">Roles Asig.</a>' + \ '</div><br />' value += '<div>' + \ '<a href="'+ url_cont + "miembros/" + str(obj.id_usuario) + \ "/rolesdesasignados/" '" ' + \ 'class="' + clase + '">Roles Desasig.</a>' + \ '</div><br />' value += '</div>' return value
def post_buscar(self, *args, **kw): """ Controlador que recibe los parámetros de búsqueda para devolver el resultado esperado. """ id_proyecto = UrlParser.parse_id(request.url, "proyectos") #action = self.tmp_action % id_proyecto if not id_proyecto: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase") #action = self.tmp_action_fase % id_proyecto puede_crear = PoseePermiso( "crear fase", id_proyecto=id_proyecto).is_met(request.environ) proy = Proyecto.por_id(id_proyecto) if proy.estado == "Iniciado": puede_crear = False titulo = self.title % proy.nombre tmpl_context.widget = self.table buscar_table_filler = FaseTableFiller(DBSession) buscar_table_filler.filtros = kw fases = buscar_table_filler.get_value(id_proyecto=id_proyecto) atras = '../' return dict(lista_elementos=fases, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, url_action="../", puede_crear=puede_crear, comboboxes=self.comboboxes, opciones=self.opciones, atras=atras)
def edit(self, *args, **kw): """Despliega una pagina para realizar modificaciones""" #id_fase = UrlParser.parse_id(request.url, "fases") id_item = UrlParser.parse_id(request.url, "items") atras = "./" #if UrlParser.parse_nombre(request.url, "fases"): # atras = "../../edit" item = Item.por_id(id_item) puede_modificar = PoseePermiso( 'modificar item', id_fase=item.id_fase).is_met(request.environ) if not puede_modificar: flash(pp.message % pp.nombre_permiso, 'warning') redirect("./") tmpl_context.widget = self.edit_form #tmpl_context.tabla_atributos = self.atributos.table #atributos = self.atributos.table_filler \ # .get_value(id_version=item.id_propiedad_item) #tmpl_context.tabla_relaciones = RelacionItemTable(DBSession) #rel_table_filler = RelacionItemTableFiller(DBSession) #relaciones = rel_table_filler.get_value(id_version=item.id_propiedad_item) value = self.edit_filler.get_value(values={'id_item': id_item}) page = u"Modificar Ítem: %s" % value["codigo"] return dict( value=value, page=page, #id=str(id_item), #puede_relacionar=puede_modificar, #atributos=atributos, #relaciones=relaciones, atras=atras)
def post_buscar(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_tipo_item = UrlParser.parse_id(request.url, "tipositems") puede_crear = PoseePermiso('redefinir tipo item', id_tipo_item=id_tipo_item).is_met( request.environ) tipo = TipoItem.por_id(id_tipo_item) titulo = self.title % tipo.nombre filler = AtributosPorTipoItemTableFiller(DBSession) filler.filtros = kw atributos = filler.get_value(id_tipo_item=id_tipo_item, **kw) tmpl_context.widget = self.table url_action = self.action atras = "../" return dict(lista_elementos=atributos, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, comboboxes=self.comboboxes, url_action="../", puede_crear=puede_crear, atras=atras)
def post_buscar(self, *args, **kw): id_proyecto = UrlParser.parse_id(request.url, "proyectos") id_fase = UrlParser.parse_id(request.url, "fases") atras = "../" if not id_proyecto: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase") if not id_proyecto: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase_ti") id_fase = UrlParser.parse_id(request.url, "fases_ti") atras = "../../../" proy = Proyecto.por_id(id_proyecto) puede_crear = puede_crear = PoseePermiso("crear tipo item", id_fase=id_fase).is_met(request.environ) if proy.estado != "Iniciado": puede_crear = False fase = Fase.por_id(id_fase) titulo = self.title % fase.nombre tmpl_context.widget = self.table buscar_table_filler = self.table_filler.__class__(DBSession) buscar_table_filler.filtros = kw tipos_items = buscar_table_filler.get_value(id_fase=id_fase) return dict(lista_elementos=tipos_items, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, url_action="../", puede_crear=puede_crear, atras=atras )
def get_one(self, *args, **kw): id_tipo = int(args[0]) id_proyecto = UrlParser.parse_id(request.url, "proyectos") id_fase = UrlParser.parse_id(request.url, "fases") if not id_proyecto: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase") if not id_proyecto: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase_ti") id_fase = UrlParser.parse_id(request.url, "fases_ti") proy = Proyecto.por_id(id_proyecto) puede_crear = puede_crear = PoseePermiso("crear tipo item", id_fase=id_fase).is_met(request.environ) if proy.estado != "Iniciado": puede_crear = False ti = self.table_filler.get_value(id_tipo=id_tipo, **kw) tmpl_context.widget = self.table fase = Fase.por_id(id_fase) titulo = self.title % fase.nombre atras = '../' return dict(lista_elementos=ti, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, url_action=self.action, puede_crear=puede_crear, atras=atras )
def post(self, *args, **kw): """ Crea un nuevo rol plantilla o con contexto""" id_proyecto = UrlParser.parse_id(request.url, "proyectos") url_action = self.action % id_proyecto pp = PoseePermiso('crear rol', id_proyecto=id_proyecto) kw["id_proyecto"] = id_proyecto if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect(url_action) #url que redirige al new y rellena los parametros que ya ingreso error_url = url_action + "new" #agregamos los parametros que ya ingreso el usuario. nombre = kw.get("nombre_rol", None).encode("utf-8") nombre_q = urllib.quote(nombre) desc = kw.get("descripcion", None).encode("utf-8") desc_q = urllib.quote(desc) params = "?nombre_rol=" + nombre_q + "&descripcion=" + desc_q error_url += params if not (kw.has_key("permisos") and kw["permisos"]): flash("Debe seleccionar al menos un permiso", 'warning') redirect(error_url) else: Rol.crear_rol(**kw) flash(u"El Rol se ha creado correctamente") redirect(url_action)
def __actions__(self, obj): """Links de acciones para un registro dado""" id_proyecto = UrlParser.parse_id(request.url, "proyectos") if id_proyecto: url_cont = "/proyectos/%d/" % id_proyecto else: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase") url_cont = "/proyectos_fase/%d/" % id_proyecto id_fase = UrlParser.parse_id(request.url, "fases") url_cont += "fases/%d/" url_cont %= id_fase id = str(obj.id_usuario) clase = 'actions' value = "<div>" value += '<div>' + \ '<a href="' + url_cont + "nomiembrosfase/" + id + '" ' + \ 'class="' + clase + '">Ver</a>' + \ '</div><br />' if PoseePermiso("asignar-desasignar rol", id_fase=id_fase).is_met(request.environ): value += '<div>' + \ '<a href="'+ url_cont + "nomiembrosfase/" + id + \ '/rolesdesasignados/" ' + \ 'class="' + clase + '">Asignar Rol</a>' + \ '</div><br />' value += '</div>' return value
def __actions__(self, obj): """Links de acciones para un registro dado""" if UrlParser.parse_nombre(request.url, "versiones"): #no se hace nada desde el controlador de versiones. return '<div></div>' value = '<div>' clase = 'actions_fase' id = str(obj.id_atributos_por_item) controller = "./atributos/" + id id_item = UrlParser.parse_id(request.url, "items") item = Item.por_id(id_item) if UrlParser.parse_nombre(request.url, "atributos"): controller = id #if PoseePermiso('modificar item', # id_fase=item.id_fase).is_met(request.environ): if PoseePermiso('modificar item', id_tipo_item=item.id_tipo_item).is_met( request.environ): value += '<div>' + \ '<a href="./'+ controller +'/edit" ' + \ 'class="' + clase + '">Modificar</a>' + \ '</div><br />' value += '</div>' return value
def post_buscar(self, *args, **kw): id_proyecto = UrlParser.parse_id(request.url, "proyectos") id_usuario = UrlParser.parse_id(request.url, "miembros") usuario = Usuario.por_id(id_usuario) proy = Proyecto.por_id(id_proyecto) puede_asignar = PoseePermiso("asignar-desasignar rol", id_proyecto=id_proyecto).is_met( request.environ) titulo = u"Roles Desasignados para: %s" % usuario.nombre_usuario tmpl_context.widget = self.table buscar_table_filler = MiembrosProyectoRolesTableFiller(DBSession) buscar_table_filler.filtros = kw roles = buscar_table_filler.get_value(usuario=usuario, asignados=False, id_proyecto=id_proyecto, **kw) atras = "/proyectos/%d/miembros/" % id_proyecto return dict(lista_elementos=roles, page=titulo, titulo=titulo, columnas=self.columnas, opciones=self.opciones, comboboxes=self.comboboxes, url_action="../", atras=atras, puede_asignar=puede_asignar)
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ puede_crear = False id_fase = UrlParser.parse_id(request.url, "fases") puede_crear = PoseePermiso("crear lb", id_fase=id_fase).is_met(request.environ) fase = Fase.por_id(id_fase) if puede_crear: puede_crear = fase.puede_crear_lb() titulo = u"Líneas Base de Fase: %s" % fase.nombre lbs = self.table_filler.get_value(id_fase=id_fase, **kw) tmpl_context.widget = self.table atras = "../../" return dict(lista_elementos=lbs, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, url_action=self.tmp_action, puede_crear=puede_crear, comboboxes=self.comboboxes, atras=atras )
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_proyecto = UrlParser.parse_id(request.url, "proyectos") proy = Proyecto.por_id(id_proyecto) #titulo = "Miembros del Proyecto: %s" % proy.nombre titulo = "Lista de Usuarios" puede_remover = PoseePermiso("asignar-desasignar rol", id_proyecto=id_proyecto).is_met( request.environ) if request.response_type == 'application/json': return self.table_filler.get_value(id_proyecto=id_proyecto, **kw) if not getattr(self.table.__class__, '__retrieves_own_value__', False): miembros = self.table_filler.get_value(id_proyecto=id_proyecto, **kw) else: miembros = [] tmpl_context.widget = self.table atras = "/proyectos/%d/" % id_proyecto return dict(lista_elementos=miembros, page=titulo, titulo=titulo, columnas=self.columnas, opciones=self.opciones, url_action=self.action, atras=atras, puede_remover=puede_remover)
def post_buscar(self, *args, **kw): id_tipo_item = UrlParser.parse_id(request.url, "tipositems") tipo = TipoItem.por_id(id_tipo_item) #titulo = u"Miembros del Tipo de Ítem: %s" % tipo.nombre titulo = "Lista de Usuarios" puede_remover = PoseePermiso("asignar-desasignar rol", id_tipo_item=id_tipo_item).is_met( request.environ) tmpl_context.widget = miembros_tipo_table buscar_table_filler = MiembrosTipoTableFiller(DBSession) buscar_table_filler.filtros = kw usuarios = buscar_table_filler.get_value(id_tipo_item=id_tipo_item, **kw) #atras = "/proyectos/%d/" % id_proyecto atras = "../" return dict(lista_elementos=usuarios, page=titulo, titulo=titulo, columnas=self.columnas, opciones=self.opciones, url_action="../", atras=atras, puede_remover=puede_remover)
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_proyecto = UrlParser.parse_id(request.url, "proyectos") atras = "../" if not id_proyecto: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase") atras = "../../" puede_crear = PoseePermiso( "crear fase", id_proyecto=id_proyecto).is_met(request.environ) proy = Proyecto.por_id(id_proyecto) if proy.estado == "Iniciado": puede_crear = False titulo = self.title % proy.nombre fases = self.table_filler.get_value(id_proyecto=id_proyecto, **kw) tmpl_context.widget = self.table return dict(lista_elementos=fases, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, url_action=self.tmp_action, puede_crear=puede_crear, comboboxes=self.comboboxes, atras=atras)
def __actions__(self, obj): """Links de acciones para un registro dado""" clase = 'actions' value = "<div>" url = "./" if UrlParser.parse_nombre(request.url, "post_buscar"): url = "../" value += '<div>' + \ '<a href="' + url + str(obj.id_usuario) + '/" ' + \ 'class="' + clase + '">Ver</a>' + \ '</div><br />' id_tipo_item = UrlParser.parse_id(request.url, "tipositems") if PoseePermiso("asignar-desasignar rol", id_tipo_item=id_tipo_item).is_met(request.environ): value += '<div>' + \ '<a href="./'+ str(obj.id_usuario) + \ "/rolesasignados/" '" ' + \ 'class="' + clase + '">Roles Asig.</a>' + \ '</div><br />' value += '<div>' + \ '<a href="./' + str(obj.id_usuario) + \ "/rolesdesasignados/" '" ' + \ 'class="' + clase + '">Roles Desasig.</a>' + \ '</div><br />' value += '</div>' return value
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_usuario = UrlParser.parse_id(request.url, "usuarios") usuario = Usuario.por_id(id_usuario) puede_asignar = PoseePermiso("asignar-desasignar rol") \ .is_met(request.environ) titulo = "Roles Desasignados de Sistema para: %s" % usuario.nombre_usuario if request.response_type == 'application/json': return self.table_filler.get_value(usuario=usuario, asignados=False, **kw) if not getattr(self.table.__class__, '__retrieves_own_value__', False): roles = self.table_filler.get_value(usuario=usuario, asignados=False, **kw) else: roles = [] tmpl_context.widget = self.table atras = "/usuarios/" return dict(lista_elementos=roles, page=titulo, titulo=titulo, columnas=self.columnas, opciones=self.opciones, url_action=self.action, atras=atras, puede_asignar=puede_asignar)
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_tipo_item = UrlParser.parse_id(request.url, "tipositems") puede_crear = PoseePermiso( "crear rol", id_tipo_item=id_tipo_item).is_met(request.environ) if request.response_type == 'application/json': return self.table_filler.get_value(id_tipo_item=id_tipo_item, **kw) if not getattr(self.table.__class__, '__retrieves_own_value__', False): roles = self.table_filler.get_value(id_tipo_item=id_tipo_item, **kw) else: roles = [] tmpl_context.widget = self.table atras = "../" url_action = self.tmp_action return dict(lista_elementos=roles, page=self.title, titulo=self.title, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, url_action=url_action, puede_crear=puede_crear, atras=atras)