Example #1
0
    def setUpClass(cls) -> None:
        cfg = parse_config("resources/config.unittest.ini")
        cls.conn = get_connection(cfg)

        with cls.conn.cursor(dictionary=True) as cursor:
            cursor.execute("DROP TABLE IF EXISTS covid_data;")
            cursor.execute("DROP TABLE IF EXISTS covid_vaccinations;")
            cursor.execute("DROP TABLE IF EXISTS covid_r_value;")
            cursor.execute("DROP TABLE IF EXISTS hospitalisation;")
            cursor.execute("DROP TABLE IF EXISTS icu_beds;")
            cursor.execute("DROP TABLE IF EXISTS district_rules;")
            cursor.execute("DROP TABLE IF EXISTS county_alt_names;")
            cursor.execute("DROP TABLE IF EXISTS counties;")

        # Update Data
        RKIKeyDataUpdater(cls.conn).update()
        VaccinationGermanyUpdater(cls.conn).update()
        RValueGermanyUpdater(cls.conn).update()
        HospitalisationRKIUpdater(cls.conn).update()

        cls.user_manager = UserManager("unittest",
                                       cls.conn,
                                       activated_default=True)
        cls.data = CovidData(connection=cls.conn)
        cls.interface = Bot(cls.user_manager, cls.data,
                            Visualization(cls.conn, ".", disable_cache=True),
                            lambda x: x)
    def setUpClass(cls) -> None:
        cfg = parse_config("resources/config.unittest.ini")
        cls.conn = get_connection(cfg)

        cls.interface = NonAbstractSingleCommandInterface(
            UserManager("test", cls.conn), CovidData(cls.conn),
            Visualization(cls.conn, "."), 0, True)
Example #3
0
    def setUpClass(cls) -> None:
        cfg = parse_config("resources/config.unittest.ini")
        cls.conn = get_connection(cfg)

        with cls.conn.cursor() as cursor:
            cursor.execute("TRUNCATE TABLE covid_data;")
            cursor.execute("TRUNCATE TABLE covid_vaccinations;")
            cursor.execute("TRUNCATE TABLE covid_r_value;")
            cursor.execute("TRUNCATE TABLE hospitalisation;")
            cursor.execute("TRUNCATE TABLE icu_beds;")
            cursor.execute("TRUNCATE TABLE district_rules;")
            cursor.execute("TRUNCATE TABLE county_alt_names;")
            # noinspection SqlWithoutWhere
            cursor.execute("DELETE FROM counties ORDER BY parent DESC;")
        RKIKeyDataUpdater(cls.conn).update()
        history = RKIHistoryUpdater(cls.conn)
        history.max_delta = 0
        history.min_delta = 10
        history.update()

        for updater in [
                RValueGermanyUpdater, VaccinationGermanyUpdater,
                ICUGermanyUpdater, ICUGermanyHistoryUpdater,
                RulesGermanyUpdater, HospitalisationRKIUpdater
        ]:
            updater(cls.conn).update()

        cls.conn.commit()
Example #4
0
async def show_user(request: Request):
    try:
        comm_unread, comm_read, comm_answered = user_manager.get_all_communication()
    except OperationalError as e:
        global connection
        if connection:
            connection.close()

        connection = get_connection(config, autocommit=True)
        user_manager.connection = connection
        comm_unread, comm_read, comm_answered = user_manager.get_all_communication()

    user = None
    communication = None

    status = None
    if 'status' in request.query:
        status = request.query['status']

    if request.match_info.get("user_id"):
        user_id = int(request.match_info.get("user_id"))
        for s, comm in [("unread", comm_unread), ("read", comm_read), ("answered", comm_answered)]:
            for c in comm:
                if c.user_id == user_id:
                    user = c
                    communication = comm

                    if status:
                        status = s
                    break
        if not user:
            raise HTTPNotFound()
    else:
        if status == "read":
            communication = comm_read
        elif status == "answered":
            communication = comm_answered
        elif status == "unread":
            communication = comm_unread
        else:
            communication = comm_unread + comm_read + comm_answered

    active_tag = None
    if 'tag' in request.query and (not user or request.query['tag'] in user.tags):
        communication = list(filter(lambda x: request.query['tag'] in x.tags, communication))
        active_tag = request.query['tag']

    if communication and not user:
        user = communication[0]

    subs, reports = [], []
    if user:
        subs = user_manager.get_user_subscriptions(user.user_id)
        reports = user_manager.get_user_report_subscriptions(user.user_id)

    return {'messagelist': communication, 'user': user, 'base_url': base_url, 'num_unread': len(comm_unread),
            'available_tags': user_manager.get_available_tags(), 'active_status': status, 'active_tag': active_tag,
            'user_subs': subs,
            'user_reports': reports}
Example #5
0
import aiohttp_jinja2
import jinja2
from aiohttp import web
from aiohttp.web_exceptions import HTTPNotFound, HTTPFound, HTTPBadRequest
from aiohttp.web_request import Request
from mysql.connector import OperationalError

from covidbot.__main__ import get_connection, parse_config
from feedback.feedback_manager import FeedbackManager

routes = web.RouteTableDef()
config = parse_config('config.ini')
connection = get_connection(config, autocommit=True)
user_manager = FeedbackManager(connection)
base_url = config.get('FEEDBACK', 'BASE_URL', fallback='')


@routes.get(base_url + r"/user/{user_id:\d+}")
@routes.get(base_url + "/")
@aiohttp_jinja2.template('single.jinja2')
async def show_user(request: Request):
    try:
        comm_unread, comm_read, comm_answered = user_manager.get_all_communication()
    except OperationalError as e:
        global connection
        if connection:
            connection.close()

        connection = get_connection(config, autocommit=True)
        user_manager.connection = connection
        comm_unread, comm_read, comm_answered = user_manager.get_all_communication()
Example #6
0
 def setUpClass(cls) -> None:
     cfg = parse_config("resources/config.unittest.ini")
     cls.conn = get_connection(cfg)