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 put(self, *args, **kw): if "sprox_id" in kw: del kw["sprox_id"] if "repita_nuevo_password" in kw: del kw["repita_nuevo_password"] if kw["nro_documento"]: kw["nro_documento"] = int(kw["nro_documento"]) username = request.identity['repoze.who.userid'] usuario = Usuario.by_user_name(username) id_usuario = UrlParser.parse_id(request.url, "usuarios") if (usuario.id_usuario != id_usuario): pp = PoseePermiso('modificar usuario') if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect(self.action) usuario = Usuario.por_id(args[0]) usuario.nombre = kw["nombre"] usuario.apellido = kw["apellido"] usuario.email = kw["email"] usuario.telefono = kw["telefono"] usuario.nro_documento = kw["nro_documento"] if kw["nuevo_password"] != None and kw.has_key('cambiar_pass'): usuario.password = kw["nuevo_password"] redirect("../")
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 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 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 __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 __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 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' 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 __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' url_cont = "./" + str(obj.id_tipo_item) id_tipo = UrlParser.parse_id(request.url, "tipositems") if id_tipo: url_cont = "../" + str(obj.id_tipo_item) if UrlParser.parse_nombre(request.url, "post_buscar"): url_cont = "../" + str(obj.id_tipo_item) pp = PoseePermiso('redefinir tipo item', id_tipo_item=obj.id_tipo_item) #if PoseePermiso('redefinir tipo item').is_met(request.environ): if pp.is_met(request.environ): value += '<div>' + \ '<a href="' + url_cont + '/edit" ' + \ 'class="' + clase + '">Modificar</a>' + \ '</div><br />' value += '<div>' + \ '<a href="' + url_cont + '/atributostipoitem/" ' + \ 'class="' + clase + '">Atributos</a>' + \ '</div><br />' value += '<div>' + \ '<a href="'+ url_cont + '/miembrostipo" ' + \ 'class="' + clase + '">Usuarios</a>' + \ '</div><br />' ''' value += '<div>' + \ '<a href="'+ url_cont + '/nomiembrostipo" ' + \ 'class="' + clase + '">No miembros</a>' + \ '</div><br />' ''' value += '<div>' + \ '<a href="'+ url_cont + '/rolestipo" ' + \ 'class="' + clase + '">Roles de Tipo</a>' + \ '</div><br />' if obj.puede_eliminarse(): if pp.is_met(request.environ): value += '<div><form method="POST" action="' + str(obj.id_tipo_item) + '" 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): """update a record""" pp = PoseePermiso('modificar rol') if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect(self.action) Rol.actualizar_rol(**kw) redirect(self.action)
def edit(self, *args, **kw): """Despliega una pagina para modificar rol""" pp = PoseePermiso('modificar rol') if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect(self.action) tmpl_context.widget = self.edit_form value = self.edit_filler.get_value(values={'id_rol': int(args[0])}) page = "Rol {nombre}".format(nombre=value["nombre_rol"]) atras = self.action return dict(value=value, page=page, atras=atras)
def post(self, *args, **kw): """create a new record""" pp = PoseePermiso('crear rol') if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect(self.action) if (not kw.has_key('tipo')): kw["tipo"] = self.rol_tipo Rol.crear_rol(**kw) redirect(self.action)
def new(self, *args, **kw): """Despliega una pagina para crear un rol""" pp = PoseePermiso('crear rol') if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect(self.action) tmpl_context.widget = self.new_form if request.environ.get('HTTP_REFERER') == "http://" + request.environ.get('HTTP_HOST',) + "/": atras = "../" else: atras = "/roles" return dict(value=kw, page="Nuevo Rol", action=self.action, atras=atras)
def new(self, *args, **kw): """Despliega una pagina para crear un usuario""" pp = PoseePermiso('crear usuario') if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect("/usuarios/") page = u"Nuevo Usuario" atras = "/usuarios/" return dict(super(UsuarioController, self).new(*args, **kw), page=page, atras=atras)
def put(self, *args, **kw): """update a record""" url_action = url_action = "../../" pp = PoseePermiso('redefinir tipo item', id_tipo_item=kw["id_tipo_item"]) if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect(url_action) tipo = TipoItem.por_id(int(kw["id_tipo_item"])) tipo.descripcion = unicode(kw["descripcion"]) flash("Actualizacion exitosa") redirect("./")
def new(self, *args, **kw): """Despliega una pagina para crear un tipo_item""" id_tipo_item = UrlParser.parse_id(request.url, "tipositems") url_action = "./" pp = PoseePermiso('redefinir tipo item', id_tipo_item=id_tipo_item) if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect(atras) tmpl_context.widget = self.new_form return dict(value=kw, page=u"Nuevo Atributo", action=url_action, atras=url_action)
def edit(self, id_proyecto, *args, **kw): """Despliega una pagina para admistrar un proyecto""" pp = PoseePermiso('modificar proyecto', id_proyecto=id_proyecto) if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect("/proyectos") proyecto = Proyecto.por_id(id_proyecto) tmpl_context.widget = self.edit_form value = self.edit_filler.get_value(values={'id_proyecto': id_proyecto}) value['_method'] = 'PUT' atras = "/proyectos/" return dict(value=value, page="Modificar Proyecto %s" % proyecto.nombre, atras=atras)
def edit(self, *args, **kw): """Despliega una pagina para modificar el atributo""" id_tipo_item = UrlParser.parse_id(request.url, "tipositems") url_action = "../" pp = PoseePermiso('redefinir tipo item', id_tipo_item=id_tipo_item) if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect(url_action) tmpl_context.widget = self.edit_form value = self.edit_filler.get_value( \ values={'id_atributos_por_tipo_item': int(args[0])}) value['_method'] = 'PUT' page = "Atributo {nombre}".format(nombre=value["nombre"]) return dict(value=value, page=page, atras=url_action)
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 edit(self, id_proyecto,*args, **kw): """Despliega una pagina para admistrar un proyecto""" pp = PoseePermiso('modificar proyecto', id_proyecto=id_proyecto) if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect("/proyectos") proyecto = Proyecto.por_id(id_proyecto) tmpl_context.widget = self.edit_form value = self.edit_filler.get_value(values={'id_proyecto': id_proyecto}) value['_method'] = 'PUT' atras = "/proyectos/" return dict(value=value, page="Modificar Proyecto %s" % proyecto.nombre, 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 put(self, *args, **kw): """update""" if "sprox_id" in kw: del kw["sprox_id"] id_proyecto = int(kw["id_proyecto"]) id_fase = int(kw["id_fase"]) del kw["id_fase"] pp = PoseePermiso('modificar fase', id_fase=id_fase) if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect("../") proy = Proyecto.por_id(id_proyecto) proy.modificar_fase(id_fase, **kw) flash("Fase modificada") redirect("./")
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 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 revertir(self, *args, **kw): """ Revierte el ítem en cuestion a la version indicada. """ id_item = UrlParser.parse_id(request.url, "items") id_version = int(args[0]) if not id_item: redirect("../") item = Item.por_id(id_item) pp = PoseePermiso('modificar item', id_tipo_item=item.id_tipo_item) if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect("../") user = Usuario.by_user_name(request.credentials["repoze.what.userid"]) item.revertir(id_version, user) redirect("../")
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_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 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""" 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 __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_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 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 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 """ 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 new(self, *args, **kw): """Despliega una pagina para crear un tipo_item""" id_fase = UrlParser.parse_id(request.url, "fases") if not id_fase: id_fase = UrlParser.parse_id(request.url, "fases_ti") pp = PoseePermiso('crear tipo item', id_fase=id_fase) if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect("./") atras = self.action tmpl_context.widget = self.new_form return dict(value=kw, page=u"Nuevo Tipo de Ítem", action=self.action, atras=atras)
def _do_get_provider_count_and_objs(self, id_proyecto=None, **kw): """ Retorna la Lista los proyectos del sistema sobre """ if id_proyecto: proy = Proyecto.por_id(id_proyecto) return 1, [proy] count, lista = super(ProyectoTableFiller, self).\ _do_get_provider_count_and_objs(**kw) filtrados = [] for p in lista: pp = PoseePermiso(u"modificar proyecto", id_proyecto=p.id_proyecto) if pp.is_met(request.environ): filtrados.append(p) return len(filtrados), filtrados
def new(self, *args, **kw): """Pagina para generar una nueva linea base""" id_fase = UrlParser.parse_id(request.url, "fases") pp = PoseePermiso("crear lb", id_fase=id_fase) if not id_fase: flash("Se Debe especificar una fase", "warning") redirect("../") if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect("../") fase = Fase.por_id(id_fase) titulo = u"Generar LB para Fase: %s" % fase.nombre tmpl_context.tabla_items = item_generar_table items = item_generar_table_filler.get_value(id_fase=fase.id_fase) return dict(items=items, page=titulo, atras='./')
def put(self, *args, **kw): """actualiza un rol""" id_tipo_item = UrlParser.parse_id(request.url, "tipositems") url_action = "../../" msg = u"El Rol se ha actualizado con éxito" pp = PoseePermiso('modificar rol', id_tipo_item=id_tipo_item) if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect(url_action) if not (kw.has_key("permisos") and kw["permisos"]): flash("Debe seleccionar al menos un permiso", 'warning') redirect(url_action + kw["id_rol"] + "/edit") Rol.actualizar_rol(**kw) flash(msg) redirect(url_action)
def post(self, *args, **kw): """create a new record""" id_tipo_item = UrlParser.parse_id(request.url, "tipositems") url_action = "./" pp = PoseePermiso('redefinir tipo item',id_tipo_item=id_tipo_item) if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect(url_action) if kw.has_key("sprox_id"): del kw["sprox_id"] tipo = TipoItem.por_id(id_tipo_item) try: tipo.agregar_atributo(**kw) except NombreDeAtributoError, err: flash(unicode(err), "warning")
def post(self, *args, **kw): """create a new record""" 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") pp = PoseePermiso('crear tipo item', id_fase=id_fase) url_action = self.action if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect(url_action) if kw.has_key("sprox_id"): del kw["sprox_id"] id_padre = int(kw["id_padre"]) id_importado = kw["id_importado"] if (kw["id_importado"]): id_importado = int(kw["id_importado"]) mezclar = False if kw.has_key("mezclar"): mezclar = kw["mezclar"] del kw["mezclar"] del kw["id_padre"] del kw["id_importado"] proy = Proyecto.por_id(id_proyecto) tipo = proy.definir_tipo_item(id_padre, id_importado, mezclar, **kw) #Creamos el rol miembro de tipo de ítem #plant_m = Rol.obtener_rol_plantilla(nombre_rol=u"Miembro de Tipo Item") #rol_m = Rol.nuevo_rol_desde_plantilla(plantilla=plant_m, # id=tipo.id_tipo_item) flash(u"Creacion exitosa") redirect(url_action)
def edit(self, *args, **kw): """Despliega una pagina para realizar modificaciones""" id_fase = UrlParser.parse_id(request.url, "fases") fase = Fase.por_id(int(id_fase)) id_proyecto = UrlParser.parse_id(request.url, "proyectos") atras = "./" if not id_proyecto: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase") pp = PoseePermiso('modificar fase', id_fase=id_fase) if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect("./") tmpl_context.widget = FaseEditForm(DBSession) value = self.edit_filler.get_value(values={'id_fase': id_fase}) page = u"Modificar Fase: %s" % value["nombre"] return dict(value=value, page=page, atras=atras)
def edit(self, *args, **kw): """Despliega una pagina para modificar usuario""" username = request.identity['repoze.who.userid'] usuario = Usuario.by_user_name(username) if usuario.id_usuario != int(args[0]): pp = PoseePermiso('modificar usuario') if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect("/usuarios") tmpl_context.widget = self.edit_form user = Usuario.por_id(args[0]) page = "Usuario {nombre}".format(nombre=user.nombre_usuario) atras = "/usuarios/" value = self.edit_filler.get_value(values={'id_usuario': args[0]}) value['_method'] = 'PUT' return dict(value=value, page=page, id=args[0], atras=atras )
def edit(self, *args, **kw): """Despliega una pagina para modificar tipo_item""" id_tipo = UrlParser.parse_id(request.url, "tipositems") id_fase = UrlParser.parse_id(request.url, "fases") if not id_fase: id_fase = UrlParser.parse_id(request.url, "fases_ti") value = self.edit_filler.get_value(values={'id_tipo_item': id_tipo}) url_action = "./" pp = PoseePermiso('redefinir tipo item', id_tipo_item=id_tipo) if not pp.is_met(request.environ): flash(pp.message % pp.nombre_permiso, 'warning') redirect(url_action) tmpl_context.widget = self.edit_form value['_method'] = 'PUT' page = "Tipo Item: {nombre}".format(nombre=value["nombre"]) return dict(value=value, page=page, atras=url_action, url_action=url_action )
def __actions__(self, obj): """Links de acciones para un registro dado""" value = '<div>' clase = 'actions' url_cont = "/proyectos/%d/rolesproyecto/" % obj.id_proyecto perm_mod = PoseePermiso('modificar rol', id_proyecto=obj.id_proyecto) perm_del = PoseePermiso('eliminar rol', id_proyecto=obj.id_proyecto) 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="Delete" type="submit" '+\ 'style="background-color: transparent; float:left; border:0; color: #286571;'+\ 'display: inline; margin: 0; padding: 0;" class="' + clase + '"/>'+\ '</form></div><br />' value += '</div>' return value