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 __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 post_buscar(self, *args, **kw): """ Controlador que recibe los parámetros de búsqueda para devolver el resultado esperado. """ id_item = UrlParser.parse_id(request.url, "items") id_version = UrlParser.parse_id(request.url, "versiones") titulo = self.title archivos = {} puede_crear = False buscar_table_filler = AdjuntoTableFiller(DBSession) buscar_table_filler.filtros = kw atras="../../../" if id_version: #desde controller de versiones p_item = PropiedadItem.por_id(id_version) titulo = u"Archivos Adjuntos de Versión: %d" % p_item.version archivos = buscar_table_filler. \ get_value(id_version=id_version) elif id_item: #desde controller de items. item = Item.por_id(id_item) puede_crear = PoseePermiso("modificar item", id_tipo_item=item.id_tipo_item).is_met(request.environ) if puede_crear: p_item = PropiedadItem.por_id(item.id_propiedad_item) if p_item.estado in [u"Bloqueado", u"Revisión-Bloq", u"Eliminado"]: puede_crear = False titulo = u"Archivos Adjuntos de Ítem: %s" % item.codigo atras="../../" archivos = buscar_table_filler. \ get_value(id_version=item.id_propiedad_item) tmpl_context.widget = self.table return dict(lista_elementos=archivos, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, url_action='../', puede_crear=puede_crear, opciones=self.opciones, atras=atras )
def estado(self, obj, **kw): id_item = UrlParser.parse_id(request.url, "items") id_version = UrlParser.parse_id(request.url, "versiones") if not id_version: item = Item.por_id(id_item) rti = DBSession.query(RelacionPorItem).\ filter(and_(RelacionPorItem.id_propiedad_item\ == item.id_propiedad_item,\ RelacionPorItem.id_relacion == obj.id_relacion))\ .first() else: p_item = PropiedadItem.por_id(id_version) rti = DBSession.query(RelacionPorItem).\ filter(and_(RelacionPorItem.id_propiedad_item\ == p_item.id_propiedad_item,\ RelacionPorItem.id_relacion == obj.id_relacion))\ .first() color = u"inherit;" estado = u"No" if(rti.revisar): color = u"#ff0000;" estado = u'Sí' value = '<div style="color:' + color + '">' + estado + '</div>' return value
def _do_get_provider_count_and_objs(self, id_version=None, **kw): """ Recupera las relaciones de la versión del ítem indicado. """ count, lista = super(RelacionTableFiller, self).\ _do_get_provider_count_and_objs(**kw) tipo = "a-s" if (UrlParser.parse_nombre(request.url, "relaciones_ph")): tipo = "p-h" filtrados = [] if id_version: p_item = PropiedadItem.por_id(id_version) item = Item.por_id(p_item.id_item_actual) #ver este permiso ap = AlgunPermiso(tipo='Fase', id_fase=item.id_fase).is_met(request.environ) if ap: for rpi in p_item.relaciones: if (rpi.relacion in lista) and \ rpi.relacion.tipo == Relacion.tipo_relaciones[tipo]: filtrados.append(rpi.relacion) return len(filtrados), filtrados
def estado(self, obj, **kw): id_item = UrlParser.parse_id(request.url, "items") id_version = UrlParser.parse_id(request.url, "versiones") if not id_version: item = Item.por_id(id_item) rti = DBSession.query(RelacionPorItem).\ filter(and_(RelacionPorItem.id_propiedad_item\ == item.id_propiedad_item,\ RelacionPorItem.id_relacion == obj.id_relacion))\ .first() else: p_item = PropiedadItem.por_id(id_version) rti = DBSession.query(RelacionPorItem).\ filter(and_(RelacionPorItem.id_propiedad_item\ == p_item.id_propiedad_item,\ RelacionPorItem.id_relacion == obj.id_relacion))\ .first() color = u"inherit;" estado = u"No" if (rti.revisar): color = u"#ff0000;" estado = u'Sí' value = '<div style="color:' + color + '">' + estado + '</div>' return value
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_item = UrlParser.parse_id(request.url, "items") id_version = UrlParser.parse_id(request.url, "versiones") titulo = self.title atributos = {} atras = "../../" if id_version: #desde controller de versiones p_item = PropiedadItem.por_id(id_version) titulo = u"Atributos de Version: %d" % p_item.version atributos = self.table_filler. \ get_value(id_version=id_version, **kw) elif id_item: #desde controller de items. item = Item.por_id(id_item) titulo = u"Atributos de Ítem: %s" % item.codigo atras = "../" atributos = self.table_filler. \ get_value(id_version=item.id_propiedad_item, **kw) tmpl_context.widget = self.table return dict( lista_elementos=atributos, page=titulo, titulo=titulo, modelo=self.model.__name__, # columnas=self.columnas, # opciones=self.opciones, url_action=self.tmp_action, atras=atras)
def __actions__(self, obj): """Links de acciones para un registro dado""" value = '<div>' clase = 'actions_fase' item = Item.por_id(obj.id_item_actual) p_item = PropiedadItem.por_id(item.id_propiedad_item) id = obj.id_propiedad_item controller = "./" + str(obj.id_propiedad_item) controller2 = "./" if (UrlParser.parse_nombre(request.url, "post_buscar")):#desde post_buscar controller = "../" + str(obj.id_propiedad_item) controller2 = "../" value += '<div>' + \ '<a href="' + controller + '/edit" ' + \ 'class="' + clase + '">Detalles</a>' + \ '</div><br />' value += '<div>' + \ '<a href="' + controller + '/atributos" ' + \ 'class="' + clase + '">Atributos</a>' + \ '</div><br />' if PoseePermiso('modificar item', id_tipo_item=item.id_tipo_item).is_met(request.environ): if p_item.estado not in [u"Bloqueado", u"Eliminado", u"Revisión-Bloq"] and\ id != p_item.id_propiedad_item: value += '<div>' + \ '<a href="' + controller2 + 'revertir/'+ str(id) + '" ' + \ 'class="' + clase + '">Volver a versión</a>' + \ '</div><br />' value += '<div>' + \ '<a href="' + controller +'/adjuntos" ' + \ 'class="' + clase + '">Adjuntos</a>' + \ '</div><br />' value += '<div>' + \ '<a href="' + controller +'/relaciones_ph" ' + \ 'class="' + clase + '">Relaciones P-H</a>' + \ '</div><br />' value += '<div>' + \ '<a href="' + controller +'/relaciones_as" ' + \ 'class="' + clase + '">Relaciones A-S</a>' + \ '</div><br />' value += '<div>' + \ '<a href="' + controller +'/historial" ' + \ 'class="' + clase + '">Historial</a>' + \ '</div><br />' value += '</div>' return value
def post_delete(self, *args, **kw): #se lo llama desde la pagina de edit, al marcar las relaciones #y luego seleccionar Eliminar. Ajax. id_item = UrlParser.parse_id(request.url, "items") item = Item.por_id(id_item) p_item = PropiedadItem.por_id(item.id_propiedad_item) ids = [] id = None if kw: for k, pk in kw.items(): if not k.isalnum(): continue ids.append(int(pk)) else: try: id = int(args[0]) if (id > 0): ids.append(id) except: id = 0 flash(u"Argumento invalido", "warning") p_item.eliminar_relaciones(ids) usuario = Usuario.by_user_name(request.identity['repoze.who.userid']) item.guardar_historial(u"eliminar-relaciones", usuario) if (id): redirect("../") else: transaction.commit() #return "/items/%d/edit" % id_item return './'
def __actions__(self, obj): """Links de acciones para un registro dado""" value = '<div>' clase = 'actions_fase' id_item = UrlParser.parse_id(request.url, "items") item = Item.por_id(id_item) p_item = PropiedadItem.por_id(item.id_propiedad_item) id = str(obj.id_archivo_externo) #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="./descargar/' + id + '" ' + \ 'class="' + clase + '">Descargar</a>' + \ '</div><br />' if not UrlParser.parse_nombre(request.url, "versiones") and \ p_item.estado not in [u"Eliminado", u"Bloqueado", u"Revisión-Bloq"]: #No se puede eliminar desde el controlador de versiones. 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;' + 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. """ titulo = self.title id_p_item = UrlParser.parse_id(request.url, "versiones") if id_p_item: p_item = PropiedadItem.por_id(id_p_item) titulo = u"Cambios en versión: %d" % p_item.version tmpl_context.widget = self.table buscar_table_filler = HistorialItemTableFiller(DBSession) buscar_table_filler.filtros = kw items = buscar_table_filler.get_value(id_usuario=id_usuario, **kw) return dict(lista_elementos=items, page=titulo, titulo=self.title, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, url_action=self.tmp_action, atras="../../../" )
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_item = UrlParser.parse_id(request.url, "items") id_version = UrlParser.parse_id(request.url, "versiones") titulo = self.title atributos = {} atras="../../" if id_version: #desde controller de versiones p_item = PropiedadItem.por_id(id_version) titulo = u"Atributos de Version: %d" % p_item.version atributos = self.table_filler. \ get_value(id_version=id_version, **kw) elif id_item: #desde controller de items. item = Item.por_id(id_item) titulo = u"Atributos de Ítem: %s" % item.codigo atras="../" atributos = self.table_filler. \ get_value(id_version=item.id_propiedad_item, **kw) tmpl_context.widget = self.table return dict(lista_elementos=atributos, page=titulo, titulo=titulo, modelo=self.model.__name__, # columnas=self.columnas, # opciones=self.opciones, url_action=self.tmp_action, atras=atras )
def post_buscar(self, *args, **kw): """ Controlador que recibe los parámetros de búsqueda para devolver el resultado esperado. """ titulo = self.title id_p_item = UrlParser.parse_id(request.url, "versiones") if id_p_item: p_item = PropiedadItem.por_id(id_p_item) titulo = u"Cambios en versión: %d" % p_item.version tmpl_context.widget = self.table buscar_table_filler = HistorialItemTableFiller(DBSession) buscar_table_filler.filtros = kw items = buscar_table_filler.get_value(id_usuario=id_usuario, **kw) return dict(lista_elementos=items, page=titulo, titulo=self.title, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, url_action=self.tmp_action, atras="../../../")
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ puede_crear = False id_item = UrlParser.parse_id(request.url, "items") id_version = UrlParser.parse_id(request.url, "versiones") titulo = self.title archivos = {} atras="../../" if id_version: #desde controller de versiones p_item = PropiedadItem.por_id(id_version) titulo = u"Archivos Adjuntos de Versión: %d" % p_item.version archivos = self.table_filler. \ get_value(id_version=id_version, **kw) elif id_item: #desde controller de items item = Item.por_id(id_item) puede_crear = PoseePermiso("modificar item", id_tipo_item=item.id_tipo_item).is_met(request.environ) if puede_crear: p_item = PropiedadItem.por_id(item.id_propiedad_item) if p_item.estado in [u"Bloqueado", u"Revisión-Bloq", u"Eliminado"]: puede_crear = False titulo = u"Archivos Adjuntos de Ítem: %s" % item.codigo atras="../" archivos = self.table_filler. \ get_value(id_version=item.id_propiedad_item, **kw) tmpl_context.widget = self.table return dict(lista_elementos=archivos, page=titulo, titulo=titulo, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, url_action=self.tmp_action, puede_crear=puede_crear, atras=atras )
def item_relacionado_estado(self, obj, **kw): id_item = UrlParser.parse_id(request.url, "items") id_version = UrlParser.parse_id(request.url, "versiones") if not id_item: id_item = id_version otro = obj.obtener_otro_item(id_item) p_otro = PropiedadItem.por_id(otro.id_propiedad_item) return p_otro.estado
def check(self, obj, **kw): bloq = ' ' 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 in [u"Bloqueado", u"Revisión-Bloq", u"Eliminado"] or\ obj.id_anterior == id_item and p_otro.estado != u"Eliminado"): bloq = ' disabled="" ' #se permite eliminar desde el item anterior las relaciones colgadas checkbox = '<input type="checkbox" class="checkbox_tabla"' + bloq + 'id="' + str( obj.id_relacion) + '"/>' return checkbox
def check(self, obj, **kw): bloq = ' ' 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 in [u"Bloqueado", u"Revisión-Bloq", u"Eliminado"] or\ obj.id_anterior == id_item and p_otro.estado != u"Eliminado"): bloq = ' disabled="" ' #se permite eliminar desde el item anterior las relaciones colgadas checkbox = '<input type="checkbox" class="checkbox_tabla"' + bloq + 'id="' + str(obj.id_relacion) + '"/>' return checkbox
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_item = UrlParser.parse_id(request.url, "items") id_version = UrlParser.parse_id(request.url, "versiones") titulo = self.title relaciones = [] tabla = self.table puede_relacionar = False puede_nueva = False atras = "../../" if id_version: #desde controller de versiones p_item = PropiedadItem.por_id(id_version) titulo = u"Relaciones de Version: %d" % p_item.version relaciones = self.table_filler. \ get_value(id_version=id_version, **kw) elif id_item: #desde controller de items. item = Item.por_id(id_item) titulo = u"Relaciones de Ítem: %s" % item.codigo atras = "../" relaciones = relacion_item_table_filler. \ get_value(id_version=item.id_propiedad_item, **kw) tabla = relacion_item_table puede_relacionar = PoseePermiso('modificar item', \ id_tipo_item=item.id_tipo_item).is_met(request.environ) fase = Fase.por_id(item.id_fase) if (UrlParser.parse_nombre(request.url, "relaciones_as")): if (fase.posicion > 1): puede_nueva = True else: puede_nueva = True tmpl_context.widget = tabla return dict( lista_elementos=relaciones, page=titulo, titulo=titulo, modelo=self.model.__name__, #columnas=self.columnas, #opciones=self.opciones, #comboboxes=self.comboboxes, url_action=self.tmp_action, puede_relacionar=puede_relacionar, atras=atras, puede_nueva=puede_nueva)
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ id_item = UrlParser.parse_id(request.url, "items") id_version = UrlParser.parse_id(request.url, "versiones") titulo = self.title relaciones = [] tabla = self.table puede_relacionar = False puede_nueva = False atras = "../../" if id_version: #desde controller de versiones p_item = PropiedadItem.por_id(id_version) titulo = u"Relaciones de Version: %d" % p_item.version relaciones = self.table_filler. \ get_value(id_version=id_version, **kw) elif id_item: #desde controller de items. item = Item.por_id(id_item) titulo = u"Relaciones de Ítem: %s" % item.codigo atras = "../" relaciones = relacion_item_table_filler. \ get_value(id_version=item.id_propiedad_item, **kw) tabla = relacion_item_table puede_relacionar = PoseePermiso('modificar item', \ id_tipo_item=item.id_tipo_item).is_met(request.environ) fase = Fase.por_id(item.id_fase) if (UrlParser.parse_nombre(request.url, "relaciones_as")): if (fase.posicion > 1): puede_nueva = True else: puede_nueva = True tmpl_context.widget = tabla return dict(lista_elementos=relaciones, page=titulo, titulo=titulo, modelo=self.model.__name__, #columnas=self.columnas, #opciones=self.opciones, #comboboxes=self.comboboxes, url_action=self.tmp_action, puede_relacionar=puede_relacionar, atras=atras, puede_nueva=puede_nueva )
def relacionar_ph(self, *args, **kw): #recibe los elementos seleccionados en relacionar_item #relaciona, y retorna. Ajax id_item = UrlParser.parse_id(request.url, "items") item = Item.por_id(id_item) p_item = PropiedadItem.por_id(item.id_propiedad_item) ids = [] id = None if kw: for k, pk in kw.items(): if not k.isalnum(): continue ids.append(int(pk)) else: try: id = int(args[0]) if (id > 0): ids.append(id) except: id = 0 flash(u"Argumento inválido", "warning") retorno, creado = p_item.agregar_relaciones(ids, 'p-h') if (creado ): #si por lo menos se pudo crear una relacion se guarda en el #historial usuario = Usuario.by_user_name( request.identity['repoze.who.userid']) item.guardar_historial(u"relacionar-PH", usuario) mensaje = "" if (retorno == u"" and not creado): mensaje = u"No se crearon relaciones" elif (retorno != u""): mensaje = u"No se pudo crear la relación con %s" % retorno #no sé como pasar strings como parámetro, fea solución indice = session.get('indice_mensaje', 0) session['indice_mensaje'] = indice + 1 session[str(indice)] = mensaje if (id): redirect('../mensajes/%d' % indice) else: transaction.commit() #return "/items/%d/edit" % id_item return './mensajes/%d' % indice
def _do_get_provider_count_and_objs(self, id_version=None, **kw): """ Recupera los archivos adjuntos de la versión de ítem en cuestión. """ count, lista = super(AdjuntoTableFiller, self).\ _do_get_provider_count_and_objs(**kw) filtrados = [] if id_version: p_item = PropiedadItem.por_id(id_version) #p_item.archivos contiene una lista de objetos ArchivosPorItem for api in p_item.archivos: if api.archivo in lista: filtrados.append(api.archivo) return len(filtrados), filtrados
def _do_get_provider_count_and_objs(self, id_version=None, **kw): """ Recupera los atributos de la versión del ítem indicado. """ count, lista = super(AtributoItemTableFiller, self).\ _do_get_provider_count_and_objs(**kw) filtrados = [] if id_version: p_item = PropiedadItem.por_id(id_version) item = Item.por_id(p_item.id_item_actual) ap = AlgunPermiso(tipo='Fase', id_fase=item.id_fase).is_met(request.environ) if ap: for attr_por_item in p_item.atributos: if attr_por_item in lista: filtrados.append(attr_por_item) return len(filtrados), filtrados
def put(self, *args, **kw): """update""" if "sprox_id" in kw: del kw["sprox_id"] id_item = UrlParser.parse_id(request.url, "items") if UrlParser.parse_nombre(request.url, "versiones"): #No debe poder modificarse, solo visualizar. TODO redirect('../') if id_item: #desde controller de items. id = int(args[0]) #identificador del atributo item = Item.por_id(id_item) p_item = PropiedadItem.por_id(item.id_propiedad_item) valor = kw["valor"] user_name = request.credentials["repoze.what.userid"] user = Usuario.by_user_name(user_name) try: p_item.modificar_atributo(user, id, valor) except ModificarItemError, err: flash(unicode(err), 'warning')
def edit(self, *args, **kw): """Despliega una pagina para realizar modificaciones""" id_item = UrlParser.parse_id(request.url, "items") id_version = UrlParser.parse_id(request.url, "versiones") id = int(args[0]) #identificador del atributo titulo = self.title if id_version: #desde controller de versiones p_item = PropiedadItem.por_id(id_version) titulo = u"Atributo de Versión: %d" % p_item.version elif id_item: #desde controller de items. item = Item.por_id(id_item) titulo = u"Atributo de Ítem: %s" % item.codigo value = self.edit_filler.get_value( values={'id_atributos_por_item': id}) tmpl_context.widget = self.edit_form return dict(value=value, page=titulo, atras="../")
def relacionar_as(self, *args, **kw): #recibe los elementos seleccionados en relacionar_item #relaciona, y retorna. Ajax id_item = UrlParser.parse_id(request.url, "items") item = Item.por_id(id_item) p_item = PropiedadItem.por_id(item.id_propiedad_item) ids = [] id = None if kw: for k, pk in kw.items(): if not k.isalnum(): continue ids.append(int(pk)) else: try: id = int(args[0]) if (id > 0): ids.append(id) except: id = 0 flash(u"Argumento inválido", "warning") p_item.agregar_relaciones(ids, 'a-s') usuario = Usuario.by_user_name(request.identity['repoze.who.userid']) item.guardar_historial(u"relacionar-AS", usuario) mensaje = "" indice = session.get('indice_mensaje', 0) session['indice_mensaje'] = indice + 1 session[str(indice)] = mensaje if (id): redirect('../mensajes/%d' % indice) else: transaction.commit() #return "/items/%d/edit" % id_item return './mensajes/%d' % indice
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ titulo = self.title id_p_item = UrlParser.parse_id(request.url, "versiones") if id_p_item: p_item = PropiedadItem.por_id(id_p_item) titulo = u"Cambios en versión: %d" % p_item.version tmpl_context.widget = self.table items = self.table_filler.get_value(id_p_item=id_p_item, **kw) return dict(lista_elementos=items, page=titulo, titulo=self.title, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, url_action=self.tmp_action, atras="../../")
def get_all(self, *args, **kw): """ Retorna todos los registros Retorna una página HTML si no se especifica JSON """ titulo = self.title id_p_item = UrlParser.parse_id(request.url, "versiones") if id_p_item: p_item = PropiedadItem.por_id(id_p_item) titulo = u"Cambios en versión: %d" % p_item.version tmpl_context.widget = self.table items = self.table_filler.get_value(id_p_item=id_p_item, **kw) return dict(lista_elementos=items, page=titulo, titulo=self.title, modelo=self.model.__name__, columnas=self.columnas, opciones=self.opciones, url_action=self.tmp_action, atras="../../" )
def edit(self, *args, **kw): """Despliega una pagina para realizar modificaciones""" id_item = UrlParser.parse_id(request.url, "items") id_version = UrlParser.parse_id(request.url, "versiones") id = int(args[0]) #identificador del atributo titulo = self.title if id_version: #desde controller de versiones p_item = PropiedadItem.por_id(id_version) titulo = u"Atributo de Versión: %d" % p_item.version elif id_item: #desde controller de items. item = Item.por_id(id_item) titulo = u"Atributo de Ítem: %s" % item.codigo value = self.edit_filler.get_value(values={'id_atributos_por_item': id}) tmpl_context.widget = self.edit_form return dict(value=value, page=titulo, atras="../" )
def eliminar_relaciones(self, *args, **kw): #se lo llama desde la pagina de edit, al marcar las relaciones #y luego seleccionar Eliminar. Ajax. id_item = UrlParser.parse_id(request.url, "items") item = Item.por_id(id_item) p_item = PropiedadItem.por_id(item.id_propiedad_item) ids = [] if kw: for k, pk in kw.items(): if not k.isalnum(): continue ids.append(int(pk)) p_item.eliminar_relaciones(ids) usuario = Usuario.by_user_name(request.identity['repoze.who.userid']) item.guardar_historial(u"eliminar-relaciones", usuario) transaction.commit() #return "/items/%d/edit" % id_item return './'
def observaciones(self, obj, **kw): p_item = PropiedadItem.por_id(obj.id_propiedad_item) return p_item.observaciones
def __actions__(self, obj): """Links de acciones para un registro dado""" value = '<div>' clase = 'actions_fase' item = Item.por_id(obj.id_item_actual) p_item = PropiedadItem.por_id(item.id_propiedad_item) id = obj.id_propiedad_item controller = "./" + str(obj.id_propiedad_item) controller2 = "./" if (UrlParser.parse_nombre(request.url, "post_buscar")): #desde post_buscar controller = "../" + str(obj.id_propiedad_item) controller2 = "../" value += '<div>' + \ '<a href="' + controller + '/edit" ' + \ 'class="' + clase + '">Detalles</a>' + \ '</div><br />' value += '<div>' + \ '<a href="' + controller + '/atributos" ' + \ 'class="' + clase + '">Atributos</a>' + \ '</div><br />' if PoseePermiso('modificar item', id_tipo_item=item.id_tipo_item).is_met( request.environ): if p_item.estado not in [u"Bloqueado", u"Eliminado", u"Revisión-Bloq"] and\ id != p_item.id_propiedad_item: value += '<div>' + \ '<a href="' + controller2 + 'revertir/'+ str(id) + '" ' + \ 'class="' + clase + '">Volver a versión</a>' + \ '</div><br />' value += '<div>' + \ '<a href="' + controller +'/adjuntos" ' + \ 'class="' + clase + '">Adjuntos</a>' + \ '</div><br />' value += '<div>' + \ '<a href="' + controller +'/relaciones_ph" ' + \ 'class="' + clase + '">Relaciones P-H</a>' + \ '</div><br />' value += '<div>' + \ '<a href="' + controller +'/relaciones_as" ' + \ 'class="' + clase + '">Relaciones A-S</a>' + \ '</div><br />' value += '<div>' + \ '<a href="' + controller +'/historial" ' + \ 'class="' + clase + '">Historial</a>' + \ '</div><br />' value += '</div>' return value
def version_actual(self, obj, **kw): p_item = PropiedadItem.por_id(obj.id_propiedad_item) return p_item.version
def prioridad(self, obj, **kw): p_item = PropiedadItem.por_id(obj.id_propiedad_item) return p_item.prioridad
def complejidad(self, obj, **kw): p_item = PropiedadItem.por_id(obj.id_propiedad_item) return p_item.complejidad
def __actions__(self, obj): """Links de acciones para un registro dado""" value = '<div>' clase = 'actions_items' controller = "./" + str(obj.id_item) controller2 = "./" eliminar_cont = "./" + str(obj.id_item) if (UrlParser.parse_id(request.url, "items") or\ UrlParser.parse_nombre(request.url, "post_buscar")):#desde get_one o post_buscar controller = "../" + str(obj.id_item) controller2 = "../" eliminar_cont = "../" + str(obj.id_item) p_item = PropiedadItem.por_id(obj.id_propiedad_item) #version actual. if PoseePermiso('modificar item', id_tipo_item=obj.id_tipo_item).is_met(request.environ): if p_item.estado not in [u"Bloqueado", u"Revisión-Bloq", u"Eliminado"]: value += '<div>' + \ '<a href="'+ controller +'/edit" ' + \ 'class="' + clase + '">Modificar</a>' + \ '</div><br />' #atributos es el controlador de atributos (por el tipo) del item. value += '<div>' + \ '<a href="'+ controller +'/atributos" ' + \ 'class="' + clase + '">Atributos</a>' + \ '</div><br />' #relaciones a-s del item. value += '<div>' + \ '<a href="'+ controller +'/relaciones_as" ' + \ 'class="' + clase + '">Relaciones A-S</a>' + \ '</div><br />' #relaciones p-h del item. value += '<div>' + \ '<a href="'+ controller +'/relaciones_ph" ' + \ 'class="' + clase + '">Relaciones P-H</a>' + \ '</div><br />' #adjuntos es el controlador de archivos adjuntos al item. value += '<div>' + \ '<a href="'+ controller +'/adjuntos" ' + \ 'class="' + clase + '">Adjuntos</a>' + \ '</div><br />' #versiones es el controlador de versiones del item. value += '<div>' + \ '<a href="'+ controller +'/versiones" ' + \ 'class="' + clase + '">Versiones</a>' + \ '</div><br />' eliminar = False revivir = False aprobar = False desaprobar = False st = p_item.estado if st == u"Desaprobado" or st == u"Revisión-Desbloq": eliminar = True aprobar = True elif st == u"Aprobado": eliminar = True desaprobar = True elif st == u"Eliminado": revivir = True #if PoseePermiso('eliminar-revivir item', # id_fase=obj.id_fase).is_met(request.environ): if PoseePermiso('eliminar-revivir item', id_tipo_item=obj.id_tipo_item).is_met(request.environ): if revivir: value += '<div>' + \ '<a href="' + controller2 + '/revivir/' +str(obj.id_item) +'" ' + \ 'class="' + clase + '">Revivir</a>' + \ '</div><br />' #if PoseePermiso('eliminar-revivir item', # id_fase=obj.id_fase).is_met(request.environ): if PoseePermiso('eliminar-revivir item', id_tipo_item=obj.id_tipo_item).is_met(request.environ): if eliminar: value += '<div><form method="POST" action="' + eliminar_cont + '" 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;' + clase + '"/>'+\ '</form></div><br />' #if PoseePermiso('aprobar-desaprobar item', # id_fase=obj.id_fase).is_met(request.environ): if PoseePermiso('aprobar-desaprobar item', id_tipo_item=obj.id_tipo_item).is_met(request.environ): if aprobar: value += '<div>' + \ '<a href="' + controller2 + 'aprobar/' +str(obj.id_item) +'" ' + \ 'style="margin-left: -46px;" class="' + clase + '">Aprobar</a>' + \ '</div><br />' elif desaprobar: value += '<div>' + \ '<a href="' + controller2 + 'desaprobar/' +str(obj.id_item) +'" ' + \ 'class="' + clase + '">Desaprobar</a>' + \ '</div><br />' #if PoseePermiso('calcular impacto', # id_fase=obj.id_fase).is_met(request.environ): if PoseePermiso('calcular impacto', id_tipo_item=obj.id_tipo_item).is_met(request.environ): value += '<div>' + \ '<a href="' + controller2 + 'calcular_impacto/' + str(obj.id_item) +'" ' + \ 'class="' + clase + '">Calcular Impacto</a>' + \ '</div><br />' value += '</div>' return value
def estado(self, obj, **kw): p_item = PropiedadItem.por_id(obj.id_propiedad_item) return p_item.estado
def descripcion(self, obj, **kw): p_item = PropiedadItem.por_id(obj.id_propiedad_item) return p_item.descripcion
def __actions__(self, obj): """Links de acciones para un registro dado""" value = '<div>' clase = 'actions_items' controller = "./" + str(obj.id_item) controller2 = "./" eliminar_cont = "./" + str(obj.id_item) if (UrlParser.parse_id(request.url, "items") or\ UrlParser.parse_nombre(request.url, "post_buscar")):#desde get_one o post_buscar controller = "../" + str(obj.id_item) controller2 = "../" eliminar_cont = "../" + str(obj.id_item) p_item = PropiedadItem.por_id(obj.id_propiedad_item) #version actual. if PoseePermiso('modificar item', id_tipo_item=obj.id_tipo_item).is_met(request.environ): if p_item.estado not in [ u"Bloqueado", u"Revisión-Bloq", u"Eliminado" ]: value += '<div>' + \ '<a href="'+ controller +'/edit" ' + \ 'class="' + clase + '">Modificar</a>' + \ '</div><br />' #atributos es el controlador de atributos (por el tipo) del item. value += '<div>' + \ '<a href="'+ controller +'/atributos" ' + \ 'class="' + clase + '">Atributos</a>' + \ '</div><br />' #relaciones a-s del item. value += '<div>' + \ '<a href="'+ controller +'/relaciones_as" ' + \ 'class="' + clase + '">Relaciones A-S</a>' + \ '</div><br />' #relaciones p-h del item. value += '<div>' + \ '<a href="'+ controller +'/relaciones_ph" ' + \ 'class="' + clase + '">Relaciones P-H</a>' + \ '</div><br />' #adjuntos es el controlador de archivos adjuntos al item. value += '<div>' + \ '<a href="'+ controller +'/adjuntos" ' + \ 'class="' + clase + '">Adjuntos</a>' + \ '</div><br />' #versiones es el controlador de versiones del item. value += '<div>' + \ '<a href="'+ controller +'/versiones" ' + \ 'class="' + clase + '">Versiones</a>' + \ '</div><br />' eliminar = False revivir = False aprobar = False desaprobar = False st = p_item.estado if st == u"Desaprobado" or st == u"Revisión-Desbloq": eliminar = True aprobar = True elif st == u"Aprobado": eliminar = True desaprobar = True elif st == u"Eliminado": revivir = True #if PoseePermiso('eliminar-revivir item', # id_fase=obj.id_fase).is_met(request.environ): if PoseePermiso('eliminar-revivir item', id_tipo_item=obj.id_tipo_item).is_met(request.environ): if revivir: value += '<div>' + \ '<a href="' + controller2 + '/revivir/' +str(obj.id_item) +'" ' + \ 'class="' + clase + '">Revivir</a>' + \ '</div><br />' #if PoseePermiso('eliminar-revivir item', # id_fase=obj.id_fase).is_met(request.environ): if PoseePermiso('eliminar-revivir item', id_tipo_item=obj.id_tipo_item).is_met(request.environ): if eliminar: value += '<div><form method="POST" action="' + eliminar_cont + '" 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;' + clase + '"/>'+\ '</form></div><br />' #if PoseePermiso('aprobar-desaprobar item', # id_fase=obj.id_fase).is_met(request.environ): if PoseePermiso('aprobar-desaprobar item', id_tipo_item=obj.id_tipo_item).is_met(request.environ): if aprobar: value += '<div>' + \ '<a href="' + controller2 + 'aprobar/' +str(obj.id_item) +'" ' + \ 'style="margin-left: -46px;" class="' + clase + '">Aprobar</a>' + \ '</div><br />' elif desaprobar: value += '<div>' + \ '<a href="' + controller2 + 'desaprobar/' +str(obj.id_item) +'" ' + \ 'class="' + clase + '">Desaprobar</a>' + \ '</div><br />' #if PoseePermiso('calcular impacto', # id_fase=obj.id_fase).is_met(request.environ): if PoseePermiso('calcular impacto', id_tipo_item=obj.id_tipo_item).is_met(request.environ): value += '<div>' + \ '<a href="' + controller2 + 'calcular_impacto/' + str(obj.id_item) +'" ' + \ 'class="' + clase + '">Calcular Impacto</a>' + \ '</div><br />' value += '</div>' return value