radboy 0.0.824__py3-none-any.whl → 0.0.826__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of radboy might be problematic. Click here for more details.
- radboy/Comm/RxTx.py +4 -493
- radboy/Comm/__pycache__/RxTx.cpython-313.pyc +0 -0
- radboy/Unified/__pycache__/bareCA.cpython-313.pyc +0 -0
- radboy/Unified/__pycache__/clearalll.cpython-313.pyc +0 -0
- radboy/Unified/bareCA.py +20 -2
- radboy/Unified/clearalll.py +3 -0
- radboy/__init__.py +1 -1
- radboy/__pycache__/__init__.cpython-313.pyc +0 -0
- {radboy-0.0.824.dist-info → radboy-0.0.826.dist-info}/METADATA +1 -1
- {radboy-0.0.824.dist-info → radboy-0.0.826.dist-info}/RECORD +12 -12
- {radboy-0.0.824.dist-info → radboy-0.0.826.dist-info}/WHEEL +0 -0
- {radboy-0.0.824.dist-info → radboy-0.0.826.dist-info}/top_level.txt +0 -0
radboy/Comm/RxTx.py
CHANGED
|
@@ -22,6 +22,7 @@ import json,sys,math,re,calendar
|
|
|
22
22
|
import smtplib
|
|
23
23
|
from email.mime.text import MIMEText
|
|
24
24
|
from email.mime.multipart import MIMEMultipart
|
|
25
|
+
from dataclasses import dataclass
|
|
25
26
|
|
|
26
27
|
def today():
|
|
27
28
|
dt=datetime.now()
|
|
@@ -77,497 +78,7 @@ class MailBox(BASE,Template):
|
|
|
77
78
|
for k in kwargs.keys():
|
|
78
79
|
if k in [s.name for s in self.__table__.columns]:
|
|
79
80
|
setattr(self,k,kwargs.get(k))
|
|
80
|
-
|
|
81
|
-
|
|
81
|
+
@dataclass
|
|
82
82
|
class RxTx:
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
print(self.htext)
|
|
86
|
-
|
|
87
|
-
def resend(self):
|
|
88
|
-
print(f"{Fore.light_yellow}Re-Send Message General [From Email Address MUST be {Fore.orange_red_1}GMAIL{Fore.light_yellow}]{Style.reset}")
|
|
89
|
-
nmb={}
|
|
90
|
-
nmb['Addressed_To_email']=''
|
|
91
|
-
nmb['Addressed_From_email']=''
|
|
92
|
-
|
|
93
|
-
while nmb['Addressed_To_email'] == '':
|
|
94
|
-
print(f"{Fore.light_yellow}Please Select your addressee(s)/{Fore.green}To{Fore.light_yellow} ['b' key key throws everything out and goes back a menu]{Style.reset}")
|
|
95
|
-
Addressed_To_email=self.searchContact(returnable=True)
|
|
96
|
-
if Addressed_To_email == None:
|
|
97
|
-
print(f"{Fore.light_red}No Contacts to use!{Style.reset}")
|
|
98
|
-
return
|
|
99
|
-
if len(Addressed_To_email) < 1:
|
|
100
|
-
print(f"{Fore.light_red}No Contacts to use!{Style.reset}")
|
|
101
|
-
return
|
|
102
|
-
with Session(ENGINE) as session:
|
|
103
|
-
which=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"{Fore.light_red}which contact {Fore.light_yellow}Number(s){Style.reset}",helpText="use a dash between numbers to specify a range,commas can be between numbers or ranges",data="list")
|
|
104
|
-
if which in [None,'d']:
|
|
105
|
-
return
|
|
106
|
-
for i in which:
|
|
107
|
-
try:
|
|
108
|
-
val=int(i)
|
|
109
|
-
if nmb['Addressed_To_email'].split(",") == ['',]:
|
|
110
|
-
nmb['Addressed_To_email']=','.join(list((Addressed_To_email[val].Email_Address,)))
|
|
111
|
-
|
|
112
|
-
else:
|
|
113
|
-
nmb['Addressed_To_email']=list(nmb['Addressed_To_email'].split(","))
|
|
114
|
-
nmb['Addressed_To_email'].append(Addressed_To_email[val].Email_Address)
|
|
115
|
-
nmb['Addressed_To_email']=','.join(list((Addressed_To_email[val].Email_Address,)))
|
|
116
|
-
except Exception as e:
|
|
117
|
-
print(repr(e),e,f"couldn't use {i},try next...")
|
|
118
|
-
print(Addressed_To_email)
|
|
119
|
-
print(i,type(i),)
|
|
120
|
-
ap=''
|
|
121
|
-
while nmb['Addressed_From_email'] == '':
|
|
122
|
-
print(f"{Fore.light_yellow}Please Select your addresser/{Fore.green}From{Fore.light_yellow} ['b' key throws everything out and goes back a menu]{Style.reset}")
|
|
123
|
-
Addressed_From_email=self.searchContact(returnable=True)
|
|
124
|
-
if Addressed_From_email == None:
|
|
125
|
-
print(f"{Fore.light_red}No Contacts to use!{Style.reset}")
|
|
126
|
-
return
|
|
127
|
-
if len(Addressed_From_email) < 1:
|
|
128
|
-
print(f"{Fore.light_red}No Contacts to use!{Style.reset}")
|
|
129
|
-
return
|
|
130
|
-
with Session(ENGINE) as session:
|
|
131
|
-
which=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"{Fore.light_red}which contact {Fore.light_yellow}Number(s){Style.reset}",helpText="use a dash between numbers to specify a range,commas can be between numbers or ranges",data="integer")
|
|
132
|
-
if which in [None,'d']:
|
|
133
|
-
return
|
|
134
|
-
|
|
135
|
-
try:
|
|
136
|
-
val=int(i)
|
|
137
|
-
ap=Addressed_From_email[val].app_password
|
|
138
|
-
if nmb['Addressed_From_email'].split(",") == ['',]:
|
|
139
|
-
nmb['Addressed_From_email']=','.join(list((Addressed_From_email[val].Email_Address,)))
|
|
140
|
-
else:
|
|
141
|
-
nmb['Addressed_From_email']=list(nmb['Addressed_From_email'].split(","))
|
|
142
|
-
nmb['Addressed_From_email'].append(Addressed_From_email[val].Email_Address)
|
|
143
|
-
nmb['Addressed_From_email']=','.join(nmb['Addressed_From_email'])
|
|
144
|
-
except Exception as e:
|
|
145
|
-
print(repr(e),e,f"couldn't use {i},try next...")
|
|
146
|
-
print(Addressed_From_email)
|
|
147
|
-
print(i,type(i),)
|
|
148
|
-
print(f"{Fore.orange_red_1}Let's look for that email to resend.")
|
|
149
|
-
whiches=self.showSent(returnable=True)
|
|
150
|
-
if whiches == None:
|
|
151
|
-
print(f"{Fore.light_red}User canceled!{Style.reset}")
|
|
152
|
-
return
|
|
153
|
-
elif len(whiches) < 1:
|
|
154
|
-
print(f"{Fore.light_red}No Results!{Style.reset}")
|
|
155
|
-
return
|
|
156
|
-
which=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"{Fore.light_red}which MailBox {Fore.light_yellow}Number(s){Style.reset}",helpText="use a dash between numbers to specify a range,commas can be between numbers or ranges",data="integer")
|
|
157
|
-
if which in [None,'d']:
|
|
158
|
-
return
|
|
159
|
-
|
|
160
|
-
try:
|
|
161
|
-
val=int(which)
|
|
162
|
-
|
|
163
|
-
print(nmb)
|
|
164
|
-
NewMailBox=whiches[val]
|
|
165
|
-
session.add(NewMailBox)
|
|
166
|
-
session.commit()
|
|
167
|
-
session.refresh(NewMailBox)
|
|
168
|
-
print(NewMailBox)
|
|
169
|
-
#time to make the email
|
|
170
|
-
msg=MIMEMultipart()
|
|
171
|
-
msg['Subject']=NewMailBox.Title
|
|
172
|
-
msg['From']=NewMailBox.Addressed_From_email
|
|
173
|
-
msg['To']=NewMailBox.Addressed_To_email
|
|
174
|
-
body=MIMEText(NewMailBox.MsgText)
|
|
175
|
-
msg.attach(body)
|
|
176
|
-
msg.preamble=NewMailBox.MsgText
|
|
177
|
-
|
|
178
|
-
s=smtplib.SMTP_SSL('smtp.gmail.com',465)
|
|
179
|
-
app_password=Prompt.__init2__(self,func=FormBuilderMkText,ptext="Gmail App Password",helpText="type your app password from gmail",data="string")
|
|
180
|
-
if app_password in [None,]:
|
|
181
|
-
print(f"{Fore.light_red}No Password; No Msg Sent!")
|
|
182
|
-
return
|
|
183
|
-
elif app_password.lower() == 'd':
|
|
184
|
-
app_password=ap
|
|
185
|
-
print(app_password)
|
|
186
|
-
s.login(NewMailBox.Addressed_From_email,app_password)
|
|
187
|
-
s.sendmail(NewMailBox.Addressed_From_email,NewMailBox.Addressed_To_email,msg.as_string())
|
|
188
|
-
s.quit()
|
|
189
|
-
except Exception as e:
|
|
190
|
-
print(e)
|
|
191
|
-
|
|
192
|
-
def newEmail(self):
|
|
193
|
-
print(f"{Fore.light_yellow}New Message General [From Email Address MUST be {Fore.orange_red_1}GMAIL{Fore.light_yellow}]{Style.reset}")
|
|
194
|
-
data={
|
|
195
|
-
'Title':{
|
|
196
|
-
'type':'str',
|
|
197
|
-
'default':'',
|
|
198
|
-
},
|
|
199
|
-
'MsgText':{
|
|
200
|
-
'type':'str+',
|
|
201
|
-
'default':'',
|
|
202
|
-
},
|
|
203
|
-
'DUE_DTOE':{
|
|
204
|
-
'type':'datetime',
|
|
205
|
-
'default':datetime.now(),
|
|
206
|
-
},
|
|
207
|
-
|
|
208
|
-
}
|
|
209
|
-
nmb=FormBuilder(data=data)
|
|
210
|
-
nmb['DTOE']=datetime.now()
|
|
211
|
-
nmb['Addressed_To_email']=''
|
|
212
|
-
nmb['Addressed_From_email']=''
|
|
213
|
-
|
|
214
|
-
while nmb['Addressed_To_email'] == '':
|
|
215
|
-
print(f"{Fore.light_yellow}Please Select your addressee(s)/{Fore.green}To{Fore.light_yellow} ['b' key key throws everything out and goes back a menu]{Style.reset}")
|
|
216
|
-
Addressed_To_email=self.searchContact(returnable=True)
|
|
217
|
-
if Addressed_To_email == None:
|
|
218
|
-
print(f"{Fore.light_red}No Contacts to use!{Style.reset}")
|
|
219
|
-
return
|
|
220
|
-
if len(Addressed_To_email) < 1:
|
|
221
|
-
print(f"{Fore.light_red}No Contacts to use!{Style.reset}")
|
|
222
|
-
return
|
|
223
|
-
with Session(ENGINE) as session:
|
|
224
|
-
which=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"{Fore.light_red}which contact {Fore.light_yellow}Number(s){Style.reset}",helpText="use a dash between numbers to specify a range,commas can be between numbers or ranges",data="list")
|
|
225
|
-
if which in [None,'d']:
|
|
226
|
-
return
|
|
227
|
-
for i in which:
|
|
228
|
-
try:
|
|
229
|
-
val=int(i)
|
|
230
|
-
if nmb['Addressed_To_email'].split(",") == ['',]:
|
|
231
|
-
nmb['Addressed_To_email']=','.join(list((Addressed_To_email[val].Email_Address,)))
|
|
232
|
-
|
|
233
|
-
else:
|
|
234
|
-
nmb['Addressed_To_email']=list(nmb['Addressed_To_email'].split(","))
|
|
235
|
-
nmb['Addressed_To_email'].append(Addressed_To_email[val].Email_Address)
|
|
236
|
-
nmb['Addressed_To_email']=','.join(list((Addressed_To_email[val].Email_Address,)))
|
|
237
|
-
except Exception as e:
|
|
238
|
-
print(repr(e),e,f"couldn't use {i},try next...")
|
|
239
|
-
print(Addressed_To_email)
|
|
240
|
-
print(i,type(i),)
|
|
241
|
-
ap=''
|
|
242
|
-
while nmb['Addressed_From_email'] == '':
|
|
243
|
-
print(f"{Fore.light_yellow}Please Select your addresser/{Fore.green}From{Fore.light_yellow} ['b' key throws everything out and goes back a menu]{Style.reset}")
|
|
244
|
-
Addressed_From_email=self.searchContact(returnable=True)
|
|
245
|
-
if Addressed_From_email == None:
|
|
246
|
-
print(f"{Fore.light_red}No Contacts to use!{Style.reset}")
|
|
247
|
-
return
|
|
248
|
-
if len(Addressed_From_email) < 1:
|
|
249
|
-
print(f"{Fore.light_red}No Contacts to use!{Style.reset}")
|
|
250
|
-
return
|
|
251
|
-
with Session(ENGINE) as session:
|
|
252
|
-
which=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"{Fore.light_red}which contact {Fore.light_yellow}Number(s){Style.reset}",helpText="use a dash between numbers to specify a range,commas can be between numbers or ranges",data="integer")
|
|
253
|
-
if which in [None,'d']:
|
|
254
|
-
return
|
|
255
|
-
|
|
256
|
-
try:
|
|
257
|
-
val=int(i)
|
|
258
|
-
ap=Addressed_From_email[val].app_password
|
|
259
|
-
if nmb['Addressed_From_email'].split(",") == ['',]:
|
|
260
|
-
nmb['Addressed_From_email']=','.join(list((Addressed_From_email[val].Email_Address,)))
|
|
261
|
-
else:
|
|
262
|
-
nmb['Addressed_From_email']=list(nmb['Addressed_From_email'].split(","))
|
|
263
|
-
nmb['Addressed_From_email'].append(Addressed_From_email[val].Email_Address)
|
|
264
|
-
nmb['Addressed_From_email']=','.join(nmb['Addressed_From_email'])
|
|
265
|
-
except Exception as e:
|
|
266
|
-
print(repr(e),e,f"couldn't use {i},try next...")
|
|
267
|
-
print(Addressed_From_email)
|
|
268
|
-
print(i,type(i),)
|
|
269
|
-
|
|
270
|
-
print(nmb)
|
|
271
|
-
NewMailBox=MailBox(**nmb)
|
|
272
|
-
session.add(NewMailBox)
|
|
273
|
-
session.commit()
|
|
274
|
-
session.refresh(NewMailBox)
|
|
275
|
-
print(NewMailBox)
|
|
276
|
-
#time to make the email
|
|
277
|
-
msg=MIMEMultipart()
|
|
278
|
-
msg['Subject']=NewMailBox.Title
|
|
279
|
-
msg['From']=NewMailBox.Addressed_From_email
|
|
280
|
-
msg['To']=NewMailBox.Addressed_To_email
|
|
281
|
-
body=MIMEText(NewMailBox.MsgText)
|
|
282
|
-
msg.attach(body)
|
|
283
|
-
msg.preamble=NewMailBox.MsgText
|
|
284
|
-
|
|
285
|
-
s=smtplib.SMTP_SSL('smtp.gmail.com',465)
|
|
286
|
-
app_password=Prompt.__init2__(self,func=FormBuilderMkText,ptext="Gmail App Password",helpText="type your app password from gmail",data="string")
|
|
287
|
-
if app_password in [None,]:
|
|
288
|
-
print(f"{Fore.light_red}No Password; No Msg Sent!")
|
|
289
|
-
return
|
|
290
|
-
elif app_password.lower() == 'd':
|
|
291
|
-
app_password=ap
|
|
292
|
-
print(app_password)
|
|
293
|
-
s.login(NewMailBox.Addressed_From_email,app_password)
|
|
294
|
-
s.sendmail(NewMailBox.Addressed_From_email,NewMailBox.Addressed_To_email,msg.as_string())
|
|
295
|
-
s.quit()
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
def newContact(self):
|
|
300
|
-
data={
|
|
301
|
-
'FName':{
|
|
302
|
-
'type':'str',
|
|
303
|
-
'default':'',
|
|
304
|
-
},
|
|
305
|
-
'MName':{
|
|
306
|
-
'type':'str',
|
|
307
|
-
'default':'',
|
|
308
|
-
},
|
|
309
|
-
'LName':{
|
|
310
|
-
'type':'str',
|
|
311
|
-
'default':'',
|
|
312
|
-
},
|
|
313
|
-
'Suffix':{
|
|
314
|
-
'type':'str',
|
|
315
|
-
'default':'',
|
|
316
|
-
},
|
|
317
|
-
'Email_Address':{
|
|
318
|
-
'type':'str',
|
|
319
|
-
'default':'',
|
|
320
|
-
},
|
|
321
|
-
'app_password':{
|
|
322
|
-
'type':'str',
|
|
323
|
-
'default':'',
|
|
324
|
-
},
|
|
325
|
-
'Phone_Number':{
|
|
326
|
-
'type':'str',
|
|
327
|
-
'default':'',
|
|
328
|
-
},
|
|
329
|
-
}
|
|
330
|
-
newContactDict=FormBuilder(data)
|
|
331
|
-
newContactDict['DTOE']=datetime.now()
|
|
332
|
-
with Session(ENGINE) as session:
|
|
333
|
-
nc=MailBoxContacts(**newContactDict)
|
|
334
|
-
session.add(nc)
|
|
335
|
-
session.commit()
|
|
336
|
-
session.flush()
|
|
337
|
-
session.refresh(nc)
|
|
338
|
-
print(nc)
|
|
339
|
-
|
|
340
|
-
def searchContact(self,returnable=False):
|
|
341
|
-
try:
|
|
342
|
-
while True:
|
|
343
|
-
results=[]
|
|
344
|
-
dateSearch=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Date Search?",helpText="If this is a date search type the date, or 'y' for a date prompt",data='datetime')
|
|
345
|
-
if dateSearch in [None,]:
|
|
346
|
-
return
|
|
347
|
-
elif dateSearch in ['d',]:
|
|
348
|
-
search=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Search?",helpText="Search text in anything else",data="string")
|
|
349
|
-
print(search)
|
|
350
|
-
if search in [None,]:
|
|
351
|
-
return
|
|
352
|
-
elif search in ['d',]:
|
|
353
|
-
continue
|
|
354
|
-
elif search in ['*',' ']:
|
|
355
|
-
with Session(ENGINE) as session:
|
|
356
|
-
results=session.query(MailBoxContacts)
|
|
357
|
-
results=results.order_by(MailBoxContacts.LName.asc()).all()
|
|
358
|
-
else:
|
|
359
|
-
with Session(ENGINE) as session:
|
|
360
|
-
results=session.query(MailBoxContacts)
|
|
361
|
-
results=results.filter(or_(
|
|
362
|
-
MailBoxContacts.FName.icontains(search.lower()),
|
|
363
|
-
MailBoxContacts.MName.icontains(search.lower()),
|
|
364
|
-
MailBoxContacts.LName.icontains(search.lower()),
|
|
365
|
-
MailBoxContacts.Suffix.icontains(search.lower()),
|
|
366
|
-
MailBoxContacts.Email_Address.icontains(search.lower()),
|
|
367
|
-
MailBoxContacts.Phone_Number.icontains(search.lower())
|
|
368
|
-
)
|
|
369
|
-
).order_by(MailBoxContacts.LName.asc()).all()
|
|
370
|
-
ct=len(results)
|
|
371
|
-
for num,i in enumerate(results):
|
|
372
|
-
msg=f'''{Fore.light_yellow}{num}/{Fore.light_green}{num+1}/{Fore.light_red}{ct}{Style.reset} -> {i}'''
|
|
373
|
-
print(msg)
|
|
374
|
-
if returnable:
|
|
375
|
-
return results
|
|
376
|
-
#ask for search details as user wants anything but date search
|
|
377
|
-
else:
|
|
378
|
-
with Session(ENGINE) as session:
|
|
379
|
-
tmp=[]
|
|
380
|
-
DATE=date(dateSearch.year,dateSearch.month,dateSearch.day)
|
|
381
|
-
results=session.query(MailBoxContacts).all()
|
|
382
|
-
for num,i in enumerate(results):
|
|
383
|
-
DTC=date(i.DTOE.year,i.DTOE.month,i.DTOE.day)
|
|
384
|
-
if DTC == DATE:
|
|
385
|
-
tmp.append(i)
|
|
386
|
-
for num,i in enumerate(tmp):
|
|
387
|
-
msg=f'''{Fore.light_yellow}{num}/{Fore.light_green}{num+1}/{Fore.light_red}{len(tmp)}{Style.reset} -> {i}'''
|
|
388
|
-
print(msg)
|
|
389
|
-
if returnable:
|
|
390
|
-
return tmp
|
|
391
|
-
|
|
392
|
-
except Exception as e:
|
|
393
|
-
print(e)
|
|
394
|
-
|
|
395
|
-
def rmContact(self):
|
|
396
|
-
try:
|
|
397
|
-
toRm=self.searchContact(returnable=True)
|
|
398
|
-
if toRm in [[],None,'d']:
|
|
399
|
-
return
|
|
400
|
-
else:
|
|
401
|
-
with Session(ENGINE) as session:
|
|
402
|
-
which=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"{Fore.light_red}Remove {Fore.light_yellow}Number(s){Style.reset}",helpText="use a dash between numbers to specify a range,commas can be between numbers or ranges",data="list")
|
|
403
|
-
for i in which:
|
|
404
|
-
try:
|
|
405
|
-
val=int(i)
|
|
406
|
-
item=session.query(MailBoxContacts).filter(MailBoxContacts.mbcid==toRm[val].mbcid).first()
|
|
407
|
-
session.delete(item)
|
|
408
|
-
print(item,"Deleted!")
|
|
409
|
-
session.commit()
|
|
410
|
-
session.flush()
|
|
411
|
-
except Exception as e:
|
|
412
|
-
print(e,"moving on to next index...")
|
|
413
|
-
except Exception as e:
|
|
414
|
-
print(e)
|
|
415
|
-
|
|
416
|
-
def editContact(self):
|
|
417
|
-
try:
|
|
418
|
-
excludes=['mbcid',]
|
|
419
|
-
toEdit=self.searchContact(returnable=True)
|
|
420
|
-
if toEdit in [[],None,'d']:
|
|
421
|
-
return
|
|
422
|
-
else:
|
|
423
|
-
with Session(ENGINE) as session:
|
|
424
|
-
which=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"{Fore.light_red}Edit {Fore.light_yellow}Number(s){Style.reset}",helpText="use a dash between numbers to specify a range,commas can be between numbers or ranges",data="list")
|
|
425
|
-
for i in which:
|
|
426
|
-
try:
|
|
427
|
-
val=int(i)
|
|
428
|
-
item=session.query(MailBoxContacts).filter(MailBoxContacts.mbcid==toEdit[val].mbcid).first()
|
|
429
|
-
print(item,"To Edit!")
|
|
430
|
-
data={}
|
|
431
|
-
for cols in item.__table__.columns:
|
|
432
|
-
#print(cols.name)
|
|
433
|
-
name=str(cols.name)
|
|
434
|
-
if name in excludes:
|
|
435
|
-
continue
|
|
436
|
-
data[name]={}
|
|
437
|
-
data[name]['type']=str(cols.type).lower()
|
|
438
|
-
data[name]['default']=getattr(item,name)
|
|
439
|
-
upd8=FormBuilder(data=data)
|
|
440
|
-
session.query(MailBoxContacts).filter(MailBoxContacts.mbcid==toEdit[val].mbcid).update(upd8)
|
|
441
|
-
session.commit()
|
|
442
|
-
session.flush()
|
|
443
|
-
session.refresh(item)
|
|
444
|
-
|
|
445
|
-
print(item,"Updated!")
|
|
446
|
-
except Exception as e:
|
|
447
|
-
print(e,"moving on to next index...")
|
|
448
|
-
except Exception as e:
|
|
449
|
-
print(e)
|
|
450
|
-
|
|
451
|
-
def showSent(self,returnable=True):
|
|
452
|
-
try:
|
|
453
|
-
while True:
|
|
454
|
-
results=[]
|
|
455
|
-
dateSearch=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Date Search?",helpText="If this is a date search type the date, or 'y' for a date prompt",data='datetime')
|
|
456
|
-
if dateSearch in [None,]:
|
|
457
|
-
return
|
|
458
|
-
elif dateSearch in ['d',]:
|
|
459
|
-
search=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Search?",helpText="Search text in anything else",data="string")
|
|
460
|
-
print(search)
|
|
461
|
-
if search in [None,]:
|
|
462
|
-
return
|
|
463
|
-
elif search in ['d',]:
|
|
464
|
-
continue
|
|
465
|
-
elif search in ['*',' ']:
|
|
466
|
-
with Session(ENGINE) as session:
|
|
467
|
-
results=session.query(MailBox)
|
|
468
|
-
results=results.all()
|
|
469
|
-
else:
|
|
470
|
-
with Session(ENGINE) as session:
|
|
471
|
-
results=session.query(MailBox)
|
|
472
|
-
results=results.filter(or_(
|
|
473
|
-
MailBox.Title.icontains(search.lower()),
|
|
474
|
-
MailBox.MsgText.icontains(search.lower()),
|
|
475
|
-
MailBox.Addressed_From_email.icontains(search.lower()),
|
|
476
|
-
MailBox.Addressed_To_email.icontains(search.lower()),
|
|
477
|
-
)
|
|
478
|
-
).all()
|
|
479
|
-
ct=len(results)
|
|
480
|
-
for num,i in enumerate(results):
|
|
481
|
-
msg=f'''{Fore.light_yellow}{num}/{Fore.light_green}{num+1}/{Fore.light_red}{ct}{Style.reset} -> {i}'''
|
|
482
|
-
print(msg)
|
|
483
|
-
if returnable:
|
|
484
|
-
return results
|
|
485
|
-
#ask for search details as user wants anything but date search
|
|
486
|
-
else:
|
|
487
|
-
with Session(ENGINE) as session:
|
|
488
|
-
tmp=[]
|
|
489
|
-
DATE=date(dateSearch.year,dateSearch.month,dateSearch.day)
|
|
490
|
-
results=session.query(MailBoxContacts).all()
|
|
491
|
-
for num,i in enumerate(results):
|
|
492
|
-
DTC=date(i.DTOE.year,i.DTOE.month,i.DTOE.day)
|
|
493
|
-
if DTC == DATE:
|
|
494
|
-
tmp.append(i)
|
|
495
|
-
DTC=date(i.DUE_DTOE.year,i.DUE_DTOE.month,i.DUE_DTOE.day)
|
|
496
|
-
if DTC == DATE:
|
|
497
|
-
tmp.append(i)
|
|
498
|
-
for num,i in enumerate(tmp):
|
|
499
|
-
msg=f'''{Fore.light_yellow}{num}/{Fore.light_green}{num+1}/{Fore.light_red}{len(tmp)}{Style.reset} -> {i}'''
|
|
500
|
-
print(msg)
|
|
501
|
-
if returnable:
|
|
502
|
-
return tmp
|
|
503
|
-
except Exception as e:
|
|
504
|
-
print(e)
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
def rmMailBox(self):
|
|
508
|
-
try:
|
|
509
|
-
toRm=self.showSent(returnable=True)
|
|
510
|
-
if toRm in [[],None,'d']:
|
|
511
|
-
return
|
|
512
|
-
else:
|
|
513
|
-
with Session(ENGINE) as session:
|
|
514
|
-
which=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"{Fore.light_red}Remove {Fore.light_yellow}Number(s){Style.reset}",helpText="use a dash between numbers to specify a range,commas can be between numbers or ranges",data="list")
|
|
515
|
-
for i in which:
|
|
516
|
-
try:
|
|
517
|
-
val=int(i)
|
|
518
|
-
item=session.query(MailBox).filter(MailBox.mbid==toRm[val].mbid).first()
|
|
519
|
-
session.delete(item)
|
|
520
|
-
print(item,"Deleted!")
|
|
521
|
-
session.commit()
|
|
522
|
-
session.flush()
|
|
523
|
-
except Exception as e:
|
|
524
|
-
print(e,"moving on to next index...")
|
|
525
|
-
except Exception as e:
|
|
526
|
-
print(e)
|
|
527
|
-
|
|
528
|
-
def addCmd(self,cmdName='',cmd=None,desc=''):
|
|
529
|
-
self.cmds[cmdName]={}
|
|
530
|
-
self.cmds[cmdName]['desc']=desc
|
|
531
|
-
self.cmds[cmdName]['cmd']=cmd
|
|
532
|
-
self.htext+=f"{Fore.light_yellow}{cmdName} - {Fore.light_steel_blue}{desc}{Style.reset}\n"
|
|
533
|
-
|
|
534
|
-
def __init__(self):
|
|
535
|
-
try:
|
|
536
|
-
self.cmds={}
|
|
537
|
-
self.addCmd(cmdName='help',cmd=self.print_help,desc='show help text')
|
|
538
|
-
self.addCmd(cmdName='new contact',cmd=self.newContact,desc="make a new contact for the MailBox to use")
|
|
539
|
-
self.addCmd(cmdName='search contact',cmd=self.searchContact,desc="look for a contact")
|
|
540
|
-
self.addCmd(cmdName='rm contact',cmd=self.rmContact,desc="remove a contact(s)")
|
|
541
|
-
self.addCmd(cmdName='rm mailbox',cmd=self.rmMailBox,desc="remove a MailBox Msg")
|
|
542
|
-
self.addCmd(cmdName="edit contact",cmd=self.editContact,desc="edit a contact(s)")
|
|
543
|
-
self.addCmd(cmdName="new mb",cmd=self.newEmail,desc="create and send a new email msg")
|
|
544
|
-
self.addCmd(cmdName="show sent",cmd=self.showSent,desc="show sent emails")
|
|
545
|
-
self.addCmd(cmdName="resend",cmd=self.resend,desc="resend a sent email")
|
|
546
|
-
self.print_help()
|
|
547
|
-
while True:
|
|
548
|
-
keys=[i.lower() for i in self.cmds.keys()]
|
|
549
|
-
real=[self.cmds[i]['cmd'] for i in self.cmds.keys()]
|
|
550
|
-
fieldname='Menu'
|
|
551
|
-
mode='RxTx'
|
|
552
|
-
h=f'{Prompt.header.format(Fore=Fore,mode=mode,fieldname=fieldname,Style=Style)}'
|
|
553
|
-
doWhat=Prompt.__init2__(self,func=FormBuilderMkText,ptext=f'{h} Do What? ',helpText=self.htext,data="string")
|
|
554
|
-
if doWhat in [None,]:
|
|
555
|
-
return
|
|
556
|
-
elif doWhat in ['d',]:
|
|
557
|
-
self.print_help()
|
|
558
|
-
elif doWhat.lower() in keys:
|
|
559
|
-
index=keys.index(doWhat.lower())
|
|
560
|
-
real[index]()
|
|
561
|
-
else:
|
|
562
|
-
for num,i in enumerate(keys):
|
|
563
|
-
if doWhat.lower() in i:
|
|
564
|
-
real[num]()
|
|
565
|
-
break
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
except Exception as e:
|
|
569
|
-
print(e,repr(e))
|
|
570
|
-
|
|
571
|
-
MailBox.metadata.create_all(ENGINE)
|
|
572
|
-
MailBoxContacts.metadata.create_all(ENGINE)
|
|
573
|
-
#RxTx()
|
|
83
|
+
def __init__(self,*args,**kwargs):
|
|
84
|
+
print("This Class Has been depreacated and a new option will be designed. no more gmail. bleh!")
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
radboy/Unified/bareCA.py
CHANGED
|
@@ -106,6 +106,9 @@ def bare_ca(self,inList=False,protect_unassigned=True):
|
|
|
106
106
|
'FLRL_WTR_DSPLY':0,
|
|
107
107
|
'WD_DSPLY':0,
|
|
108
108
|
'CHKSTND_SPLY':0,
|
|
109
|
+
'Expiry':None,
|
|
110
|
+
'BestBy':None,
|
|
111
|
+
'AquisitionDate':None,
|
|
109
112
|
})
|
|
110
113
|
else:
|
|
111
114
|
result=session.query(db.Entry).filter(db.Entry.InList==True,db.Entry.Code!="UNASSIGNED_TO_NEW_ITEM").update({
|
|
@@ -132,6 +135,9 @@ def bare_ca(self,inList=False,protect_unassigned=True):
|
|
|
132
135
|
'FLRL_WTR_DSPLY':0,
|
|
133
136
|
'WD_DSPLY':0,
|
|
134
137
|
'CHKSTND_SPLY':0,
|
|
138
|
+
'Expiry':None,
|
|
139
|
+
'BestBy':None,
|
|
140
|
+
'AquisitionDate':None,
|
|
135
141
|
})
|
|
136
142
|
else:
|
|
137
143
|
if not protect_unassigned:
|
|
@@ -159,6 +165,9 @@ def bare_ca(self,inList=False,protect_unassigned=True):
|
|
|
159
165
|
'FLRL_WTR_DSPLY':0,
|
|
160
166
|
'WD_DSPLY':0,
|
|
161
167
|
'CHKSTND_SPLY':0,
|
|
168
|
+
'Expiry':None,
|
|
169
|
+
'BestBy':None,
|
|
170
|
+
'AquisitionDate':None,
|
|
162
171
|
})
|
|
163
172
|
else:
|
|
164
173
|
result=session.query(db.Entry).filter(db.Entry.Code!="UNASSIGNED_TO_NEW_ITEM").update(
|
|
@@ -185,6 +194,9 @@ def bare_ca(self,inList=False,protect_unassigned=True):
|
|
|
185
194
|
'FLRL_WTR_DSPLY':0,
|
|
186
195
|
'WD_DSPLY':0,
|
|
187
196
|
'CHKSTND_SPLY':0,
|
|
197
|
+
'Expiry':None,
|
|
198
|
+
'BestBy':None,
|
|
199
|
+
'AquisitionDate':None,
|
|
188
200
|
})
|
|
189
201
|
session.commit()
|
|
190
202
|
session.flush()
|
|
@@ -214,7 +226,10 @@ def bare_ca(self,inList=False,protect_unassigned=True):
|
|
|
214
226
|
'FLRL_CHP_DSPLY':0,
|
|
215
227
|
'FLRL_WTR_DSPLY':0,
|
|
216
228
|
'WD_DSPLY':0,
|
|
217
|
-
'CHKSTND_SPLY':0,
|
|
229
|
+
'CHKSTND_SPLY':0,
|
|
230
|
+
'Expiry':None,
|
|
231
|
+
'BestBy':None,
|
|
232
|
+
'AquisitionDate':None,})
|
|
218
233
|
session.commit()
|
|
219
234
|
session.flush()
|
|
220
235
|
r=query.all()
|
|
@@ -243,7 +258,10 @@ def bare_ca(self,inList=False,protect_unassigned=True):
|
|
|
243
258
|
'FLRL_CHP_DSPLY':0,
|
|
244
259
|
'FLRL_WTR_DSPLY':0,
|
|
245
260
|
'WD_DSPLY':0,
|
|
246
|
-
'CHKSTND_SPLY':0,
|
|
261
|
+
'CHKSTND_SPLY':0,
|
|
262
|
+
'Expiry':None,
|
|
263
|
+
'BestBy':None,
|
|
264
|
+
'AquisitionDate':None,}
|
|
247
265
|
)
|
|
248
266
|
session.commit()
|
|
249
267
|
session.flush()
|
radboy/Unified/clearalll.py
CHANGED
radboy/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
VERSION='0.0.
|
|
1
|
+
VERSION='0.0.826'
|
|
Binary file
|
|
@@ -5,7 +5,7 @@ radboy/Holidays.txt,sha256=y-JZPihh5iaWKxMIHNXD39yVuVmf1vMs4FdNDcg0f1Y,3114
|
|
|
5
5
|
radboy/InventoryGlossary.txt,sha256=018-Yqca6DFb10jPdkUY-5qhkRlQN1k3rxoTaERQ-LA,91008
|
|
6
6
|
radboy/RecordMyCodes.py,sha256=h30zoTqt-XLt_afDPlxMxBiKKwmKi3N-yAuldNCqXUo,41476
|
|
7
7
|
radboy/Run.py,sha256=JUoCTHnzQBv7n8PB2_i93ANdAC_iW__RkAge8esCnk4,76
|
|
8
|
-
radboy/__init__.py,sha256=
|
|
8
|
+
radboy/__init__.py,sha256=DjNr8e4Fyq5lbuEXafNdOPgDj72-Ge43gi4bJFph8Sk,17
|
|
9
9
|
radboy/api_key,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
10
|
radboy/case-export-2024-05-14-13-10-00.672971.xlsx,sha256=Wd592d_VLFmfUI9KKKSVjNwjV91euc1T7ATyvwvUhlg,5431
|
|
11
11
|
radboy/case-export-2024-05-14-13-13-22.540614.xlsx,sha256=OnGrhmScHfGp_mVaWW-LNMsqrQgyZDpiU3wV-2s3U5Q,5556
|
|
@@ -44,10 +44,10 @@ radboy/Collector2/__pycache__/Collector2.cpython-313.pyc,sha256=wWFRdtuWIztsbD6T
|
|
|
44
44
|
radboy/Collector2/__pycache__/__init__.cpython-311.pyc,sha256=WGQfceEjnOEV6HALhJ6z4AHnps_VdghD_8-iErvmfkU,235
|
|
45
45
|
radboy/Collector2/__pycache__/__init__.cpython-312.pyc,sha256=7Ka8Bvea_JHCQtL_T365f4_-8IruXJvar0pc4eAEc4U,273
|
|
46
46
|
radboy/Collector2/__pycache__/__init__.cpython-313.pyc,sha256=IiHFLqDUbXyf_-1vybVUZRWCqm6rs0hyZUDAwOBQeas,152
|
|
47
|
-
radboy/Comm/RxTx.py,sha256=
|
|
47
|
+
radboy/Comm/RxTx.py,sha256=rLu7qjs0GWFzzjknw0SbiGTbEKu1f4czqinZkSb3Exg,2203
|
|
48
48
|
radboy/Comm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
49
49
|
radboy/Comm/__pycache__/RxTx.cpython-312.pyc,sha256=S_1Kf5_EwO1X4blYwIMPlrBs_hD8kLWJIX284vjVRKg,34691
|
|
50
|
-
radboy/Comm/__pycache__/RxTx.cpython-313.pyc,sha256=
|
|
50
|
+
radboy/Comm/__pycache__/RxTx.cpython-313.pyc,sha256=bzLVlD6yy0_CxVbxGWXwYNH5qL1L3_1hP64d4OajKYI,3968
|
|
51
51
|
radboy/Comm/__pycache__/__init__.cpython-312.pyc,sha256=jxT5gYVdAKG2X7WED7LoHwmiHsC8BxOtz0YxIdtsBtw,267
|
|
52
52
|
radboy/Comm/__pycache__/__init__.cpython-313.pyc,sha256=-hKMf6R71_1VkbAEpQ4HJOJF0RUxDSpuUHS0kXShyIw,146
|
|
53
53
|
radboy/Comm2Common/Comm2Common.py,sha256=3MOe_RHcD1mhiLJIBBa_j1YbyKZr8pyOyqB-7hMoHoM,1141
|
|
@@ -381,8 +381,8 @@ radboy/TouchStampC/__pycache__/__init__.cpython-313.pyc,sha256=kA-p_LdocXJQHfYfD
|
|
|
381
381
|
radboy/Unified/Unified.py,sha256=SvwPHQFJr6F65_xkbmXtMaCq6ewRnT3MrzUhJp7-_II,66474
|
|
382
382
|
radboy/Unified/Unified2.py,sha256=TnJQ5Ir28cLG449o8mDe8Ya1Zx4WaRhuoHfEIrCbJME,42257
|
|
383
383
|
radboy/Unified/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
384
|
-
radboy/Unified/bareCA.py,sha256=
|
|
385
|
-
radboy/Unified/clearalll.py,sha256=
|
|
384
|
+
radboy/Unified/bareCA.py,sha256=_WN3mQcuOuaZpd1Fm2aasisb9lCJWY2zbYqvCA0MNbI,7595
|
|
385
|
+
radboy/Unified/clearalll.py,sha256=KjXE7rWb4h6wwSmHxm32NMF9vW5-Om43vNqWOnZ9xsc,4042
|
|
386
386
|
radboy/Unified/__pycache__/Unified.cpython-311.pyc,sha256=ZtvZDV9cVMV_r_Cuj6LR4m27CGUnZy0l9zUTILSnMRg,65018
|
|
387
387
|
radboy/Unified/__pycache__/Unified.cpython-312.pyc,sha256=BT3bLl4LQUs7m3H44WVjg6BsHfU9xnWNwpytZSA2smI,78625
|
|
388
388
|
radboy/Unified/__pycache__/Unified.cpython-313.pyc,sha256=-WdUWwuMFbeW9DHfH8zKDJDDPnUQNBcgHOzzd3buFYA,82621
|
|
@@ -390,9 +390,9 @@ radboy/Unified/__pycache__/__init__.cpython-311.pyc,sha256=2OjdGThHMNZ2yMrbdlwiK
|
|
|
390
390
|
radboy/Unified/__pycache__/__init__.cpython-312.pyc,sha256=5aXXASuWsXCly7t_gqJ6cVbdAeTo4Wom8989FszH4Xw,270
|
|
391
391
|
radboy/Unified/__pycache__/__init__.cpython-313.pyc,sha256=h03zVuB4hfY_ko4nkuSS-SIkjHOGTlFM9bDpMdQPwg4,149
|
|
392
392
|
radboy/Unified/__pycache__/bareCA.cpython-312.pyc,sha256=1zLSCPMarDCdguIxDCjlvTf2SQXi9Y17oznnEbNbQlg,2839
|
|
393
|
-
radboy/Unified/__pycache__/bareCA.cpython-313.pyc,sha256=
|
|
393
|
+
radboy/Unified/__pycache__/bareCA.cpython-313.pyc,sha256=UEBuma_NesGx3tCMVa8_Njm-BM6KYpZJAeflF24ZGXs,8402
|
|
394
394
|
radboy/Unified/__pycache__/clearalll.cpython-312.pyc,sha256=GDkncqa0aJ_55M5ElOfcl-LLiKS6ZXgY779ENHLYS-E,5042
|
|
395
|
-
radboy/Unified/__pycache__/clearalll.cpython-313.pyc,sha256=
|
|
395
|
+
radboy/Unified/__pycache__/clearalll.cpython-313.pyc,sha256=cIw4t3l14gPTYuz_BX7jr-A22dg9I5-mv93k1gqf5Uw,7177
|
|
396
396
|
radboy/UpdatesAndImports/UpdatesAndImports.py,sha256=KXmiLaB72hMs2Iqkek9fMmme7xgNSXgpcVkKBYVXD00,1687
|
|
397
397
|
radboy/UpdatesAndImports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
398
398
|
radboy/UpdatesAndImports/__pycache__/UpdatesAndImports.cpython-311.pyc,sha256=n5mnxgmq0egDH-Evf6h0cRF6mmP9N0pAOsS2NkyKA1o,3351
|
|
@@ -413,7 +413,7 @@ radboy/__pycache__/Run.cpython-311.pyc,sha256=G_UEfMtkLRjR6ZpGA_BJzGenuaCcP469Y9
|
|
|
413
413
|
radboy/__pycache__/Run.cpython-312.pyc,sha256=v4xolc3mHyla991XhpYBUbBHYT0bnJ1gE-lkFoQ4GFA,241
|
|
414
414
|
radboy/__pycache__/__init__.cpython-311.pyc,sha256=R-DVbUioMOW-Fnaq7FpT5F1a5p0q3b_RW-HpLRArCAY,242
|
|
415
415
|
radboy/__pycache__/__init__.cpython-312.pyc,sha256=FsFzLXOlTK8_7ixoPZzakkR8Wibt-DvXLFh-oG2QlPw,164
|
|
416
|
-
radboy/__pycache__/__init__.cpython-313.pyc,sha256=
|
|
416
|
+
radboy/__pycache__/__init__.cpython-313.pyc,sha256=TY20MmQ6Q4Ustwl7IQS5MI7DuuQEVTjn2YgSLfp3RDw,165
|
|
417
417
|
radboy/__pycache__/__init__.cpython-39.pyc,sha256=D48T6x6FUeKPfubo0sdS_ZUut3FmBvPMP7qT6rYBZzU,275
|
|
418
418
|
radboy/__pycache__/possibleCode.cpython-311.pyc,sha256=zFiHyzqD8gUnIWu4vtyMYIBposiRQqaRXfcT_fOl4rU,20882
|
|
419
419
|
radboy/__pycache__/possibleCode.cpython-312.pyc,sha256=tk_CO-AcsO3YZj5j6vEsw3g37UmEzWc5YgeWEoJEUg4,27922
|
|
@@ -441,7 +441,7 @@ radboy/tkGui/Images/__pycache__/__init__.cpython-311.pyc,sha256=tXBYpqbOlZ24B1BI
|
|
|
441
441
|
radboy/tkGui/__pycache__/BeginnersLuck.cpython-311.pyc,sha256=xLQOnV1wuqHGaub16mPX0dDMGU9ryCeLtNz5e517_GE,3004
|
|
442
442
|
radboy/tkGui/__pycache__/Review.cpython-311.pyc,sha256=wKq24iM6Xe2OampgZ7-8U6Nvmgs2y-qWOrGwtWhc75k,4047
|
|
443
443
|
radboy/tkGui/__pycache__/__init__.cpython-311.pyc,sha256=BX7DBn5qbvKTvlrKOP5gzTBPBTeTgSMjBW6EMl7N8e0,230
|
|
444
|
-
radboy-0.0.
|
|
445
|
-
radboy-0.0.
|
|
446
|
-
radboy-0.0.
|
|
447
|
-
radboy-0.0.
|
|
444
|
+
radboy-0.0.826.dist-info/METADATA,sha256=h5ISi7Ye5Q_81DO9yT_JbPPb_zs2md5F3ClAYyzGyuI,1920
|
|
445
|
+
radboy-0.0.826.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
446
|
+
radboy-0.0.826.dist-info/top_level.txt,sha256=mlM0RWMUxGo1YHnlLmYrHOgGdK4XNRpr7nMFD5lR56c,7
|
|
447
|
+
radboy-0.0.826.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|