библиотекарбиблиотекар import os import sys import glob 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 sheets import Sheets class Orima(Nitpo): def __init__(self, do_verbose=False): """orima library, written on a night of trouble with NaKus""" super().__init__() if not self.has_conf('sheets', 'orimas'): print("orimas: need an [sheets][orimas] configuration", file=sys.stderr) sys.exit(1) self.ext_len = len(self.conf['ext']['report']) self.sheets = Sheets(do_verbose) self.reports_fudi = self.conf['folders']['reports'] self.reports_glob = self.reports_fudi + '/*' def all(self, ingest): """gets all orimas""" orima_sheet = self.sheets.load_sheet('orima') print(typeof(ingest)) print(self.reports_glob) for report_fufi in glob.glob(self.reports_glob): if report_fufi.endswith('~'): continue test_fufi = report_fufi if report_fufi.endswith('.gz'): test_fufi = report_fufi[:-3] if not test_fufi.endswith(self.conf['ext']['report']): print('cont') continue report_bana = os.path.basename(test_fufi) repcode = report_bana[:-self.ext_len] print(repcode) if only_repcode is not None and repcode != only_repcode: continue fufis[repcode] = report_fufi return fufis def orimas(self, only_repcode=None): """get orimas and store in [files][orimas]""" if not self.has_conf('files', 'orimas'): print("reports: I need a [files][orimas] configuration.") sys.exit(1) orima_fufi = self.conf['files']['orimas'] if os.path.isfile(orima_fufi): orimas = filing.load(orima_fufi) fufis = self.fufis(only_repcode=only_repcode) i_need_to_save = False orimas = {} # # by report orimas['r'] = {} # # by emad orimas['e'] = {} for repcode in fufis: fufi = fufis[repcode] if not filing.donere(orima_fufi,[fufi]): continue # # reports are is the report directory, with the repcode followed # # by the extension repdoc = filing.parse_lax(fufi) # # gives a newline separated text of emad emads = str(self.sheets.get_result('orima', repdoc)) emads = emads.partition('\n') if repcode in orimas: print(f"reports: looks like several configurations of report {repcode}", file=sys.stderr) orimas['r'][repcode] = [] for emad in emads: if len(emad) == 0: continue if repcode not in orimas['r']: orimas['r'][repcode] = [] orimas['r'][repcode].append(emad) ## index the emails as well if emad not in orimas['e']: orimas['e'][emad] = [] if len(repcode) == 0: continue orimas['e'][emad].append(repcode) filing.dump(orima_fufi, orimas) return orimas # def fufi(self, repcode): # """get configuration file by repcode""" # glob = self.reports_fudi + '/' + 'repcode*' # for report_fufi in glob.glob(self.reports_glob):