diff --git a/configure.py b/configure.py index db6e030..65c74a7 100755 --- a/configure.py +++ b/configure.py @@ -219,6 +219,7 @@ if __name__ == '__main__': parser.add_argument('--dump-pdf', help="create pdf from the markdown") parser.add_argument('--build-hugo-content', help="directory to where to build hugo content") parser.add_argument('--metrics', help="print some project metrics", action="store_const", const=True) + parser.add_argument('--add-extra-project', help="specify a github url to add. Project is added to the extra_projects list specifed in config.yaml") args = parser.parse_args() @@ -235,11 +236,15 @@ if __name__ == '__main__': ch.setFormatter(log_format) log.addHandler(ch) + orders = Orders(config) + if args.update_orders: - orders = Orders(config) orders.fetch_orders() orders.update_project_list() + if args.add_extra_project: + orders.add_extra_project(args.add_extra_project) + projects = Projects(config, args) docs = Docs(projects.projects, args=args) diff --git a/orders.py b/orders.py index 7435052..264dbf7 100644 --- a/orders.py +++ b/orders.py @@ -1,4 +1,5 @@ import stripe, os +import time from datetime import datetime import yaml import requests @@ -15,9 +16,32 @@ class Orders(): self.orders = [] def fetch_orders(self): - orders = self.fetch_stripe_orders() + self.fetch_university_orders() + orders = self.fetch_stripe_orders() + self.fetch_university_orders() + self.fetch_extra_orders() self.orders = sorted(orders, key=lambda d: d['time']) + def add_extra_project(self, git_url): + with open(self.config['extra_projects']) as fh: + config = yaml.safe_load(fh) + config.append({'project': {'url' : git_url, 'timestamp' : time.time()}}) + with open(self.config['extra_projects'], 'w') as fh: + yaml.safe_dump(config, fh) + logging.info(f"added {git_url} to {self.config['extra_projects']}") + + def fetch_extra_orders(self): + with open(self.config['extra_projects']) as fh: + config = yaml.safe_load(fh) + + orders = [] + for project in config: + orders.append({ + 'git_url' : project['project']['url'], + 'email' : None, + 'time' : datetime.fromtimestamp(project['project']['timestamp']).replace(tzinfo=pytz.UTC) + }) + + logging.info(f"fetched extra {len(orders)} orders") + return orders + def fetch_university_orders(self): name = self.config['name'] url = f'https://app.tinytapeout.com/api/submissions?shuttle={name}'