def agregar_tipo_fase(self,cancel=False,**data): errors = {} tipo_fase = None if request.method == 'POST': if cancel: redirect('/tipo_fase') form = TipoFaseForm() try: data = form.to_python(data) tipo_fase = Tipo_Fase(nombre_tipo_fase=data.get('nombre_tipo_fase'),descripcion=data.get('descripcion')) #if isinstance(tipo_fase,Tipo_Fase) : DBSession.add(tipo_fase) DBSession.flush() #DBSession.commit() #transaction.commit() print tipo_fase flash("Tipo de Fase agregada!") except Invalid, e: print e tipo_fase = None errors = e.unpack_errors() flash(_("Favor complete los datos requeridos"),'warning') except IntegrityError: flash("LLave duplicada") DBSession.rollback() redirect('/agregar_tipo_fase')
def post_tipo_item(self, nombre_tipo_item, codigo_tipo_item, descripcion, campo, valor): tipo_item = Tipo_Item( nombre_tipo_item=nombre_tipo_item, codigo_tipo_item=codigo_tipo_item, descripcion=descripcion ) DBSession.add(tipo_item) if campo is not None: if not isinstance(campo, list): campo = [campo] if valor is not None: if not isinstance(valor, list): valor = [valor] indice = 0 id_tipo = Tipo_Item.get_ultimo_id() for c in campo: if len(c) > 0: camp = Tipo_Campos(id_tipo_item=id_tipo, nombre_campo=c, valor_campo=valor[indice]) DBSession.add(camp) indice += 1 flash("Tipo Item Agregado!") redirect("/tipo_item/tipo_item")
def agregar_usuario(self,cancel=False,**data): errors = {} usuario = None if request.method == 'POST': if cancel: redirect('/usuario') form = UsuarioForm() try: data = form.to_python(data) usuario = Usuario(alias=data.get('alias'),nombre=data.get('nombre'),apellido=data.get('apellido'),email_address=data.get('email'),_password=data.get('clave')) #if isinstance(usuario,Usuario) : DBSession.add(usuario) DBSession.flush() #DBSession.commit() #transaction.commit() print usuario flash("Usuario agregado!") except Invalid, e: print e usuario = None errors = e.unpack_errors() flash(_("Favor complete los datos requeridos"),'warning') except IntegrityError: flash("LLave duplicada") DBSession.rollback() redirect('/agregar_usuario')
def post_miembro(self, idusuario, idrol, asmSelect0, fases): if idusuario is not None: idusuario = int(idusuario) if idrol is not None: idrol = int(idrol) if fases is not None: if not isinstance(fases, list): fases = [fases] fases = [DBSession.query(Fase).get(fase) for fase in fases] valor=int( Variables.get_valor_by_nombre("proyecto_actual")) equipo = Equipo_Desarrollo(proyecto=valor, idusuario=idusuario, idrol=idrol, fases=fases) # usuario = Usuario.get_user_by_id(idusuario) # rol = Rol.get_rol_by_id(idrol) # usuario.roles=[] # usuario.roles.append(rol) DBSession.add(equipo) DBSession.flush() flash("Miembro Agregado Agregado!") redirect('/equipo/equipo')
def put(self, id_tipo_item, nombre_tipo_item, codigo_tipo_item, descripcion, campo, valor, **kw): if id_tipo_item is not None: id_tipo_item = int(id_tipo_item) tipo_item = Tipo_Item.get_tipo_item_by_id(id_tipo_item) campos2 = Tipo_Campos.get_campos_by_tipo_item(tipo_item.id_tipo_item) for cam in campos2: Tipo_Campos.borrar_by_id(cam.id_tipo_campos) DBSession.flush() tipo_item.nombre_tipo_item = nombre_tipo_item tipo_item.descripcion = descripcion tipo_item.codigo_tipo_item = codigo_tipo_item if campo is not None: if not isinstance(campo, list): campo = [campo] if valor is not None: if not isinstance(valor, list): valor = [valor] indice = 0 for c in campo: if len(c) > 0: camp = Tipo_Campos(id_tipo_item=id_tipo_item, nombre_campo=c, valor_campo=valor[indice]) DBSession.add(camp) indice += 1 DBSession.flush() flash("Tipo de Item modificada!") redirect("/tipo_item/tipo_item")
def agregar_privilegio(self, cancel=False, **data): nom_proyecto = Variables.get_valor_by_nombre("nombre_proyecto_actual") nom_fase = Variables.get_valor_by_nombre("nombre_fase_actual") errors = {} privilegio = None if request.method == "POST": if cancel: redirect("/privilegio") form = PrivilegioForm() try: data = form.to_python(data) privilegio = Privilegios( nombreprivilegio=data.get("nombreprivilegio"), descripcion=data.get("descripcion") ) DBSession.add(privilegio) DBSession.flush() print privilegio flash("Privilegio agregado!") redirect("/privilegio") except Invalid, e: print e privilegio = None errors = e.unpack_errors() flash(_("Favor complete los datos requeridos"), "warning") except IntegrityError: flash("LLave duplicada") DBSession.rollback() redirect("/agregar_privilegio")
def agregar_privilegio(self,cancel=False,**data): errors = {} privilegio = None if request.method == 'POST': if cancel: redirect('/privilegio') form = PrivilegioForm() try: data = form.to_python(data) privilegio = Privilegios(nombreprivilegio=data.get('nombreprivilegio'),descripcion=data.get('descripcion')) #if isinstance(usuario,Usuario) : DBSession.add(privilegio) DBSession.flush() #DBSession.commit() #transaction.commit() print privilegio flash("Privilegio agregado!") except Invalid, e: print e privilegio = None errors = e.unpack_errors() flash(_("Favor complete los datos requeridos"),'warning') except IntegrityError: flash("LLave duplicada") DBSession.rollback() redirect('/agregar_privilegio')
def agregar_usuario(self, cancel=False, **data): nom_proyecto = Variables.get_valor_by_nombre("nombre_proyecto_actual") nom_fase = Variables.get_valor_by_nombre("nombre_fase_actual") usuarios = Usuario.get_alias() errors = {} usuario = None if request.method == "POST": if cancel: redirect("/usuario") form = UsuarioForm() try: data = form.to_python(data) usuario = Usuario( alias=data.get("alias"), nombre=data.get("nombre"), apellido=data.get("apellido"), email_address=data.get("email"), nacionalidad=data.get("nacionalidad"), tipodocumento=data.get("tipodocumento"), nrodoc=data.get("nrodoc"), _password=data.get("clave"), ) if usuario.alias not in usuarios: usuario._set_password(data.get("clave")) rol = Rol.get_rol_by_nombre("Usuario Basico") usuario.roles.append(rol) DBSession.add(usuario) DBSession.flush() print usuario flash("Usuario agregado!") redirect("/usuario") else: flash(_("Favor cambie el alias es repetido"), "warning") return dict( pagina="usuarios", usuario=usuario, errors=errors, data=data.get("alias"), nom_proyecto=nom_proyecto, nom_fase=nom_fase, usuarios=usuarios, ) except Invalid, e: print e usuario = None errors = e.unpack_errors() flash(_("Favor complete los datos requeridos"), "warning") except IntegrityError: flash("LLave duplicada") DBSession.rollback() redirect("/agregar_usuario")
def post_revivir_item(self, id_item, nombre_item , codigo_item, nombre_tipo_item, estado, complejidad, **kw): item = Item.get_item_by_id(id_item) item.estado_oculto="Activo" DBSession.add(item) DBSession.flush() flash("item Revivido!") redirect('/item/item')
def post_rol(self, nombrerol, descripcion, asmSelect0, privilegios=None): if privilegios is not None: if not isinstance(privilegios, list): privilegios = [privilegios] privilegios = [DBSession.query(Privilegios).get(privilegio) for privilegio in privilegios] rol = Rol(nombrerol=nombrerol, descripcion=descripcion, privilegios=privilegios) DBSession.add(rol) DBSession.flush() flash("Rol agregado!") redirect("/rol")
def setup(self): try: new_attrs = {} new_attrs.update(self.attrs) new_attrs.update(self.do_get_dependencies()) self.obj = self.klass(**new_attrs) DBSession.add(self.obj) DBSession.flush() return self.obj except: DBSession.rollback() raise
def post_recuperar_item(self, id_item, nombre_item, codigo_item, nombre_tipo_item, estado, complejidad, **kw): if id_item is not None: id_item=int(id_item) if complejidad is not None: complejidad=int(complejidad) item = Item.version_actual(id_item) item.estado_oculto="Desactivado" version= item.version+1 DBSession.flush() item2 = Item.get_item_by_id(id_item) item3 = Item (nombre_item=item2.nombre_item, codigo_item=item2.codigo_item, id_tipo_item=item2.id_tipo_item, orden=item2.orden, complejidad=item2.complejidad, estado = item2.estado, fase=item2.fase, proyecto=item2.proyecto, creado_por =item2.creado_por, fecha_creacion = item2.fecha_creacion , version =version , estado_oculto="Activo", lb_parcial=item2.lb_parcial,lb_general=item2.lb_general) DBSession.add(item3) DBSession.flush() adjuntos=Adjunto.get_adjuntos_by_item(item.id_item) for adjun in adjuntos: adjun.estado_oculto=item.estado_oculto DBSession.flush() mayor =Item.get_ultimo_id() adjuntos=Adjunto.get_adjuntos_by_item(item2.id_item) for adjun in adjuntos: adj2 = Adjunto(id_item=mayor,archivo=adjun.archivo, nombre_archivo=adjun.nombre_archivo, version=item3.version, estado_oculto=item3.estado_oculto ) DBSession.add(adj2) DBSession.flush() flash("item recuperado!") redirect('/item/item')
def post_tipo_fase(self, nombre_tipo_fase, tipos_items, descripcion,asmSelect0): if tipos_items is not None: if not isinstance(tipos_items, list): tipos_items = [tipos_items] tipos_items = [DBSession.query(Tipo_Item).get(tipo_item) for tipo_item in tipos_items] tipo_fase = Tipo_Fase (nombre_tipo_fase=nombre_tipo_fase, descripcion=descripcion,tipos_items=tipos_items) DBSession.add(tipo_fase) DBSession.flush() flash("tipo_fase agregada!") redirect('/tipo_fase/tipo_fase')
def post_fase(self, nombre_fase, id_tipo_fase, tipos_items, descripcion, asmSelect0): """ Permite agregar una nueva fase al proyecto. """ proyecto=int(Variables.get_valor_by_nombre("proyecto_actual")) nombres=Fase.get_nombres_by_id(proyecto) if not isinstance(nombres, list): nombres = [nombres] if nombre_fase not in nombres: if id_tipo_fase is not None: id_tipo_fase = int(id_tipo_fase) if tipos_items is not None: if not isinstance(tipos_items, list): tipos_items = [tipos_items] tipos_items = [DBSession.query(Tipo_Item).get(tipo_item) for tipo_item in tipos_items] fase = Fase (nombre_fase=nombre_fase, id_tipo_fase=id_tipo_fase, estado="nuevo", linea_base="abierta", descripcion=descripcion,tipos_items=tipos_items, proyecto=0,orden=0) DBSession.add(fase) DBSession.flush() flash("Fase agregada!") redirect('/fase/fase') else: nom_proyecto=Variables.get_valor_by_nombre("nombre_proyecto_actual") nom_fase=Variables.get_valor_by_nombre("nombre_fase_actual") tipos_fases = Tipo_Fase.get_tipo_fases() tipos_items = Tipo_Item.get_tipos_items() values = dict(nombre_fase=nombre_fase, descripcion=descripcion, ) flash("Nombre de Fase es repetido!") return dict(pagina="agregar_fase",values=values, tipos_fases=tipos_fases, tipos_items=tipos_items,nom_proyecto=nom_proyecto ,nom_fase=nom_fase)
def guardar(self,adjunto): """ Guarda el adjunto. """ DBSession.add(adjunto) DBSession.flush()
def put_proyecto(self, id_proyecto, nombre_proyecto, idusuario, descripcion, asmSelect0, tipos_fases,**kw): nom_proyecto=Variables.get_valor_by_nombre("nombre_proyecto_actual") nom_fase=Variables.get_valor_by_nombre("nombre_fase_actual") if id_proyecto is not None: id_proyecto=int(id_proyecto) if idusuario is not None: idusuario=int(idusuario) nombres=Proyecto.get_nombres() proyecto = DBSession.query(Proyecto).get(id_proyecto) if not isinstance(nombres, list): nombres = [nombres] nombres.remove(proyecto.nombre_proyecto) if nombre_proyecto not in nombres: miembro=Equipo_Desarrollo.get_miembro_by_usuario_by_proyecto( proyecto.idusuario,proyecto.id_proyecto) id_miembro=miembro.id_equipo Equipo_Desarrollo.borrar_by_id(id_miembro) DBSession.flush() fases=Fase.get_fase_by_proyecto(proyecto.id_proyecto) for fase in fases: Fase.borrar_by_id(fase.id_fase) DBSession.flush() if not isinstance(tipos_fases, list): tipos_fases = [tipos_fases] tipos_fases = [DBSession.query(Tipo_Fase).get(tipo_fase) for tipo_fase in tipos_fases] cant=1 for tipo_fase in tipos_fases: fase = Fase (nombre_fase=tipo_fase.nombre_tipo_fase, id_tipo_fase=tipo_fase.id_tipo_fase, estado ="Nuevo", proyecto=proyecto.id_proyecto,orden=cant, linea_base="Abierta", descripcion=tipo_fase.descripcion) DBSession.add(fase) DBSession.flush() cant+=1 proyecto.idusuario = idusuario proyecto.nombre_proyecto=nombre_proyecto proyecto.descripcion = descripcion proyecto.tipos_fases = tipos_fases proyecto.estado="Desactivado" DBSession.flush() fases = Fase.get_fase_by_proyecto(Proyecto.get_ultimo_id()) nom="Lider Proyecto" mirol=Rol.get_rol_by_nombre(nom) equipo = Equipo_Desarrollo(proyecto=Proyecto.get_ultimo_id(), idusuario=idusuario, idrol=mirol.idrol,fases=fases) DBSession.add(equipo) DBSession.flush() fases = Fase.get_fase_by_proyecto(proyecto.id_proyecto) flash("Proyecto Modificado!") return dict(pagina="/fase/listar_fase", fases=fases, nom_proyecto=nom_proyecto,nom_fase=nom_fase) else: flash("nombre proyecto repetido!") redirect('/proyecto/editar_proyecto?id_proyecto=%d' % id_proyecto)
def post_proyecto(self, nombre_proyecto, idusuario, tipos_fases, asmSelect0, descripcion,start=0,end=5,indice=None,texto=""): nom_proyecto=Variables.get_valor_by_nombre("nombre_proyecto_actual") nom_fase=Variables.get_valor_by_nombre("nombre_fase_actual") nombres=Proyecto.get_nombres() if not isinstance(nombres, list): nombres = [nombres] if nombre_proyecto not in nombres: if idusuario is not None: idusuario = int(idusuario) if tipos_fases is not None: if not isinstance(tipos_fases, list): tipos_fases = [tipos_fases] tipos_fases = [DBSession.query(Tipo_Fase).get(tipo_fase) for tipo_fase in tipos_fases] proyecto = Proyecto (nombre_proyecto=nombre_proyecto, idusuario=idusuario, descripcion=descripcion, tipos_fases=tipos_fases, estado ="Desactivado") DBSession.add(proyecto) DBSession.flush() proy=int(Proyecto.get_ultimo_id()) cant=1 lista=[] for tipo_fase in tipos_fases: fase = Fase (nombre_fase=tipo_fase.nombre_tipo_fase, id_tipo_fase=tipo_fase.id_tipo_fase, estado ="Nuevo",proyecto=proy, orden=cant,linea_base="Abierta", descripcion=tipo_fase.descripcion) DBSession.add(fase) DBSession.flush() lista.append(fase) cant+=1 nom="Lider Proyecto" mirol=Rol.get_rol_by_nombre(nom) fases2=Fase.get_fase_by_proyecto(proy) equipo = Equipo_Desarrollo(proyecto=Proyecto.get_ultimo_id(), idusuario=idusuario, idrol=mirol.idrol,fases=fases2) DBSession.add(equipo) DBSession.flush() fases,len_fases = Fase.get_fase_by_proyecto_por_pagina(proy,start,end) ############ paginado = 5 if start <> 0: end=int(start.split('=')[1]) #obtiene el fin de pagina start=int(start.split('&')[0]) #obtiene el inicio de pagina #print start,end total = len(Fase.get_fase_by_proyecto(proy)) pagina_actual = ((start % end) / paginado) + 1 if ((start % end) % paginado) <> 0: pagina_actual = pagina_actual + 1 #roles = Fase.get_fase_by_proyecto_por_pagina(proy,start,end) ########### param="/fase/fase" flash("Proyecto Agregado!") return dict(pagina="../fase/fase", fases=fases, nom_proyecto=nom_proyecto,nom_fase=nom_fase, inicio=start,fin=end,paginado=paginado, pagina_actual=pagina_actual,total=total, param=param) else: nom_proyecto=Variables.get_valor_by_nombre("nombre_proyecto_actual") nom_fase=Variables.get_valor_by_nombre("nombre_fase_actual") usuarios = Usuario.get_usuarios() tipos_fases = Tipo_Fase.get_tipo_fases() flash("Nombre del Proyecto ya existe!") redirect('../proyecto/agregar_proyecto')
def post_item(self, nombre_item, complejidad, adjunto, id_tipo_item, asmSelect0,padres=None): items= Item.get_nombres_items() if nombre_item not in items: if id_tipo_item is not None: id_tipo_item = int(id_tipo_item) if complejidad is not None: complejidad=int(complejidad) if adjunto is not None: if not isinstance(adjunto, list): adjunto = [adjunto] if padres is not None: if not isinstance(padres, list): padres = [padres] padres = [DBSession.query(Item).get(padre) for padre in padres] #---------------------------------------- tipo_item =Tipo_Item.get_tipo_item_by_id(id_tipo_item) pre_codigo=tipo_item.codigo_tipo_item proy_act=int (Variables.get_valor_by_nombre("proyecto_actual")) fas_act=int (Variables.get_valor_by_nombre("fase_actual")) fase=Fase.get_fase_by_id(fas_act) codigo_item=Item.crear_codigo(id_tipo_item, pre_codigo,proy_act,fas_act) item = Item (nombre_item=nombre_item, codigo_item=codigo_item, id_tipo_item=id_tipo_item, complejidad=complejidad, estado = "nuevo", fase=fas_act,proyecto=proy_act,orden=fase.orden, creado_por=Variables.get_valor_by_nombre("usuario_actual"), fecha_creacion = time.ctime(), version =1 , estado_oculto="Activo",lb_parcial=0,lb_general=0 ) DBSession.add(item) DBSession.flush() #---------------------------------------- for padre in padres: if padre.nombre_item == "master": padres.remove(padre) mayor =int(Item.get_ultimo_id()) relacion = Relaciones (id_item_hijo=mayor,padres=padres) #---------------------------------------- id_item2=Item.get_ultimo_id() tipos_campos=Tipo_Campos.get_campos_by_tipo_item(id_tipo_item) for tipo in tipos_campos: camp =Campos(id_item=id_item2, nombre_campo=tipo.nombre_campo, tipo_campo= tipo.valor_campo) DBSession.add(camp) DBSession.flush() #---------------------------------------- if adjunto is not None: for adj in adjunto: if len(str(adj))==0: break if len(adj.filename)==0: break data = adj.file.read() encode=base64.b64encode(data) var=binascii.a2b_base64(encode) adj = Adjunto (id_item=mayor, archivo=var, nombre_archivo=adj.filename, version =item.version , estado_oculto=item.estado_oculto) DBSession.add(adj) DBSession.flush() flash("Item Agregado!") redirect('/item/item') else: nom_fase=Variables.get_valor_by_nombre("nombre_fase_actual") nom_proyecto=Variables.get_valor_by_nombre("nombre_proyecto_actual") id_fase=int(Variables.get_valor_by_nombre("fase_actual")) padres=Item.get_item_activados() #cambiar esta funcion y solo traer lo que no forman ciclos fase = Fase.get_fase_by_id(id_fase) tipos_items=fase.tipos_items values = dict(nombre_item=nombre_item, id_tipo_item=id_tipo_item, complejidad=complejidad, ) flash("Nombre de Item ya existente!") return dict(pagina="agregar_item",values=values, tipos_items=tipos_items,nom_proyecto=nom_proyecto, nom_fase=nom_fase,padres=padres)
def put_item(self, id_item, nombre_item, nombre_tipo_item, complejidad, id_campos,nombre_campo,tipo_campo,dato, padres,asmSelect0,adjunto=None,adjuntados=None): if id_item is not None: id_item=int(id_item) item = Item.get_item_by_id(id_item) items= Item.get_nombres_items() items.remove(item.nombre_item) if nombre_item not in items: if id_campos is not None: if not isinstance(id_campos, list): id_campos = [id_campos] if nombre_campo is not None: if not isinstance(nombre_campo, list): nombre_campo = [nombre_campo] if tipo_campo is not None: if not isinstance(tipo_campo, list): tipo_campo = [tipo_campo] if dato is not None: if not isinstance(dato, list): dato = [dato] if complejidad is not None: complejidad=int(complejidad) if adjuntados is not None: if not isinstance(adjuntados, list): adjuntados = [adjuntados] if len(adjuntados)<1: adjuntados =[] if adjunto is not None: if not isinstance(adjunto, list): adjunto = [adjunto] if padres is not None: if not isinstance(padres, list): padres = [padres] padres = [DBSession.query(Item).get(padre) for padre in padres] item.estado_oculto="Desactivado" DBSession.flush() version=item.version+1 item2 = Item (nombre_item=nombre_item , codigo_item=item.codigo_item , id_tipo_item=item.id_tipo_item , complejidad=complejidad, estado = item.estado , orden=item.orden, fase=int(Variables.get_valor_by_nombre ("fase_actual")), proyecto=int(Variables.get_valor_by_nombre ("proyecto_actual")), creado_por=Variables.get_valor_by_nombre ("usuario_actual"), fecha_creacion = time.ctime() , version =version ,estado_oculto="Activo", lb_parcial=item.lb_parcial,lb_general=item.lb_general) DBSession.add(item2) DBSession.flush() indice=0 id_item=Item.get_ultimo_id() for c in id_campos: if len(c)>0: camp =Campos(id_item=id_item, nombre_campo=nombre_campo[indice], tipo_campo=tipo_campo[indice], dato=dato[indice]) DBSession.add(camp) indice+=1 mayor =Item.get_ultimo_id() relacion = Relaciones (id_item_hijo=mayor,padres=padres) if adjunto is not None: for adj in adjunto: if len(str(adj))==0: break if len(adj.filename)==0: break data = adj.file.read() encode=base64.b64encode(data) var=binascii.a2b_base64(encode) adj = Adjunto (id_item=mayor, archivo=var, nombre_archivo=adj.filename,version=item2.version, estado_oculto=item2.estado_oculto) DBSession.add(adj) DBSession.flush() adjuntos=Adjunto.get_adjuntos_by_item(item.id_item) for adjun in adjuntos: if adjuntados is not None: if adjun.nombre_archivo in adjuntados: adj2 = Adjunto(id_item=mayor,archivo=adjun.archivo, nombre_archivo=adjun.nombre_archivo, version=item2.version, estado_oculto=item2.estado_oculto ) DBSession.add(adj2) DBSession.flush() adjun.estado_oculto=item.estado_oculto DBSession.flush() flash("Item Modificado!") redirect('/item/item') else: nom_proyecto=Variables.get_valor_by_nombre("nombre_proyecto_actual") nom_fase=Variables.get_valor_by_nombre("nombre_fase_actual") padres=Item.get_item_activados() #cambiar esta funcion y solo traer lo que no forman ciclos id_fase=int(Variables.get_valor_by_nombre("fase_actual")) fase = Fase.get_fase_by_id(id_fase) tipos_items=fase.tipos_items lista=[] lista.append(item.nombre_tipo_item ) item = DBSession.query(Item).get(id_item) values = dict(id_item=id_item, nombre_item=nombre_item, codigo_item=item.codigo_item, complejidad=complejidad, ) adjuntos=Adjunto.get_adjuntos_by_item(item.id_item) adjuntados=[] for adj in adjuntos: var = dict(id_adjunto=adj.id_adjunto, nombre_archivo=adj.nombre_archivo) adjuntados.append(var) padres2=[] padr=Relaciones.get_mis_padres(id_item) for pad in padr: padres2.append(pad.id_item) flash("EL NOMBRE DEL ITEM YA ESXISTE!") return dict(pagina="editar_item",values=values,adjuntados=adjuntados, nom_proyecto=nom_proyecto,nom_fase=nom_fase, lista=lista,tipos_items=tipos_items,padres=padres, padres2=padres2)