def _my_update_params(self, d, nullable=False): id_proyecto = UrlParser.parse_id(request.url, "proyectos") if not id_proyecto: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase") if id_proyecto: proy = Proyecto.por_id(id_proyecto) options = [] id_fase = UrlParser.parse_id(request.url, "fases") if id_fase: fase = Fase.por_id(id_fase) proy = Proyecto.por_id(fase.id_proyecto) if self.accion == "edit": options.append((fase.posicion, str(fase.posicion))) if (proy.estado != u"Iniciado"): pos = range(1, proy.numero_fases + 1) pos.pop(fase.posicion - 1) options.extend(pos) elif self.accion == "new": if (not id_proyecto): return d np = proy.numero_fases + 1 options.append((np, str(np))) options.extend(range(1, np)) d['options'] = options return d
def post(self, *args, **kw): if "sprox_id" in kw: del kw["sprox_id"] proy = Proyecto(**kw) DBSession.add(proy) DBSession.flush() proy.codigo = Proyecto.generar_codigo(proy) #Creamos el rol miembro y lider de proyecto para este proyecto. plant_l = Rol.obtener_rol_plantilla(nombre_rol=u"Lider de Proyecto") rol_l = Rol.nuevo_rol_desde_plantilla(plantilla=plant_l, id=proy.id_proyecto) flash("Se ha creado un nuevo proyecto") redirect("/proyectos/")
def calcular_impacto(self, *args, **kw): """Calcula el impacto""" id = args[0] id_item = int(id) item = Item.por_id(id_item) page = "Calculo de impacto de item: %s" % item.codigo atras = "../%s" % id #if UrlParser.parse_nombre(request.url, "fases"): # atras = "../%s/edit" % id item = Item.por_id(id_item) sumatoria, grafo = item.calcular_impacto() id_proyecto = UrlParser.parse_id(request.url, "proyectos_desarrollo") #fase = Fase.por_id(item.id_fase) proy = Proyecto.por_id(id_proyecto) impacto = (float(sumatoria)/float(proy.complejidad_total)) * 100 return dict(atras=atras, impacto=str(impacto), page=page, ct=str(proy.complejidad_total), suma=str(sumatoria), grafo=grafo )
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_desarrollo") proy = Proyecto.por_id(id_proyecto) titulo = self.title % proy.nombre atras = "../../../" buscar_table_filler = FaseDesarrolloTableFiller(DBSession) buscar_table_filler.filtros = kw fases = buscar_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='../', puede_crear=False, comboboxes=self.comboboxes, atras=atras )
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 post_delete(self, id): """Elimina una fase de la bd si el proyecto no está iniciado""" fase = Fase.por_id(id) proy = Proyecto.por_id(fase.id_proyecto) proy.eliminar_fase(id) flash("Fase eliminada") redirect("../")
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_desasignar = PoseePermiso("asignar-desasignar rol", id_proyecto=id_proyecto).is_met(request.environ) titulo = "Roles de: %s" % usuario.nombre_usuario tmpl_context.widget = self.table buscar_table_filler = MiembrosProyectoRolesTableFiller(DBSession) buscar_table_filler.filtros = kw usuarios = buscar_table_filler.get_value(usuario=usuario, id_proyecto=id_proyecto, **kw) atras = "/proyectos/%d/miembros/" % id_proyecto 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_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 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 = "../" proy = Proyecto.por_id(id_proyecto) puede_crear = False titulo = self.title % proy.nombre tipo_items = self.table_filler.get_value(id_proyecto=id_proyecto, **kw) tmpl_context.widget = self.table url_action = self.action return dict(lista_elementos=tipo_items, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, url_action=url_action, puede_crear=puede_crear, 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_proyecto = UrlParser.parse_id(request.url, "proyectos") proy = Proyecto.por_id(id_proyecto) titulo = "Lista de Usuarios" puede_incorporar = 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): nomiembros = self.table_filler.get_value(id_proyecto=id_proyecto,**kw) else: nomiembros = [] tmpl_context.widget = self.table atras = "/proyectos/%d/" % id_proyecto 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 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_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 calcular_impacto(self, *args, **kw): """Calcula el impacto""" id = args[0] id_item = int(id) item = Item.por_id(id_item) page = "Calculo de impacto de item: %s" % item.codigo atras = "../%s" % id #if UrlParser.parse_nombre(request.url, "fases"): # atras = "../%s/edit" % id item = Item.por_id(id_item) sumatoria, grafo = item.calcular_impacto() id_proyecto = UrlParser.parse_id(request.url, "proyectos_desarrollo") #fase = Fase.por_id(item.id_fase) proy = Proyecto.por_id(id_proyecto) impacto = (float(sumatoria) / float(proy.complejidad_total)) * 100 return dict(atras=atras, impacto=str(impacto), page=page, ct=str(proy.complejidad_total), suma=str(sumatoria), grafo=grafo)
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 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): """ Controlador que recibe los parámetros de búsqueda para devolver el resultado esperado. """ id_proyecto = UrlParser.parse_id(request.url, "proyectos_gestconf") proy = Proyecto.por_id(id_proyecto) titulo = self.title % proy.nombre atras = "../" buscar_table_filler = FasesGestConfTableFiller(DBSession) buscar_table_filler.filtros = kw fases = buscar_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='../', puede_crear=False, 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_gestconf") proy = Proyecto.por_id(id_proyecto) titulo = self.title % proy.nombre atras = "../" 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='./', puede_crear=False, comboboxes=self.comboboxes, atras=atras )
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 _to_python(self, value, state): nombres = Proyecto.por_nombre(value) id_proyecto = UrlParser.parse_id(request.url, "proyectos") print id_proyecto if nombres != None and id_proyecto != nombres.id_proyecto: raise Invalid('El nombre de proyecto ya existe en sistema', value, state) return value
def put(self, *args, **kw): """Registra los cambios en la edición de un proyecto. """ if "sprox_id" in kw: del kw["sprox_id"] id_proyecto = UrlParser.parse_id(request.url, "proyectos") proy = Proyecto.por_id(id_proyecto) proy.nombre = unicode(kw["nombre"]) proy.descripcion = unicode(kw["descripcion"]) redirect("/proyectos/")
def post_delete(self, id_proyecto): proy = Proyecto.por_id(int(id_proyecto)) p_items = DBSession.query(PropiedadItem).filter(and_(PropiedadItem.id_item_actual ==\ Item.id_item, Item.id_fase == \ Fase.id_fase, Fase.id_proyecto == id_proyecto)).all() for pi in p_items: DBSession.delete(pi) DBSession.delete(proy) flash("Proyecto Eliminado") redirect("/proyectos/")
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 iniciar(self, id_proyecto): """Inicia un proyecto""" if (not PoseePermiso('iniciar proyecto', id_proyecto=id_proyecto).is_met(request.environ)): flash("No puedes iniciar el proyecto", "warning") proy = Proyecto.por_id(id_proyecto) if not proy.obtener_lider(): msg = "No puedes iniciar el proyecto. Debes primero asignarle " msg += "un lider" flash(msg, "warning") redirect("/proyectos/") proy.iniciar_proyecto() flash("El proyecto se ha iniciado correctamente") redirect("/proyectos/")
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 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 _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 _do_get_provider_count_and_objs(self, id_proyecto=None, **kw): """ Retorna la Lista de los proyectos en los cuales el usuario es miembro """ if id_proyecto: proy = Proyecto.por_id(id_proyecto) return 1, [proy] count, lista = super(ProyectosFaseTableFiller, self).\ _do_get_provider_count_and_objs(**kw) filtrados = [] for p in lista: if AlgunPermiso(tipo="Fase", id_proyecto=p.id_proyecto).is_met(request.environ): filtrados.append(p) return len(filtrados), filtrados
def post_buscar(self, *args, **kw): id_proyecto = UrlParser.parse_id(request.url, "proyectos") proy = Proyecto.por_id(id_proyecto) titulo = "Lista de Usuarios" puede_incorporar = PoseePermiso("asignar-desasignar rol", id_proyecto=id_proyecto).is_met(request.environ) tmpl_context.widget = no_miembros_proyecto_table buscar_table_filler = NoMiembrosProyectoTableFiller(DBSession) buscar_table_filler.filtros = kw usuarios = buscar_table_filler.get_value(id_proyecto=id_proyecto,**kw) atras = "/proyectos/%d/" % id_proyecto return dict(lista_elementos=usuarios, page=titulo, titulo=titulo, columnas=self.columnas, opciones=self.opciones, url_action="../", atras=atras, puede_incorporar=puede_incorporar)
def _do_get_provider_count_and_objs(self, id_proyecto=None, **kw): """ Retorna la Lista de los proyectos en los cuales el usuario es miembro """ if id_proyecto: proy = Proyecto.por_id(id_proyecto) return 1, [proy] count, lista = super(ProyectosFaseTipoTableFiller, self).\ _do_get_provider_count_and_objs(**kw) filtrados = [] for p in lista: if AlgunPermiso(tipo="Tipo", id_proyecto=p.id_proyecto).is_met(request.environ): filtrados.append(p) return len(filtrados), filtrados
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") 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 tipo_items = self.table_filler.get_value(id_fase=id_fase, **kw) tmpl_context.widget = self.table url_action = self.action if UrlParser.parse_nombre(request.url, "post_buscar"): url_action = "../" return dict(lista_elementos=tipo_items, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, url_action=url_action, puede_crear=puede_crear, atras=atras )
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 post(self, *args, **kw): if "sprox_id" in kw: del kw["sprox_id"] id_proyecto = UrlParser.parse_id(request.url, "proyectos") atras = "./" if not id_proyecto: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase") atras = "../../" proy = Proyecto.por_id(id_proyecto) fase = proy.crear_fase(**kw) #Creamos el rol miembro de fase #plant_m = Rol.obtener_rol_plantilla(nombre_rol=u"Miembro de Fase") #rol_m = Rol.nuevo_rol_desde_plantilla(plantilla=plant_m, # id=fase.id_fase) flash("Fase Creada") redirect(atras)
def post_buscar(self, *args, **kw): id_proyecto = UrlParser.parse_id(request.url, "proyectos") proy = Proyecto.por_id(id_proyecto) titulo = "Lista de Usuarios" puede_incorporar = PoseePermiso("asignar-desasignar rol", id_proyecto=id_proyecto).is_met( request.environ) tmpl_context.widget = no_miembros_proyecto_table buscar_table_filler = NoMiembrosProyectoTableFiller(DBSession) buscar_table_filler.filtros = kw usuarios = buscar_table_filler.get_value(id_proyecto=id_proyecto, **kw) atras = "/proyectos/%d/" % id_proyecto return dict(lista_elementos=usuarios, page=titulo, titulo=titulo, columnas=self.columnas, opciones=self.opciones, url_action="../", atras=atras, puede_incorporar=puede_incorporar)
def post_buscar(self, *args, **kw): id_proyecto = UrlParser.parse_id(request.url, "proyectos") atras = "../" proy = Proyecto.por_id(id_proyecto) puede_crear = False titulo = self.title % proy.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_proyecto=id_proyecto) 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 post_buscar(self, *args, **kw): id_proyecto = UrlParser.parse_id(request.url, "proyectos") atras = "../" proy = Proyecto.por_id(id_proyecto) puede_crear = False titulo = self.title % proy.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_proyecto=id_proyecto) 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") id_usuario = UrlParser.parse_id(request.url, "miembros") usuario = Usuario.por_id(id_usuario) proy = Proyecto.por_id(id_proyecto) titulo = u"Roles Desasignados para: %s" % usuario.nombre_usuario puede_asignar = PoseePermiso("asignar-desasignar rol", id_proyecto=id_proyecto).is_met( request.environ) if request.response_type == 'application/json': return self.table_filler.get_value(usuario=usuario, asignados=False, id_proyecto=id_proyecto, **kw) if not getattr(self.table.__class__, '__retrieves_own_value__', False): roles = self.table_filler.get_value(usuario=usuario, asignados=False, id_proyecto=id_proyecto, **kw) else: roles = [] tmpl_context.widget = self.table 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=self.action, atras=atras, puede_asignar=puede_asignar)
def get_one(self, *args, **kw): id_proyecto = UrlParser.parse_id(request.url, "proyectos") action = "./" atras = '../' if not id_proyecto: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase") atras = "/proyectos_fase/" id_fase = int(args[0]) 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 if pylons.request.response_type == 'application/json': return dict( lista=self.table_filler.get_value(id_fase=id_fase, **kw)) if not getattr(self.table.__class__, ' ', False): fase = self.table_filler.get_value(id_fase=id_fase, **kw) else: fase = [] tmpl_context.widget = self.table titulo = self.title % proy.nombre return dict(lista_elementos=fase, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, url_action=action, puede_crear=puede_crear, comboboxes=self.comboboxes, atras=atras)
def get_one(self, *args, **kw): id_proyecto = UrlParser.parse_id(request.url, "proyectos") action = "./" atras = '../' if not id_proyecto: id_proyecto = UrlParser.parse_id(request.url, "proyectos_fase") atras = "/proyectos_fase/" id_fase = int(args[0]) 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 if pylons.request.response_type == 'application/json': return dict(lista=self.table_filler.get_value(id_fase=id_fase, **kw)) if not getattr(self.table.__class__, ' ', False): fase = self.table_filler.get_value(id_fase=id_fase, **kw) else: fase = [] tmpl_context.widget = self.table titulo = self.title % proy.nombre return dict(lista_elementos=fase, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, url_action=action, puede_crear=puede_crear, comboboxes=self.comboboxes, atras=atras )
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 _to_python(self, value, state): nombres = Proyecto.por_nombre(value) if nombres != None: raise Invalid('El nombre de proyecto ya existe en sistema', value, state) return value