def put(self, *args, **kw): '''update''' params = kw # print params['submit'] pm = ItemManager() item_viejo = pm.getById(int(args[0])) item_nuevo = Item() identificador = params['identificador'] item_nuevo.identificador = identificador item_nuevo.observacion = params['observacion'] item_nuevo.estado = item_viejo.estado item_nuevo.complejidad = params['complejidad'] item_nuevo.descripcion = params['descripcion'] item_nuevo.id_fase = item_viejo.id_fase id_fase = item_viejo.id_fase item_nuevo.codigo = item_viejo.codigo item_nuevo.version = item_viejo.version + 1 item_nuevo.actual = 'true' item_viejo.actual = 'false' item_nuevo.tipo = item_viejo.tipo tipo_item = item_viejo.id_tipo_item version = item_nuevo.version pm.add(item_nuevo) pm.update(item_viejo) '''Copiar los campos''' if tipo_item: ti = TipoItemManager() tipo = ti.getById(tipo_item) campos = tipo.campos for campo in campos: nombre_campo = campo.nombre valor = params[nombre_campo] pm.addAtributo(identificador, id_fase, version, campo.id_campo, valor) item = pm.getByIdentificadorFaseVersion(identificador, id_fase, version) #Item_nuevo item_viejo = pm.getById(int(args[0])) '''Copiar los adjuntos''' if item_viejo.adjuntos: for adjunto in item_viejo.adjuntos: pm.copiarAdjunto(item, adjunto) pm.update(item) pm.update(item_viejo) item = pm.getByIdentificadorFaseVersion(identificador, id_fase, version) #Item_nuevo '''Adjuntar nuevos Archivos''' if params['submit'] == 'Adjuntar': '''Hay que adjuntar archivos''' id_item = item.id_item raise redirect('/item/adjuntar?id_item=' + str(id_item)) raise redirect('/item/items?id_fase=' + str(id_fase))
def listo(self, **kw): id_item = kw["id_item"] id_item = int(id_item) im = ItemManager() item_listo = im.getById(int(id_item)) fase_retorno = item_listo.id_fase item_listo.estado = 'listo' im.update(item_listo) raise redirect('/item/items?id_fase=' + str(fase_retorno))
def desaprobar(self, **kw): id_item = kw["id_item"] id_item = int(id_item) im = ItemManager() item_aprobar = im.getById(int(id_item)) fase_retorno = item_aprobar.id_fase item_aprobar.estado = 'desaprobado' im.update(item_aprobar) raise redirect('/item/items?id_fase=' + str(fase_retorno))
def revertir(self,*args,**kw): id_item = kw["id_item"] id_item = int(id_item) im = ItemManager() transaction.begin() item_revertir = im.getById(id_item) item_nuevo = Item() item_nuevo.codigo = item_revertir.codigo item_nuevo.identificador = item_revertir.identificador item_nuevo.observacion = item_revertir.observacion item_nuevo.estado = "inicial" item_nuevo.complejidad = item_revertir.complejidad item_nuevo.id_fase = item_revertir.id_fase item_nuevo.id_tipo_item = item_revertir.id_tipo_item item_nuevo.descripcion = item_revertir.descripcion items_de_fase = im.buscar_por_fase(item_revertir.id_fase) id_fase = item_revertir.id_fase version = 0 for item in items_de_fase: if item.version > version: version = item.version if item.codigo == item_revertir.codigo and item.actual == "true": item.actual = "false" version = version + 1 item_nuevo.version = version item_nuevo.actual = 'true' print "version",version im.add(item_nuevo) transaction.commit() item_viejo = im.getById(id_item) identificador = item_viejo.identificador tipo_item = item_viejo.id_tipo_item if tipo_item : for atributo in item_viejo.atributos: id_campo = atributo.id_campo valor = atributo.valor im.addAtributo(identificador,id_fase,version,id_campo,valor) im.update(item_viejo) item_viejo = im.getById(id_item) item = im.getByIdentificadorFaseVersion(identificador,id_fase,version) #Item_nuevo '''Copiar los adjuntos''' if item_viejo.adjuntos : for adjunto in item_viejo.adjuntos: im.copiarAdjunto(item,adjunto) im.update(item) raise redirect('/item/items?id_fase='+ str(id_fase))
def post_delete(self, *args, **kw): '''delete''' pm = ItemManager() item = pm.getById(args) if item.estado != 'finalizado': item.estado = 'eliminado' item.actual = 'false' id_fase = item.id_fase pm.update(item) raise redirect('/item/items?id_fase=' + str(id_fase))
def adjuntar_archivo(self, *args, **kw): fileitem = kw['datafile'] if fileitem.filename: os.path.basename(fileitem.filename.replace("\\", "/")) f = fileitem.file.read() im = ItemManager() item = im.getById(kw['id_item']) im.adjuntarArchivo(item, f, fileitem.filename) else: print 'No file was uploaded' raise redirect('/item/adjuntar?id_item=' + kw['id_item'])
def edit(self, *args, **kw): """Display a page to edit the record.""" im = ItemManager() cm = CampoManager() item = im.getById(args) atributos = item.atributos lista = [] if str(item.id_tipo_item) != '': for atributo in atributos: campo = cm.getById(atributo.id_campo) campoValor = CampoValor() campoValor.valor = atributo.valor campoValor.campo = campo.nombre campoValor.tipo = campo.tipo_dato lista.append(campoValor) return dict(item=item, campos=lista, id_fase=item.id_fase)
def __actions__(self, obj): """Override this function to define how action links should be displayed for the given record.""" primary_fields = self.__provider__.get_primary_fields(self.__entity__) pklist = '/'.join(map(lambda x: str(getattr(obj, x)), primary_fields)) estado = obj.estado lista = [] lista.append(str(obj.id_fase)) lista.append(str(obj.id_item)) if estado != 'finalizado': value = '<div><div><a class="edit_link" href="'+pklist+'/edit" style="text-decoration:none">edit</a>'\ '</div><div>'\ '<form method="POST" action="'+pklist+'" class="button-to">'\ '<input type="hidden" name="_method" value="DELETE" />'\ '<input class="delete-button" onclick="return confirm(\'Are you sure?\');" value="delete" type="submit" '\ 'style="background-color: transparent; float:left; border:0; color: #286571; display: inline; margin: 0; padding: 0;"/>'\ '</form>'\ '<div><a href="/item/impacto?id_item='+pklist+'" style="text-decoration:none">Impacto </a>'\ '</div>' if estado == "inicial": value += '<div><a href="/item/listo?id_item='+str(obj.id_item)+'" style="text-decoration:none">Listo </a>'\ '</div>' if estado == 'listo': value += '<div><a href="/item/aprobar?id_item='+str(obj.id_item)+'" style="text-decoration:none">Aprobar </a>'\ '</div>'\ '<div><a href="/item/desaprobar?id_item='+str(obj.id_item)+'" style="text-decoration:none">Desaprobar </a>'\ '</div>' im = ItemManager() versiones = im.getByCodigo(obj.codigo) cantidad = 0 for version in versiones: cantidad = cantidad + 1 print "cantidad", cantidad if cantidad > 1 and obj.estado != "finalizado": value += '<div><a href="/itemRevertir/obtener?id_item='+str(obj.id_item)+'" style="text-decoration:none">Revertir </a>'\ '</div>' else: value = '<div><div>'\ '</div><div>'\ '<form>'\ '</form>' value += '</div></div>' return value
def post(self, *args, **kw): '''New''' p = Item() pm = ItemManager() cm = CodigoManager() params = kw p.identificador = params['identificador'] p.observacion = params['observacion'] p.estado = 'inicial' p.complejidad = params['complejidad'] p.descripcion = params['descripcion'] p.id_fase = int(session['id_fase']) p.codigo = pm.generar_codigo(int(session['id_fase']), int(params['tipo_items'])) p.version = 1 p.actual = 'true' if params['tipo_items'] != '-1': ti = TipoItemManager() tipo = ti.getById(params['tipo_items']) p.tipo = tipo pm.add(p) if params['tipo_items'] != '-1': ti = TipoItemManager() tipo = ti.getById(params['tipo_items']) campos = tipo.campos for campo in campos: nombre_campo = campo.nombre valor = params[nombre_campo] pm.addAtributo(params['identificador'], params['id_fase'], 1, campo.id_campo, valor) item = pm.getByIdentificadorFaseVersion(params['identificador'], params['id_fase'], 1) '''Adjuntar nuevos Archivos''' if params['submit'] == 'Adjuntar': '''Hay que adjuntar archivos''' id_item = item.id_item raise redirect('/item/adjuntar?id_item=' + str(id_item)) raise redirect('/item/items?id_fase=' + params['id_fase'])
def _do_get_provider_count_and_objs(self, buscado="", **kw): im = ItemManager() item = im.getById(self.id_item) Campoes = im.getAnteriores(item.codigo) return len(Campoes), Campoes
def _do_get_provider_count_and_objs(self, buscado="", **kw): pm = ItemManager() Campoes = pm.buscar_por_fase(self.id_fase) return len(Campoes), Campoes
def adjuntar(self, *args, **kw): im = ItemManager() item = im.getById(kw['id_item']) return dict(page='index', id_item=kw['id_item'], id_fase=item.id_fase)
def _do_get_provider_count_and_objs(self, buscado="", **kw): pm = ItemManager() Items = pm.buscar(self.buscado, self.id_fase) return len(Items), Items
def getHijos(self): im=ItemManager() hijos = im.getHijos(2) return hijos