GastonPalazzo

cuentas.py

Nov 25th, 2020
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.52 KB | None | 0 0
  1. # import
  2. from publicacion import Publicacion
  3. from usuario import Usuario
  4. from dba import DataBase
  5. import base64
  6.  
  7. # class
  8. class Cuenta():
  9.     # cnst
  10.     def __init__(self, cuenta_id=int, login_name=str, login_pass=str, usuario=Usuario, mail_primario=str, mail_secundario=str, database=DataBase):
  11.         self.__bd = database
  12.         self.__cuenta_id = cuenta_id
  13.         self.__login_name = login_name
  14.         self.__login_pass = self.__encriptarPass(login_pass)
  15.         self.__usuario = usuario
  16.         self.__mail_primario = mail_primario
  17.         self.__mail_secundario = mail_secundario
  18.         self.__publicaciones = []
  19.         self.__amistades = []
  20.     #mthds
  21.     # gtt
  22.     def get_cuenta_id(self):
  23.         return self.__cuenta_id
  24.     def get_login_name(self):
  25.         return self.__login_name
  26.     def get_login_pass(self):
  27.         return self.__desencriptarPass(self.__login_pass)
  28.     def get_usuario(self):
  29.         return self.__usuario
  30.     def get_mail_primario(self):
  31.         return self.__mail_primario
  32.     def get_mail_secundario(self):
  33.         return self.__mail_secundario
  34.     def get_publicaciones(self):
  35.         return self.__publicaciones
  36.     def get_amistades(self):
  37.         return self.__amistades
  38.     # stt
  39.     def set_cuenta_id(self, new_id):
  40.         self.__cuenta_id = new_id
  41.     def set_login_name(self, new_login_name):
  42.         self.__login_name = new_login_name
  43.     def set_login_pass(self, new_pass):
  44.        self.__login_pass = self.__encriptarPass(new_pass)
  45.     def set_usuario(self, new_usuario):
  46.         self.__usuario = new_usuario
  47.     def set_mail_primario(self, new_mail_primario):
  48.         self.__mail_primario = new_mail_primario
  49.     def set_mail_secundario(self, new_mail_secundario):
  50.         self.__mail_secundario = new_mail_secundario
  51.     def set_publicaciones(self, new_publicaciones):
  52.         self.__publicaciones.append(new_publicaciones)
  53.     def set_amistades(self, new_amistades):
  54.         self.__amistades = new_amistades
  55.     # especificos
  56.     def update_acc(self, validador, update_form):
  57.         vld = validador
  58.         for key, val in update_form.items():
  59.             if val != '':
  60.                 # validacion
  61.                 if key == 'nuevo_login_name':
  62.                     r, dic = vld.validar_registro({'login_name': val})
  63.                 elif key == 'nuevo_login_pass':
  64.                     r, dic = vld.validar_registro({'login_pass': val})
  65.                 elif key == 'nuevo_mail_primario':
  66.                     r, dic = vld.validar_registro({'mail_primario': val})
  67.                 elif key == 'nuevo_mail_secundario':
  68.                     r, dic = vld.validar_registro({'mail_secundario': val})
  69.                 # actualizacion
  70.                 if r == 0:
  71.                     if key == 'nuevo_login_name':
  72.                         self.set_login_name(dic['login_name'])
  73.                     elif key == 'nuevo_login_pass':
  74.                         self.set_login_pass(dic['login_pass'])
  75.                     elif key == 'nuevo_mail_primario':
  76.                         self.set_mail_primario(dic['mail_primario'])
  77.                     elif key == 'nuevo_mail_secundario':
  78.                         self.set_mail_secundario(dic['mail_secundario'])
  79.                     self.save_account(auto=False)
  80.                     print('\n[MENSAJE]: informacion de cuenta actualizada')
  81.                 else:
  82.                     print(f'\n[Err]: uno o mas datos no pudieron validarse ↓')
  83.                     for val in dic.values():
  84.                         if type(val).__name__ not in ['DataBase']:
  85.                             for i in val:
  86.                                 print(f'\t{i}')
  87.             else:
  88.                 print('\n[MENSAJE]: no se realizo ningun cambio')
  89.     def mostrar_lista_de_amigos(self):
  90.         qry = '''SELECT CONCAT(usuarios.nombre, " ", usuarios.apellido)
  91.        FROM amistades
  92.        INNER JOIN usuarios ON amistades.usuario_id_amigo = usuarios.usuarios_id
  93.        WHERE amistades.usuario_id_1 = %s;'''
  94.         val = (self.get_usuario().get_user_id(), )
  95.         self.__bd.ejecutar(qry, val)
  96.         r = self.__bd.get_cursor().fetchall()
  97.         if r != []:
  98.             print('\n\tLISTA DE AMIGOS')
  99.             for amigos in r:
  100.                 print(f'{amigos[0]}')
  101.         else:
  102.             print('\n[MENSAJE]: tu lista de amigos se encuentra vacia actualmente')
  103.     def mostrar_categorias_de_publicacion(self):
  104.         qry = 'select categoriasdepost_id, nombre from categoriasdepost;'
  105.         self.__bd.get_cursor().execute(qry)
  106.         r = self.__bd.get_cursor().fetchall()
  107.         if r != []:
  108.             cadena = ''
  109.             for i in r:
  110.                 if r.index(i) == 0:
  111.                     cadena += f' {i[0]}-{i[1]}'
  112.                 else:
  113.                     cadena += f', {i[0]}-{i[1]}'
  114.         return cadena
  115.     def mostrar_publicaciones(self):
  116.         self.cargar_publicaciones()
  117.         for i in self.get_publicaciones():
  118.             print(f'\nposteo_id: {i.get_id_de_publicacion()}'+
  119.             f'\ncontenido: {i.get_body()}'+
  120.             f'\nfecha_de_publ: {i.get_fecha_de_publicacion()}'+
  121.             f'\ncategoria: {i.get_categoria_de_publicacion()}'+
  122.             f'\nautor: {i.get_autor()}')
  123.     def cargar_publicaciones(self):
  124.         qry = '''SELECT posteos.posteos_id, posteos.contenido, posteos.fechaDePublicacion, categoriasdepost.nombre, cuentas.login_name
  125.        FROM posteos
  126.        INNER JOIN categoriasdepost ON posteos.categoriaDePost_id = categoriasdepost.CategoriasDePost_id
  127.        INNER JOIN usuarios ON posteos.usuario_id_2 = usuarios.usuarios_id
  128.        INNER JOIN cuentas ON usuarios.usuarios_id = cuentas.usuario_id_2
  129.        WHERE posteos.usuario_id_2 = %s;'''
  130.         val = (self.get_usuario().get_user_id(), )
  131.         self.__bd.ejecutar(qry, val)
  132.         r = self.__bd.get_cursor().fetchall()
  133.         if r != []:
  134.             for p in r:
  135.                 self.set_publicaciones(Publicacion(*p))
  136.         else:
  137.             return print('\n[MENSAJE]: su lista de posts esta actualmente vacia')
  138.     def vaciar_lista_amigos(self):
  139.         val = [self.get_usuario().get_user_id()]
  140.         self.__bd.get_cursor().callproc('eliminar_todas_las_amistades', val)
  141.         self.__bd.get_commit()
  142.         for i in self.__bd.get_cursor().stored_results():
  143.             print(f'\n[MENSAJE]: {i.fetchone()[0]}')
  144.     def eliminar_amigo(self, amigo_id):
  145.         val = [self.get_usuario().get_user_id(), amigo_id]
  146.         self.__bd.get_cursor().callproc('eliminar_amigo', val)
  147.         self.__bd.get_commit()
  148.         for i in self.__bd.get_cursor().stored_results():
  149.             print(f'\n[MENSAJE]: {i.fetchone()[0]}')
  150.     def agregar_amigo(self, amigo_id):
  151.         self.__bd.actualizar_auto_increment('amistades', 'amistades_id')
  152.         val = [self.get_usuario().get_user_id(), amigo_id]
  153.         self.__bd.get_cursor().callproc('agregar_amigo', val)
  154.         self.__bd.get_commit()
  155.         for i in self.__bd.get_cursor().stored_results():
  156.             print(f'\n[MENSAJE]: {i.fetchone()[0]}')
  157.     def eliminar_todas_las_publicaciones(self):
  158.         val = [self.get_usuario().get_user_id()]
  159.         self.__bd.get_cursor().callproc('eliminar_todas_las_publicaciones', val)
  160.         self.__bd.get_commit()
  161.         for i in self.__bd.get_cursor().stored_results():
  162.             print(f'\n[MENSAJE]: {i.fetchone()[0]}')
  163.     def eliminar_publicacion(self, id_de_publicacion):
  164.         val = [self.get_usuario().get_user_id(), id_de_publicacion]
  165.         self.__bd.get_cursor().callproc('eliminar_amigo', val)
  166.         self.__bd.get_commit()
  167.         for i in self.__bd.get_cursor().stored_results():
  168.             print(f'\n[MENSAJE]: {i.fetchone()[0]}')
  169.     def crear_publicacion(self, contenido, categoria_id):
  170.         self.__bd.actualizar_auto_increment('posteos', 'posteos_id')
  171.         val = [self.get_usuario().get_user_id(), contenido, categoria_id]
  172.         self.__bd.get_cursor().callproc('agregar_publicacion', val)
  173.         self.__bd.get_commit()
  174.         for i in self.__bd.get_cursor().stored_results():
  175.             print(f'\n[MENSAJE]: {i.fetchone()[0]}')
  176.     def mostrar_datos_de_cuenta(self):
  177.         print(f'\n\tDatos de Cuenta'+
  178.             f'\nID: {self.get_cuenta_id()}'+
  179.             f'\nLogin: {self.get_login_name()}'+
  180.             f'\nPass: {self.get_login_pass()}'+
  181.             f'\nMail primario: {self.get_mail_primario()}'+
  182.             f'\nMail secundario: {self.get_mail_secundario()}'
  183.         )
  184.     def eliminar_cuenta(self):
  185.         val = [self.get_usuario().get_user_id()]
  186.         self.__bd.get_cursor().callproc('eliminar_cuenta', val)
  187.         self.__bd.get_commit()
  188.     def __encriptarPass(self, password_a_encriptar=str):
  189.         b = password_a_encriptar.encode("UTF-8") # codificacion a bytes
  190.         e = base64.b64encode(b) # coodificacion a base64
  191.         return e
  192.     def __desencriptarPass(self, password_a_desencriptar):
  193.         b = base64.b64decode(password_a_desencriptar)
  194.         s = b.decode("UTF-8")
  195.         return s
  196.     def save_account(self, auto=True):
  197.         if auto:
  198.             self.__bd.actualizar_auto_increment('cuentas', 'cuenta_id')
  199.         # value
  200.         val = [
  201.             self.get_cuenta_id(),
  202.             self.get_login_name(),
  203.             self.__encriptarPass(self.get_login_pass()),
  204.             self.get_usuario().get_user_id(),
  205.             self.get_mail_primario(),
  206.             self.get_mail_secundario()
  207.         ]
  208.         self.__bd.get_cursor().callproc('save_acc', val)
  209.         self.__bd.get_commit()
  210.         for i in self.__bd.get_cursor().stored_results():
  211.             r = str(i.fetchone()[0])
  212.         return r
Add Comment
Please, Sign In to add comment