def __init__(self, *args, **kwargs):
        super(IntervalPullFromCybersourceTask, self).__init__(*args, **kwargs)
        # Provide default for output_root at this level.
        if self.output_root is None:
            self.output_root = self.warehouse_path

        path = url_path_join(self.warehouse_path, 'payments')
        file_pattern = '*cybersource_{}.tsv'.format(self.merchant_id)
        path_targets = PathSetTask([path],
                                   include=[file_pattern],
                                   include_zero_length=True).output()
        paths = list(
            set([os.path.dirname(target.path) for target in path_targets]))
        dates = [path.rsplit('/', 2)[-1] for path in paths]
        latest_date = sorted(dates)[-1]

        latest_completion_date = datetime.datetime.strptime(
            latest_date, "dt=%Y-%m-%d").date()
        run_date = latest_completion_date + datetime.timedelta(days=1)

        # Limit intervals to merchant account close date(if any).
        if self.merchant_close_date:
            run_date = min(run_date, self.merchant_close_date)
            self.interval_end = min(self.interval_end,
                                    self.merchant_close_date)

        self.selection_interval = date_interval.Custom(self.interval_start,
                                                       run_date)
        self.run_interval = date_interval.Custom(run_date, self.interval_end)
 def requires(self):
     paypal_interval = date_interval.Custom(self.paypal_interval_start,
                                            self.import_date)
     for date in paypal_interval:
         url = url_path_join(self.warehouse_path, 'payments',
                             'dt=' + date.isoformat(), 'paypal.tsv')
         yield ExternalURL(url=url)
Example #3
0
    def __init__(self, *args, **kwargs):
        super(IntervalPullFromAffiliateWindowTask,
              self).__init__(*args, **kwargs)

        # Provide default for output_root at this level.
        if self.output_root is None:
            self.output_root = url_path_join(self.warehouse_path, 'fees',
                                             'affiliate_window')

        path = self.output_root
        file_pattern = '*affiliate_window.tsv'
        path_targets = PathSetTask([path],
                                   include=[file_pattern],
                                   include_zero_length=True).output()

        if path_targets:
            paths = list(
                set([os.path.dirname(target.path) for target in path_targets]))
            dates = [path.rsplit('/', 2)[-1] for path in paths]
            latest_date = sorted(dates)[-1]
            latest_completion_date = datetime.datetime.strptime(
                latest_date, "dt=%Y-%m-%d").date()
            self.interval_start = latest_completion_date + datetime.timedelta(
                days=1)
            print("Found previous reports to {}".format(latest_date))
        else:
            # If this is the first run, start from the beginning
            print(
                "Couldn't find last completed date, defaulting to start date: {}"
                .format(self.interval_start))

        self.run_interval = date_interval.Custom(self.interval_start,
                                                 self.interval_end)
        print("Running reports from interval {}".format(self.run_interval))
 def __init__(self, *args, **kwargs):
     super(IntervalPullFromCybersourceTask, self).__init__(*args, **kwargs)
     # Provide default for output_root at this level.
     if self.output_root is None:
         self.output_root = self.warehouse_path
     if self.interval is None:
         self.interval = date_interval.Custom(self.interval_start, self.interval_end)
Example #5
0
    def __init__(self, *args, **kwargs):
        super(PaypalTransactionsIntervalTask, self).__init__(*args, **kwargs)
        # Provide default for output_root at this level.
        if self.output_root is None:
            self.output_root = self.warehouse_path

        path = url_path_join(self.warehouse_path, 'payments')
        path_targets = PathSetTask([path], include=['*paypal.tsv']).output()
        paths = list(set([os.path.dirname(target.path) for target in path_targets]))
        dates = [path.rsplit('/', 2)[-1] for path in paths]
        latest_date = sorted(dates)[-1]

        latest_completion_date = datetime.datetime.strptime(latest_date, "dt=%Y-%m-%d").date()
        run_date = latest_completion_date + datetime.timedelta(days=1)

        self.selection_interval = date_interval.Custom(self.interval_start, run_date)
        self.run_interval = date_interval.Custom(run_date, self.interval_end)
Example #6
0
    def __init__(self, *args, **kwargs):
        super(PaypalTransactionsIntervalTask, self).__init__(*args, **kwargs)
        # Provide default for output_root at this level.
        if self.output_root is None:
            self.output_root = self.warehouse_path

        if self.interval is None:
            self.interval = date_interval.Custom(self.interval_start,
                                                 self.interval_end)
Example #7
0
    def requires(self):
        config = get_config()
        for merchant_id in self.cybersource_merchant_ids:
            section_name = 'cybersource:' + merchant_id
            interval_start = luigi.DateParameter().parse(config.get(section_name, 'interval_start'))
            interval_end = self.import_date

            merchant_close_date = config.get(section_name, 'merchant_close_date', '')
            if merchant_close_date:
                parsed_date = luigi.DateParameter().parse(merchant_close_date)
                interval_end = min(self.import_date, parsed_date)

            cybersource_interval = date_interval.Custom(interval_start, interval_end)

            for date in cybersource_interval:
                filename = "cybersource_{}.tsv".format(merchant_id)
                url = url_path_join(self.warehouse_path, 'payments', 'dt=' + date.isoformat(), filename)
                yield ExternalURL(url=url)