Changeset bea5278 in rattail


Ignore:
Timestamp:
11/20/2022 01:56:54 PM (3 months ago)
Author:
Lance Edgar <lance@…>
Branches:
master
Children:
aa734cb0
Parents:
c859743
Message:

Fix how keys are stored for luigi overnight/backfill tasks

File:
1 edited

Legend:

Unmodified
Added
Removed
  • rattail/luigi/handler.py

    rc859743 rbea5278  
    3131import subprocess
    3232import sys
     33import warnings
    3334
    3435import sqlalchemy as sa
     
    9192    def get_all_overnight_tasks(self, **kwargs):
    9293        tasks = []
    93         keys = self.config.getlist('rattail.luigi', 'overnight_tasks',
     94
     95        keys = self.config.getlist('rattail.luigi', 'overnight.tasks',
    9496                                   default=[])
     97        if not keys:
     98            keys = self.config.getlist('rattail.luigi', 'overnight_tasks',
     99                                       default=[])
     100            if keys:
     101                warnings.warn("setting is deprecated: [rattail.luigi] overnight_tasks; "
     102                              "please use [rattail.luigi] overnight.tasks instead",
     103                              DeprecationWarning)
     104
    95105        for key in keys:
    96             lastrun = self.config.get(
    97                 'rattail.luigi', 'overnight.{}.lastrun'.format(key))
     106            if key.startswith('overnight-'):
     107                key = key[len('overnight-'):]
     108                warnings.warn("overnight task keys use deprecated 'overnight-' prefix",
     109                              DeprecationWarning)
     110
     111            lastrun = self.get_overnight_task_setting(key, 'lastrun')
    98112            lastrun = self.app.parse_utctime(lastrun, local=True)
    99113            tasks.append({
    100114                'key': key,
    101                 'description': self.config.get(
    102                     'rattail.luigi', 'overnight.{}.description'.format(key)),
    103                 'script': self.config.get(
    104                     'rattail.luigi', 'overnight.{}.script'.format(key)),
    105                 'notes': self.config.get(
    106                     'rattail.luigi', 'overnight.{}.notes'.format(key)),
     115                'description': self.get_overnight_task_setting(key, 'description'),
     116                'script': self.get_overnight_task_setting(key, 'script'),
     117                'notes': self.get_overnight_task_setting(key, 'notes'),
    107118                'lastrun': lastrun,
    108                 'last_date': self.config.getdate(
    109                     'rattail.luigi', 'overnight.{}.last_date'.format(key)),
     119                'last_date': self.get_overnight_task_setting(key, 'last_date',
     120                                                             typ='date'),
    110121            })
    111122        tasks.sort(key=lambda t: t['description'])
    112123        return tasks
    113124
     125    def get_overnight_task_setting(self, key, name, typ=None, **kwargs):
     126        getter = self.config.get
     127        if typ == 'date':
     128            getter = self.config.getdate
     129        value = getter('rattail.luigi',
     130                       'overnight.task.{}.{}'.format(key, name))
     131        if value is None:
     132            value = getter('rattail.luigi',
     133                           'overnight.overnight-{}.{}'.format(key, name))
     134            if value is not None:
     135                warnings.warn("[rattail.luigi] overnight.overnight-* settings are deprecated; "
     136                              "please use [rattail.luigi] overnight.task.* instead",
     137                              DeprecationWarning)
     138        return value
     139
    114140    def get_overnight_task(self, key, **kwargs):
     141        if key.startswith('overnight-'):
     142            key = key[len('overnight-'):]
     143            warnings.warn("overnight task keys use deprecated 'overnight-' prefix",
     144                          DeprecationWarning, stacklevel=2)
     145
    115146        for task in self.get_all_overnight_tasks():
    116147            if task['key'] == key:
     
    150181
    151182    def record_overnight_last_date(self, task, date, session=None, **kwargs):
    152         name = 'rattail.luigi.overnight.{}.last_date'.format(task['key'])
     183        name = 'rattail.luigi.overnight.task.{}.last_date'.format(task['key'])
    153184        with self.app.short_session(session=session, commit=True) as s:
    154185            self.app.save_setting(s, name, six.text_type(date))
     
    156187    def get_all_backfill_tasks(self, **kwargs):
    157188        tasks = []
    158         keys = self.config.getlist('rattail.luigi', 'backfill_tasks',
     189
     190        keys = self.config.getlist('rattail.luigi', 'backfill.tasks',
    159191                                   default=[])
     192        if not keys:
     193            keys = self.config.getlist('rattail.luigi', 'backfill_tasks',
     194                                       default=[])
     195            if keys:
     196                warnings.warn("setting is deprecated: [rattail.luigi] backfill_tasks; "
     197                              "please use [rattail.luigi] backfill.tasks instead",
     198                              DeprecationWarning)
     199
    160200        for key in keys:
    161             lastrun = self.config.get(
    162                 'rattail.luigi', 'backfill.{}.lastrun'.format(key))
     201            if key.startswith('backfill-'):
     202                key = key[len('backfill-'):]
     203                warnings.warn("backfill task keys use deprecated 'backfill-' prefix",
     204                              DeprecationWarning)
     205
     206            lastrun = self.get_backfill_task_setting(key, 'lastrun')
    163207            lastrun = self.app.parse_utctime(lastrun, local=True)
    164208            tasks.append({
    165209                'key': key,
    166                 'description': self.config.get(
    167                     'rattail.luigi', 'backfill.{}.description'.format(key)),
    168                 'script': self.config.get(
    169                     'rattail.luigi', 'backfill.{}.script'.format(key)),
    170                 'forward': self.config.getbool(
    171                     'rattail.luigi', 'backfill.{}.forward'.format(key),
    172                     default=False),
    173                 'notes': self.config.get(
    174                     'rattail.luigi', 'backfill.{}.notes'.format(key)),
     210                'description': self.get_backfill_task_setting(key, 'description'),
     211                'script': self.get_backfill_task_setting(key, 'script'),
     212                'forward': self.get_backfill_task_setting(key, 'forward',
     213                                                          typ='bool') or False,
     214                'notes': self.get_backfill_task_setting(key, 'notes'),
    175215                'lastrun': lastrun,
    176                 'last_date': self.config.getdate(
    177                     'rattail.luigi', 'backfill.{}.last_date'.format(key)),
    178                 'target_date': self.config.getdate(
    179                     'rattail.luigi', 'backfill.{}.target_date'.format(key)),
     216                'last_date': self.get_backfill_task_setting(key, 'last_date',
     217                                                            typ='date'),
     218                'target_date': self.get_backfill_task_setting(key, 'target_date',
     219                                                              typ='date'),
    180220            })
    181221        tasks.sort(key=lambda t: t['description'])
    182222        return tasks
    183223
     224    def get_backfill_task_setting(self, key, name, typ=None, **kwargs):
     225        getter = self.config.get
     226        if typ == 'bool':
     227            getter = self.config.getbool
     228        elif typ == 'date':
     229            getter = self.config.getdate
     230        value = getter('rattail.luigi',
     231                       'backfill.task.{}.{}'.format(key, name))
     232        if value is None:
     233            value = getter('rattail.luigi',
     234                           'backfill.backfill-{}.{}'.format(key, name))
     235            if value is not None:
     236                warnings.warn("[rattail.luigi] backfill.backfill-* settings are deprecated; "
     237                              "please use [rattail.luigi] backfill.task.* instead",
     238                              DeprecationWarning)
     239        return value
     240
    184241    def get_backfill_task(self, key, **kwargs):
     242        if key.startswith('backfill-'):
     243            key = key[len('backfill-'):]
     244            warnings.warn("backfill task keys use deprecated 'backfill-' prefix",
     245                          DeprecationWarning, stacklevel=2)
     246
    185247        for task in self.get_all_backfill_tasks():
    186248            if task['key'] == key:
     
    240302
    241303    def record_backfill_last_date(self, task, date, session=None, **kwargs):
    242         name = 'rattail.luigi.backfill.{}.last_date'.format(task['key'])
     304        name = 'rattail.luigi.backfill.task.{}.last_date'.format(task['key'])
    243305        with self.app.short_session(session=session, commit=True) as s:
    244306            self.app.save_setting(s, name, six.text_type(date))
Note: See TracChangeset for help on using the changeset viewer.