-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathwebpac
More file actions
executable file
·133 lines (103 loc) · 5.84 KB
/
webpac
File metadata and controls
executable file
·133 lines (103 loc) · 5.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#!/usr/bin/env python
"""Provides command line interface to Millennium WebPAC functions."""
__author__ = "Andrew Livesay <andrewl@multco.us>"
__license__ = "Public Domain"
import argparse
import os
import sys
from WebPACSession import WebPACSession
def process_args():
base_parser = argparse.ArgumentParser(description='Provides a CLI wrapper to Millennium WebPAC functions.')
server_opts = { 'default': os.environ['WEBPAC_SERVER'] } if 'WEBPAC_SERVER' in os.environ else { 'required': True }
base_parser.add_argument('--server',
help='hostname or IP of Millennium server',
**server_opts)
base_parser.add_argument('--port',
help='remote WebPAC port on the Millennium server (default: 443)',
default=os.environ.get('WEBPAC_PORT', 443))
base_parser.add_argument('--no_ssl',
help='disable server connection',
action='store_true',
default=False,
dest='no_ssl')
base_parser.add_argument('--debug',
help='enable diagnostic output',
action='store_true',
default=False)
subparsers = base_parser.add_subparsers(help='sub-command help', dest='command')
changepin_parser = subparsers.add_parser('change_pin', help='change patron\'s PIN')
changepin_parser.add_argument('BARCODE', help='patron\'s barcode')
changepin_parser.add_argument('PIN', help='patron\'s PIN')
changepin_parser.add_argument('NEW_PIN', help='new PIN')
modpinfo_parser = subparsers.add_parser('modify_contact_info', help='modify patron\'s contact information')
modpinfo_parser.add_argument('BARCODE', help='patron\'s barcode')
modpinfo_parser.add_argument('PIN', help='patron\'s PIN')
modpinfo_parser.add_argument('ADDRESS_LINE_1', help='address line one')
modpinfo_parser.add_argument('ADDRESS_LINE_2', help='address line two')
modpinfo_parser.add_argument('TELEPHONE', help='telephone number')
modpinfo_parser.add_argument('EMAIL', help='email address')
modpinfo_parser.add_argument('LOCATION_CODE', help='default branch location code')
register_parser = subparsers.add_parser('register', help='register a new patron')
register_parser.add_argument('FIRST_NAME', help='first name')
register_parser.add_argument('MIDDLE_NAME', help='middle name')
register_parser.add_argument('LAST_NAME', help='last name')
register_parser.add_argument('MAILING_ADDRESS_LINE_1', help='mailing address line 1')
register_parser.add_argument('MAILING_ADDRESS_LINE_2', help='mailing address line 2')
register_parser.add_argument('STREET_ADDRESS_LINE_1', help='street address line 1')
register_parser.add_argument('STREET_ADDRESS_LINE_2', help='street address line 2')
register_parser.add_argument('TELEPHONE', help='telephone (XXX-XXX-XXXX)')
register_parser.add_argument('EMAIL', help='email address')
register_parser.add_argument('BIRTHDATE', help='birthdate (MMDDYYYY)')
acquire_parser = subparsers.add_parser('acquire', help='submit a suggestion for purchase')
acquire_parser.add_argument('BARCODE', help='patron\'s barcode')
acquire_parser.add_argument('PIN', help='patron\'s PIN')
acquire_parser.add_argument('AUTHOR', help='author')
acquire_parser.add_argument('TITLE', help='title')
acquire_parser.add_argument('PUBLISHER', help='publisher')
acquire_parser.add_argument('ISBN', help='issn/isbn')
acquire_parser.add_argument('TYPE', help='type [BOOK|AUDIOBOOK|EBOOK|LARGE PRINT|MUSIC|DVD|PERIODICAL|ZINE|DATABASE|OTHER]')
acquire_parser.add_argument('SUBJECT', help='subject')
contact_parser = subparsers.add_parser('get_contact_info', help='get patron\'s current contact information')
contact_parser.add_argument('BARCODE', help='patron\'s barcode')
contact_parser.add_argument('PIN', help='patron\'s PIN')
pinreset_parser = subparsers.add_parser('pin_reset', help='resets a patron\'s PIN')
pinreset_parser.add_argument('BARCODE', help='patron\'s barcode')
return base_parser.parse_args()
if __name__ == "__main__":
args = process_args()
base_url = ['https://','http://'][args.no_ssl] + args.server + ':' + str(args.port)
wpsession = WebPACSession(base_url, debug=args.debug)
try:
if args.command == 'change_pin':
wpsession.login(args.BARCODE, args.PIN)
wpsession.change_pin(args.PIN, args.NEW_PIN)
elif args.command == 'modify_contact_info':
wpsession.login(args.BARCODE, args.PIN)
wpsession.modify_contact_info(args.ADDRESS_LINE_1,
args.ADDRESS_LINE_2,
args.TELEPHONE,
args.EMAIL,
args.LOCATION_CODE)
elif args.command == 'register':
wpsession.register(args.FIRST_NAME, args.MIDDLE_NAME, args.LAST_NAME,
args.MAILING_ADDRESS_LINE_1, args.MAILING_ADDRESS_LINE_2,
args.STREET_ADDRESS_LINE_1, args.STREET_ADDRESS_LINE_2,
args.TELEPHONE, args.EMAIL, args.BIRTHDATE)
elif args.command == 'acquire':
wpsession.login(args.BARCODE, args.PIN)
wpsession.acquire(args.AUTHOR, args.TITLE, args.PUBLISHER,
args.ISBN, args.TYPE, args.SUBJECT)
elif args.command == 'pin_reset':
wpsession.pin_reset(args.BARCODE)
elif args.command == 'get_contact_info':
wpsession.login(args.BARCODE, args.PIN)
ci = wpsession.get_contact_info()
if ci:
print '%s\n%s\n%s\n%s\n%s' % (ci.get('addr1a'), ci.get('addr1b'), ci.get('tele1'), ci.get('email'), ci.get('locx00'))
else:
print 'No contact information available.'
else:
print 'error: unhandled subcommand \'%s\'' % args.command
except Exception as e:
sys.stderr.write('Error: %s\n' % str(e))
sys.exit(1)