Django REST Framework - ListSerializer - Actualizaciones Múltiples

Imagen
 Se muestra un ejemplo, de como realizar la implementación de Múltiples actualizaciones en una sola petición , es decir enviando una lista de objetos, y usando la clase ListSerializer  realizamos las actualizaciones (inserciones u eliminaciones). El modelo para el ejemplo La Vista      def   post ( self ,  request ):          """ Ejemplo de manejo de listas en Serializer                     Para este ejemplo asumimos lo siguiente:           Se tienen que enviar todos los datos existentes de los empleados en el JSON ya que           se comparara con la base de datos y :            1.- Si se encuentran se actualizan los datos,            2.- Si no existen en la base de datos  se crean,            3.- Si se encuentran en la base de datos, pero no fueron pasados en el JSON se elimnan.          """          # Obtener el  JSON.          data  =  request .data          # Obtener los datos de la base de datos                  emp  =  Employes . objects . all ()   

Fix para correos perdidos en Thunderbird [x-mozilla-status]

 Cuando estaba compactando mis correos, para ahorrar espacio en disco

por alguna razón se dejaron de ver los correos, sin embargo al revisar el tamaño del inbox seguía teniendo el mismo tamaño 


Investigando un poco, se debe a algún error de Mozilla Thunderbird , en la cual les cambia un estatus:
x-mozilla-status = 0009 u 0008 .

La solución es abrir el archivo Inbox con un editor de texto y cambiar a x-mozilla-status =0001.


Pero la cosa se complica cuando los correos son mayores a 1 GB, en mi caso el archivo pesaba 9GB.
(Las imágenes de arriba son ilustrativas, ya que recree el detalle en un Inbox de poco tamaño)

Por lo que decidí crear un script en Python para que realice el cambio, apoyándonos en la librería



Crear un archivo .py en mi caso: thunderbir_email_fix_verbose_mode.py






------------------------
import mailbox
print('Jero')
print('Script V 0.8')
print('Versión de Python  Requerido : 3.9.4')
print('')
print('Leyendo Archivo Inbox. Asegurese que este en la misma ruta y con el nombre correcto (=Inbox) ')
#Abrimos el inbox pricipal (debe estar en la misma ruta de este script y con el nombre Inbox)
mbox= mailbox.mbox('Inbox')
#Tomamos el proceso y lo bloqueamos
mbox.lock()
print('Corrigiendo estatus de correos...')
for key, msg in mbox.iteritems():  
print('Clave Email {:6} "Subject: {}"'.format(key,  msg['subject']))  
print('Old Flag:',msg.get_flags())
print('Old Estatus:', msg['x-mozilla-status'])
 
#Marcamos como leido y cambiamos el estatus a no eliminado
msg.add_flag('R')
msg.replace_header('x-mozilla-status','0001')
 
         #Validamos el cambio
mbox[key] = msg
print('Validando Cambio')
print('New Status:', msg['x-mozilla-status'])
print('New Flag:', msg.get_flags())
print('--------------')
print('              ')

print('Ya casi...')  
print('Aplicando Cambios, espere...')
mbox.flush()
mbox.close()
print("Fin de procesamiento")
print("Have a Nice Day  :)")
------


Para ejecutar el scritpt, es necesario copiar el "Inbox" de thunderbird  en la misma ruta del script 






Una vez  finalizado:


Regresar el Inbox a la carpeta de Thunderbird y eliminar Inbox.msf



NOTA: En todo el proceso debe estar cerrado thunderbird.


Espero les sea de ayuda.

Descargar Archivos

Comentarios

Entradas populares de este blog

Django. [Errno 10013] Intento de Acceso a un Socket no Permitido por sus permisos de acceso.

Crystal Reports para VS2010. El Texto Restante no parece se parte de la Formula.

ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)