-
Notifications
You must be signed in to change notification settings - Fork 0
/
subscriptions.py
214 lines (159 loc) · 4.86 KB
/
subscriptions.py
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
import json
import random
import sys
import globals
"""
addSubscription takes input and creates a subscription
dict and passes to createSubscriptionsJson
Arguments:
company: A company name for subscription
amount: how much the user is paying per interval
paymentFrequency: how often the user is paying
subscriptionPeriod:
startDate: when payment began
Returns:
None
"""
def addSubscription(company, amount, paymentFrequency, subscriptionPeriod, startDate):
sub = {"company": company,
"amount": amount,
"paymentFrequency": paymentFrequency,
"subPeriod": subscriptionPeriod,
"startDate": startDate,
"subId": generateSubscriptionId()
}
createSubscriptionsJson(sub)
print("Subscription created with ID: "+str(sub["subId"]))
"""
Creates a random ID for subscriptions used for editing and deleting
Arguments:
None
Returns:
a random int from 1000-9999
"""
def generateSubscriptionId():
intToReturn = random.randint(1000, 9999)
user_dir = globals.credentialPath
user_dir = user_dir[:-20]
data = json.load(open(user_dir+"userSubscriptions.json","r"))
for x in data:
if intToReturn in x:
generateSubscriptionId()
return intToReturn
"""
Writes to userSubscriptions.json
Arguments:
subscription dict
Returns:
None
"""
def createSubscriptionsJson(subscription):
user_dir = globals.credentialPath
user_dir = user_dir[:-20]
file = open(user_dir+"userSubscriptions.json","r")
data = json.load(file)
data.append(subscription)
file.close
newFile = open(user_dir+"userSubscriptions.json","w")
newFile.write(json.dumps(data))
newFile.close
"""
Takes in data for updating a subscription in the userSubscriptions.json file
Arguments:
subscriptionId: Id for determining which subscription to edit
company: A company name for subscription
amount: how much the user is paying per interval
paymentFrequency: how often the user is paying
subscriptionPeriod:
startDate: when payment began
Returns:
None
"""
def editSubscription(subscriptionId, company, amount, paymentFrequency, subscriptionPeriod, startDate):
user_dir = globals.credentialPath
user_dir = user_dir[:-20]
file = open(user_dir+"userSubscriptions.json","r+")
data = json.load(file)
for x in data:
if subscriptionId == x["subId"]:
x["company"]=company
x["amount"]=amount
x["paymentFrequency"]=paymentFrequency
x["subPeriod"]=subscriptionPeriod
x["startDate"]=startDate
editSubscriptionJson(data)
file.close
"""
Edits the json file with the updated data from editSibscription
Arguments:
updatedData: dict of updated data
Returns:
None
"""
def editSubscriptionJson(updatedData):
user_dir = globals.credentialPath
user_dir = user_dir[:-20]
file = open(user_dir+"userSubscriptions.json","w")
file.write(json.dumps(updatedData))
file.close
"""
deletes a subscription from the json using ID
arguments:
subscriptionId: ID used to determine which subscription to delete
Returns:
None
"""
def deleteSubscription(subscriptionId):
user_dir = globals.credentialPath
user_dir = user_dir[:-20]
file = open(user_dir+"userSubscriptions.json","r+")
data = json.load(file)
for x in data:
if subscriptionId == x["subId"]:
data.remove(x)
file.close
file = open(user_dir+"userSubscriptions.json","w")
file.write(json.dumps(data))
file.close
"""
lists all subscriptions in the json file
Arguments:
None
Returns:
None
"""
def listSubscriptions():
user_dir = globals.credentialPath
user_dir = user_dir[:-20]
string =""
data = json.load(open(user_dir+"userSubscriptions.json","r"))
for x in data:
string+=str(x)+"\n"
return string
"""
for sending subscription data to GUI
Arguments:
None
Returns:
list of dicts data for the gui
"""
def sendSubData():
user_dir = globals.credentialPath
user_dir = user_dir[:-20]
return json.load(open(user_dir+"userSubscriptions.json","r"))
# def main():
# if sys.argv[1] == "list":
# print(listSubscriptions())
# if sys.argv[1] == "add":
# addSubscription(sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5], sys.argv[6])
# if sys.argv[1] == "edit":
# editSubscription(int(sys.argv[2]), sys.argv[3], int(sys.argv[4]), sys.argv[5], int(sys.argv[6]), sys.argv[7])
# if sys.argv[1] == "del":
# deleteSubscription(int(sys.argv[2]))
# if sys.argv[1] == "usage":
# print("add company amount paymentFrequency subscriptionPeriod startDate \n"
# +"edit subId company amount paymentFrequency subscriptionPeriod startDate \n"
# +"del subId \n"
# +"list \n")
# if __name__ == "__main__":
# main()