mirror of
https://github.com/lucaspalomodevelop/eventcally.git
synced 2026-03-13 00:07:22 +00:00
Merge pull request #39 from DanielGrams/issues/38-cli-for-recurring-events
CLI for recurring events #38
This commit is contained in:
commit
8aa6bc35f9
10
README.md
10
README.md
@ -31,6 +31,16 @@ flask db upgrade
|
||||
flask run --host 0.0.0.0
|
||||
```
|
||||
|
||||
## Scheduled/Cron jobs
|
||||
|
||||
Jobs that should run on a regular basis.
|
||||
|
||||
### Daily
|
||||
|
||||
```sh
|
||||
flask event update-recurring-dates
|
||||
```
|
||||
|
||||
## Administration
|
||||
|
||||
```sh
|
||||
|
||||
@ -123,6 +123,7 @@ from project.views import (
|
||||
)
|
||||
|
||||
# Command line
|
||||
import project.cli.event
|
||||
import project.cli.user
|
||||
|
||||
if __name__ == "__main__": # pragma: no cover
|
||||
|
||||
23
project/cli/event.py
Normal file
23
project/cli/event.py
Normal file
@ -0,0 +1,23 @@
|
||||
import click
|
||||
from flask.cli import AppGroup
|
||||
from project import app, db
|
||||
from project.services.event import (
|
||||
get_recurring_events,
|
||||
update_event_dates_with_recurrence_rule,
|
||||
)
|
||||
|
||||
event_cli = AppGroup("event")
|
||||
|
||||
|
||||
@event_cli.command("update-recurring-dates")
|
||||
def update_recurring_dates():
|
||||
events = get_recurring_events()
|
||||
|
||||
for event in events:
|
||||
update_event_dates_with_recurrence_rule(event)
|
||||
db.session.commit()
|
||||
|
||||
click.echo(f"{len(events)} event(s) where updated.")
|
||||
|
||||
|
||||
app.cli.add_command(event_cli)
|
||||
@ -122,6 +122,10 @@ def get_events_query(params):
|
||||
)
|
||||
|
||||
|
||||
def get_recurring_events():
|
||||
return Event.query.filter(Event.recurrence_rule is not None).all()
|
||||
|
||||
|
||||
def update_event_dates_with_recurrence_rule(event):
|
||||
start = event.start
|
||||
end = event.end
|
||||
|
||||
7
tests/cli/test_event.py
Normal file
7
tests/cli/test_event.py
Normal file
@ -0,0 +1,7 @@
|
||||
def test_update_recurring_dates(client, seeder, app):
|
||||
user_id, admin_unit_id = seeder.setup_base()
|
||||
seeder.create_event(admin_unit_id, "RRULE:FREQ=DAILY;COUNT=7")
|
||||
|
||||
runner = app.test_cli_runner()
|
||||
result = runner.invoke(args=["event", "update-recurring-dates"])
|
||||
assert "1 event(s) where updated." in result.output
|
||||
@ -125,7 +125,7 @@ class Seeder(object):
|
||||
|
||||
return organizer_id
|
||||
|
||||
def create_event(self, admin_unit_id):
|
||||
def create_event(self, admin_unit_id, recurrence_rule=None):
|
||||
from project.models import Event
|
||||
from project.services.event import insert_event, upsert_event_category
|
||||
from project.dateutils import now
|
||||
@ -139,6 +139,7 @@ class Seeder(object):
|
||||
event.start = now
|
||||
event.event_place_id = self.upsert_default_event_place(admin_unit_id)
|
||||
event.organizer_id = self.upsert_default_event_organizer(admin_unit_id)
|
||||
event.recurrence_rule = recurrence_rule
|
||||
insert_event(event)
|
||||
self._db.session.commit()
|
||||
event_id = event.id
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user