-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMain.py
More file actions
389 lines (331 loc) · 13.6 KB
/
Main.py
File metadata and controls
389 lines (331 loc) · 13.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
'''
Universidad del Valle de Guatemala
Bases de datos 1
Proyecto 2
Integrantes:
- Gabriel Vicente 20498
- Maria Isabel Solano 20504
- Christopher García 20541
'''
#Import de diferentes librerias y otros archivos .py
from Funciones import *
from ConnectionBD import *
from Admins import *
from Users import *
from datetime import datetime
Salir = False
opcion = 0
#Impresion menu principal y toma de decision
while not Salir:
escritura_lenta('\n\t ----------------------------------------')
escritura_lenta('\t| |')
escritura_lenta('\t| Bienvenue sur la plateforme Nesflis |')
escritura_lenta('\t| |')
escritura_lenta('\t ----------------------------------------')
escritura_lenta("\nMenu")
escritura_lenta("1) Crear cuenta")
escritura_lenta("2) Ingresar")
escritura_lenta("3) Ingresar como Admin")
escritura_lenta("4) Salir")
print()
opcion = SolicitudNum()
#Opcion para crear cuenta
if (opcion == 1):
print()
Verificador = False
Correo = ""
Contra = ""
TipoCuenta = ""
#Se verifica si los datos son validos y se procede a crear la cuenta
while not Verificador:
Correo, Contra, TipoCuenta = CrearCuenta()
if (Correo != None and Contra != None and TipoCuenta != None and Get_Cuenta(Correo) == None):
CodigoP = GenerarCodigo('perfiles')
print()
#Se registra la fecha y hora en que se crea la cuenta
Fecha = datetime.date(datetime.now())
Hora = datetime.time(datetime.now())
Daton = input("Nombre del perfil inicial: ")
Upload_Cuenta(Correo, Contra, TipoCuenta, Fecha, Hora)
Upload_Perfiles(CodigoP, 1, Daton, False)
Upload_CuentaPerfiles(Correo, CodigoP)
escritura_lenta("\n\t\t\tCuenta registrada exitosamente\n")
Verificador = True
else:
print("\nAlgo salio mal, intente nuevamente\n")
#Opcion para ingresar
elif (opcion == 2):
verificador_menu = False
Verificador = False
Correo = ""
Contra = ""
PerfilActual = ""
Contador = 0
#Se verifica si la cuenta esta en la base de datos
#De estarlo se le permite al usuario ingresar y utilizar las opciones disponibles
#De no ingresar correctamente se cuentan los intentos fallidos
while not Verificador:
Correo, Contra = LoginCuenta()
if(LogIn(Correo, Contra) != None and LogIn(Correo, Contra) == True):
escritura_lenta("Ingreso exitoso\n")
ManejoPerfiles(Correo)
# Dar opción para cambiar contraseña
ver_contrasena = True
while (ver_contrasena):
escritura_lenta("Desea modificar la contraseña antes de continuar?")
opModCon = input('(s/n): ')
if (opModCon == 's'):
# Modificar la contraseña
#Verificar la contraseña
ver_contrasena2 = True
while (ver_contrasena2):
contraActual = getpass('\nContraseña actual: ')
md5_hash = hashlib.md5()
md5_hash.update(contraActual.encode())
contraActual = md5_hash.hexdigest()
#verificarla
if (LogIn(Correo, contraActual)):
# Proseguir
escritura_lenta('Ingrese la nueva contraseña ')
contraNueva = getpass('\nNueva contraseña: ')
contraNueva2 = getpass('\nIngresela nuevamente: ')
if (contraNueva == contraNueva2):
''''''
md5_hash = hashlib.md5()
md5_hash.update(contraNueva.encode())
contraNueva = md5_hash.hexdigest()
Mod_Contraseña(contraNueva, Correo)
ver_contrasena2 = False
else:
print('Error, las contraseñas son distintas')
else:
# Contraseña ingresada incorrectamente
escritura_lenta('Contraseña ingresada incorrectamente')
escritura_lenta('Desea probar nuevamente?')
ooop = input('(s/n): ')
if (ooop == 'n'):
# Cancelar
ver_contrasena2 = False
ver_contrasena = False
elif (opModCon == 'n'):
# no modificar la contraseña
ver_contrasena = False
else:
print("La respuesta ingresada no es valida")
perfilActivo = SeleccionPerfiles(Correo)
Mod_active(True,perfilActivo)
PerfilActual = perfilActivo
Verificador = True
elif(LogIn(Correo, Contra) == False):
print("Cuenta desactivada, pruebe con otra\n")
else:
contadorC = getContador(Correo)
Fecha = datetime.now()
if (Get_Cuenta(Correo) != None and contadorC == None):
Contador += 1
Upload_Intentos(Correo, Fecha, 1)
elif (Get_Cuenta(Correo) != None and contadorC != None):
contadorC += 1
UpdateIntentos(contadorC, Fecha, Correo)
else:
print("Error, correo o contraseña incorrecta\n")
#Luego de ingresar correctamente el usuario puede usar todas las funciones
while not verificador_menu:
print("\n________________________________________")
escritura_lenta("\tPerfil activo: "+ PerfilActual)
print("\n________________________________________\n")
print("Elija la accion a realizar\n")
print("1) Mostrar recomendaciones")
print("2) Mostrar peliculas")
print("3) Mostrar favoritos")
print("4) Mostrar peliculas sin terminar")
print("5) Mostrar peliculas vistas")
print("6) Busqueda por opciones")
print("7) Busqueda personalizada")
print("8) Cambiar Perfil")
print("9) Cerrar Sesion")
print()
seleccion = SolicitudNum()
#Se procede a determinar que procede en base a la opcion seleccionada
if (seleccion==1):
escritura_lenta("Mostrando recomendaciones\n")
recomendaciones(Get_CodigoPerfil(Correo, PerfilActual))
elif (seleccion==2):
escritura_lenta("Mostrando peliculas\n")
ver_peliculas(Correo, PerfilActual)
elif (seleccion==3):
escritura_lenta("Mostrando favoritos\n")
mostrarfavoritos(Get_CodigoPerfil(Correo, PerfilActual))
elif (seleccion==4):
escritura_lenta("Mostrar peliculas sin terminar\n")
mostrarviendo(Get_CodigoPerfil(Correo, PerfilActual))
elif (seleccion==5):
escritura_lenta("Mostrar peliculas vistas\n")
mostrarvistos(Get_CodigoPerfil(Correo, PerfilActual))
elif (seleccion==6):
escritura_lenta("Busqueda por opciones\n")
SearchP()
elif (seleccion==7):
escritura_lenta("Busqueda personalizada\n")
SearchPer(Get_CodigoPerfil(Correo, PerfilActual))
elif (seleccion==8):
cant = Get_Perfiles(Correo)
if (Get_Sub(Correo) == "Gratis"):
print("\nLo sentimos, no puedes cambiar de perfil")
print("El tipo de cuenta no lo permite")
elif (Get_Sub(Correo) == "Estandar" and cant == 1):
print("\nLo sentimos, no puedes cambiar de perfil")
print("No existe otro registrado. Al iniciar sesion intenta crear mas")
elif (Get_Sub(Correo) == "Avanzada" and cant == 1):
print("\nLo sentimos, no puedes cambiar de perfil")
print("No existe otro registrado. Al iniciar sesion intenta crear mas")
else:
PerfilActual = CambioPerfiles(Correo, PerfilActual)
elif (seleccion==9):
escritura_lenta("Cerrar Sesion\n")
EndSesion(PerfilActual)
verificador_menu = True
#Opcion para ingresar como Administrador
elif (opcion == 3):
print()
menu_admin_L1 = True
while (menu_admin_L1):
#ingreso de sesion
verificador = True
usuario = input('Usuario: ')
contra = getpass('Contraseña: ')
#Se encripta la contraseña
md5_hash = hashlib.md5()
md5_hash.update(contra.encode())
contra = md5_hash.hexdigest()
IsActive = Get_AdminActive(usuario)
#Se verifica que el usuario administrador este en la base de datos y luego se le permita entrar
while (verificador):
if(LogInAdmin(usuario, contra) != None and IsActive == False):
Mod_active_admin(True, usuario)
Nombre = LogInAdmin(usuario,contra)
print('Ingreso exitoso, bienvenido/a ', Nombre)
print('Pulse enter para continuar\n')
confirmation = input()
#inicio del ciclo while para mostrar opciones
menu_admin_L2 = True
while (menu_admin_L2):
#impresion de opciones
print('\nIngrese el numero de la opcion que desea realizar:')
print('__________________________________________________________')
print('\n1) Agregar contenido')
print('2) Eliminar contenido')
print('\n3) Modificar contenido')
print('\n4) Upgrade/Downgrade usuarios')
print('5) Desactivar/Activar usuarios')
print('\n6) Agregar anunciantes')
print('7) Eliminar anunciantes')
print('\n8) Agregar anuncios')
print('9) Eliminar anuncios')
print('\n10) Reportes pasados')
print('11) Opciones administradores')
print('\n12) Simulacion de visualizaciones')
print('13) Simulacion de busquedas')
print('14) Reportes nuevos')
print('\n15) Cerrar sesion')
print('__________________________________________________________')
print()
op1 = input("Opcion: ")
#Se procede a determinar que procede en base a la opcion seleccionada
if (op1 == '1'):
#Agregar contenido
AgregarContenido()
UploadBitacora(usuario)
elif (op1 == '2'):
#Eliminar contenido
Eliminar_pelicula(usuario)
elif (op1 == '3'):
#Modificar contenido
Modificaciones_Admin(usuario)
elif (op1 == '4'):
#Modificar usuario
DownUpGrade_Usuarios()
UploadBitacora(usuario)
elif (op1 == '5'):
#Desactivar usuario
desactivar_Usuarios()
UploadBitacora(usuario)
elif (op1 == '6'):
#Agregar anunciantes
Agregar_Anunciantes()
UploadBitacora(usuario)
elif (op1 == '7'):
#Eliminar anunciantes
EliminarAnunciantes(usuario)
elif (op1 == '8'):
#Agregar anuncios
Agregar_Anuncios()
UploadBitacora(usuario)
elif (op1 == '9'):
#Eliminar anunciantes
EliminarAnuncios(usuario)
elif (op1 == '10'):
ver_op12 = True
while(ver_op12):
print('\n-------------------- Reportes --------------------')
print('Ingrese el numero de la opcion que desea realizar:')
print('__________________________________________________________')
print('1) Top 10 generos mas vistos y minutos consumidos')
print('2) Cantidad de reproducciones por genero y tipo de cuenta')
print('3) Top 10 actores y directores de peliculas mas vistas por cuentas estandar y avanzadas')
print('4) Cantidad cuentas avanzadas creadas en los ultimos 6 meses')
print('5) Hora pico del servicio')
print('6) Anuncios vistos por cuentas gratis')
print('7) Salir')
print('__________________________________________________________\n')
op12 = SolicitudNum2()
if op12 == 1:
reporte_1()
elif op12 == 2:
reporte_2()
elif op12 == 3:
reporte_3()
elif op12 == 4:
query_reporte_4()
elif op12 == 5:
reporte_5()
elif op12 == 6:
query_reporte_6()
elif op12 == 7:
ver_op12 = False
elif (op1 == '11'):
Modifi_Admins(usuario)
elif (op1 == '12'):
# Simulación de visualizaciones
SimulacionOpera()
elif (op1 == '13'):
# Simulación de búsquedas
SimulacionBusqueda()
elif (op1 == '14'):
Reportes_nuevos()
elif (op1 == '15'):
#Cerrar sesion
Mod_active_admin(False, usuario)
usuario = ""
contra = ""
menu_admin_L1 = False
verificador = False
menu_admin_L2 = False
elif (IsActive == True):
print("\nLo sentimos, administrador en linea actualmente\n")
verificador = False
#Si el usuario administrador no se registra correctamente se le indica si quiere seguir intentando
else:
escritura_lenta("Usuario o contraseña incorrecta")
escritura_lenta('Desea probar nuevamente? ')
op = input('(y/n): ')
if (op == 'n'):
menu_admin_L1 = False
verificador = False
else:
verificador = False
elif (opcion == 4):
Salir = True
else:
print("Opcion invalida")
#Se termina el programa