Skip to content

Commit df328b0

Browse files
author
Cameron Brandon White
committed
Implemented basics of acmcli
1 parent c337870 commit df328b0

File tree

6 files changed

+525
-0
lines changed

6 files changed

+525
-0
lines changed

acmcli/__init__.py

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
DATETIME_FORMAT = "%Y-%m-%d %H:%M:%S.%f"
2+
DATE_FORMAT = '%Y-%m-%d'
3+
DEFAULT_BASE_URL = 'https://acm.pdx.edu/api/v1'
4+
5+
from .parser import parser
6+
from .routines import *
7+
from acmlib import AcmLib
8+
9+
def acmcli():
10+
args = parser.parse_args()
11+
12+
acmlib = AcmLib(
13+
username = args.username,
14+
password = args.password,
15+
base_url = args.base_url,
16+
)
17+
18+
if args.subparser1 == 'events':
19+
if args.subparser2 == 'add':
20+
events_add(acmlib, args)
21+
elif args.subparser2 == 'update':
22+
events_update(acmlib, args)
23+
elif args.subparser2 == 'list':
24+
events_list(acmlib, args)
25+
elif args.subparser1 == 'posts':
26+
if args.subparser2 == 'add':
27+
posts_add(acmlib, args)
28+
elif args.subparser2 == 'update':
29+
posts_update(acmlib, args)
30+
elif args.subparser2 == 'list':
31+
posts_list(acmlib, args)
32+
elif args.subparser1 == 'people':
33+
if args.subparser2 == 'add':
34+
people_add(acmlib, args)
35+
elif args.subparser2 == 'update':
36+
people_update(acmlib, args)
37+
elif args.subparser2 == 'list':
38+
people_list(acmlib, args)
39+
elif args.subparser2 == 'delete':
40+
people_delete(acmlib, args)
41+
elif args.subparser1 == 'memberships':
42+
if args.subparser2 == 'add':
43+
memberships_add(acmlib, args)
44+
elif args.subparser2 == 'update':
45+
memberships_update(acmlib, args)
46+
elif args.subparser2 == 'list':
47+
memberships_list(acmlib, args)
48+
elif args.subparser2 == 'delete':
49+
memberships_delete(acmlib, args)
50+
elif args.subparser1 == 'officerships':
51+
if args.subparser2 == 'add':
52+
officerships_add(acmlib, args)
53+
elif args.subparser2 == 'update':
54+
officerships_update(acmlib, args)
55+
elif args.subparser2 == 'list':
56+
officerships_list(acmlib, args)
57+
elif args.subparser2 == 'delete':
58+
officerships_delete(acmlib, args)

acmcli/parser.py

+196
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
import argparse
2+
import datetime
3+
4+
from . import DATETIME_FORMAT, DATE_FORMAT, DEFAULT_BASE_URL
5+
6+
def date_type(x):
7+
""" A function which acts as a type for reqparse.
8+
9+
Given a string this function will return a date object if the string
10+
is in the currect format.
11+
12+
>>> date_type('2014-04-11')
13+
datetime.date(2014, 4, 11)
14+
"""
15+
try:
16+
return datetime.datetime.strptime(x, DATE_FORMAT).date()
17+
except ValueError:
18+
raise argparse.ArgumentTypeError(
19+
'Must be a valid date in the {} format'.format(DATE_FORMAT))
20+
21+
def datetime_type(x):
22+
""" A function which acts as a type for reqparse.
23+
24+
Given a string this function will return a datetime object if the
25+
string is in the currect format.
26+
27+
>>> datetime_type('2014-04-11 16:20:00.00000')
28+
datetime.datetime(2014, 4, 11, 16, 20)
29+
"""
30+
try:
31+
return datetime.datetime.strptime(x, DATETIME_FORMAT)
32+
except ValueError:
33+
raise argparse.ArgumentTypeError(
34+
'Must be a valid datetime in the {} format'.format(DATETIME_FORMAT))
35+
36+
parser = argparse.ArgumentParser(
37+
description="")
38+
39+
parser.add_argument('--base_url', type=str, default=DEFAULT_BASE_URL)
40+
parser.add_argument('--username', type=str)
41+
parser.add_argument('--password', type=str)
42+
43+
subparsers = parser.add_subparsers(
44+
description="",
45+
dest='subparser1')
46+
47+
#
48+
# Events Parser
49+
#
50+
51+
events_parser = subparsers.add_parser('events')
52+
53+
events_subparsers = events_parser.add_subparsers(dest='subparser2')
54+
55+
events_add_parser = events_subparsers.add_parser('add')
56+
57+
events_add_parser.add_argument('--title', type=str)
58+
events_add_parser.add_argument('--description', type=str)
59+
events_add_parser.add_argument('--location', type=str)
60+
events_add_parser.add_argument('--speaker', type=str)
61+
events_add_parser.add_argument('--canceled', type=bool)
62+
events_add_parser.add_argument('--hidden', type=bool)
63+
events_add_parser.add_argument('--start', type=datetime_type)
64+
events_add_parser.add_argument('--end', type=datetime_type)
65+
66+
events_update_parser = events_subparsers.add_parser('update')
67+
68+
events_update_parser.add_argument('--title', type=str)
69+
events_update_parser.add_argument('--description', type=str)
70+
events_update_parser.add_argument('--location', type=str)
71+
events_update_parser.add_argument('--speaker', type=str)
72+
events_update_parser.add_argument('--canceled', type=bool)
73+
events_update_parser.add_argument('--hidden', type=bool)
74+
events_update_parser.add_argument('--start', type=datetime_type)
75+
events_update_parser.add_argument('--end', type=datetime_type)
76+
77+
events_list_parser = events_subparsers.add_parser('list')
78+
79+
events_list_parser.add_argument('--event_id')
80+
81+
#
82+
# Posts Parser
83+
#
84+
85+
posts_parser = subparsers.add_parser('posts')
86+
87+
posts_subparsers = posts_parser.add_subparsers(dest='subparser2')
88+
89+
posts_add_parser = posts_subparsers.add_parser('add')
90+
91+
posts_add_parser.add_argument('--title', type=str)
92+
posts_add_parser.add_argument('--description', type=str)
93+
posts_add_parser.add_argument('--content', type=str)
94+
95+
posts_update_parser = posts_subparsers.add_parser('update')
96+
97+
posts_update_parser.add_argument('--title', type=str)
98+
posts_update_parser.add_argument('--description', type=str)
99+
posts_update_parser.add_argument('--content', type=str)
100+
101+
posts_list_parser = posts_subparsers.add_parser('list')
102+
103+
posts_list_parser.add_argument('--post_id')
104+
105+
#
106+
# People Parser
107+
#
108+
109+
people_parser = subparsers.add_parser('people')
110+
111+
people_subparsers = people_parser.add_subparsers(dest='subparser2')
112+
113+
people_add_parser = people_subparsers.add_parser('add')
114+
115+
people_add_parser.add_argument('username', type=str)
116+
people_add_parser.add_argument('password', type=str)
117+
people_add_parser.add_argument('--name', type=str)
118+
people_add_parser.add_argument('--email', type=str)
119+
people_add_parser.add_argument('--website', type=str)
120+
121+
people_update_parser = people_subparsers.add_parser('update')
122+
123+
124+
people_update_parser.add_argument('id_or_username')
125+
people_update_parser.add_argument('--password')
126+
people_update_parser.add_argument('--name')
127+
people_update_parser.add_argument('--email')
128+
people_update_parser.add_argument('--website')
129+
130+
people_list_parser = people_subparsers.add_parser('list')
131+
132+
people_list_parser.add_argument('--id_or_username')
133+
134+
people_delete_parser = people_subparsers.add_parser('delete')
135+
136+
people_delete_parser.add_argument('id_or_username')
137+
138+
#
139+
# Memberships Parser
140+
#
141+
142+
memberships_parser = subparsers.add_parser('memberships')
143+
144+
memberships_subparsers = memberships_parser.add_subparsers(dest='subparser2')
145+
146+
memberships_add_parser = memberships_subparsers.add_parser('add')
147+
148+
memberships_add_parser.add_argument('person_id', type=int)
149+
memberships_add_parser.add_argument('start')
150+
memberships_add_parser.add_argument('--end')
151+
152+
memberships_update_parser = memberships_subparsers.add_parser('update')
153+
154+
memberships_update_parser.add_argument('--person_id', type=int)
155+
memberships_update_parser.add_argument('--start', type=date_type)
156+
memberships_update_parser.add_argument('--end', type=date_type)
157+
158+
memberships_list_parser = memberships_subparsers.add_parser('list')
159+
160+
memberships_list_parser.add_argument('--membership_id', type=int)
161+
162+
memberships_delete_parser = memberships_subparsers.add_parser('delete')
163+
164+
memberships_delete_parser.add_argument('membership_id', type=int)
165+
166+
#
167+
# Officerships Parser
168+
#
169+
170+
officerships_parser = subparsers.add_parser('officerships')
171+
172+
officerships_subparsers = officerships_parser.add_subparsers(dest='subparser2')
173+
174+
officerships_add_parser = officerships_subparsers.add_parser('add')
175+
176+
officerships_add_parser.add_argument('person_id', type=int)
177+
officerships_add_parser.add_argument('title', type=str)
178+
officerships_add_parser.add_argument('start', type=date_type)
179+
officerships_add_parser.add_argument('--end', type=date_type)
180+
181+
officerships_update_parser = officerships_subparsers.add_parser('update')
182+
183+
officerships_update_parser.add_argument('--person_id', type=int)
184+
officerships_update_parser.add_argument('--title', type=str)
185+
officerships_update_parser.add_argument('--start', type=date_type)
186+
officerships_update_parser.add_argument('--end', type=date_type)
187+
188+
officerships_list_parser = officerships_subparsers.add_parser('list')
189+
190+
officerships_list_parser.add_argument('--officership_id', type=int)
191+
192+
officerships_delete_parser = officerships_subparsers.add_parser('delete')
193+
194+
officerships_delete_parser.add_argument('officership_id', type=int)
195+
196+
parser.parse_args()

0 commit comments

Comments
 (0)