Sto progettando una classe il cui oggetto è istaniato con un idn utente che crea un pdf con i dettagli specifici dell'utente. Dovrebbe registrare qualcosa in base al successo o all'errore che può essere determinato solo dal chiamante poiché il successo o l'errore dipende da se non è stato appena creato ma inviato dal chiamante.
Tuttavia, due problemi che riesco a vedere in questo modello di progettazione sono:
Sembra un po 'strano che il chiamante debba registrarlo dall'esterno. Cosa succede se l'init stesso fallisce?
Il modo in cui sto pensando di loggare come metodo se questa classe è probabilmente sbagliata? Ma non sembra così dal momento che condivide lo stato, cioè l'utente. Qualche raccomandazione su questo disegno?
Library Code
class create_pdf():
"""
Class
"""
def __init__(self, user):
"""
"""
user
db_calls_to_get_full_user_details(user)
def fetch_pdf_dms(self):
"""
Fetch from DMS
"""
logic
def fetch_pdf_engine(self):
"""
Fetch from a PDF Generator
"""
# logic that fetches the blob
def log(self, error = None):
"""
"""
# If there was no failure and it was a fetch_pdf_engine
# event then I store the blob into dms for the first time.
# If the event failed I capture the exception. Finally I
# log the event in the database.
def fetch_pdf(self):
pdf = fetch_pdf_dms
if pdf:
return pdf
return fetch_pdf_engine # which also stores to dms first time!
Consumer Code:
method = REQUEST['method']
for each user in users:
try:
object = create_pdf(user)
object.do_something()
dispatch(method)
object.log()
except:
object.log(error=exception)