Scheduling - skip days
This commit is contained in:
parent
8e8a85e822
commit
cef4a1b731
4 changed files with 38 additions and 11 deletions
36
db.py
36
db.py
|
|
@ -1,11 +1,9 @@
|
|||
import os
|
||||
import sqlite3
|
||||
import datetime
|
||||
|
||||
from settings import SQLITE_DB
|
||||
|
||||
TABLE_REPEATS = '''
|
||||
CREATE TABLE IF NOT EXISTS repeats (
|
||||
TABLE_REPEAT = '''
|
||||
CREATE TABLE IF NOT EXISTS repeat (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
probability FLOAT NOT NULL,
|
||||
orders TEXT NOT NULL,
|
||||
|
|
@ -13,6 +11,13 @@ TABLE_REPEATS = '''
|
|||
);
|
||||
'''
|
||||
|
||||
TABLE_SKIP_DAY = '''
|
||||
CREATE TABLE IF NOT EXISTS skip_day (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
date TIMESTAMP UNIQUE NOT NULL
|
||||
);
|
||||
'''
|
||||
|
||||
TABLE_ORDER_STATUS = '''
|
||||
CREATE TABLE IF NOT EXISTS order_status (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
|
|
@ -39,7 +44,8 @@ class Database:
|
|||
def __init__(self):
|
||||
self.conn = sqlite3.connect(SQLITE_DB)
|
||||
self.conn.row_factory = sqlite3.Row
|
||||
self.table_init(TABLE_REPEATS)
|
||||
self.table_init(TABLE_REPEAT)
|
||||
self.table_init(TABLE_SKIP_DAY)
|
||||
self.table_init(TABLE_PUNISHMENT_STATUS)
|
||||
self.table_init(TABLE_ORDER_STATUS)
|
||||
|
||||
|
|
@ -56,21 +62,33 @@ class Database:
|
|||
|
||||
def repeat_get(self):
|
||||
c = self.conn.cursor()
|
||||
sql = 'SELECT id, probability, orders, count FROM repeats LIMIT 1'
|
||||
sql = 'SELECT id, probability, orders, count FROM repeat LIMIT 1'
|
||||
c.execute(sql)
|
||||
return c.fetchone()
|
||||
|
||||
def repeat_increment(self):
|
||||
self.update('UPDATE repeats SET count = count + 1')
|
||||
self.update('UPDATE repeat SET count = count + 1')
|
||||
|
||||
def repeat_put(self, probability, orders):
|
||||
self.update(
|
||||
'INSERT INTO repeats (probability, orders) VALUES (?, ?);',
|
||||
'INSERT INTO repeat (probability, orders) VALUES (?, ?);',
|
||||
[probability, orders]
|
||||
)
|
||||
|
||||
def repeat_clear(self):
|
||||
self.update('DELETE FROM repeats')
|
||||
self.update('DELETE FROM repeat')
|
||||
|
||||
def skip_day_put(self, date):
|
||||
self.update(
|
||||
'INSERT INTO skip_day (date) VALUES (?);',
|
||||
[date]
|
||||
)
|
||||
|
||||
def skip_day_contains(self, date):
|
||||
c = self.conn.cursor()
|
||||
sql = 'SELECT * FROM skip_day WHERE date=?;'
|
||||
c.execute(sql, [date])
|
||||
return c.fetchone() is not None
|
||||
|
||||
def order_status_put(self, mastodon_id, created_at, text):
|
||||
self.update(
|
||||
|
|
|
|||
1
main.py
1
main.py
|
|
@ -1,4 +1,3 @@
|
|||
import os
|
||||
import sys
|
||||
import logging
|
||||
import argparse
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import os
|
||||
import logging
|
||||
|
||||
from settings import MASTODON_INSTANCE, MASTODON_ACCESS_TOKEN
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ from scheduler.asyncio import Scheduler
|
|||
|
||||
from settings import TIMEZONE, ORDER_TIME, ORDER_TIMEOUT
|
||||
from orders import order_issue, order_check
|
||||
from db import Database
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
|
@ -25,8 +26,18 @@ class OrderScheduler():
|
|||
logger.info(self.scheduler)
|
||||
|
||||
async def scheduled_order(self):
|
||||
# Skip weekends
|
||||
day_of_week = datetime.datetime.now(tz=self.tz).weekday()
|
||||
if (day_of_week in [SATURDAY, SUNDAY]):
|
||||
logger.info('Today is a weekend')
|
||||
return
|
||||
|
||||
# Skip stored dates
|
||||
d = Database()
|
||||
today = datetime.datetime.now(tz=self.tz).strftime("%Y-%d-%m")
|
||||
logger.info('Today %s' % today)
|
||||
if (d.skip_day_contains(today)):
|
||||
logger.info('Today is a skip day')
|
||||
return
|
||||
|
||||
await order_issue()
|
||||
|
|
|
|||
Loading…
Reference in a new issue