def guardar_enviados_usuario(self, usuario, grupo, gmail_service):
        id_usr = ""  # Var. id usuario, destinatario emails
        lista_usr_grp = self.consultar_usuarios_grupo(
            grupo)  # Lista usuarios grupo
        ultimo_acceso = usuario.get_ultimo_acceso(
        )  # Obtengo fecha ultimo acceso usuario
        gmail_api = GmailAPI()  # Objeto de tipo GmailAPI
        query = ""  # Variable Temporal consulta a gmail api
        total = 0  # Var. guarda el total enviados a un usuario
        #fecha = dt.datetime.now().strftime("%Y/%m/%d")

        for it in lista_usr_grp:
            if usuario.get_email() != it.email:
                #query = 'to:' + it.email + ' after:' + ultimo_acceso
                #query = str('to:' + it.email)
                query = str('in:sent ' + it.email)
                usr_tmp = Usuario(email=it.email)  # Usuario Temporal
                id_usr = "******" + str(self.consultar_id_usuario(usr_tmp))
                emails_sent = gmail_api.ListMessagesMatchingQuery(
                    gmail_service, 'me', query)
                total = len(emails_sent)

                # Consulta para guardar en la base de datos
                consulta = (
                    "MATCH (u:Usuario{email:{E}}), (u2:Usuario{email:{E2}}),"
                    "(u)-[r:COM]-(u2) SET r." + id_usr + "={T}")

                self.graph.cypher.execute(consulta, {
                    'E': usuario.get_email(),
                    'E2': it.email,
                    'T': total
                })
    def consultar_enviados_usuario(self, usuario, grupo):
        id_usr = "******" + str(self.consultar_id_usuario(usuario))
        lista_usr = self.consultar_usuarios_grupo(grupo)
        id_usr2 = ""
        user_tmp = None
        datos = []

        for it in lista_usr:
            if it.email != usuario.get_email():
                user_tmp = Usuario(it.email)
                id_usr2 = "usr" + str(self.consultar_id_usuario(user_tmp))

                consulta = (
                    "MATCH (u:Usuario{email:{E}}), (u2:Usuario{email:{E2}}),"
                    "(u)-[r:COM]-(u2) RETURN u2.email AS email, r." + id_usr2 +
                    " AS env, r." + id_usr + " AS rec")
                try:
                    res = self.graph.cypher.execute(consulta, {
                        'E': usuario.get_email(),
                        'E2': it.email
                    })

                    datos.append((res[0].email, res[0].env, res[0].rec))
                except:
                    return -1

        return datos
示例#3
0
 def Diagrama_barras(self):
     barras = Usuario(email=self.usuario_actual,
                      ultimo_acceso="",
                      total_emails=0)
     aux = self.conexionDB.consultar_enviados_usuario(
         barras, self.grupo_actual)
     m = Graficos.DiagramaDeBarras(aux)
示例#4
0
 def Enviados(self):
     enviados = Usuario(email=self.item_integrante,
                        ultimo_acceso="",
                        total_emails=0)
     aux = self.conexionDB.consultar_enviados_usuario(
         enviados, self.grupo_actual)
     m = Graficos.graficaEnviados(aux, self.item_integrante)
示例#5
0
 def Abandonar_grupo(self):
     abandonar = Usuario(email=self.usuario_actual,
                         ultimo_acceso="",
                         total_emails=0)
     aux = self.conexionDB.eliminar_usuario_grupo(abandonar,
                                                  self.grupo_actual)
     self.info.listIntegrantes.clear()
     self.llenar_datos_grupo()
示例#6
0
    def cargar_usuario_actual(self):
        results = self.gmail_service.users().getProfile(userId='me').execute()
        email = results.get('emailAddress', [])
        total_mensajes = results.get('messagesTotal', [])
        fecha = dt.datetime.now().strftime("%Y/%m/%d")
        self.usr_actual = Usuario(email=email, ultimo_acceso=fecha,
                     total_emails=total_mensajes)

        # Consulta base datos
        u = self.conexionDB.consultar_usuario(self.usr_actual)
        if u == None:
            self.conexionDB.crear_usuario(self.usr_actual)
        else:
            self.cargar_datos_enviados(self.usr_actual, self.gmail_service)  # cargar datos
            self.conexionDB.act_ultimo_acceso_usr(self.usr_actual, fecha)
            self.conexionDB.act_total_emails_usr(self.usr_actual,
                                        total_mensajes)
            grupos = self.conexionDB.consultar_grupos_usuario(self.usr_actual)
            self.llenar_tabla_grupos(grupos)

        self.principal.lb_usuario.setText(self.usr_actual.get_email())
        self.principal.lb_total.setText(str(self.usr_actual.get_total_emails()))
示例#7
0
    def Eliminar_integrante(self):
        self.eliminar_seleccionado = Usuario(email=self.item_integrante,
                                             ultimo_acceso="",
                                             total_emails=0)

        if not self.conexionDB.consultar_propietario_grupo(
                self.eliminar_seleccionado, self.grupo_actual):
            aux = self.conexionDB.eliminar_usuario_grupo(
                self.eliminar_seleccionado, self.grupo_actual)
            self.info.listIntegrantes.clear()
            self.llenar_datos_grupo()
        else:
            QtGui.QMessageBox.warning(
                self, 'Información',
                'No se puede realizar la operación, debido a que'
                ' usted es el propietario del grupo.')
示例#8
0
    def eliminar_grp(self):
        grp = Grupo(self.item_nombre)
        res = self.conexionDB.consultar_propietario_grupo(self.usr_actual, grp)

        usr_tmp = None
        lista_usr = []

        if res == True:
            lista_usr = self.conexionDB.consultar_usuarios_grupo(grp)

            for it in lista_usr:
                usr_tmp = Usuario(it.email)
                self.conexionDB.eliminar_usuario_grupo(usr_tmp, grp)

            self.conexionDB.eliminar_grupo(grp)
            self.actualizar_tabla_grupos()
        else:
            QtGui.QMessageBox.warning(self, 'Error', 'Error al Eliminar'
                    ' grupo, usted no es el propietario.')
    def agregar_usuario_grupo(self, nuevo_usuario, grupo):
        lista_emails = []
        usr_tmp2 = None

        # Consulta si existe el usuario
        usuario_tmp = self.consultar_usuario(nuevo_usuario)
        lista_emails = self.consultar_usuarios_grupo(grupo)

        if usuario_tmp is None:
            self.crear_usuario(nuevo_usuario)
        else:
            for it in lista_emails:
                if it.email == usuario_tmp.get_email():
                    return

        self.crear_rel_usuario_grupo(nuevo_usuario, grupo, "M")

        for it in lista_emails:
            usr_tmp2 = Usuario(it.email)
            self.crear_rel_usuario_usuario(usr_tmp2, nuevo_usuario)
示例#10
0
    def cargar_usuario_actual(self):
        results = self.gmail_service.users().getProfile(userId='me').execute()
        email = results.get('emailAddress', [])
        total_mensajes = results.get('messagesTotal', [])
        fecha = dt.datetime.now().strftime("%Y/%m/%d")
        self.usr_actual = Usuario(email=email, ultimo_acceso=fecha,
                     total_emails=total_mensajes)

        # Consulta base datos
        u = self.conexionDB.consultar_usuario(self.usr_actual)
        if u == None:
            self.conexionDB.crear_usuario(self.usr_actual)
        else:
            self.cargar_datos_enviados(self.usr_actual, self.gmail_service)  # cargar datos
            self.conexionDB.act_ultimo_acceso_usr(self.usr_actual, fecha)
            self.conexionDB.act_total_emails_usr(self.usr_actual,
                                        total_mensajes)
            grupos = self.conexionDB.consultar_grupos_usuario(self.usr_actual)
            self.llenar_tabla_grupos(grupos)

        self.principal.lb_usuario.setText(self.usr_actual.get_email())
        self.principal.lb_total.setText(str(self.usr_actual.get_total_emails()))
    def consultar_usuario(self, usuario):
        """
            Permite consultar a la base de datos, por un usuario específico y
            sus datos.
            Args:
                usuario(Usuario): Objeto de tipo Usuario, del cual se obtiene
                    el email del usuario.
            Returns:
                u(Usuario): Objeto de tipo Usuario en caso de que exista el
                    usuario, de lo contrario retorna None (Null).
        """
        u = None  # Objeto que guardara el usuario si existe
        consulta = (
            "MATCH (u:Usuario{email:{E}}) RETURN u.email AS email,"
            "u.ultimo_acceso AS ultimo_acceso, u.total_emails AS total_emails")

        res = self.graph.cypher.execute(consulta, {"E": usuario.get_email()})

        if len(res) != 0:
            # Creamos un usuario
            u = Usuario(res[0].email, res[0].ultimo_acceso,
                        res[0].total_emails)

        return u  # Retorna el usuario
示例#12
0
class Principal(QtGui.QMainWindow):
    """
        Clase que hace referencia a la ventana principal de la aplicación y
        todas las funciones. (Aún en desarrollo)

        Args:
            permisos (Gmail API Service Object): Servicio de autorización
                                                de acceso a la cuenta.

        Attributes:
            principal (Ui_principal): Ventana principal del entorno en Qt.
            gmail_service:Servicio de autorización de acceso a la cuenta gmail
            usr_actual(Usuario):Carga los datos del usuario de la sesión
                            actual
    """
    def __init__(self, permisos):
        super(Principal, self).__init__()
        self.principal = Ui_principal()
        self.principal.setupUi(self)
        self.gmail_service = permisos
        self.item_nombre = ""
        self.usr_actual = None
        self.grupo_actual = None
        self.conexionDB = ConexionBaseDatos()    # Creamos una conexion DB
        self.conectarSlots()    # Funcion que conecta las funciones
        self.cargar_usuario_actual()

    def conectarSlots(self):
        # Conectando Slots y Signals
        QtCore.QObject.connect(self.principal.btInfo,QtCore.SIGNAL('clicked()'),
                            self.info_grupo)
        QtCore.QObject.connect(self.principal.btNuevo,QtCore.SIGNAL('clicked()'),
                            self.nuevo_grupo)
        self.principal.listaGrupos.itemClicked.connect(self.item_seleccionado)
        QtCore.QObject.connect(self.principal.btActualizar,QtCore.SIGNAL('clicked()'),
                            self.actualizar_tabla_grupos)
        QtCore.QObject.connect(self.principal.btEliminar,QtCore.SIGNAL('clicked()'),
                            self.eliminar_grp)

    def item_seleccionado(self, item):
        self.item = item
        self.item_nombre = item.text()

    def cargar_usuario_actual(self):
        results = self.gmail_service.users().getProfile(userId='me').execute()
        email = results.get('emailAddress', [])
        total_mensajes = results.get('messagesTotal', [])
        fecha = dt.datetime.now().strftime("%Y/%m/%d")
        self.usr_actual = Usuario(email=email, ultimo_acceso=fecha,
                     total_emails=total_mensajes)

        # Consulta base datos
        u = self.conexionDB.consultar_usuario(self.usr_actual)
        if u == None:
            self.conexionDB.crear_usuario(self.usr_actual)
        else:
            self.cargar_datos_enviados(self.usr_actual, self.gmail_service)  # cargar datos
            self.conexionDB.act_ultimo_acceso_usr(self.usr_actual, fecha)
            self.conexionDB.act_total_emails_usr(self.usr_actual,
                                        total_mensajes)
            grupos = self.conexionDB.consultar_grupos_usuario(self.usr_actual)
            self.llenar_tabla_grupos(grupos)

        self.principal.lb_usuario.setText(self.usr_actual.get_email())
        self.principal.lb_total.setText(str(self.usr_actual.get_total_emails()))

    def info_grupo(self):
        self.grupo_actual = Grupo(nombre=self.item_nombre, descripcion="")
        aux=self.conexionDB.consultar_propietario_grupo(self.usr_actual,self.grupo_actual)
        info = InformacionGrupo(self.conexionDB,self.item_nombre,self.usr_actual.get_email(),aux)
        self.actualizar_tabla_grupos()

    def nuevo_grupo(self):    # Pruebas
        nuevo = NuevoGrupo(self.conexionDB, self.usr_actual)
        self.actualizar_tabla_grupos()

    def llenar_tabla_grupos(self, grupos):
        self.principal.listaGrupos.clear()
        if len(grupos) != 0:
            for item in grupos:
                self.principal.listaGrupos.addItem(item.nombre)

    def actualizar_tabla_grupos(self):
        grupos = self.conexionDB.consultar_grupos_usuario(self.usr_actual)
        self.llenar_tabla_grupos(grupos)

    def cargar_datos_enviados(self, usuario, gmail_service):
        grupos = self.conexionDB.consultar_grupos_usuario(usuario)

        for it in grupos:
            grp = Grupo(nombre=it.nombre)
            self.conexionDB.guardar_enviados_usuario(usuario, grp, gmail_service)

    def eliminar_grp(self):
        grp = Grupo(self.item_nombre)
        res = self.conexionDB.consultar_propietario_grupo(self.usr_actual, grp)

        usr_tmp = None
        lista_usr = []

        if res == True:
            lista_usr = self.conexionDB.consultar_usuarios_grupo(grp)

            for it in lista_usr:
                usr_tmp = Usuario(it.email)
                self.conexionDB.eliminar_usuario_grupo(usr_tmp, grp)

            self.conexionDB.eliminar_grupo(grp)
            self.actualizar_tabla_grupos()
        else:
            QtGui.QMessageBox.warning(self, 'Error', 'Error al Eliminar'
                    ' grupo, usted no es el propietario.')
示例#13
0
class Principal(QtGui.QMainWindow):
    """
        Clase que hace referencia a la ventana principal de la aplicación y
        todas las funciones. (Aún en desarrollo)

        Args:
            permisos (Gmail API Service Object): Servicio de autorización
                                                de acceso a la cuenta.

        Attributes:
            principal (Ui_principal): Ventana principal del entorno en Qt.
            gmail_service:Servicio de autorización de acceso a la cuenta gmail
            usr_actual(Usuario):Carga los datos del usuario de la sesión
                            actual
    """
    def __init__(self, permisos):
        super(Principal, self).__init__()
        self.principal = Ui_principal()
        self.principal.setupUi(self)
        self.gmail_service = permisos
        self.item_nombre = ""
        self.usr_actual = None
        self.grupo_actual = None
        self.conexionDB = ConexionBaseDatos()    # Creamos una conexion DB
        self.conectarSlots()    # Funcion que conecta las funciones
        self.cargar_usuario_actual()

    def conectarSlots(self):
        # Conectando Slots y Signals
        QtCore.QObject.connect(self.principal.btInfo,QtCore.SIGNAL('clicked()'),
                            self.info_grupo)
        QtCore.QObject.connect(self.principal.btNuevo,QtCore.SIGNAL('clicked()'),
                            self.nuevo_grupo)
        self.principal.listaGrupos.itemClicked.connect(self.item_seleccionado)
        QtCore.QObject.connect(self.principal.btActualizar,QtCore.SIGNAL('clicked()'),
                            self.actualizar_tabla_grupos)
        QtCore.QObject.connect(self.principal.btEliminar,QtCore.SIGNAL('clicked()'),
                            self.eliminar_grp)

    def item_seleccionado(self, item):
        self.item = item
        self.item_nombre = item.text()

    def cargar_usuario_actual(self):
        results = self.gmail_service.users().getProfile(userId='me').execute()
        email = results.get('emailAddress', [])
        total_mensajes = results.get('messagesTotal', [])
        fecha = dt.datetime.now().strftime("%Y/%m/%d")
        self.usr_actual = Usuario(email=email, ultimo_acceso=fecha,
                     total_emails=total_mensajes)

        # Consulta base datos
        u = self.conexionDB.consultar_usuario(self.usr_actual)
        if u == None:
            self.conexionDB.crear_usuario(self.usr_actual)
        else:
            self.cargar_datos_enviados(self.usr_actual, self.gmail_service)  # cargar datos
            self.conexionDB.act_ultimo_acceso_usr(self.usr_actual, fecha)
            self.conexionDB.act_total_emails_usr(self.usr_actual,
                                        total_mensajes)
            grupos = self.conexionDB.consultar_grupos_usuario(self.usr_actual)
            self.llenar_tabla_grupos(grupos)

        self.principal.lb_usuario.setText(self.usr_actual.get_email())
        self.principal.lb_total.setText(str(self.usr_actual.get_total_emails()))

    def info_grupo(self):
        self.grupo_actual = Grupo(nombre=self.item_nombre, descripcion="")
        aux=self.conexionDB.consultar_propietario_grupo(self.usr_actual,self.grupo_actual)
        info = InformacionGrupo(self.conexionDB,self.item_nombre,self.usr_actual.get_email(),aux)
        self.actualizar_tabla_grupos()

    def nuevo_grupo(self):    # Pruebas
        nuevo = NuevoGrupo(self.conexionDB, self.usr_actual)
        self.actualizar_tabla_grupos()

    def llenar_tabla_grupos(self, grupos):
        self.principal.listaGrupos.clear()
        if len(grupos) != 0:
            for item in grupos:
                self.principal.listaGrupos.addItem(item.nombre)

    def actualizar_tabla_grupos(self):
        grupos = self.conexionDB.consultar_grupos_usuario(self.usr_actual)
        self.llenar_tabla_grupos(grupos)

    def cargar_datos_enviados(self, usuario, gmail_service):
        grupos = self.conexionDB.consultar_grupos_usuario(usuario)

        for it in grupos:
            grp = Grupo(nombre=it.nombre)
            self.conexionDB.guardar_enviados_usuario(usuario, grp, gmail_service)

    def eliminar_grp(self):
        grp = Grupo(self.item_nombre)
        res = self.conexionDB.consultar_propietario_grupo(self.usr_actual, grp)

        usr_tmp = None
        lista_usr = []

        if res == True:
            lista_usr = self.conexionDB.consultar_usuarios_grupo(grp)

            for it in lista_usr:
                usr_tmp = Usuario(it.email)
                self.conexionDB.eliminar_usuario_grupo(usr_tmp, grp)

            self.conexionDB.eliminar_grupo(grp)
            self.actualizar_tabla_grupos()
        else:
            QtGui.QMessageBox.warning(self, 'Error', 'Error al Eliminar'
                    ' grupo, usted no es el propietario.')