def add(databases, idstate, idsenderua, idreceiverua): db_sender_name, db_sender = MailService.__findDatabaseForUserAddress(databases, idsenderua) db_receiver_name, db_receiver = MailService.__findDatabaseForUserAddress(databases, idreceiverua) if db_receiver is None or db_receiver is None: return None code = codes.rev_codes[db_sender_name] generatedBarcode = MailService.__genBarcode(code) insertStatement = db_sender.statement(Mail, "insert").values( barcode=generatedBarcode, idstate=idstate, idreceiveruseraddress=idreceiverua, idsenderuseraddress=idsenderua, ) # Duplicate the data in the sender database result = db_sender.execute(insertStatement) if result is not None: idsenderdb = result.inserted_primary_key[0] MailStateHistoryService.add(db_sender, 1, idsenderdb) if db_sender == db_receiver: return generatedBarcode # And in the receiver database result = db_receiver.execute(insertStatement) if result is not None: idreceiverdb = result.inserted_primary_key[0] MailStateHistoryService.add(db_receiver, 1, idreceiverdb) return generatedBarcode
def update(databases, barcode, idstate): db_sender = MailService.findDatabaseForBarcode(databases, barcode) if db_sender is None: return None currentMail = MailService.selectByBarcode(db_sender, barcode) if currentMail is None: return None db_sender_name, db_sender = MailService.__findDatabaseForUserAddress(databases, currentMail.idsenderuseraddress) db_receiver_name, db_receiver = MailService.__findDatabaseForUserAddress( databases, currentMail.idreceiveruseraddress ) if db_sender is None or db_receiver is None: return None updateStatement = ( db_sender.statement(Mail, "update").where(Mail.__table__.c.barcode == barcode).values(idstate=idstate) ) MailStateHistoryService.add(db_sender, currentMail.idstate, currentMail.idmail) r1 = db_sender.execute(updateStatement) if db_sender == db_receiver: return r1 is not None r2 = db_receiver.execute(updateStatement) return r1 is not None and r2 is not None