CLI logging #480

This commit is contained in:
Daniel Grams 2023-05-24 08:20:40 +02:00
parent ea77295b5c
commit e5c883dd1a
8 changed files with 46 additions and 10 deletions

View File

@ -0,0 +1,17 @@
import logging
from functools import wraps
from flask import current_app
def click_logging(func):
@wraps(func)
def wrapper(*args, **kwargs):
logger = current_app.logger
original_level = logger.level
logger.setLevel(logging.INFO)
result = func(*args, **kwargs)
logger.setLevel(original_level)
return result
return wrapper

View File

@ -1,12 +1,14 @@
from flask.cli import AppGroup
from project import app
from project.cli import click_logging
from project.services import cache
cache_cli = AppGroup("cache")
@cache_cli.command("clear-images")
@click_logging
def clear_images():
cache.clear_images()

View File

@ -2,18 +2,21 @@ import click
from flask.cli import AppGroup
from project import app
from project.cli import click_logging
from project.services import dump
dump_cli = AppGroup("dump")
@dump_cli.command("all")
@click_logging
def dump_all():
dump.dump_all()
@dump_cli.command("organization")
@click.argument("admin_unit_id")
@click_logging
def dump_admin_unit(admin_unit_id):
dump.dump_admin_unit(admin_unit_id)

View File

@ -2,12 +2,14 @@ import click
from flask.cli import AppGroup
from project import app
from project.cli import click_logging
from project.services import event
event_cli = AppGroup("event")
@event_cli.command("update-recurring-dates")
@click_logging
def update_recurring_dates():
event.update_recurring_dates()
@ -15,6 +17,7 @@ def update_recurring_dates():
@event_cli.command("create-bulk-references")
@click.argument("admin_unit_id")
@click.argument("postal_codes", nargs=-1)
@click_logging
def create_bulk_event_references(admin_unit_id, postal_codes):
event.create_bulk_event_references(admin_unit_id, list(postal_codes))

View File

@ -1,7 +1,8 @@
import click
from flask.cli import AppGroup, with_appcontext
from flask.cli import AppGroup
from project import app
from project.cli import click_logging
from project.services import seo
seo_cli = AppGroup("seo")
@ -9,13 +10,13 @@ seo_cli = AppGroup("seo")
@seo_cli.command("generate-sitemap")
@click.option("--pinggoogle/--no-pinggoogle", default=False)
@with_appcontext
@click_logging
def generate_sitemap(pinggoogle):
seo.generate_sitemap(pinggoogle)
@seo_cli.command("generate-robots-txt")
@with_appcontext
@click_logging
def generate_robots_txt():
seo.generate_robots_txt()

View File

@ -46,7 +46,7 @@ from project.models import (
sanitize_allday_instance,
)
from project.services.event_search import EventSearchParams
from project.services.reference import upsert_event_reference
from project.services.reference import get_event_reference, upsert_event_reference
from project.utils import get_pending_changes, get_place_str
from project.views.utils import truncate
@ -662,11 +662,16 @@ def create_bulk_event_references(admin_unit_id: int, postalCodes: list):
query = get_events_query(params)
query = query.filter(Event.admin_unit_id != admin_unit_id)
count = 0
new_references = list()
events = query.all()
for event in events:
if upsert_event_reference(event.id, admin_unit_id):
count = count + 1
if not get_event_reference(event.id, admin_unit_id):
reference = upsert_event_reference(event.id, admin_unit_id)
new_references.append(reference)
db.session.commit()
app.logger.info(f"{count} reference(s) created.")
app.logger.info(f"{len(new_references)} reference(s) created.")
for new_reference in new_references:
url = url_for("event", event_id=new_reference.event_id, _external=True)
app.logger.info(url)

View File

@ -15,14 +15,18 @@ def create_event_reference_for_request(request):
return upsert_event_reference(request.event_id, request.admin_unit_id)
def upsert_event_reference(event_id: int, admin_unit_id: int):
result = EventReference.query.filter(
def get_event_reference(event_id: int, admin_unit_id: int):
return EventReference.query.filter(
and_(
EventReference.event_id == event_id,
EventReference.admin_unit_id == admin_unit_id,
)
).first()
def upsert_event_reference(event_id: int, admin_unit_id: int):
result = get_event_reference(event_id, admin_unit_id)
if result is None:
result = EventReference(event_id=event_id, admin_unit_id=admin_unit_id)
result.rating = 50

View File

@ -31,6 +31,7 @@ def test_create_bulk_event_references(client, seeder, app):
event_id_38690 = _create_event(seeder, other_admin_unit_id, "38690")
event_id_55555 = _create_event(seeder, other_admin_unit_id, "55555")
app.config["SERVER_NAME"] = "localhost"
runner = app.test_cli_runner()
result = runner.invoke(
args=[