Exemplo n.º 1
0
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