From 6c17d004d49e9937a4460e5345443b1c1e96b700 Mon Sep 17 00:00:00 2001 From: George Bao Lee Date: Fri, 14 Jun 2019 22:10:58 -0700 Subject: [PATCH 1/4] Add support for adjustments --- printing/paper | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/printing/paper b/printing/paper index 71bd409..42a17b3 100755 --- a/printing/paper +++ b/printing/paper @@ -11,15 +11,15 @@ from ocflib.misc.shell import green from ocflib.misc.shell import red from ocflib.misc.shell import yellow from ocflib.misc.whoami import current_user -from ocflib.printing.quota import add_refund +from ocflib.printing.quota import add_adjustment from ocflib.printing.quota import get_connection from ocflib.printing.quota import get_quota -from ocflib.printing.quota import Refund +from ocflib.printing.quota import Payload def staff_creds(): """Return dictionary of staff creds, if we can read them.""" - return json.load(open('/etc/ocfprinting.json')) + return json.load(open('/etc/ocfprinting-dev.json')) def view(args): @@ -43,36 +43,37 @@ def view(args): print(bold(red("Group accounts can't print. Sorry!"))) -def refund(args): - refund = Refund( +def adjust(args, type): + payload = Payload( user=args.user, time=datetime.now(), pages=args.pages, + action=type, staffer=current_user(), reason=args.reason, ) - prompt = bold('Refund {} pages to {}? [yN] '.format(refund.pages, refund.user)) + + stringtype = 'Refund' if type == 'refund' else 'Forward' + prompt = bold(stringtype + ' {} pages to {}? [yN] '.format(payload.pages, payload.user)) if input(prompt) not in {'y', 'yes'}: print('Cancelled.') return - try: credentials = staff_creds() except FileNotFoundError: print(red('Could not find the file for staff credentials.')) print(red('Are you running this on supernova?')) return 1 - with get_connection(**credentials) as c: - add_refund(c, refund) - + add_adjustment(c, payload) print('Added.') def main(argv=None): commands = { 'view': view, - 'refund': refund, + 'refund': adjust, + 'forward': adjust, } parser = argparse.ArgumentParser(description='View and manipulate page quotas.') @@ -87,6 +88,11 @@ def main(argv=None): parser_refund.add_argument('--reason', '-r', required=True, type=str) parser_refund.add_argument('user', type=str) + parser_forward = subparsers.add_parser('forward', help="allow a user to print above today's quota") + parser_forward.add_argument('--pages', '-p', required=True, type=int) + parser_forward.add_argument('--reason', '-r', required=True, type=str) + parser_forward.add_argument('user', type=str) + if len(argv or sys.argv[1:]) == 0: args = parser.parse_args(['view']) else: @@ -96,7 +102,10 @@ def main(argv=None): print(bold(red("The user {} doesn't exist.".format(args.user)))) return 1 - return commands[args.command](args) + if args.command == 'refund' or args.command == 'forward': + return commands[args.command](args,args.command) + else: + return commands[args.command](args) if __name__ == '__main__': From 173ca5ae2aa92d6154477f121823c0b570020245 Mon Sep 17 00:00:00 2001 From: George Bao Lee Date: Fri, 14 Jun 2019 23:47:25 -0700 Subject: [PATCH 2/4] Fix style --- printing/paper | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/printing/paper b/printing/paper index 42a17b3..cd0ea97 100755 --- a/printing/paper +++ b/printing/paper @@ -19,7 +19,7 @@ from ocflib.printing.quota import Payload def staff_creds(): """Return dictionary of staff creds, if we can read them.""" - return json.load(open('/etc/ocfprinting-dev.json')) + return json.load(open('/etc/ocfprinting.json')) def view(args): From 91c2675f70c576972a92dda2f41286ed741f8abe Mon Sep 17 00:00:00 2001 From: George Bao Lee Date: Fri, 14 Jun 2019 23:56:50 -0700 Subject: [PATCH 3/4] Fix style --- printing/paper | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/printing/paper b/printing/paper index cd0ea97..f12f943 100755 --- a/printing/paper +++ b/printing/paper @@ -103,7 +103,7 @@ def main(argv=None): return 1 if args.command == 'refund' or args.command == 'forward': - return commands[args.command](args,args.command) + return commands[args.command](args, args.command) else: return commands[args.command](args) From 3a8d1e6264352c118714f2532db2bb2b9721471f Mon Sep 17 00:00:00 2001 From: Justin Zhang Date: Sun, 23 Oct 2022 14:47:50 -0700 Subject: [PATCH 4/4] Apply feedback to adjustments --- printing/paper | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/printing/paper b/printing/paper index f12f943..4165cdd 100755 --- a/printing/paper +++ b/printing/paper @@ -43,18 +43,18 @@ def view(args): print(bold(red("Group accounts can't print. Sorry!"))) -def adjust(args, type): +def adjust(args): payload = Payload( user=args.user, time=datetime.now(), pages=args.pages, - action=type, + action=args.command, staffer=current_user(), reason=args.reason, ) - stringtype = 'Refund' if type == 'refund' else 'Forward' - prompt = bold(stringtype + ' {} pages to {}? [yN] '.format(payload.pages, payload.user)) + stringtype = 'Refund' if payload.action == 'refund' else 'Forward' + prompt = bold('{} + {} pages to {}? [yN] '.format(stringtype, payload.pages, payload.user)) if input(prompt) not in {'y', 'yes'}: print('Cancelled.') return @@ -102,10 +102,7 @@ def main(argv=None): print(bold(red("The user {} doesn't exist.".format(args.user)))) return 1 - if args.command == 'refund' or args.command == 'forward': - return commands[args.command](args, args.command) - else: - return commands[args.command](args) + return commands[args.command](args) if __name__ == '__main__':