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 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
- htext=f"""{Fore.light_red}To send a GMAIL, your MUST have a GMAIL and a GMAIL App-Password\n{Fore.cyan}Please Note Commands can be guessed from the first match of a partial so a doWhat == 'new c' will EQUAL doWhat == 'new contact'\nGMAIL app passwords @ {Fore.light_magenta}https://myaccount.google.com/apppasswords{Style.reset}\n"""
84
- def print_help(self):
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!")
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()
@@ -101,6 +101,9 @@ def clear_all(self):
101
101
  'FLRL_WTR_DSPLY':0,
102
102
  'WD_DSPLY':0,
103
103
  'CHKSTND_SPLY':0,
104
+ 'Expiry':None,
105
+ 'BestBy':None,
106
+ 'AquisitionDate':None,
104
107
  })
105
108
  session.commit()
106
109
  session.flush()
radboy/__init__.py CHANGED
@@ -1 +1 @@
1
- VERSION='0.0.824'
1
+ VERSION='0.0.826'
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: radboy
3
- Version: 0.0.824
3
+ Version: 0.0.826
4
4
  Summary: A Retail Calculator for Android/Linux
5
5
  Author: Carl Joseph Hirner III
6
6
  Author-email: Carl Hirner III <k.j.hirner.wisdom@gmail.com>
@@ -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=UJ2PEMLdw8H5Kmc17pRFRxwByHQT6K1IFSBRaLtM9pg,17
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=l9Kr7lA5nejxhjBNgxssghwlgaVRzp0wJs8XpscLxTI,20705
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=3N9SXi-jBtf6liyYI0D1m1dpBoLCUUtuy7uDM6L958Q,34985
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=CCqpwi2mhH-pzR4PzWxYrUIQcCxCIi05EtWMhdjfNLo,7169
385
- radboy/Unified/clearalll.py,sha256=KeBpy_OrpjQL3sJZgOjsVACruwGoZTQMUJKqW26xu3M,3977
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=pvPQ676Vmwf0LAJ8IRDWwju0KSPBorRKRAV29061BJ4,8265
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=Krk2Woz-U_j6CcActz1jyoiOztemPjgLvhbhar6wPIo,7129
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=qZ4LQ8XS-uhMaNugXsgC9A6uDAYLCWnknnGvAA4jO9g,165
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.824.dist-info/METADATA,sha256=p4HWIjl1Sz6mFsWY_ognrV8jI07CE9TmxPS74eGZRHA,1920
445
- radboy-0.0.824.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
446
- radboy-0.0.824.dist-info/top_level.txt,sha256=mlM0RWMUxGo1YHnlLmYrHOgGdK4XNRpr7nMFD5lR56c,7
447
- radboy-0.0.824.dist-info/RECORD,,
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,,