def scan_mail(getmtime=getmtime): Directory.createTable(ifNotExists=True) Directory.createIndexes(ifNotExists=True) File.createTable(ifNotExists=True) File.createIndexes(ifNotExists=True) root_maildirs = [] known_root_maildirs = Directory.selectBy(parent_dir=None) for mdir in sorted(sources): mdir = mdir.rstrip('/') mdir_record = known_root_maildirs.filter(Directory.q.name == mdir) if mdir_record.count(): root_maildirs.append(mdir_record.getOne()) continue _last_modified = getmtime(mdir)-1 if root_maildirs: try: _find_mdir_source(mdir, fail=True) except isChildNode: continue root_maildirs.append(Directory(name=mdir, last_modified=_last_modified, parent_dir=None)) for mdir in (m for m in known_root_maildirs if m not in root_maildirs): mdir.destroySelf() print('done getting maildirs') #trans.commit() return root_maildirs
def _get_maildir(self, key): krec = File.get(int(key)) krec_parent = krec.parent_dir kmdir = self._map.get(krec_parent, None) if kmdir is None: kmdir = Maildir(krec_parent.full_path, factory=None) self._map[krec_parent] = kmdir return krec, kmdir