#!/usr/bin/env python3 import argparse import datetime from sqlalchemy import or_ import sys import mo import mo.config as config import mo.db as db from mo.util import die, init_standalone parser = argparse.ArgumentParser(description='Vygeneruje seznam mailových adres') parser.add_argument('typ', type=str, help='Druh seznamu (zatím jen "garanti-z")') args = parser.parse_args() init_standalone() if args.typ != 'garanti-z': die("Neznámý typ mailing listu") sess = db.get_session() users = (sess.query(db.User) .join(db.UserRole, db.UserRole.user_id == db.User.user_id) .filter(db.UserRole.role.in_([db.RoleType.garant_okres, db.RoleType.garant_kraj, db.RoleType.garant])) .filter(or_(db.UserRole.year == None, db.UserRole.year == config.CURRENT_YEAR)) .filter(or_(db.UserRole.category == None, db.UserRole.category != 'P')) .all()) addrs = set(u.email for u in users) if hasattr(config, 'MAILING_LIST_INCLUDE') and args.typ in config.MAILING_LIST_INCLUDE: for addr in config.MAILING_LIST_INCLUDE[args.typ]: addrs.add(addr) if hasattr(config, 'MAILING_LIST_EXCLUDE') and args.typ in config.MAILING_LIST_EXCLUDE: for addr in config.MAILING_LIST_EXCLUDE[args.typ]: addrs.discard(addr) for a in sorted(addrs): print(a)