-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Mejoras en el sistema con la base de datos #2
Comments
Resuelta primera parte (Desde utils/database.py) en: 7d9cdfd |
Se ha optado por elegir el estilo de "DP" como el más apropiado y legible para el desarrollo.
Respondiendo a tu último "Check" el "ID" que me demandas lo establecería en el atributo "Name" tanto de la clase "EmailServer" como "Account". El que escogiera el nombre "Name" es debido a que me parecía más cercano a los valores que iba a contener (entendiendo por mi parte un Id algo más como un conjunto de caracteres alfanuméricos aleatorios y/o secuenciales), por lo que me pareció dicha elección de nombre la más acertada. |
Respecto a: |
Se ha implementado un método para que dado un Account y un Protocol (SMTP, IMAP ó POP3) se obtenga el EmailServer de los mismos.
Te explico un poco la teoría de Telegram para que sepas por donde voy. Todos los usuarios(incluidos los bots) tienen su id (carácteres numéricos y únicos en todo Telegram) y su nombre de usuario (que pueden tenerlo o no y si, son únicos pero pueden variar). EmailServerEl valor único no será el nombre. Ten en cuenta que otro usuario podría darle el mismo nombre y... ahora que?. El conjunto de valores únicos sería el Host, Port y Protocol por lo que sería mandar prácticamente toda la tabla además de que nos asecha el error del límite de longitud del mensaje. AccountEste es cierto que por el atributo En función a todo esto ya valoras y decides que te parece mejor |
En python no suele ser lo habitual la verdad y... en DP tiene su motivo. Al usar hibernate en modo lazy no cogia todas las propiedades del objeto de la DB solo algunas así que al usar el get podía hacer la petición. No creo que en este repo lleguemos a ese punto pero igualmente python tiene una solución que es la anotación Reitero lo mismo, lo que prefieras. |
Por cierto, deberíamos usar las mismas normas de estilo. Yo uso las que me marca PyCharm que sigue el estandar de python. Te hago un resumen rápido que creo que será suficiente y ya valoras si te merece la pena cambiar el código:
|
Tal y como se comenta en #2 se ha modificado el código fuente para seguir las guías de estilo de Python que se muestran en PyCharm
que queda de este issue? |
Yo por mi la cerraría. |
Movimiento de código
Desde utils/database.py
Creo que el archivo recoge demasiada información. Según las buenas prácticas de python dice que cada clase en un archivo facilitando el mantenimiento. Esta sería mi propuesta:
class EmailServer
debería moverse arepository/emailServer.py
class User
debería moverse arepository/user.py
class Account
debería moverse arepository/account.py
def parseAccountsToJson
debería moverse arepository/account.py
def parseJsonToAccounts
debería moverse arepository/account.py
class DBC
arepository/repository.py
. De esta forma solo habría que llamar a este método. Igualmente creo que habrá que tocar algo para que sea fácil usarlo desde todos los archivos pero cuando se intente unir más seriamente se verá.Adicionalmente a esto... ¿sería interesante crear la típica sección domain?. Yo tengo el objeto
Message
dando por ahí la lata que no se donde ponerlo puesto que es algo que no persisteDesde config/testdb.py
La verdad es que no había planteado ningún sitio para poner los test por lo que esto habría que discutirlo (tanto lugar como como se hacen). Aquí hay dos formas de hacerlo, a lo
dp
o a logo
.DP
ya sabemos como sería, crear una carpeta denominadatests
en la raiz e ir organizando todo el código. En cambio, engo
los test se ponen en la misma carpeta que el archivo que quieres probar y con el mismo nombre, por ejemplo, los test deservices/email.py
estarian enservices/emailTest.py
. A mi sinceramente la forma que más me convence es la deDP
así puedes hacer cosas más genéricas y te centras en leer código pero para gustos... los colores.Conceptos en general
Accounts
y losEmailServer
. Creo que un account debería de soportar variosEmailServer
puesto que el protocoloimap
(el más usado para leer), no puede enviar mensajes por lo que haría falta otro y sería desde la misma cuenta.id
en cada tabla puesto que será lo que le pasaríamos al cliente y nos facilitaría las cosas. Quizás se esté implementando de alguna forma que yo no haya visto.General
Muy buen diseño, le diste bastantes vueltas la verdad.
Hay una cosa que no acabo de tener clara. ¿Para que poner los getter y los setter?
The text was updated successfully, but these errors were encountered: