Add more flags
This commit is contained in:
parent
a4c3563c17
commit
67e6c385e6
1 changed files with 23 additions and 33 deletions
|
@ -9,37 +9,36 @@ from xenu_nntp.db import Database
|
||||||
from xenu_nntp.newsgroup import Newsgroup
|
from xenu_nntp.newsgroup import Newsgroup
|
||||||
from xenu_nntp.mbox import MBoxReader
|
from xenu_nntp.mbox import MBoxReader
|
||||||
|
|
||||||
class ImportException(Exception):
|
|
||||||
def __init__(self, path: str, line: int, error: str):
|
|
||||||
self.path = path
|
|
||||||
self.line = line
|
|
||||||
self.error = error
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return "Error importing %s at line %d: %s" % (
|
|
||||||
self.path, self.line, self.error
|
|
||||||
)
|
|
||||||
|
|
||||||
class Importer():
|
class Importer():
|
||||||
def __init__(self, db: Database, newsgroup: Newsgroup, args):
|
def __init__(self, db: Database, newsgroup: Newsgroup, args):
|
||||||
self.db = db
|
self.db = db
|
||||||
self.newsgroup = newsgroup
|
self.newsgroup = newsgroup
|
||||||
self.args = args
|
self.args = args
|
||||||
|
|
||||||
def import_mbox_file(db: Database, newsgroup: Newsgroup, mboxfile: str):
|
def print_error(self, mboxfile: str, reader: MBoxReader, e: Exception):
|
||||||
|
print(f"Error importing file {mboxfile} on line {reader.line} to newsgroup {self.newsgroup.name}: {e}")
|
||||||
|
|
||||||
|
def import_mbox_file(self, mboxfile: str):
|
||||||
|
if self.args.verbose and not self.args.quiet:
|
||||||
|
print(f"Importing file {mboxfile}")
|
||||||
|
|
||||||
reader = MBoxReader(mboxfile)
|
reader = MBoxReader(mboxfile)
|
||||||
|
|
||||||
try:
|
|
||||||
for message in reader.messages():
|
for message in reader.messages():
|
||||||
if self.args.verbose and not self.args.quiet:
|
if self.args.verbose and not self.args.quiet:
|
||||||
print(f"Importing message {message.id}")
|
print(f"Importing message {message.message_id} to newsgroup {self.newsgroup.name}")
|
||||||
|
|
||||||
db.add(message)
|
try:
|
||||||
|
self.db.add(message)
|
||||||
|
|
||||||
db.execute(f'insert into newsgroup_message values (%s, %s)',
|
self.db.execute(f'insert into newsgroup_message values (%s, %s)',
|
||||||
(newsgroup.id, message.id))
|
(self.newsgroup.id, message.id))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise ImportException(mboxfile, reader.line, str(e))
|
if not self.args.quiet:
|
||||||
|
self.print_error(mboxfile, reader, e)
|
||||||
|
|
||||||
|
if not self.args.ignore_errors:
|
||||||
|
exit(1)
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(description='Create new account')
|
parser = argparse.ArgumentParser(description='Create new account')
|
||||||
parser.add_argument('--dry-run', action='store_true', help='Do not commit to database')
|
parser.add_argument('--dry-run', action='store_true', help='Do not commit to database')
|
||||||
|
@ -55,21 +54,12 @@ args = parser.parse_args()
|
||||||
config = Config.load(args.config_file)
|
config = Config.load(args.config_file)
|
||||||
db = Database.from_config(config)
|
db = Database.from_config(config)
|
||||||
newsgroup = db.get(Newsgroup, {'name': args.newsgroup})
|
newsgroup = db.get(Newsgroup, {'name': args.newsgroup})
|
||||||
|
importer = Importer(db, newsgroup, args)
|
||||||
|
|
||||||
db.execute("begin transaction")
|
db.execute("begin transaction")
|
||||||
|
|
||||||
for mboxfile in args.mboxfile:
|
for mboxfile in args.mboxfile:
|
||||||
if args.verbose and not args.quiet:
|
importer.import_mbox_file(mboxfile)
|
||||||
print(f"Importing mbox file {mboxfile}")
|
|
||||||
|
|
||||||
try:
|
|
||||||
import_mbox_file(db, newsgroup, mboxfile)
|
|
||||||
except ImportException as e:
|
|
||||||
if not args.quiet:
|
|
||||||
print(str(e), file=sys.stderr)
|
|
||||||
|
|
||||||
if not args.ignore_errors:
|
|
||||||
exit(1)
|
|
||||||
|
|
||||||
if not args.dry_run:
|
if not args.dry_run:
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|
Loading…
Add table
Reference in a new issue