Exemplo n.º 1
0
Arquivo: rol.py Projeto: mbaez/SAP
	def post(self, args={}, **kw):
		"""
		Evento invocado luego de un evento post en el form de crear
		ecargado de persistir las nuevas instancias.

		@type  args : Hash
		@param args : Argumentos de template

		@type  kw : Hash
		@param kw : Keywords

		"""

		del kw['sprox_id']
		rol = Rol()
		rol.codigo = kw['codigo']
		rol.nombre = kw['nombre']
		rol.descripcion = kw['descripcion']

		for permiso in kw['permisos'] :
			rol.permisos.append(DBSession.query(Permiso).get(permiso))

		DBSession.add(rol)
		flash("El rol ha sido creado correctamente.")
		redirect("/administracion/rol/get_all")
Exemplo n.º 2
0
    def _do_get_provider_count_and_objs(self, **kw):
        limit = kw.get('limit', None)
        offset = kw.get('offset', None)
        order_by = kw.get('order_by', None)
        desc = kw.get('desc', False)
        
        

        idUsuario= [x for x in DBSession.query(User.user_id).filter_by(user_name=request.identity['repoze.who.userid'])]
        
        idProy=[x for x in DBSession.query(ProyFaseUsuario.idProyecto).filter_by(iduser=idUsuario[0]).distinct()] 
        proyectos=[]
        
        longitud=len(idProy)
        for y in range(longitud):
            proyectos.append(DBSession.query(self.__entity__).filter_by(id = idProy[y]).one())

        
        if len(kw) > 0:
            
            for y in range(longitud):
                proyectos.append(DBSession.query(self.__entity__).filter((Proyecto.id == idProy[y]) & (Proyecto.nombre.ilike('%'+str(kw['buscar'])+'%'))).one())
            
            objs =proyectos 
            
        else:
            objs = proyectos
        
        
                
        
        
        count = len(objs)
        self.__count__ = count
        return count, objs    
Exemplo n.º 3
0
Arquivo: checker.py Projeto: mbaez/SAP
	def revivir_item (self, historial_item):
		"""
		Restaura el item a su ultima version sin sus relaciones
		"""
		item = Item()
		item.id_item = historial_item.id_item
		item.nombre = historial_item.nombre
		item.codigo = historial_item.codigo
		#el estado del item es en desarrollo al revivir
		item.estado = 2
		item.tipo_item = historial_item.tipo_item
		item.fase = historial_item.fase
		item.version = historial_item.version
		item.prioridad = historial_item.prioridad
		item.complejidad = historial_item.complejidad
		item.descripcion = historial_item.descripcion
		item.observacion = historial_item.observacion
		item.linea_base = historial_item.linea_base

		#recuperar los detalles
		historial_detalles = DBSession.query(HistorialDetalleItem).\
			filter(HistorialDetalleItem.id_item==historial_item.id_item).\
			all()

		for hist_detalle in historial_detalles:
			detalle = DetalleItem()
			detalle.id_detalle = hist_detalle.id_detalle
			detalle.id_item = hist_detalle.id_item
			detalle.recurso = hist_detalle.recurso
			detalle.valor = hist_detalle.valor
			item.detalles.append(detalle)

		DBSession.merge(item)
Exemplo n.º 4
0
Arquivo: util.py Projeto: mbaez/SAP
	def faseGraphConstructor(self, idfase):
		#lista de items para el grafo
		items = DBSession.query(Item).filter(Item.fase==idfase).all()
		itemsId = []

		"""
		Todos los items de la fase forman parte del grafo (item = nodo)
		"grafo" es un grafo dirigido que representa las relaciones padre-hijo
		en una fase.
		"""
		grafo = digraph()
		for item in items:
			grafo.add_nodes([item.id_item])

		"""
		Se busca en la tabla RelacionItem todas las relaciones de padre-hijo
		que contengan a los items de la fase
		"""
		#guardar los ids de los items
		for item in items:
			itemsId = itemsId + [item.id_item]

		relaciones = DBSession.query(RelacionItem).\
						filter(RelacionItem.relacion_parentesco==1).\
						filter(RelacionItem.id_item_actual.in_(itemsId)).\
						filter(RelacionItem.id_item_relacionado.in_(itemsId)).\
						all()

		#Se añaden las aristas entre los items relacionados
		for relacion in relaciones:
			grafo.add_edge((relacion.id_item_actual, relacion.id_item_relacionado))

		return grafo
Exemplo n.º 5
0
Arquivo: rol.py Projeto: mbaez/SAP
	def put(self, args={}, **kw):
		"""
		Evento invocado luego de un evento post en el form de editar
		ecargado de persistir las modificaciones de las instancias.

		@type  args : Hash
		@param args : Argumentos de template

		@type  kw : Hash
		@param kw : Keywords

		"""
		del kw['sprox_id']
		rol = DBSession.query(Rol).get(int(kw['rol_id']))
		rol.nombre = kw['nombre']
		rol.codigo = kw['codigo']
		rol.descripcion = kw['descripcion']
		rol.is_template = kw['is_template']
		rol.permisos = []

		for permiso_id in kw['permisos'] :
			rol.permisos.append(DBSession.query(Permiso).get(permiso_id))

		DBSession.merge(rol)
		flash("El rol '"+rol.nombre+"' ha sido modificado correctamente.")
		redirect("/administracion/rol/get_all")
Exemplo n.º 6
0
Arquivo: item.py Projeto: mbaez/SAP
	def revivir(self, id_historial):
		historial = DBSession.query(HistorialItem).get(id_historial)
		#se revive el item a partir de su historial
		item_util.revivir_item(historial)
		#se elimina el historial del item muerto
		DBSession.delete(historial)
		redirect("/miproyecto/fase/item/ver/"+str(historial.id_item))
Exemplo n.º 7
0
 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))
     #if has_permission('manage'):############
     
     proyecto = DBSession.query(Fase.idproyec).filter_by(id = pklist).first()
     estado = DBSession.query(Proyecto.estado).filter_by(id = proyecto).first()
     faseanterior = DBSession.query(Fase).filter((Fase.idproyec == proyecto) & (Fase.id < pklist)).order_by(Fase.id).all()
     longitud = len(faseanterior)
     
     if str(estado[0]).__eq__("iniciado"):
         if longitud > 0:
             
             if (faseanterior[longitud-1].estado == 'inicial') | (faseanterior[longitud-1].estado == 'desarrollo'):
                 value = '<div></div>'
             else:
                 value = '<div><a class="loginlogout" href="/item/?fid='+pklist+ '">Items</a><br/>'\
                     '<a class="loginlogout" href="/revivir/?fid='+pklist+ '">RevivirItem</a><br/>'\
                     '<a class="loginlogout" href="/lineabase/?fid='+pklist+ '">LineaBase</a></div>'
         else:
             value = '<div><a class="loginlogout" href="/item/?fid='+pklist+ '">Items</a><br/>'\
                 '<a class="loginlogout" href="/revivir/?fid='+pklist+ '">RevivirItem</a><br/>'\
                 '<a class="loginlogout" href="/lineabase/?fid='+pklist+ '">LineaBase</a></div>'
     else:
         value = '<div><a class="loginlogout" href="/item/?fid='+pklist+ '">Items</a><br/>'\
             '<a class="loginlogout" href="/lineabase/?fid='+pklist+ '">LineaBase</a></div>'
     
     return value
Exemplo n.º 8
0
    def _do_get_provider_count_and_objs(self, **kw):
        limit = kw.get('limit', None)
        offset = kw.get('offset', None)
        order_by = kw.get('order_by', None)
        desc = kw.get('desc', False)
        #objs = DBSession.query(self.__entity__).filter_by(idFase=1).all()

        log.debug('pruebaRevivir: %s' % kw)

        if len(kw) > 0:

            if len(kw) > 1:
                objs = DBSession.query(self.__entity__).filter(
                    (Item.idFase == kw['fid']) & (Item.estado == "borrado")
                    & (Item.nombre.ilike('%' + str(kw['buscar']) +
                                         '%'))).all()
            else:
                objs = DBSession.query(self.__entity__).filter_by(
                    idFase=kw['fid'], estado="borrado").all()
            #objs = DBSession.query(self.__entity__).filter((Item.nrohistorial==kw['hid'])& (Item.ultimaversion==0) & (Item.nombre.ilike('%'+str(kw['buscar'])+'%'))).all()
            #objs = DBSession.query(self.__entity__).all()
        else:
            objs = DBSession.query(self.__entity__).all()

        count = len(objs)
        self.__count__ = count
        return count, objs
Exemplo n.º 9
0
 def put(self, *args, **kw):
     """update"""
     pks = self.provider.get_primary_fields(self.model)
     for i, pk in enumerate(pks):
         if pk not in kw and i < len(args):
             kw[pk] = args[i]
     
     idTipoDeItem=DBSession.query(Campos.idTipoDeItem).filter_by(id=kw['id']).first()
     
     
     
     if kw['nombre']==None:
         flash("El nuevo Atributo debe tener un nombre" , "error")
         redirect('../'+ kw['id'] +'/edit')
     
     
     nombreduplicado=DBSession.query(Campos.nombre).filter((Campos.idTipoDeItem==idTipoDeItem) &(Campos.id != kw['id']) &(Campos.nombre==kw['nombre'])).first()
     
     if nombreduplicado != None :
         flash("Ya existe un Atributo con el mismo nombre" , "error")
         redirect('../'+ kw['id'] +'/edit')
         
         
     self.provider.update(self.model, params=kw)
     idtipo=DBSession.query(Campos.idTipoDeItem).filter_by(id=kw[pk]).first()
     
     redirect('../?tid=' + str(idtipo[0]))
Exemplo n.º 10
0
    def post(self, *args, **kw):
        """extrae el numhistorial ordenado sin repetir, para luego tomar el mayor valor y asi 
        poder asignarle un numhistorial mayor
        """
        num = [
            x for x in (DBSession.query(Item.nrohistorial).order_by(
                Item.nrohistorial.desc()).distinct())
        ]
        """Por cada Item creado, aumenta el nrohistorial en una unidad """

        if num != None and len(num) > 0:
            kw['nrohistorial'] = int(num[0][0]) + 1
        else:
            kw['nrohistorial'] = 1

        fase = DBSession.query(Fase).filter_by(id=kw['idFase']).first()

        if str(fase.estado).__eq__('inicial'):
            fase.estado = 'desarrollo'
        elif str(fase.estado).__eq__('lineaBaseTotal'):
            fase.estado = 'lineaBaseParcial'

        #self.provider.create(self.model, params=kw)

        raise redirect('./?fid=' + kw['idFase'])
Exemplo n.º 11
0
    def new(self,lid=None ,*args, **kw):

        tmpl_context.widget = self.new_form
   
        
        if len(kw)<2:
            """-----obtiene el idFase de la en el que esta la linea base------- """

            fid=DBSession.query(LineaBase.idFase).filter_by(id=lid).first()
            log.debug("fidddd= %s" %fid)   
            """-----------------------------------------------------------------"""
             
            emfaseactual= [x for x in DBSession.query(Item.id, Item.nombre).filter_by(idFase=fid,idLineaBase=None).all()]
            return dict(value={'lineabase':lid}, model=self.model.__name__,items_options=itemfaseactual)
            
            
            """Este else es como el Post.Como,al guardar no se va al Post,vuelve al new, entonces se le creo este "else" """
        else:
            
            kw2=dict()
            kw2['id']=kw['items']
            kw2['idLineaBase']=kw['lineabase']
            self.provider.update(self.model, params=kw2)
            
            raise redirect('../' +'../itemlineabase/?lid='+ kw['lineabase'])
Exemplo n.º 12
0
    def put(self, *args, **kw):
        """update"""
        pks = self.provider.get_primary_fields(self.model)
        for i, pk in enumerate(pks):
            if pk not in kw and i < len(args):
                kw[pk] = args[i]

        idTipoDeItem = DBSession.query(
            Campos.idTipoDeItem).filter_by(id=kw['id']).first()

        if kw['nombre'] == None:
            flash("El nuevo Atributo debe tener un nombre", "error")
            redirect('../' + kw['id'] + '/edit')

        nombreduplicado = DBSession.query(
            Campos.nombre).filter((Campos.idTipoDeItem == idTipoDeItem)
                                  & (Campos.id != kw['id'])
                                  & (Campos.nombre == kw['nombre'])).first()

        if nombreduplicado != None:
            flash("Ya existe un Atributo con el mismo nombre", "error")
            redirect('../' + kw['id'] + '/edit')

        self.provider.update(self.model, params=kw)
        idtipo = DBSession.query(
            Campos.idTipoDeItem).filter_by(id=kw[pk]).first()

        redirect('../?tid=' + str(idtipo[0]))
Exemplo n.º 13
0
 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))
     #if has_permission('manage'):############
     proyecto = DBSession.query(Fase.idproyec).filter_by(id = pklist).first()
     estado = DBSession.query(Proyecto.estado).filter_by(id = proyecto).first()
     value='<div></div>'
     
     if str(estado[0]).__eq__("nuevo"):
         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>''</div>'
         
     elif str(estado[0]).__eq__("iniciado"):
         value = '<div><div><a class="edit_link" href="'+pklist+'/edit" style="text-decoration:none">edit</a>'\
         '<div><a class="loginlogout" href="/tipodeitem/?fid='+pklist+ '">TiposItem</a></div><br/>'\
         '<div><a class="loginlogout" href="/importartipodeitem/new/?fid='+pklist+ '">ImportarTipoItem</a></div><br/>'\
         '</div></div>'
     
     return value
Exemplo n.º 14
0
	def new(self, idtipo, args={}, **kw):
		"""
		Encargado de cargar el widget para crear nuevas instancias,
		solo tienen acceso aquellos usuarios que posean el premiso de crear

		@type  idtipo : Integer
		@param idtipo : Identificador del Atributo del item.

		@type  args : Hash
		@param args : Argumentos de template

		@type  kw : Hash
		@param kw : Keywords

		@rtype  : Diccionario
		@return : El diccionario que sera utilizado en el template.

		"""

		tmpl_context.widget = new_atributo_form
		self.params['modelname'] = "Atributos del Tipo de Item"
		self.params['idtipo'] = idtipo
		self.params['tipo_item'] = DBSession.query(TipoItem).get(idtipo)
		self.params['current_name'] = self.params['tipo_item'].nombre
		id_fase = self.params['tipo_item'].fase
		self.params['fase'] = DBSession.query(Fase).get(id_fase)
		self.params['idfase'] = id_fase
		self.params['header_file'] = 'tipo_item'
		self.params['cancelar_url'] = '/miproyecto/fase/tipo_item/atributos/list/'+str(idtipo)
		return dict(value=kw, params=self.params)
Exemplo n.º 15
0
    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))
        #if has_permission('manage'):############

        proyecto = DBSession.query(Fase.idproyec).filter_by(id=pklist).first()
        estado = DBSession.query(
            Proyecto.estado).filter_by(id=proyecto).first()
        faseanterior = DBSession.query(Fase).filter(
            (Fase.idproyec == proyecto) & (Fase.id < pklist)).order_by(
                Fase.id).all()
        longitud = len(faseanterior)

        if str(estado[0]).__eq__("iniciado"):
            if longitud > 0:

                if (faseanterior[longitud - 1].estado == 'inicial') | (
                        faseanterior[longitud - 1].estado == 'desarrollo'):
                    value = '<div></div>'
                else:
                    value = '<div><a class="loginlogout" href="/item/?fid='+pklist+ '">Items</a><br/>'\
                        '<a class="loginlogout" href="/revivir/?fid='+pklist+ '">RevivirItem</a><br/>'\
                        '<a class="loginlogout" href="/lineabase/?fid='+pklist+ '">LineaBase</a></div>'
            else:
                value = '<div><a class="loginlogout" href="/item/?fid='+pklist+ '">Items</a><br/>'\
                    '<a class="loginlogout" href="/revivir/?fid='+pklist+ '">RevivirItem</a><br/>'\
                    '<a class="loginlogout" href="/lineabase/?fid='+pklist+ '">LineaBase</a></div>'
        else:
            value = '<div><a class="loginlogout" href="/item/?fid='+pklist+ '">Items</a><br/>'\
                '<a class="loginlogout" href="/lineabase/?fid='+pklist+ '">LineaBase</a></div>'

        return value
Exemplo n.º 16
0
Arquivo: fase.py Projeto: mbaez/SAP
	def get_all(self, idfase, **kw):
		"""Lista todos los items de la fase"""

		has_permiso = session_util.authorize_fase('ver_fase', idfase)
		if ( has_permiso == None) :
			flash("No posee permisos sobre la fase #"+str(idfase),'error')
			redirect('/miproyecto/fase/error')


		tmpl_context.widget = item_table
		items = DBSession.query(Item).filter(Item.fase==idfase).all()
		value = item_filler.get_value(items)

		permiso_editar = fase_util.check_fase_permiso(idfase, 'editar_fase')
		permiso_anadir = fase_util.check_fase_permiso(idfase, 'administrar_participantes')

		self.params['title'] = 'Titulo'
		self.params['permiso_editar'] = permiso_editar
		self.params['permiso_anadir'] = permiso_anadir
		self.params['modelname'] = 'Items'
		self.params['header_file'] = 'fase'
		self.params['permiso'] = 'crear_item'
		self.params['idfase'] = idfase
		self.params['fase'] = DBSession.query(Fase).get(idfase)
		self.params['new_url'] = '/miproyecto/fase/item/'+idfase+'/new/'
		self.params['label'] = 'Agregar Atributo'
		self.params['usuarios'] = usuario_util.get_usuarios_by_fase(idfase)

		return dict(value=value, params = self.params)
Exemplo n.º 17
0
Arquivo: usuario.py Projeto: mbaez/SAP
	def put(self, id, **kw):
		"""
		Evento invocado luego de un evento post en el form de editar
		ecargado de persistir las modificaciones de las instancias.

		@type  id : Integer
		@param id : Identificador del usuario.

		@type  kw : Hash
		@param kw : Keywords

		"""

		usuario = DBSession.query(Usuario).get( int(id) )

		usuario.nombre = kw['nombre']
		usuario.email_address = kw['email_address']

		if usuario._password != kw['password'] :
			print 'Actualizando la contrasenha'
			usuario._set_password(kw['password'])

		DBSession.merge(usuario)
		flash("El usuario '"+usuario.nombre+"' ha sido modificado correctamente.")
		redirect("/administracion/usuario/get_all")
Exemplo n.º 18
0
	def iniciar_proyecto(self, idproyecto, **kw):
		proyecto = DBSession.query(Proyecto).get(idproyecto)
		proyecto.estado = estado_proyecto_util.get_by_codigo('Desarrollo')

		DBSession.merge(proyecto)

		redirect('/miproyecto/ver/'+str(idproyecto))
Exemplo n.º 19
0
Arquivo: util.py Projeto: mbaez/SAP
	def gen_cod (self, id_fase, id_tipo):
		#traer la fase
		fase_actual = DBSession.query(Fase).get(id_fase)

		#se consulta por el numero de la fase actual dentro del proyecto
		nro_fase = 1 + len(DBSession.query(Fase).\
						filter(Fase.proyecto==fase_actual.proyecto).\
						filter(Fase.id_fase<fase_actual.id_fase).\
						all())

		#cantidad de items + 1 es el nro de item del nuevo item
		#dentro del proyecto actual
		nro_item = 1 + len(DBSession.query(Item).\
								filter(Item.fase==fase_actual.id_fase).\
								all())

		#obtener el tipo de item al cual corresponde el item, el codigo
		#de este es utilizado como prefijo del codigo del item
		tipo = DBSession.query(TipoItem).get(id_tipo)
		prefijo = tipo.codigo

		#se concatenan los resultados
		item_codigo = prefijo + str(nro_fase) + str(nro_item)

		return item_codigo
Exemplo n.º 20
0
    def post(self, *args, **kw):
        ids = kw['items']
        longitud = len(ids)

        items = DBSession.query(Item).filter_by(idFase=kw['idFase'],
                                                ultimaversion=1).all()

        if (longitud > 0):
            fase = DBSession.query(Fase).filter_by(id=kw['idFase']).first()

            if longitud == len(items):
                fase.estado = 'lineaBaseTotal'
            else:
                fase.estado = 'lineaBaseParcial'

            lineabase = self.provider.create(self.model, params=kw)

            for indice in range(longitud):
                item = DBSession.query(Item).filter_by(id=ids[indice]).first()
                item.idLineaBase = lineabase.id

            raise redirect('./?fid=' + kw['idFase'])
        else:
            flash("No ha seleccionado ningun item", "error")
            raise redirect('./new/?fid=' + kw['idFase'])
Exemplo n.º 21
0
    def _do_get_provider_count_and_objs(self, **kw):
        limit = kw.get('limit', None)
        offset = kw.get('offset', None)
        order_by = kw.get('order_by', None)
        desc = kw.get('desc', False)
        #objs = DBSession.query(self.__entity__).filter_by(idFase=1).all()
        
        if len(kw) > 0:
            if len(kw) > 1:
                #objs = DBSession.query(self.__entity__).filter((Fase.idproyec==kw['pid']) & (Fase.nombre.ilike('%'+str(kw['buscar'])+'%'))).all()

                if kw['buscar']=="":
                    objs = DBSession.query(self.__entity__).filter_by(nrohistorial=kw['hid'], ultimaversion=0).all()
                else:
                    objs = DBSession.query(self.__entity__).filter((Item.nrohistorial==kw['hid'])& (Item.ultimaversion==0) & (Item.version ==kw['buscar'])).all()
                

            else:
                
                objs = DBSession.query(self.__entity__).filter_by(nrohistorial=kw['hid'], ultimaversion=0).all()
        else:
            
            objs = DBSession.query(self.__entity__).all()

        count = len(objs)
        self.__count__ = count
        return count, objs    
Exemplo n.º 22
0
	def importar_este_tipo(self, idtipo, idfase):
		"""
		Se obtiene de la BD el tipo de item y sus atributos
		"""
		tipo = DBSession.query(TipoItem).get(idtipo)
		atributos = DBSession.query(AtributoTipoItem).\
						filter(AtributoTipoItem.tipo_item==tipo.id_tipo_item)
		"""
		Se settean los valores de la copia
		El nuevo tipo de item (copia_tipo )pertenecera a esta fase ahora
		"""
		copia_tipo = TipoItem()
		copia_tipo.nombre = tipo.nombre
		copia_tipo.descripcion = tipo.descripcion
		copia_tipo.fase = idfase
		copia_tipo.codigo = tipo.codigo
		'''
		Se settean los valores para cada copia_atributo
		'''
		for atributo in atributos:
			copia_atributo = AtributoTipoItem()
			copia_atributo.nombre = atributo.nombre
			copia_atributo.tipo_id = atributo.tipo_id
			copia_tipo.atributos.append(copia_atributo)

		DBSession.add(copia_tipo)
		flash("El tipo de item "+str(tipo.nombre)+
										" pertenece ahora a esta fase")
		redirect("/miproyecto/fase/tipo_item/importar/"+str(idfase))
Exemplo n.º 23
0
    def _do_get_provider_count_and_objs(self, **kw):
        limit = kw.get('limit', None)
        offset = kw.get('offset', None)
        order_by = kw.get('order_by', None)
        desc = kw.get('desc', False)
        #objs = DBSession.query(self.__entity__).filter_by(idFase=1).all()

        if len(kw) > 0:
            objs = DBSession.query(
                self.__entity__).filter((RelacionItem.idItem1 == kw['iid']) | (
                    RelacionItem.idItem2 == kw['iid'])).all()
            listarelaciones = DBSession.query(
                self.__entity__).filter((RelacionItem.idItem1 == kw['iid']) | (
                    RelacionItem.idItem2 == kw['iid'])).all()

            for x in range(len(listarelaciones)):
                item1 = DBSession.query(Item).filter_by(
                    id=listarelaciones[x].idItem1).first()
                item2 = DBSession.query(Item).filter_by(
                    id=listarelaciones[x].idItem2).first()

                if (int(item1.ultimaversion) != 1) | (int(item2.ultimaversion)
                                                      != 1):
                    objs.remove(listarelaciones[x])
        else:
            objs = DBSession.query(self.__entity__).all()

        count = len(objs)
        self.__count__ = count
        return count, objs
Exemplo n.º 24
0
Arquivo: util.py Projeto: mbaez/SAP
	def asociar_usuario_fase(self, usuario_id, fase_id):
		"""
		Asocia los permisos de un usuario con una fase, asi los usuarios que posean
		el rol estaran asociados a la fase.

		@type  usuario_id  : String
		@param usuario_id : Codigo del rol

		@type  fase_id   : Integer
		@param fase_id   : Identificador de la fase

		@rtype  : Rol
		@return : El rol que es aplicado a la fase.
		"""

		fase = DBSession.query(Fase).get(fase_id)
		#Se obtienen los permisos del template
		permisos_rol = self.distinct(DBSession.query(Permiso).\
						filter(RolPermisoProyecto.permiso_id == Permiso.permiso_id).\
						filter(RolPermisoProyecto.proyecto_id == fase.proyecto)
						)

		#Se se asocian el rol con la fase
		for permiso in permisos_rol:

			rpu = UsuarioPermisoFase()

			rpu.fase_id = fase_id
			rpu.usuario_id = usuario_id
			rpu.permiso_id = permiso.permiso_id
			#Asocia el rol con los permisos y la fase
			DBSession.add(rpu)
Exemplo n.º 25
0
 def view(self, fileid):
     iid = DBSession.query(Adjuntos.idItem).filter_by(id=fileid).first()
     log.debug("iidssss: %s" % iid)
     try:
         userfile = DBSession.query(Adjuntos).filter_by(id=fileid).one()
     except:
         redirect("../../adjuntos/new/adjuntos/new")
     content_types = {
         'display': {},
         'download': {
             '.pdf': 'application/pdf',
             '.zip': 'application/zip',
             '.rar': 'application/x-rar-compressed',
             '.png': 'image/jpeg',
             '.jpeg': 'image/jpeg',
             '.jpg': 'image/jpeg',
             '.gif': 'image/jpeg',
             '.txt': 'text/plain'
         }
     }
     for file_type in content_types['display']:
         if userfile.filename.endswith(file_type):
             response.headers["Content-Type"] = content_types['display'][
                 file_type]
     for file_type in content_types['download']:
         if userfile.filename.endswith(file_type):
             response.headers["Content-Type"] = content_types['download'][
                 file_type]
             response.headers[
                 "Content-Disposition"] = 'attachment; filename="' + userfile.filename + '"'
     if userfile.filename.find(".") == -1:
         response.headers["Content-Type"] = "text/plain"
     return userfile.filecontent
Exemplo n.º 26
0
    def _do_get_provider_count_and_objs(self, **kw):
        limit = kw.get('limit', None)
        offset = kw.get('offset', None)
        order_by = kw.get('order_by', None)
        desc = kw.get('desc', False)
        #objs = DBSession.query(self.__entity__).filter_by(idFase=1).all()

        if len(kw) > 0:
            if len(kw) > 1:
                #objs = DBSession.query(self.__entity__).filter((Fase.idproyec==kw['pid']) & (Fase.nombre.ilike('%'+str(kw['buscar'])+'%'))).all()

                if kw['buscar'] == "":
                    objs = DBSession.query(self.__entity__).filter_by(
                        nrohistorial=kw['hid'], ultimaversion=0).all()
                else:
                    objs = DBSession.query(self.__entity__).filter(
                        (Item.nrohistorial == kw['hid'])
                        & (Item.ultimaversion == 0)
                        & (Item.version == kw['buscar'])).all()

            else:

                objs = DBSession.query(self.__entity__).filter_by(
                    nrohistorial=kw['hid'], ultimaversion=0).all()
        else:

            objs = DBSession.query(self.__entity__).all()

        count = len(objs)
        self.__count__ = count
        return count, objs
Exemplo n.º 27
0
Arquivo: util.py Projeto: mbaez/SAP
	def asignar_rol_usuario(self,usuario_id , cod_rol, id_proyecto):
		"""
		Asigna un rol asociado a un proyecto al usuario determinado.

		@type  usuario_id  : Integer
		@param usuario_id  : Identificador del usuario

		@type  cod_rol    : String
		@param cod_rol    : Codigo del rol

		@type  id_proyecto : Integer
		@param id_proyecto : Identificador del proyecto al cual se va aplicar el rol

		@rtype  : Rol
		@return : El rol que es asignado al usuario.
		"""
		#Se obtiene el rol con el nombre correspondiente
		rol = rol_util.get_by_codigo(cod_rol)
		#Se verifica si el usuario posee el rol
		rol_usuario = usuario_util.usuario_has_rol(usuario_id, rol)
		#si no posee el rol, se le asigna
		if rol_usuario == None:
			rol_usuario = RolUsuario()
			rol_usuario.usuario_id = usuario_id
			rol_usuario.rol_id = rol.rol_id

			DBSession.add(rol_usuario)

		return rol
Exemplo n.º 28
0
Arquivo: util.py Projeto: mbaez/SAP
	def proyectGraphConstructor(self, idproyecto):
		fases = DBSession.query(Fase).filter(Fase.proyecto==idproyecto).all()
		grafo = digraph()
		items = []
		itemsId = []

		#se "obtienen los items de cada fase
		for fase in fases:
			items = items + list(DBSession.query(Item).filter(Item.fase==fase.id_fase))

		for item in items:
			grafo.add_nodes([item.id_item])

		#guardar los ids de los items
		for item in items:
			itemsId = itemsId + [item.id_item]
 		"""
		Se busca en la tabla RelacionItem todas las relaciones
		que contengan a los items del proyecto
		"""
		relaciones = DBSession.query(RelacionItem).\
						filter((RelacionItem.id_item_actual).in_(itemsId)).\
						all()

		#Se añaden las aristas entre los items relacionados
		for relacion in relaciones:
			grafo.add_edge((relacion.id_item_actual,relacion.id_item_relacionado))


		return grafo
Exemplo n.º 29
0
    def new(self, lid=None, *args, **kw):

        tmpl_context.widget = self.new_form

        if len(kw) < 2:
            """-----obtiene el idFase de la en el que esta la linea base------- """

            fid = DBSession.query(LineaBase.idFase).filter_by(id=lid).first()
            log.debug("fidddd= %s" % fid)
            """-----------------------------------------------------------------"""

            emfaseactual = [
                x for x in DBSession.query(Item.id, Item.nombre).filter_by(
                    idFase=fid, idLineaBase=None).all()
            ]
            return dict(value={'lineabase': lid},
                        model=self.model.__name__,
                        items_options=itemfaseactual)
            """Este else es como el Post.Como,al guardar no se va al Post,vuelve al new, entonces se le creo este "else" """
        else:

            kw2 = dict()
            kw2['id'] = kw['items']
            kw2['idLineaBase'] = kw['lineabase']
            self.provider.update(self.model, params=kw2)

            raise redirect('../' + '../itemlineabase/?lid=' + kw['lineabase'])
Exemplo n.º 30
0
	def borrarRelacion(self, item1, item2, idfase, **kw):

		if not self.puede_borrar(item1, item2, idfase):
			flash ("No se peude borrar la relacion! deja huerfanos", 'warning')
			redirect("/miproyecto/fase/relacion/list/"+idfase)

		#auditar items y aumentar su version
		item_1 = DBSession.query(Item).get(item1)
		item_2 = DBSession.query(Item).get(item2)

		item_util.audit_item(item_1)
		item_util.audit_item(item_2)

		item_1.version += 1
		item_2.version += 1

		item_1.estado = 3
		item_2.estado = 3

		DBSession.add(item_1)
		DBSession.add(item_2)

		DBSession.delete(DBSession.query(RelacionItem).\
					filter(RelacionItem.id_item_actual==item1).\
					filter(RelacionItem.id_item_relacionado==item2).\
					one())

		#marcar en revision los relacionados
		fase = DBSession.query(Fase).get(item_1.fase)
		grafo = item_util.proyectGraphConstructor(fase.proyecto)
		item_util.marcar_en_revision(grafo, item_1.id_item)
		item_util.marcar_en_revision(grafo, item_2.id_item)

		flash("Se ha eliminado la relacion: "+item1+" <--> "+item2)
		redirect("/miproyecto/fase/relacion/list/"+idfase)
Exemplo n.º 31
0
    def put(self, *args, **kw):
        """update"""
        pks = self.provider.get_primary_fields(self.model)
        for i, pk in enumerate(pks):
            if pk not in kw and i < len(args):
                kw[pk] = args[i]

        idproyec = DBSession.query(
            Fase.idproyec).filter_by(id=kw['id']).first()
        if kw['nombre'] == None:
            flash("Una fase debe tener un nombre", "error")
            redirect('/fase/' + kw['id'] + '/edit')

        nombreduplicado = DBSession.query(
            Fase.nombre).filter((Fase.idproyec == idproyec)
                                & (Fase.id != kw['id'])
                                & (Fase.nombre == kw['nombre'])).first()

        if nombreduplicado != None:
            flash("Ya existe una fase con el mismo nombre", "error")
            redirect('/fase/' + kw['id'] + '/edit')

        self.provider.update(self.model, params=kw)
        idProy = DBSession.query(Fase.idproyec).filter_by(id=kw['id']).first()

        redirect('../?pid=' + str(idProy[0]))
Exemplo n.º 32
0
    def _do_get_provider_count_and_objs(self ,**kw):
        limit = kw.get('limit', None)
        offset = kw.get('offset', None)
        order_by = kw.get('order_by', None)
        desc = kw.get('desc', False)
        
        if len(kw) > 0:
            """Se extrae el id del usuario quien inicio sesion"""
            idUsuario= [x for x in DBSession.query(User.user_id).filter_by(user_name=request.identity['repoze.who.userid'])]

            """Se extrae los id de las fases en la cual el usuario tiene permiso """
            idsfases=[x for x in DBSession.query(ProyFaseUsuario.idFase).filter_by(idProyecto=kw['pid'] , iduser=idUsuario[0]).distinct()]
            
            fases=[]
            longitud=len(idsfases)
            
            
            if len(kw) > 1:
                for y in range(longitud):
                    visualizar=DBSession.query(self.__entity__).filter((Fase.id==idsfases[y])  & (Fase.nombre.ilike('%'+str(kw['buscar'])+'%'))).first()
                    if visualizar != None:
                        fases.append(visualizar)
            else:
                for y in range(longitud):
                    fases.append(DBSession.query(self.__entity__).filter_by(id=idsfases[y]).first())
            objs=fases
            
        else:
            objs = DBSession.query(self.__entity__).all()
        count = len(objs)
        self.__count__ = count
        return count, objs    
Exemplo n.º 33
0
	def put(self, args={}, **kw):
		"""
		Evento invocado luego de un evento post en el form de editar
		ecargado de persistir las modificaciones de las instancias.

		@type  args : Hash
		@param args : Argumentos de template

		@type  kw : Hash
		@param kw : Keywords

		"""
		#Se obtiene de la base de datos el proyecto modifcado
		proyecto = DBSession.query(Proyecto).get(int(kw['id_proyecto']))
		#Se actualizan unicamente los campos actualizables
		proyecto.nombre=kw['nombre']
		proyecto.nro_fases = kw['nro_fases']
		proyecto.descripcion = kw['descripcion']

		#asignar lider
		proyecto.lider = DBSession.query(Usuario).get(kw['lider'])
		util.asignar_lider(proyecto)

		DBSession.merge(proyecto)
		flash("El proyecto ha sido '" +proyecto.nombre+ "' modificado correctamente.")
		redirect("/administracion/proyecto/list")
Exemplo n.º 34
0
Arquivo: checker.py Projeto: mbaez/SAP
	def get_usuarios_by_fase(self, id, permiso_name='ver_fase'):
		"""
		Obtiene una lista de los usuarios que poseen el permiso especificado sobre
		un proyecto.

		@type  id  : Integer
		@param id  : Identificador de la fase

		@type  permiso_name : String
		@param permiso_name : Nombre del permiso

		@rtype  : Usuario []
		@return : Lista de usuarios que poseen el permiso sobre la fase
		"""
		usuarios = DBSession.query(Usuario).\
					filter(UsuarioPermisoFase.usuario_id == Usuario.usuario_id).\
					filter(UsuarioPermisoFase.fase_id == id).\
					filter(UsuarioPermisoFase.permiso_id == Permiso.permiso_id).\
					filter(Permiso.nombre == permiso_name).all()
		#Si el usuairo es lider del proyecto se saltan los controles
		user = checker.get_current_user()
		fase = DBSession.query(Fase).get(id)
		rol = self.get_rol_by_codigo('lider_' + str(fase.proyecto))

		if self.usuario_has_rol(user.usuario_id, rol ):
			usuarios.append(user)

		return self.distinct(usuarios)
Exemplo n.º 35
0
	def post_delete(self, id_linea_base, **kw):
		lb = DBSession.query(LineaBase).get(id_linea_base)
		#guardar el id de la fase de la linea base para el redirect
		idfase = lb.fase
		#borrar la linea base
		DBSession.delete(lb)
		flash("La linea base ha sido eliminada correctamente.")
		redirect("/miproyecto/fase/linea_base/list/"+str(idfase))
Exemplo n.º 36
0
Arquivo: item.py Projeto: mbaez/SAP
	def aprobar_item(self, iditem, **kw):
		"""
		Metodo para aprobar un item
		"""
		item = DBSession.query(Item).get(iditem)
		item.estado = 1
		idfase = item.fase
		DBSession.merge(item)
		flash("El item " + item.codigo+ " ha sido aprobado correctamente")
		redirect('/miproyecto/fase/item/ver/'+str(iditem))
Exemplo n.º 37
0
Arquivo: checker.py Projeto: mbaez/SAP
	def commit_transaction(self, can_commit):
		"""
		Realiza commit de la transaccion

		@type  can_commit  : Boolean
		@param can_commit  : Variable de control de la transaccion
		"""
		if can_commit == True :
			DBSession.flush()
			transaction.commit()
Exemplo n.º 38
0
Arquivo: item.py Projeto: mbaez/SAP
	def poner_en_revision(self, id_item):

		item = DBSession.query(Item).get(id_item)
		fase = DBSession.query(Fase).get(item.fase)
		grafo = item_util.proyectGraphConstructor(fase.proyecto)

		item_util.marcar_en_revision(grafo, item.id_item)

		flash("El item " +str(item.nombre)+ " fue puesto en revision.", 'warning')
		redirect('/miproyecto/fase/item/ver/'+str(item.id_item))
Exemplo n.º 39
0
    def new(self,pid=None ,*args, **kw):
        """Display a page to show a new record."""
        tmpl_context.widget = self.new_form
        
        fases = [x for x in DBSession.query(Fase.id, Fase.nombre).filter_by(idproyec=pid)]
        usuarios = [x for x in (DBSession.query(User.user_id, User.user_name))]
        usuarios.remove(usuarios[0])
        #permisos= [x for x in (DBSession.query(Permission. permission_id ,Permission. permission_name))]

        return dict(value={'idProyecto':pid}, model=self.model.__name__, fases_options=fases, usuarios_options=usuarios)
Exemplo n.º 40
0
    def new(self, tid=None, *args, **kw):
        """Display a page to show a new record."""

        fid = DBSession.query(TipoDeItem.idFase).filter_by(id=tid).first()

        comlejidadoptions = [
            (1, "Muy Baja (1)"),
            (2, "Baja (2)"),
            (3, "Media (3)"),
            (4, "Alta (4)"),
            (5, "Muy Alta (5)"),
        ]

        campos = [
            TextField("nombre", label_text="Nombre", disabled=True),
            Spacer(),
            HiddenField("idFase", label_text="idFase"),
            HiddenField("version", label_text="version"),
            HiddenField("estado", label_text="estado"),
            SingleSelectField("complejidad", options=comlejidadoptions, label_text="complejidad"),
            Spacer(),
            HiddenField("nrohistorial", label_text="nrohistorial"),
            HiddenField("idTipoDeItem", label_text="idTipoDeItem"),
        ]

        camponombre = DBSession.query(Campos.tipoDeDato, Campos.nombre, Campos.id).filter_by(idTipoDeItem=tid).all()

        for ct in camponombre:
            # log.debug(ct[1])
            if str(ct[0]).__eq__("date"):
                campo1 = CalendarDatePicker(str(ct[2]), label_text=ct[1] + " (" + ct[0] + ")", date_format="%d/%m/%Y")
            else:
                campo1 = TextField(str(ct[2]), label_text=ct[1] + " (" + ct[0] + ")")

            campos.append(campo1)
            campos.append(Spacer())

        # self.new_form = TableForm('tf', fields=campos, submit_text='Guardar')
        # tmpl_context.widget = self.new_form

        tmpl_context.widget = TableForm("create_table_form", fields=campos, submit_text="Guardar")

        """El tipo de Item elegido es extraido para  asignar su nombre al item"""
        tipo_item_elegido = DBSession.query(TipoDeItem).filter_by(id=tid).first()

        nrogenerado = tipo_item_elegido.nrogeneracion + 1

        if int(nrogenerado) < 10:
            nombreitem = tipo_item_elegido.nombre + "-00" + str(nrogenerado)
        elif int(nrogenerado) < 100:
            nombreitem = tipo_item_elegido.nombre + "-0" + str(nrogenerado)
        else:
            nombreitem = tipo_item_elegido.nombre + "-" + str(nrogenerado)

        return dict(value={"idTipoDeItem": tid, "idFase": fid, "nombre": nombreitem}, model=self.model.__name__)
Exemplo n.º 41
0
 def new(self,iid=None ,*args, **kw):
     
     """Se obtiene el id del tipo de item elegido para el item"""
     idtipo=DBSession.query(Item.idTipoDeItem).filter_by(id=iid).first()
     
     atributos= [x for x in (DBSession.query(Campos.nombre, Campos.nombre).filter_by(idTipoDeItem=idtipo))]
     
     
     
     tmpl_context.widget = self.new_form
     return dict(value={'iditem':iid}, model=self.model.__name__, atributos_options=atributos)
Exemplo n.º 42
0
    def _do_get_provider_count_and_objs(self, **kw):
        limit = kw.get('limit', None)
        offset = kw.get('offset', None)
        order_by = kw.get('order_by', None)
        desc = kw.get('desc', False)

        if len(kw) > 0:
            objs = DBSession.query(
                self.__entity__).filter_by(idTipoDeItem=kw['tid']).all()
        else:
            #objs = DBSession.query(self.__entity__).filter_by(idproyec=kw[result['pid']]).all()
            objs = DBSession.query(self.__entity__).all()
        count = len(objs)
        self.__count__ = count
        return count, objs
Exemplo n.º 43
0
    def aprobaritem(self, **kw):
        item = DBSession.query(Item).filter_by(id=kw['iid']).first()
        item.estado = 'aprobado'
        fid = DBSession.query(Item.idFase,
                              Item.nombre).filter_by(id=kw['iid']).first()

        if item.idLineaBase != None:
            listaitem = DBSession.query(Item).filter_by(
                idLineaBase=item.idLineaBase, ultimaversion=1).all()
            longitud = len(listaitem)
            contadoraprob = 0
            modificado = False

            for x in range(longitud):
                #Verificar si todos los item de la linea base estan aprobados
                if str(listaitem[x].estado).__eq__('aprobado'):
                    contadoraprob = contadoraprob + 1
                #Verificar si existe por lo menos un item en estado modificado
                elif str(listaitem[x].estado).__eq__('modificado'):
                    modificado = True

            #Entra si todos los item de la linea base estan aprobados
            if contadoraprob == longitud:
                lineabase = DBSession.query(LineaBase).filter_by(
                    id=item.idLineaBase).first()
                lineabase.estado = 'cerrada'

                cantItemLB = DBSession.query(Item).filter_by(
                    idLineaBase=lineabase.id, ultimaversion=1).all()
                cantItemFase = DBSession.query(Item).filter_by(
                    idFase=fid[0], ultimaversion=1).all()

                fase = DBSession.query(Fase).filter_by(id=fid[0]).first()

                if len(cantItemLB) == len(cantItemFase):
                    fase.estado = 'lineaBaseTotal'
                    flash("El item \"" +str(fid[1]) +"\" fue aprobado, "\
                      "la linea base \"" + lineabase.nombre + "\" fue cerrada y "\
                      "la fase \""+fase.nombre+"\" paso al estado de \"Linea Base Total\"")
                    redirect('/item/?fid=' + str(fid[0]))
                else:
                    fase.estado = 'lineaBaseParcial'
                    flash("El item \"" +str(fid[1]) +"\" fue aprobado, "\
                      "la linea base \"" + lineabase.nombre + "\" fue cerrada y "\
                      "la fase \""+fase.nombre+"\" paso al estado de \"Linea Base Parcial\"")
                    redirect('/item/?fid=' + str(fid[0]))

            #Entra si no existem item modificados en la linea base"""
            elif not modificado:
                lineabase = DBSession.query(LineaBase).filter_by(
                    id=item.idLineaBase).first()
                lineabase.estado = 'comprometida'
                flash("El item \"" +str(fid[1]) +"\" fue aprobado y "\
                      "la linea base \"" + lineabase.nombre + "\" ahora esta comprometida")
                redirect('/item/?fid=' + str(fid[0]))

        flash("El item \"" + str(fid[1]) + "\" fue aprobado")
        redirect('/item/?fid=' + str(fid[0]))
Exemplo n.º 44
0
 def get_all(self, tid=None, *args, **kw):
     kw['tid'] = tid
     result = super(CamposController, self).get_all(*args, **kw)
     result['tid'] = tid
     fid = DBSession.query(TipoDeItem.idFase).filter_by(id=tid).first()
     result['fid'] = fid[0]
     return result
Exemplo n.º 45
0
    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))

        iteminstancia = DBSession.query(
            Item.id).filter_by(idTipoDeItem=pklist).all()
        cantidadinstancia = len(iteminstancia)
        #log.debug('iteminstancia: %s' %iteminstancia)

        if cantidadinstancia > 0:
            value = '<div><a class="edit_link" href="'+pklist+'/edit" style="text-decoration:none">edit</a>'\
            '<div><a class="loginlogout" href="/campos/?tid='+pklist+'">AtributosEspecificos</a></div><br/></div>'

        else:
            value = '<div><div><a class="edit_link" href="'+pklist+'/edit" style="text-decoration:none">edit</a>'\
            '</div><div>'\
            '<div><a class="loginlogout" href="/campos/?tid='+pklist+'">AtributosEspecificos</a></div><br/>'\
            '<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></div>'

        return value
Exemplo n.º 46
0
    def calcularimpacto(self, **kw):
        """ids[] es un vector en el cual se guardaran los 'id' """
        ids = []
        itemraiz = DBSession.query(Item).filter_by(id=kw['iid']).first()
        ids.append(itemraiz)
        impacto = 0
        relacionesTotal = []

        self.recorrerArbolAtras(ids, itemraiz, relacionesTotal)
        self.recorrerArbolAdelante(ids, itemraiz, relacionesTotal)

        for item in ids:
            complejidad = int(item.complejidad)
            impacto = impacto + complejidad

        nodosporfase = []

        while len(ids) != 0:
            aux = []

            for item in ids:
                if ids[0].idFase == item.idFase:
                    aux.append(item)

            for item in aux:
                ids.remove(item)

            nodosporfase.append(aux)

        self.dibujar(relacionesTotal, nodosporfase, itemraiz)

        flash("El impacto de modificar el item \"" + itemraiz.nombre +
              "\" es: " + str(impacto))
        #redirect('/item/?fid='+str(fid[0]))
        return dict(link={'url': '/item/?fid=' + str(itemraiz.idFase)})
Exemplo n.º 47
0
    def dibujar(self, *args):
        """Dibuja un grafo dirigido a partir de una matriz de relaciones
        y una matriz de nodos"""

        relaciones = args[0]
        nodosporfase = args[1]
        itemraiz = args[2]

        g = self.grafo_de_relaciones(relaciones)

        for fase in nodosporfase:
            subg = pydot.Subgraph('', rank='same')
            nombreFase = DBSession.query(
                Fase.nombre).filter_by(id=fase[0].idFase).first()
            subg.add_node(pydot.Node(nombreFase[0],label=nombreFase[0],\
                                    color='white'))

            for nodo in fase:
                if nodo == itemraiz:
                    subg.add_node(pydot.Node(nodo.id,\
                            label=str(nodo.nombre)+"\nPeso: "+str(nodo.complejidad),\
                            color='PaleGreen3', style='filled'))
                else:
                    subg.add_node(pydot.Node(nodo.id,\
                           label=str(nodo.nombre)+"\nPeso: "+str(nodo.complejidad),\
                           color='NavajoWhite1', style='filled'))

            g.add_subgraph(subg)

        g.write_png('sap/public/images/example2_graph.png')
Exemplo n.º 48
0
class LineaBaseForm(TableForm):

    #action = 'CrearLineaBase'

    #genre_options = [x for x in (DBSession.query(Group).filter_by(group_name="lider").one()).users]
    item_options = [x for x in (DBSession.query(Item.id, Item.nombre))]

    fields = [
        TextField('nombre', label_text='Nombre'),
        TextField('idFase', label_text='idFase'),
        Spacer(),
        #TextField('idItem', label_text='idItem'),
        MultipleSelectField('idItem', options=item_options,
                            label_text='Items'),
        #SingleSelectField('idItem', options=item_options),
        Spacer(),
        TextField('estado', label_text='estado'),
        Spacer(),
        CalendarDatePicker('fechaCreacion', date_format='%d-%m-%y'),
        Spacer(),

        #SingleSelectField('liderProyecto', options=genre_options),
        #TextField('liderProyecto', label_text='Lider de Proyecto')
    ]
    submit_text = 'Crear LineaBase'
Exemplo n.º 49
0
    def _do_get_provider_count_and_objs(self, **kw):
        limit = kw.get('limit', None)
        offset = kw.get('offset', None)
        order_by = kw.get('order_by', None)
        desc = kw.get('desc', False)
        #objs = DBSession.query(self.__entity__).filter_by(idFase=1).all()

        if len(kw) > 0:
            objs = DBSession.query(
                self.__entity__).filter_by(iditem=kw['iid']).all()
        else:
            objs = DBSession.query(self.__entity__).all()

        count = len(objs)
        self.__count__ = count
        return count, objs
Exemplo n.º 50
0
    def recorrerArbolAtras(self, *args):
        ids = args[0]
        itemraiz = args[1]
        """-------------Obtiene de la BD las relaciones actuales del nodo en cuestion---"""
        relaciones = DBSession.query(RelacionItem.idItem1,RelacionItem.idItem2).\
                        filter((RelacionItem.idItem1==itemraiz)).all()
        """------------------------------------------------------------------------"""

        for relacion in relaciones:
            itemrelacion = DBSession.query(Item).filter_by(
                id=relacion.idItem2).first()

            if itemrelacion.ultimaversion == 1:
                if (ids.count(itemrelacion.id) < 1):
                    ids.append(itemrelacion.id)
                self.recorrerArbolAtras(ids, itemrelacion.id)
Exemplo n.º 51
0
    def new(self, tid=None, *args, **kw):
        """Display a page to show a new record."""

        fid = DBSession.query(TipoDeItem.idFase).filter_by(id=tid).first()
        """Extra los campos del tipo de Item elegido """
        """fields=[]
        campotipo= DBSession.query(Campos.tipoDeDato, Campos.nombre).filter_by(idTipoDeItem=13).all()
        for ct in campotipo:
            #log.debug(ct[1])
            campo1 = TextField(ct[1], label_text= ct[1])
            fields.append(campo1)
        
        item_add_form = ItemForm('create_item_form', fields)
        
        tmpl_context.widget = item_add_form
        """
        tmpl_context.widget = self.new_form
        #return dict(value=kw, model=self.model.__name__)

        #child_args=dict(child_args=form_fields_dict)

        return dict(value={
            'idTipoDeItem': tid,
            'idFase': fid,
        },
                    model=self.model.__name__)
Exemplo n.º 52
0
    def _do_get_provider_count_and_objs(self, **kw):
        limit = kw.get('limit', None)
        offset = kw.get('offset', None)
        order_by = kw.get('order_by', None)
        desc = kw.get('desc', False)

        if len(kw) > 0:
            objs = DBSession.query(self.__entity__).filter((
                Proyecto.liderProyecto == request.identity['repoze.who.userid']
            ) & (Proyecto.nombre.ilike('%' + str(kw['buscar']) + '%'))).all()
        else:
            objs = DBSession.query(self.__entity__).filter_by(
                liderProyecto=request.identity['repoze.who.userid']).all()

        count = len(objs)
        self.__count__ = count
        return count, objs
Exemplo n.º 53
0
    def _do_get_provider_count_and_objs(self, **kw):
        limit = kw.get('limit', None)
        offset = kw.get('offset', None)
        order_by = kw.get('order_by', None)
        desc = kw.get('desc', False)

        if len(kw) > 0:
            """Filtra para que liste solo las lineas bases que pertenece a la fase elegida """
            objs = DBSession.query(
                self.__entity__).filter_by(idFase=kw['fid']).all()

        else:
            objs = DBSession.query(self.__entity__).all()

        count = len(objs)
        self.__count__ = count
        return count, objs
Exemplo n.º 54
0
    def post_delete(self, *args, **kw):
        """This is the code that actually deletes the record"""
        pks = self.provider.get_primary_fields(self.model)
        d = {}
        for i, arg in enumerate(args):
            d[pks[i]] = arg
        """extraer el idFase para poder retornar en el estado anterior """
        idfase = DBSession.query(Item.idFase).filter_by(id=d['id']).first()
        """------------------------------------------------------------"""
        """Se crea objeto y cambia de estado """
        itemeDelete = DBSession.query(Item).filter_by(id=d['id']).first()
        itemeDelete.estado = "borrado"
        itemeDelete.ultimaversion = 0

        DBSession.add(itemeDelete)
        """---------Se borra las relaciones del Item Borrado--------------"""

        relaciones = DBSession.query(
            RelacionItem).filter((RelacionItem.idItem1 == d['id'])
                                 | (RelacionItem.idItem2 == d['id'])).all()

        longitud = len(relaciones)

        for x in range(longitud):
            DBSession.delete(relaciones[x])
        """---------------------------------------------------------------"""

        #self.provider.delete(self.model, d)

        #self.provider.delete(self.model, d)

        #redirect('./' + '../' * (len(pks) - 1))
        raise redirect('/item/?fid=' + str(idfase[0]))
Exemplo n.º 55
0
 def new(self, *args, **kw):
     """Display a page to show a new record."""
     tmpl_context.widget = self.new_form 
     
     lideres = [x for x in (DBSession.query(Group).filter_by(group_name="lider").one()).users]
     
     
     
     return dict(value=kw, model=self.model.__name__, lider_options=lideres)
Exemplo n.º 56
0
 def _do_get_provider_count_and_objs(self ,**kw):
     limit = kw.get('limit', None)
     offset = kw.get('offset', None)
     order_by = kw.get('order_by', None)
     desc = kw.get('desc', False)
     
     
     if len(kw) > 0:
         if len(kw) > 1:
             objs = DBSession.query(self.__entity__).filter((Fase.idproyec==kw['pid']) & (Fase.nombre.ilike('%'+str(kw['buscar'])+'%'))).all()
         else:
             objs = DBSession.query(self.__entity__).filter_by(idproyec=kw['pid']).all()
     else:
         #objs = DBSession.query(self.__entity__).filter_by(idproyec=kw[result['pid']]).all()
         objs = DBSession.query(self.__entity__).all()
     count = len(objs)
     self.__count__ = count
     return count, objs    
Exemplo n.º 57
0
    def post(self, *args, **kw):

        userfile = kw['userfile']
        log.debug("kwwww: %s" % kw)

        forbidden_files = [".js", ".htm", ".html"]
        for forbidden_file in forbidden_files:
            if userfile.filename.find(forbidden_file) != -1:
                return redirect("/adjuntos/new")
        filecontent = userfile.file.read()
        new_file = Adjuntos(filename=userfile.filename,
                            filecontent=filecontent)
        DBSession.add(new_file)
        DBSession.flush()
        redirect("/adjuntos/new")

        #self.provider.create(self.model, params=kw)

        raise redirect('/adjuntos/new')