#import copy #import os #import sys #import lxml.etree as etree #from lxml.builder import ElementMaker from lxml import etree #import dating import filing import docing # import subscription from emailer import Emailer from nitpo import Nitpo from infile import Infile from itresu import Itresu from omnibus import Omnibus from sheets import Sheets from xpaths import Xpaths from profile import Profile #from subscription import Subscription class Sender(Nitpo): def __init__(self, do_verbose=False): """subscription profiles""" super().__init__() # a basename for the thing to send self.base = None self.omnibus = Omnibus() self.emailer = Emailer() self.infile = Infile() self.itresu = Itresu() self.xpaths = Xpaths() self.sheets = Sheets() self.profile = Profile() self.repis_fufi = None if not self.has_conf('folders', 'mail'): raise Exception("I need a 'mail' folder.") #self.do_verbose = do_verbose def repis(self, fufi): #print(fufi) # repcode = self.infile.get_repcode(fufi) ## om self.repis_fufi = fufi print('omnibus starts') self.base = self.infile.get_base(fufi) self.send_omnibus(fufi) print('omnibus done') def send_omnibus(self, fufi): omnibus_doc = self.omnibus.read() count_base = 0 if omnibus_doc is None: print("sender has no omnibus.") return ## at this time, we only do the omnibus surk_docus = self.omnibus.disect(omnibus_doc) # avoid running prepare every time we send a mail mail_base_fufi = self.conf['folders']['mail'] + '/' + self.base # # now call the itresu, fills itesu.dups self.itresu.get_dups(fufi) filing.prepare(mail_base_fufi) # get the subs for the itresu for emad in surk_docus: # # increment by 1 for each recipient self.send(emad, surk_docus[emad]) # docing.inject(fufi, omnibus_doc) def send(self, emad, surk_docu): base = self.base + '/' + self.profile.relfi_from_emad(emad)[:-4] #print(etree.tostring(surk_docu, pretty_print=True).decode()) maix = filing.parse_lax(self.repis_fufi) if maix is None: return False maix_surk = docing.inject(maix, surk_docu) spro = self.xpaths.get_spro(surk_docu) if spro == 'v': # # None is all repcodes here, omnibus only subs_ele = self.itresu.xml(self.repis_fufi, None) maix_surk = docing.inject(maix, subs_ele, out_fufi='/tmp/nitpo.xml') ## the mail xml self.emailer.prepare(maix_surk, base=base) #print(spro)