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
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)
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)
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()
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 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.')
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)
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
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.')