radboy 0.0.350__py3-none-any.whl → 0.0.352__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.

Binary file
radboy/DB/db.py CHANGED
@@ -736,8 +736,11 @@ class EntryDataExtras(BASE,Template):
736
736
  with Session(ENGINE) as session:
737
737
  check=session.query(self.__class__).filter(self.__class__.field_name==kwargs[k],self.__class__.EntryId==kwargs['EntryId']).first()
738
738
  if isinstance(check,self.__class__):
739
- dateStr=datetime.now().strftime("[Updated on %m/%d/%Y at %H:%M:%S.]")
740
- kwargs[k]=f"{kwargs[k]} {dateStr}"
739
+ if check.field_value == kwargs['field_value']:
740
+ raise Exception(f"Value is duplicated for {k}={kwargs['field_value']}")
741
+ else:
742
+ dateStr=datetime.now().strftime("[Updated on %m/%d/%Y at %H:%M:%S.]")
743
+ kwargs[k]=f"{kwargs[k]} {dateStr}"
741
744
  setattr(self,k,str(kwargs[k]))
742
745
  else:
743
746
  setattr(self,k,kwargs[k])
@@ -1,6 +1,13 @@
1
1
  #MobileInventoryCLI is now radboy
2
2
  from . import *
3
+ from collections import OrderedDict
3
4
  from radboy.DB.db import ENGINE
5
+ import uuid,base64
6
+
7
+ #generated by google gemini
8
+ def generate_24_char_uuid():
9
+ return Entry.cfmt(None,str(uuid.uuid4()).replace("-",''))
10
+
4
11
  def get_bool(text):
5
12
  if text in (None,'',False,'n','N','NO','No','nO','False','false',0,'0'):
6
13
  return False
@@ -176,7 +183,382 @@ class EntryDataExtrasMenu:
176
183
  except Exception as e:
177
184
  print(e)
178
185
 
179
- nutrients={
186
+ def enable_all_diabetic_facts(self):
187
+ with Session(ENGINE) as session:
188
+ try:
189
+ toolid=-1
190
+ try:
191
+ diabetic_facts_placeholder=session.query(Entry).filter(Entry.EntryId==toolid).first()
192
+ if diabetic_facts_placeholder is None:
193
+ diabetic_facts_placeholder=Entry(Name="Diabetic_Facts_PlaceHolder",Barcode="Diabetic_Facts_PlaceHolder",Code="Diabetic_Facts_PlaceHolder",InList=False,EntryId=toolid)
194
+ session.add(diabetic_facts_placeholder)
195
+ session.commit()
196
+ session.flush()
197
+ session.refresh(diabetic_facts_placeholder)
198
+ except Exception as ee:
199
+ print(ee)
200
+
201
+ diabetic_fields=self.diabetic_fields
202
+ ct=len(diabetic_fields)
203
+ for num,k in enumerate(diabetic_fields):
204
+ check=session.query(EntryDataExtras).filter(and_(EntryDataExtras.field_name.icontains(k),EntryDataExtras.field_value.icontains(diabetic_fields[k]))).first()
205
+ if check is not None:
206
+ print(f"Skipping Pre-Existing {k}!")
207
+ continue
208
+ extra=EntryDataExtras(field_name=k,field_type="str",field_value=str(diabetic_fields[k]),EntryId=toolid)
209
+ session.add(extra)
210
+ session.commit()
211
+ session.flush()
212
+ session.refresh(extra)
213
+ print(f"{Fore.cyan}{num}/{Fore.light_cyan}{num+1} of {Fore.light_red}{ct} -> {Fore.orange_red_1}Adding -> {extra}!{Style.reset}")
214
+ session.commit()
215
+ except Exception as e:
216
+ print(e)
217
+
218
+
219
+ def delete_all_diabetic_facts(self):
220
+ code=''.join([str(random.randint(0,9)) for i in range(10)])
221
+ verification_protection=detectGetOrSet("Protect diabetic Facts From Delete",code,setValue=False,literal=True)
222
+ while True:
223
+ try:
224
+ really=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Do You really want to delete all diabetic facts fields?",helpText="yes or no boolean,default is NO",data="boolean")
225
+ if really in [None,]:
226
+ return
227
+ elif really in ['d',False]:
228
+ return
229
+ else:
230
+ pass
231
+ really=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"To {Fore.orange_red_1}Delete everything completely,{Fore.light_steel_blue} What is todays date?{Style.reset}",helpText="type y/yes for prompt or type as m.d.Y",data="datetime")
232
+ if really in [None,'d']:
233
+ return
234
+ today=datetime.today()
235
+ if really.day == today.day and really.month == today.month and really.year == today.year:
236
+ really=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"Please type the verification code {Style.reset}'{DayLog.cfmt(None,verification_protection)}'?",helpText=f"type '{DayLog.cfmt(None,verification_protection)}' to finalize!",data="string")
237
+ if really in [None,]:
238
+ return
239
+ elif really in ['d',False]:
240
+ return
241
+ elif really == verification_protection:
242
+ break
243
+ else:
244
+ pass
245
+ except Exception as e:
246
+ print(e)
247
+ with Session(ENGINE) as session:
248
+ try:
249
+ toolid=-1
250
+ diabetic_facts_placeholder=session.query(Entry).filter(Entry.EntryId==toolid).all()
251
+ diabetic_facts_placeholder_extras=session.query(EntryDataExtras).filter(EntryDataExtras.EntryId==toolid).all()
252
+
253
+ print(f"{Fore.light_yellow}Deleting Diabetic_Facts_PlaceHolder{Style.reset}")
254
+ for i in diabetic_facts_placeholder:
255
+ print(f"{Fore.light_red}Deleting {i.seeShort()}{Style.reset}")
256
+ session.delete(i)
257
+ print(f"{Fore.light_yellow}Deleting Diabetic_Facts_PlaceHolder_Extras{Style.reset}")
258
+ for i in diabetic_facts_placeholder_extras:
259
+ print(f"{Fore.light_red}Deleting {i.field_name}{Style.reset}")
260
+ session.delete(i)
261
+ session.commit()
262
+ dependency=Prompt.__init2__(None,func=FormBuilderMkText,ptext="check to see if its not needed elsewhere and delete it if it is not needed[Y/n]",helpText="yes(default) or no",data="boolean")
263
+ if dependency is None:
264
+ return
265
+ elif dependency in [True,'d']:
266
+ results=session.query(EntryDataExtras).all()
267
+ ct=len(results)
268
+ for num,i in enumerate(results):
269
+ msg=f"{Fore.orange_red_1}DEPENDENCY CHECK{Fore.dark_goldenrod}-> {Fore.cyan}{num}/{Fore.light_cyan}{num+1} of {Fore.light_red}{ct} -> {i}"
270
+ print(msg)
271
+ check=session.query(Entry).filter(Entry.EntryId==i.EntryId).first()
272
+ check2=session.query(DayLog).filter(DayLog.EntryId==i.EntryId).first()
273
+ if not check and not check2:
274
+ session.delete(i)
275
+ if num % 100 == 0:
276
+ session.commit()
277
+ session.commit()
278
+ session.flush()
279
+ else:
280
+ print(f"{Fore.light_yellow}Deleting All nutrients facts entry data extras{Style.reset}")
281
+ for fieldname in self.diabetic_fields:
282
+ print(f"{Fore.light_red}Deleting{Fore.cyan} {fieldname}{Style.reset}")
283
+ allOthers=session.query(EntryDataExtras).filter(EntryDataExtras.field_name==fieldname).delete()
284
+ session.commit()
285
+ print(f"{Fore.light_red}Done!{Style.reset}")
286
+ except Exception as e:
287
+ print(e)
288
+
289
+ def enable_all_extraPresets_facts(self):
290
+ with Session(ENGINE) as session:
291
+ try:
292
+ toolid=-1
293
+ try:
294
+ extraPresets_facts_placeholder=session.query(Entry).filter(Entry.EntryId==toolid).first()
295
+ if extraPresets_facts_placeholder is None:
296
+ extraPresets_facts_placeholder=Entry(Name="Diabetic_Facts_PlaceHolder",Barcode="Diabetic_Facts_PlaceHolder",Code="Diabetic_Facts_PlaceHolder",InList=False,EntryId=toolid)
297
+ session.add(extraPresets_facts_placeholder)
298
+ session.commit()
299
+ session.flush()
300
+ session.refresh(extraPresets_facts_placeholder)
301
+ except Exception as ee:
302
+ print(ee)
303
+
304
+ extraPresets_fields=self.extraPresets_fields
305
+ ct=len(extraPresets_fields)
306
+ for num,k in enumerate(extraPresets_fields):
307
+ check=session.query(EntryDataExtras).filter(and_(EntryDataExtras.field_name.icontains(k),EntryDataExtras.field_value.icontains(extraPresets_fields[k]))).first()
308
+ if check is not None:
309
+ print(f"Skipping Pre-Existing {k}!")
310
+ continue
311
+ extra=EntryDataExtras(field_name=k,field_type="str",field_value=str(extraPresets_fields[k]),EntryId=toolid)
312
+ session.add(extra)
313
+ session.commit()
314
+ session.flush()
315
+ session.refresh(extra)
316
+ print(f"{Fore.cyan}{num}/{Fore.light_cyan}{num+1} of {Fore.light_red}{ct} -> {Fore.orange_red_1}Adding -> {extra}!{Style.reset}")
317
+ session.commit()
318
+ except Exception as e:
319
+ print(e)
320
+
321
+
322
+ def delete_all_extraPresets_facts(self):
323
+ code=''.join([str(random.randint(0,9)) for i in range(10)])
324
+ verification_protection=detectGetOrSet("Protect extraPresets Facts From Delete",code,setValue=False,literal=True)
325
+ while True:
326
+ try:
327
+ really=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Do You really want to delete all extraPresets facts fields?",helpText="yes or no boolean,default is NO",data="boolean")
328
+ if really in [None,]:
329
+ return
330
+ elif really in ['d',False]:
331
+ return
332
+ else:
333
+ pass
334
+ really=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"To {Fore.orange_red_1}Delete everything completely,{Fore.light_steel_blue} What is todays date?{Style.reset}",helpText="type y/yes for prompt or type as m.d.Y",data="datetime")
335
+ if really in [None,'d']:
336
+ return
337
+ today=datetime.today()
338
+ if really.day == today.day and really.month == today.month and really.year == today.year:
339
+ really=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"Please type the verification code {Style.reset}'{DayLog.cfmt(None,verification_protection)}'?",helpText=f"type '{DayLog.cfmt(None,verification_protection)}' to finalize!",data="string")
340
+ if really in [None,]:
341
+ return
342
+ elif really in ['d',False]:
343
+ return
344
+ elif really == verification_protection:
345
+ break
346
+ else:
347
+ pass
348
+ except Exception as e:
349
+ print(e)
350
+ with Session(ENGINE) as session:
351
+ try:
352
+ toolid=-1
353
+ extraPresets_facts_placeholder=session.query(Entry).filter(Entry.EntryId==toolid).all()
354
+ extraPresets_facts_placeholder_extras=session.query(EntryDataExtras).filter(EntryDataExtras.EntryId==toolid).all()
355
+
356
+ print(f"{Fore.light_yellow}Deleting Diabetic_Facts_PlaceHolder{Style.reset}")
357
+ for i in extraPresets_facts_placeholder:
358
+ print(f"{Fore.light_red}Deleting {i.seeShort()}{Style.reset}")
359
+ session.delete(i)
360
+ print(f"{Fore.light_yellow}Deleting Diabetic_Facts_PlaceHolder_Extras{Style.reset}")
361
+ for i in extraPresets_facts_placeholder_extras:
362
+ print(f"{Fore.light_red}Deleting {i.field_name}{Style.reset}")
363
+ session.delete(i)
364
+ session.commit()
365
+ dependency=Prompt.__init2__(None,func=FormBuilderMkText,ptext="check to see if its not needed elsewhere and delete it if it is not needed[Y/n]",helpText="yes(default) or no",data="boolean")
366
+ if dependency is None:
367
+ return
368
+ elif dependency in [True,'d']:
369
+ results=session.query(EntryDataExtras).all()
370
+ ct=len(results)
371
+ for num,i in enumerate(results):
372
+ msg=f"{Fore.orange_red_1}DEPENDENCY CHECK{Fore.dark_goldenrod}-> {Fore.cyan}{num}/{Fore.light_cyan}{num+1} of {Fore.light_red}{ct} -> {i}"
373
+ print(msg)
374
+ check=session.query(Entry).filter(Entry.EntryId==i.EntryId).first()
375
+ check2=session.query(DayLog).filter(DayLog.EntryId==i.EntryId).first()
376
+ if not check and not check2:
377
+ session.delete(i)
378
+ if num % 100 == 0:
379
+ session.commit()
380
+ session.commit()
381
+ session.flush()
382
+ else:
383
+ print(f"{Fore.light_yellow}Deleting All nutrients facts entry data extras{Style.reset}")
384
+ for fieldname in self.extraPresets_fields:
385
+ print(f"{Fore.light_red}Deleting{Fore.cyan} {fieldname}{Style.reset}")
386
+ allOthers=session.query(EntryDataExtras).filter(EntryDataExtras.field_name==fieldname).delete()
387
+ session.commit()
388
+ print(f"{Fore.light_red}Done!{Style.reset}")
389
+ except Exception as e:
390
+ print(e)
391
+
392
+ extraPresets_fields=OrderedDict({
393
+ 'Radio-active':'Yes',
394
+ 'Carcinogen?':'Yes',
395
+ 'Toxic?':'Yes',
396
+ 'Poisonous?':'Yes',
397
+ 'Venomous?':'Yes',
398
+ 'Sharp Objects?':'Yes',
399
+ 'Bio-Hazard?':'Yes',
400
+ 'Pathogen Warning.':'N/A',
401
+ 'Caustic/Corrosive?':'Yes',
402
+
403
+ 'Hearing Protection Required?':'Yes',
404
+ 'Eye Protection Required?':'Yes',
405
+ 'PPE Required?':'Yes',
406
+ 'PPE Required Type?':'N/A',
407
+ 'PPE Required Name?':'N/A',
408
+
409
+ 'Explosive Under Pressure?':'Yes',
410
+ 'Hazmat Required??':'Yes',
411
+ 'Cut Level A1?':'Yes',
412
+ 'Cut Level A2?':'Yes',
413
+ 'Cut Level A3?':'Yes',
414
+
415
+ 'Contact Type Phone address/number/identifier':'N/A',
416
+ 'Contact Type Mobile/Cellular address/number/identifier':'N/A',
417
+ 'Contact Type Text Message address/number/identifier':'N/A',
418
+ 'Contact Type Email address/number/identifier':'N/A',
419
+ 'Contact Type Postal Mail address/number/identifier':'N/A',
420
+ 'Contact Type Mail Pigeon address/number/identifier':'N/A',
421
+ 'Contact Type Social address/number/identifier':'N/A',
422
+
423
+ "SURGEON GENERAL'S WARNING 1(Smoke Related Tobacco Products)":"Smoking Causes Lung Cancer, Heart Disease, Emphysema, and May Complicate Pregnancy.",
424
+ "SURGEON GENERAL'S WARNING 2(Smoke Related Tobacco Products)":"Quitting Smoking Now Greatly Reduces Serious Risks to Your Health.",
425
+ "SURGEON GENERAL'S WARNING 3(Smoke Related Tobacco Products)":"Smoking By Pregnant Women May Result in Fetal Injury, Premature Birth, and Low Birth Weight.",
426
+ "SURGEON GENERAL'S WARNING 4(Smoke Related Tobacco Products)":" Cigarette Smoke Contains Carbon Monoxide.",
427
+ "GOVERNMENT WARNING(Alcohol)":"(1) According to the Surgeon General, women should not drink alcoholic beverages during pregnancy because of the risk of birth defects. (2) Consumption of alcoholic beverages impairs your ability to drive a car or operate machinery, and may cause health problems.",
428
+ "GOVERNMENT WARNING(Cannabis[CA PROP 64])":"THIS PACKAGE CONTAINS CANNABIS, A SCHEDULE I CONTROLLED SUBSTANCE. KEEP OUT OF REACH OF CHILDREN AND ANIMALS. CANNABIS MAY ONLY BE POSSESSED OR CONSUMED BY PERSONS 21 YEARS OF AGE OR OLDER UNLESS THE PERSON IS A QUALIFIED PATIENT. CANNABIS USE WHILE PREGNANT OR BREASTFEEDING MAY BE HARMFUL. CONSUMPTION OF CANNABIS IMPAIRS YOUR ABILITY TO DRIVE AND OPERATE MACHINERY. PLEASE USE EXTREME CAUTION.",
429
+
430
+ 'Recycle Warning - Steel Can':'Steel Can; Please Recycle',
431
+ 'Recycle Warning - Plastic Bottle':'Plastic Bottle; Please Recycle',
432
+
433
+ 'Perishable Warning - Frozen':'Perishable; Keep Frozen',
434
+ 'Perishable Warning - Refrigerated':'Perishable; Keep Refrigerated',
435
+
436
+ 'Sharp Edge Warning':'Edges are Sharp when opened',
437
+ 'Suffocation Warning - Plastic Bag':'May Cause Suffocation if plastic bag clings to mouth and nose.',
438
+
439
+ 'Electrical Warning HV':'High Voltage',
440
+ 'Electrical Warning HA':'High Current',
441
+ 'Electrical Warning HAV':'High Current and Voltage',
442
+
443
+ 'Keep Out of Reach of Children under the age of':'6 years',
444
+
445
+ 'Alcohol! Age Restricted':'Yes',
446
+ 'Alcohol! Age Restriction':'18years',
447
+ 'Cannabis! Age Restricted':'Yes',
448
+ 'Cannabis! Age Restriction':'21y',
449
+
450
+ 'Controlled Substance':'Yes',
451
+ 'Smart Label':'',
452
+ 'URL':'https://www.google.com/',
453
+ 'Distributed By':'N/A',
454
+ 'Country Of Origin':'N/A/China/USA/etc',
455
+ 'CasePack/MasterPack Barcode':'N/A',
456
+
457
+ 'Total Cannabinoids %':'0%',
458
+ 'Total Cannabinoids mg':'0mg',
459
+ 'Total Cannabinoids %(mg)':'0%(0mg)',
460
+
461
+ 'THC Cannabinoids %':'0%',
462
+ 'THC Cannabinoids mg':'0mg',
463
+ 'THC Cannabinoids %(mg)':'0%(0mg)',
464
+
465
+ 'CBD Cannabinoids %':'0%',
466
+ 'CBD Cannabinoids mg':'0mg',
467
+ 'CBD Cannabinoids %(mg)':'0%(0mg)',
468
+
469
+ 'Manufactured By/Distributed By/Company':'SomeCorp inc., Mineapolis, MN 55440 USA',
470
+ 'Retailer':'',
471
+ 'Vendor':'',
472
+ 'Religious':'',
473
+ 'Genre':'',
474
+ 'Rating':'',
475
+
476
+ 'DDeC:000':'Generalities, Computer Science, Information & General Works',
477
+ 'DDeC:100':'Philosophy & Psychology.',
478
+ 'DDeC:200':'Religion',
479
+ 'DDeC:300':'Social Sciences',
480
+ 'DDeC:400':'Language',
481
+ 'DDeC:500':'Natural Sciences & Mathematics',
482
+ 'DDeC:600':'Technology (Applied Sciences)',
483
+ 'DDeC:700':'The Arts',
484
+ 'DDeC:800':'Literature & Rhetoric',
485
+ 'DDeC:900':'Geography & History',
486
+ 'DUI Decimal Number':'000.000',
487
+ '*DDeC:NUM':'DUI DEC:Number of Category',
488
+ 'Location':'from Google Maps or From other Coordinate providing app',
489
+ 'Related Search Terms For External Source':'',
490
+ 'External Search Source':'www.google.com',
491
+ 'Related Search Terms For Local Search':'',
492
+
493
+ 'BatchId':'D.PR42B.BLD.A06.A08',
494
+ 'UID':generate_24_char_uuid(),
495
+ 'Manufacture Date':'N/A',
496
+ 'Expiration Date(Not Associated with the Expiry System) Period(From Date of Manufacture to Date of Expiration)':'N/A',
497
+ 'Expiration Date(Not Associated with the Expiry System)':'N/A',
498
+
499
+ 'Serial #':'N/A',
500
+ 'Serial No.':'N/A',
501
+ 'Serial Number':'N/A',
502
+
503
+ 'MAC Address':'FF:FF:FF:FF:FF:FF',
504
+ 'IMEID':'N/A',
505
+ 'ICCID':'N/A',
506
+ 'IMSI':'N/A',
507
+ 'IMEI':'N/A',
508
+ 'Carrier Name':'N/A',
509
+ 'Carrier Type':'N/A',
510
+ 'Service Type':'N/A',
511
+ 'Service Name':'N/A',
512
+
513
+ 'Taxable @ Locale':'Yes @/At Seaside(93955)',
514
+ 'Tax Type @ Locale for Tax Rate %':'Sales Tax at Seaside(93955) for 0.0925',
515
+ 'Locale Where Taxed @/At Tax Rate %':'Seaside(93955) for 0.0925',
516
+ 'Locale Tax Rate % @ Locale':'0.0925 at/@ seaside(93955)',
517
+
518
+ 'Prescription Rx?':'Yes',
519
+ 'Prescription Text':'N/A',
520
+ 'Prescription Name':'N/A',
521
+ 'Prescription ID':'N/A',
522
+ 'Homeopathic?':'Yes',
523
+ 'Herbal?':'Yes',
524
+ })
525
+
526
+ diabetic_fields=OrderedDict({
527
+ 'Unit':'U',
528
+ 'Carbohydrate':'0g',
529
+ 'Hypoglycemia Response(How to Treat)':'Treat with 15 Grams of Carbs.; Chew three(3) -/to four(4) glucose tablets; Consume 1 Tbsp of Honey; Drink 1/2 cup of Juice or regular soda.',
530
+
531
+ 'Sweets?':'No',
532
+ 'Dairy(Milk & Yogurt)?':'No',
533
+ 'Fruit?':'No',
534
+ 'Starch Vegatable?':'No',
535
+ 'Protien?':'No',
536
+ 'High in Omega-3 Fat?':'No',
537
+ 'Non-Starchy Vegatable?':'No',
538
+
539
+ 'Suggested Fruit Consumption':'1 small apple',
540
+ 'Suggested Dairy Consumption':'1 cup milk',
541
+ 'Suggested Grains Consumption':'1/3 Cup Quinoa or/|| 1/4 Bagel',
542
+ 'Suggested Starch Vegatables Consumption':'1 Cup Beets or/|| 1/2 Cup Corn',
543
+ 'Suggested Combo Foods Consumption':'1/2 Slice Pizza or/|| 1/2 Cup Ice Cream',
544
+
545
+ '1 Serving':'15g',
546
+ '2 Serving':'30g',
547
+ '3 Serving':'45g',
548
+ 'Meals':'30g-60g(2 servings - 4 servings)',
549
+ 'Snacks':'>=(less than, or equal to)15 grams(>=[less than, or equal to]1 Serving)',
550
+
551
+ 'Insulin Type: Rapid Acting?':'No',
552
+ 'Insulin Type: Short Acting?':"No",
553
+ 'Insulin Type: Intermediate?':"No",
554
+ 'Insulin Type: Combination Intermediate/Rapid Acting?':"No",
555
+ 'Insulin Type: Long Acting?':'No',
556
+ 'Insulin Type: Combination Long Acting/Rapid Acting?':'No',
557
+ 'Insulin Type: Regular U-500?':'No',
558
+ })
559
+
560
+ nutrients=OrderedDict({
561
+ "Caffiene Content Per Fluid Qty (20mg/15floz)":"20mg/15floz",
180
562
  'Protien':'0g',
181
563
  "Added sugars": "50g",
182
564
  "Biotin": "30mcg",
@@ -229,7 +611,26 @@ class EntryDataExtrasMenu:
229
611
  "Calcium": "320mg",
230
612
  "Iron": "1.6mg",
231
613
  "Potassium": "510mg",
232
- }
614
+ })
615
+
616
+
617
+ def colorize(self,msg,num,ct):
618
+ return f"{Fore.light_green}{num}/{Fore.light_cyan}{num+1} {Fore.light_red}of {ct}{Fore.dark_goldenrod} -> {Fore.grey_70}{msg}{Style.reset}"
619
+
620
+ def list_nutrient_presets(self):
621
+ ct=len(self.nutrients)
622
+ for num,f in enumerate(self.nutrients):
623
+ print(self.colorize(f"{f} = {self.nutrients[f]}",num,ct))
624
+
625
+ def list_diabetic_presets(self):
626
+ ct=len(self.diabetic_fields)
627
+ for num,f in enumerate(self.diabetic_fields):
628
+ print(self.colorize(f"{f} = {self.diabetic_fields[f]}",num,ct))
629
+
630
+ def list_extraPresets_presets(self):
631
+ ct=len(self.extraPresets_fields)
632
+ for num,f in enumerate(self.extraPresets_fields):
633
+ print(self.colorize(f"{f} = {self.extraPresets_fields[f]}",num,ct))
233
634
 
234
635
  def delete_all_nutritional_facts(self):
235
636
  code=''.join([str(random.randint(0,9)) for i in range(10)])
@@ -304,12 +705,15 @@ class EntryDataExtrasMenu:
304
705
 
305
706
  def af2e(self,barcode=None):
306
707
  with Session(ENGINE) as session:
307
- if barcode != None:
308
- search=barcode
708
+ if self.code is None or not isinstance(self.code,str):
709
+ if barcode != None:
710
+ search=barcode
711
+ else:
712
+ search=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Search? [Barcode,Code,Name]",helpText="searches Barcode,Code,Name",data="string")
713
+ if search in [None]:
714
+ return
309
715
  else:
310
- search=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Search? [Barcode,Code,Name]",helpText="searches Barcode,Code,Name",data="string")
311
- if search in [None]:
312
- return
716
+ search=self.code
313
717
  results=session.query(Entry).filter(or_(Entry.Barcode==search,Entry.Code==search,Entry.Barcode.icontains(search),Entry.Code.icontains(search),Entry.Name.icontains(search))).all()
314
718
  ct=len(results)
315
719
  if ct == 0:
@@ -368,12 +772,15 @@ class EntryDataExtrasMenu:
368
772
 
369
773
  def sf2e(self,barcode=None):
370
774
  with Session(ENGINE) as session:
371
- if barcode != None:
372
- search=barcode
775
+ if self.code is None or not isinstance(self.code,str):
776
+ if barcode != None:
777
+ search=barcode
778
+ else:
779
+ search=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Search? [Barcode,Code,Name]",helpText="searches Barcode,Code,Name",data="string")
780
+ if search in [None]:
781
+ return
373
782
  else:
374
- search=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Search? [Barcode,Code,Name]",helpText="searches Barcode,Code,Name",data="string")
375
- if search in [None]:
376
- return
783
+ search=self.code
377
784
  results=session.query(Entry).filter(or_(Entry.Barcode==search,Entry.Code==search,Entry.Barcode.icontains(search),Entry.Code.icontains(search),Entry.Name.icontains(search))).all()
378
785
  ct=len(results)
379
786
  if ct == 0:
@@ -459,134 +866,144 @@ class EntryDataExtrasMenu:
459
866
  def sch_f2e(self,barcode=None):
460
867
  with Session(ENGINE) as session:
461
868
  while True:
462
- if barcode != None:
463
- search=barcode
464
- else:
465
- search=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Search? [Barcode,Code,Name]",helpText="searches Barcode,Code,Name",data="string")
466
- if search in [None]:
467
- return
869
+ try:
870
+ if self.code is None or not isinstance(self.code,str):
871
+ if barcode != None:
872
+ search=barcode
873
+ else:
874
+ search=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Search? [Barcode,Code,Name]",helpText="searches Barcode,Code,Name",data="string")
875
+ if search in [None]:
876
+ return
877
+ else:
878
+ search=self.code
468
879
 
469
- results=session.query(Entry).filter(or_(Entry.Barcode==search,Entry.Code==search,Entry.Barcode.icontains(search),Entry.Code.icontains(search),Entry.Name.icontains(search))).all()
470
- ct=len(results)
471
- if ct == 0:
472
- print("No Results were Found!")
473
- return
474
- msg=[]
475
- for num,i in enumerate(results):
476
- msg.append(f"{Fore.cyan}{num}/{Fore.light_yellow}{num+1} of {Fore.light_red}{ct}{Fore.grey_50} -> {i.seeShort()}")
477
- msg='\n'.join(msg)
478
- product=None
479
- while True:
480
- print(msg)
481
- index=Prompt.__init2__(None,func=FormBuilderMkText,ptext="which index do you wish to use?",helpText=msg,data="integer")
482
- if index in [None,]:
880
+ results=session.query(Entry).filter(or_(Entry.Barcode==search,Entry.Code==search,Entry.Barcode.icontains(search),Entry.Code.icontains(search),Entry.Name.icontains(search))).all()
881
+ ct=len(results)
882
+ if ct == 0:
883
+ print("No Results were Found!")
483
884
  return
484
- try:
485
- product=results[index]
486
- break
487
- except Exception as e:
488
- print(e)
489
- if product in [None,]:
490
- return
491
- print("sf2e()")
492
- while True:
885
+ msg=[]
886
+ for num,i in enumerate(results):
887
+ msg.append(f"{Fore.cyan}{num}/{Fore.light_yellow}{num+1} of {Fore.light_red}{ct}{Fore.grey_50} -> {i.seeShort()}")
888
+ msg='\n'.join(msg)
889
+ product=None
493
890
  while True:
891
+ print(msg)
892
+ index=Prompt.__init2__(None,func=FormBuilderMkText,ptext="which index do you wish to use?",helpText=msg,data="integer")
893
+ if index in [None,]:
894
+ return
494
895
  try:
495
- fs=[]
496
- fse=session.query(EntryDataExtras).group_by(EntryDataExtras.field_name,EntryDataExtras.field_type).all()
497
- ct_fse=len(fse)
498
- for nunm,i in enumerate(fse):
499
- fs.append(f"{Fore.light_yellow}{num}/{Fore.light_cyan}{num+1} of {Fore.light_red}{ct_fse} -> {Fore.light_magenta}{i.field_name}{Style.reset}")
500
- fs='\n'.join(fs)
501
- field_search=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Search field?",helpText=f"searches EntryDataExtras field_names:\n{fs}",data="string")
502
- if field_search in [None]:
503
- return
504
- elif field_search in ['d',]:
505
- field_search=''
506
- query=session.query(EntryDataExtras).filter(EntryDataExtras.field_name.icontains(field_search))
507
- results_ede=query.group_by(EntryDataExtras.field_name,EntryDataExtras.field_type).all()
508
- if len(results_ede) < 1:
509
- continue
896
+ product=results[index]
510
897
  break
511
898
  except Exception as e:
512
899
  print(e)
513
- field=None
514
- msg_ede=[]
515
- for num,i in enumerate(results_ede):
516
- if num%2==0:
517
- color=Fore.cyan
518
- elif num%3==0:
519
- color=Fore.light_cyan
520
- elif num%4==0:
521
- color=Fore.light_steel_blue
522
- elif num%5==0:
523
- color=Fore.light_green
524
- elif num%6==0:
525
- color=Fore.turquoise_4
526
- elif num%7==0:
527
- color=Fore.deep_sky_blue_3a
528
- elif num%8==0:
529
- color=Fore.spring_green_3a
530
- elif num%9==0:
531
- color=Fore.dark_cyan
532
- else:
533
- color=Fore.light_blue
534
- msg_ede.append(f"{Fore.cyan}{num}/{Fore.light_yellow}{num+1} of {Fore.light_red}{ct}{Fore.grey_50} -> {color}{i.field_name}{Style.reset}:{i.field_type} ede_id={i.ede_id} doe={i.doe}")
535
- msg_ede='\n'.join(msg_ede)
900
+ if product in [None,]:
901
+ return
902
+ print("sf2e()")
536
903
  while True:
537
- try:
538
- print(msg_ede)
539
- index=Prompt.__init2__(None,func=FormBuilderMkText,ptext="which index do you wish to use?",helpText=msg_ede,data="integer")
540
- if index in [None,]:
541
- return
542
- if not isinstance(index,int):
543
- print(f"{Fore.light_red}Index must be an {Fore.light_cyan}integer{Style.reset}")
544
- continue
904
+ while True:
545
905
  try:
546
- print(index)
547
- if index <= len(results_ede)-1:
548
- field=results_ede[index]
549
- else:
550
- print(f"index is not within 0-{len(results_ede)-1}")
906
+ fs=[]
907
+ fse=session.query(EntryDataExtras).group_by(EntryDataExtras.field_name,EntryDataExtras.field_type).all()
908
+ ct_fse=len(fse)
909
+ for nunm,i in enumerate(fse):
910
+ fs.append(f"{Fore.light_yellow}{num}/{Fore.light_cyan}{num+1} of {Fore.light_red}{ct_fse} -> {Fore.light_magenta}{i.field_name}{Style.reset}")
911
+ fs='\n'.join(fs)
912
+ field_search=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Search field?",helpText=f"searches EntryDataExtras field_names:\n{fs}",data="string")
913
+ if field_search in [None]:
914
+ return
915
+ elif field_search in ['d',]:
916
+ field_search=''
917
+ query=session.query(EntryDataExtras).filter(EntryDataExtras.field_name.icontains(field_search))
918
+ results_ede=query.group_by(EntryDataExtras.field_name,EntryDataExtras.field_type).all()
919
+ if len(results_ede) < 1:
551
920
  continue
552
921
  break
553
922
  except Exception as e:
554
923
  print(e)
555
- break
556
- except Exception as e:
557
- print(e)
558
- if field == None:
559
- return
560
- field_name=field.field_name
561
- field_type=field.field_type
562
- field_value=Prompt.__init2__(self,func=FormBuilderMkText,ptext="What do you wish to store as the value?",helpText=field_type,data=field_type)
563
- if field_value in [None,]:
564
- return
565
-
566
- print(field_name,field_type,field_value)
567
- extra=EntryDataExtras(field_name=field_name,field_type=field_type,field_value=field_value,EntryId=product.EntryId)
568
- session.add(extra)
569
- session.commit()
570
- session.refresh(extra)
571
- print(extra)
572
- anotherField=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Add another field to this product[y/n]?",helpText="yes/no/boolean",data="boolean")
573
- if anotherField in [None,]:
574
- return
575
- elif anotherField in ['d',True]:
576
- continue
577
- else:
924
+ field=None
925
+ msg_ede=[]
926
+ for num,i in enumerate(results_ede):
927
+ if num%2==0:
928
+ color=Fore.cyan
929
+ elif num%3==0:
930
+ color=Fore.light_cyan
931
+ elif num%4==0:
932
+ color=Fore.light_steel_blue
933
+ elif num%5==0:
934
+ color=Fore.light_green
935
+ elif num%6==0:
936
+ color=Fore.turquoise_4
937
+ elif num%7==0:
938
+ color=Fore.deep_sky_blue_3a
939
+ elif num%8==0:
940
+ color=Fore.spring_green_3a
941
+ elif num%9==0:
942
+ color=Fore.dark_cyan
943
+ else:
944
+ color=Fore.light_blue
945
+ msg_ede.append(f"{Fore.cyan}{num}/{Fore.light_yellow}{num+1} of {Fore.light_red}{ct}{Fore.grey_50} -> {color}{i.field_name}{Style.reset}:{i.field_type} ede_id={i.ede_id} doe={i.doe}")
946
+ msg_ede='\n'.join(msg_ede)
947
+ while True:
948
+ try:
949
+ print(msg_ede)
950
+ index=Prompt.__init2__(None,func=FormBuilderMkText,ptext="which index do you wish to use?",helpText=msg_ede,data="integer")
951
+ if index in [None,]:
952
+ return
953
+ if not isinstance(index,int):
954
+ print(f"{Fore.light_red}Index must be an {Fore.light_cyan}integer{Style.reset}")
955
+ continue
956
+ try:
957
+ print(index)
958
+ if index <= len(results_ede)-1:
959
+ field=results_ede[index]
960
+ else:
961
+ print(f"index is not within 0-{len(results_ede)-1}")
962
+ continue
963
+ break
964
+ except Exception as e:
965
+ print(e)
966
+ break
967
+ except Exception as e:
968
+ print(e)
969
+ if field == None:
970
+ return
971
+ field_name=field.field_name
972
+ field_type=field.field_type
973
+ field_value=Prompt.__init2__(self,func=FormBuilderMkText,ptext="What do you wish to store as the value?",helpText=field_type,data=field_type)
974
+ if field_value in [None,]:
975
+ return
976
+
977
+ print(field_name,field_type,field_value)
978
+ extra=EntryDataExtras(field_name=field_name,field_type=field_type,field_value=field_value,EntryId=product.EntryId)
979
+ session.add(extra)
980
+ session.commit()
981
+ session.refresh(extra)
982
+ print(extra)
983
+ anotherField=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Add another field to this product[y/n]?",helpText="yes/no/boolean",data="boolean")
984
+ if anotherField in [None,]:
985
+ return
986
+ elif anotherField in ['d',True]:
987
+ continue
988
+ else:
989
+ break
990
+ if barcode != None:
578
991
  break
579
- if barcode != None:
580
- break
992
+ except Exception as e:
993
+ print(e)
994
+
581
995
 
582
996
  def sch_c2e(self,barcode=None):
583
997
  with Session(ENGINE) as session:
584
- if barcode != None:
585
- search=barcode
998
+ if self.code is None or not isinstance(self.code,str):
999
+ if barcode != None:
1000
+ search=barcode
1001
+ else:
1002
+ search=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Search? [Barcode,Code,Name]",helpText="searches Barcode,Code,Name",data="string")
1003
+ if search in [None]:
1004
+ return
586
1005
  else:
587
- search=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Search? [Barcode,Code,Name]",helpText="searches Barcode,Code,Name",data="string")
588
- if search in [None]:
589
- return
1006
+ search=self.code
590
1007
 
591
1008
  results=session.query(Entry).filter(or_(Entry.Barcode==search,Entry.Code==search,Entry.Barcode.icontains(search),Entry.Code.icontains(search),Entry.Name.icontains(search))).all()
592
1009
  ct=len(results)
@@ -753,9 +1170,12 @@ class EntryDataExtrasMenu:
753
1170
 
754
1171
  def lookup(self):
755
1172
  with Session(ENGINE) as session:
756
- search=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Search? [Barcode,Code,Name]",helpText="searches Barcode,Code,Name",data="string")
757
- if search in [None]:
758
- return
1173
+ if self.code is None or not isinstance(self.code,str):
1174
+ search=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Search? [Barcode,Code,Name]",helpText="searches Barcode,Code,Name",data="string")
1175
+ if search in [None]:
1176
+ return
1177
+ else:
1178
+ search=self.code
759
1179
  results=session.query(Entry).filter(or_(Entry.Barcode==search,Entry.Code==search,Entry.Barcode.icontains(search),Entry.Code.icontains(search),Entry.Name.icontains(search))).all()
760
1180
  ct=len(results)
761
1181
  if ct == 0:
@@ -790,9 +1210,57 @@ class EntryDataExtrasMenu:
790
1210
  print(product.seeShort())
791
1211
  print(mtext)
792
1212
 
1213
+ def list_all_fields_generator(self):
1214
+ print("laaf()")
1215
+ with Session(ENGINE) as session:
1216
+ fields=session.query(EntryDataExtras).group_by(EntryDataExtras.field_name,EntryDataExtras.field_type).order_by(EntryDataExtras.doe).all()
1217
+ ct=len(fields)
1218
+ for num,field in enumerate(fields):
1219
+ msg=f"""{Fore.light_green}{num}/{Fore.light_yellow}{num+1} of {Fore.light_red}{ct} -> {Fore.orange_red_1}EntryDataExtra{Fore.light_cyan}(
1220
+ ede_id={Fore.light_steel_blue}{field.ede_id}{Fore.light_cyan},
1221
+ doe={Fore.light_steel_blue}{field.doe}{Fore.light_cyan},
1222
+ field_name={Fore.light_steel_blue}{field.field_name}{Fore.light_cyan},
1223
+ field_value={Fore.light_steel_blue}{field.field_value}{Fore.light_cyan},
1224
+ ){Style.reset}"""
1225
+ yield num,ct,field,msg
1226
+
1227
+ def list_all_fields(self):
1228
+ with Session(ENGINE) as session:
1229
+ fields=session.query(EntryDataExtras).group_by(EntryDataExtras.field_name,EntryDataExtras.field_type).order_by(EntryDataExtras.doe).all()
1230
+ ct=len(fields)
1231
+ for num,field in enumerate(fields):
1232
+ msg=f"""{Fore.light_green}{num}/{Fore.light_yellow}{num+1} of {Fore.light_red}{ct} -> {Fore.orange_red_1}EntryDataExtra{Fore.light_cyan}(
1233
+ ede_id={Fore.light_steel_blue}{field.ede_id}{Fore.light_cyan},
1234
+ doe={Fore.light_steel_blue}{field.doe}{Fore.light_cyan},
1235
+ field_name={Fore.light_steel_blue}{field.field_name}{Fore.light_cyan},
1236
+ field_value={Fore.light_steel_blue}{field.field_value}{Fore.light_cyan},
1237
+ ){Style.reset}"""
1238
+
1239
+ print(msg)
793
1240
 
794
- def __init__(self):
795
- cmds={
1241
+ def __init__(self,code=None):
1242
+ self.code=code
1243
+ cmds=OrderedDict({
1244
+ 'list all extraPresets presets':{
1245
+ 'cmds':['la-xp','laxp','la xp','ls xtr prst','list extra preset'],
1246
+ 'exec':self.list_extraPresets_presets,
1247
+ 'desc':"list extra preset[These are hardcoded]."
1248
+ },
1249
+ 'list all diabetic presets':{
1250
+ 'cmds':['la-dp','ladp','la dp','ls dbtc prst','list diabetic presets'],
1251
+ 'exec':self.list_diabetic_presets,
1252
+ 'desc':"list diabetic presets[These are hardcoded]."
1253
+ },
1254
+ 'list all nutrients presets':{
1255
+ 'cmds':['la-np','lanp','la np','ls ntrnt prst','list nutrients presets'],
1256
+ 'exec':self.list_nutrient_presets,
1257
+ 'desc':"list nutrients presets[These are hardcoded]."
1258
+ },
1259
+ 'list all available fields':{
1260
+ 'cmds':['la-af','laaf','la af','ls al avlbl flds','ls * flds','ls*flds','lsalflds'],
1261
+ 'exec':self.list_all_fields,
1262
+ 'desc':"list all available fields."
1263
+ },
796
1264
  'enable all nutritional facts':{
797
1265
  'cmds':['eanf','enable all nutrional facts'],
798
1266
  'exec':self.enable_all_nutritional_facts,
@@ -803,6 +1271,26 @@ class EntryDataExtrasMenu:
803
1271
  'exec':self.delete_all_nutritional_facts,
804
1272
  'desc':"Delete Entry placeholder for nutritional facts and all of its EntryDataExtras, and all other nutritional facts fields. There is a triple prompt before proceeding!!!"
805
1273
  },
1274
+ 'enable all diabetic facts':{
1275
+ 'cmds':['eadf','enable all diabetic facts','enable diabetes'],
1276
+ 'exec':self.enable_all_diabetic_facts,
1277
+ 'desc':"add an Entry placeholder for diabetic facts and add all diabetic facts fields."
1278
+ },
1279
+ 'delete and disable all diabetic facts':{
1280
+ 'cmds':['dadadf','delete and disable all diabetic facts','disable diabetes'],
1281
+ 'exec':self.delete_all_diabetic_facts,
1282
+ 'desc':"Delete Entry placeholder for diabetic facts and all of its EntryDataExtras, and all other diabetic facts fields. There is a triple prompt before proceeding!!!"
1283
+ },
1284
+ 'enable all extraPresets facts':{
1285
+ 'cmds':['eaxpf','enable all extrapresets facts','enable extrapresets'],
1286
+ 'exec':self.enable_all_extraPresets_facts,
1287
+ 'desc':"add an Entry placeholder for extraPresets facts and add all extraPresets facts fields."
1288
+ },
1289
+ 'delete and disable all extraPresets facts':{
1290
+ 'cmds':['dadaxpf','delete and disable all extrapresets facts','disable extrapresets'],
1291
+ 'exec':self.delete_all_extraPresets_facts,
1292
+ 'desc':"Delete Entry placeholder for extraPresets facts and all of its EntryDataExtras, and all other extraPresets facts fields. There is a triple prompt before proceeding!!!"
1293
+ },
806
1294
  'af2e':{
807
1295
  'cmds':['af2e','add field to entry','add field 2 entry'],
808
1296
  'exec':self.af2e,
@@ -843,7 +1331,7 @@ class EntryDataExtrasMenu:
843
1331
  'exec':self.edee,
844
1332
  'desc':'ensures last used field is applied to all Entry\'s [SLOW!!!]',
845
1333
  }
846
- }
1334
+ })
847
1335
  '''
848
1336
  elif doWhat.lower() in "sch f2e,ssf2e".split(","):
849
1337
  self.sch_f2e()
@@ -862,8 +1350,9 @@ elif doWhat.lower() in "sch f2e,ssf2e".split(","):
862
1350
  break
863
1351
  '''
864
1352
  helpText=[]
865
- for m in cmds:
866
- helpText.append(f"{cmds[m]['cmds']} - {cmds[m]['desc']}")
1353
+ ct=len(cmds)
1354
+ for num,m in enumerate(cmds):
1355
+ helpText.append(self.colorize(f"{Fore.light_steel_blue}{cmds[m]['cmds']}{Fore.grey_70} - {Fore.light_steel_blue}{cmds[m]['desc']}{Style.reset}",num,ct))
867
1356
  helpText='\n'.join(helpText)
868
1357
  while True:
869
1358
  doWhat=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"EntryDataExtras@{Fore.light_green}Menu{Fore.light_yellow}",helpText=helpText,data="string")
radboy/TasksMode/Tasks.py CHANGED
@@ -1093,7 +1093,7 @@ so use {Fore.orange_red_1}ls-lq/ls Shelf {Fore.light_yellow}from {Fore.light_mag
1093
1093
  if doWhat in [None,]:
1094
1094
  return
1095
1095
  elif doWhat.lower() in ['em','extras menu']:
1096
- EntryDataExtrasMenu()
1096
+ EntryDataExtrasMenu(code=code)
1097
1097
  elif doWhat.lower() in ['nfa',f"nfa","new entry from all","new_entry_from_all","nefa"]:
1098
1098
  self.NewEntryAll()
1099
1099
  elif doWhat.lower() in ['edit entry',f"ee","ed en"]:
@@ -1863,6 +1863,70 @@ so use {Fore.orange_red_1}ls-lq/ls Shelf {Fore.light_yellow}from {Fore.light_mag
1863
1863
  entrySepStart=f'{Back.grey_30}{Fore.light_red}\\\\{Fore.light_green}{"*"*10}{Fore.light_yellow}|{Fore.light_steel_blue}#REPLACE#{Fore.light_magenta}|{Fore.orange_red_1}{"+"*10}{Fore.light_yellow}{Style.bold}({today()}){Fore.light_red}//{Style.reset}'
1864
1864
  entrySepEnd=f'{Back.grey_30}{Fore.light_red}\\\\{Fore.orange_red_1}{"+"*10}{Fore.light_yellow}|{Fore.light_steel_blue}#REPLACE#{Fore.light_magenta}|{Fore.light_green}{"*"*10}{Fore.light_yellow}{Style.bold}({today()}){Fore.light_red}//{Style.reset}'
1865
1865
  def setFieldInList(self,fieldname,load=False,repack_exec=None,barcode=None,only_select_qty=False):
1866
+ def hnf(resultx,fieldname,code):
1867
+ if isinstance(resultx,Entry):
1868
+ with Session(ENGINE) as session:
1869
+ result=session.query(Entry).filter(Entry.EntryId==resultx.EntryId).first()
1870
+
1871
+ if result.Price is None:
1872
+ result.Price=0
1873
+ if result.Tax is None:
1874
+ result.Tax=0
1875
+ if result.CRV is None:
1876
+ result.CRV=0
1877
+ for k in ['PalletCount','ShelfCount','LoadCount','CaseCount','Facings']:
1878
+ if getattr(result,k) < 1 or getattr(result,k) == None:
1879
+ setattr(result,k,1)
1880
+ session.commit()
1881
+ session.flush()
1882
+ session.refresh(result)
1883
+ palletcount=result.PalletCount
1884
+ facings=result.Facings
1885
+ shelfcount=result.ShelfCount
1886
+ loadcount=result.LoadCount
1887
+ casecount=result.CaseCount
1888
+ Name=result.Name
1889
+ BCD=result.Barcode
1890
+ CD=result.Code
1891
+ ABCD=result.ALT_Barcode
1892
+ ci=getattr(result,fieldname)
1893
+ code=result.Barcode
1894
+ mkTextStore=deepcopy(result)
1895
+ total_price=0
1896
+ if result.Tax == 0:
1897
+ total_price=round(result.Price+result.CRV,3)
1898
+ else:
1899
+ total_price=round(round(result.Price+result.Tax,3)+round(result.CRV,3),3)
1900
+
1901
+ hafnhaf_l=f'''{Fore.grey_70}[{Fore.light_steel_blue}ListMode Entry Info{Fore.grey_70}]{Style.reset}
1902
+ {Fore.orange_red_1}Cost({Fore.light_red}${Fore.light_green}{round(total_price,3)}({Fore.light_steel_blue}Price({round(result.Price,3)}),{Fore.light_sea_green}CRV({round(result.CRV,3)}),{Fore.spring_green_3a}Tax({round(result.Tax,3)}){Fore.light_green}){Style.reset}
1903
+ {Fore.light_green}CaseCount={Fore.cyan}{casecount}{Style.reset}|{Fore.medium_violet_red}ShelfCount={Fore.light_magenta}{shelfcount}{Style.reset}|{Fore.orange_red_1}Facings={Fore.turquoise_4}{facings}{Style.reset}
1904
+ {Fore.green_yellow}LoadCount={Fore.dark_goldenrod}{loadcount}{Style.reset}|{Fore.light_red}PalletCount={Fore.orange_red_1}{palletcount}|{Fore.spring_green_3a}{fieldname}={Fore.light_sea_green}{ci}{Style.reset}
1905
+ {Fore.cyan}Name{Fore.light_steel_blue}={Name}{Style.reset}
1906
+ {Fore.dark_goldenrod}Barcode={Fore.light_green}{result.rebar()}|{Style.reset}{Fore.light_sea_green}ALT_Barcode={Fore.turquoise_4}{ABCD}{Style.reset}
1907
+ {Style.bold}{Fore.light_sea_green}Code={Fore.spring_green_3a}{Entry.cfmt(None,CD)}{Style.reset}'''
1908
+ ptext=f'''{hafnhaf_l}
1909
+ {Fore.light_red}Enter {Style.bold}{Style.underline}{Fore.orange_red_1}Quantity/Formula{Style.reset} amount|+amount|-amount|a,+a,-a(advanced)|r,+r,-r(ReParseFormula) (Enter==1)|{Fore.light_green}ipcv={Fore.dark_goldenrod}PalletCount-value[{Fore.light_steel_blue}:-){Fore.dark_goldenrod}]|{Fore.light_green}iscv={Fore.dark_goldenrod}ShelfCount-value[{Fore.light_steel_blue}:-(){Fore.dark_goldenrod}]|{Fore.light_green}ilcv={Fore.dark_goldenrod}LoadCount-value[{Fore.light_steel_blue};-){Fore.dark_goldenrod}]|{Fore.light_green}iccv={Fore.dark_goldenrod}CaseCount-value[{Fore.light_steel_blue}:-P{Fore.dark_goldenrod}]|{Fore.light_green}ipcvc{Fore.dark_goldenrod}=(PalletCount-value)/CaseCount[{Fore.light_steel_blue}:-D{Fore.dark_goldenrod}]|{Fore.light_green}iscvc{Fore.dark_goldenrod}=(ShelfCount-value)/CaseCount[{Fore.light_steel_blue}:-|{Fore.dark_goldenrod}]|{Fore.light_green}ilcvc{Fore.dark_goldenrod}=(LoadCount-value)/CaseCount[{Fore.light_steel_blue}:-*{Fore.dark_goldenrod}]|{Fore.light_green}iccvc{Fore.dark_goldenrod}=(CaseCount-value)/CaseCount[{Fore.light_steel_blue}:O{Fore.dark_goldenrod}]{Style.reset}'''
1910
+ else:
1911
+ casecount=0
1912
+ shelfcount=0
1913
+ facings=0
1914
+ loadcount=0
1915
+ palletcount=0
1916
+ Name=code
1917
+ BCD=code
1918
+ ABCD=''
1919
+ CD=code
1920
+ ci=0
1921
+ hafnhaf_l=f'''{Fore.grey_70}[{Fore.light_steel_blue}ListMode Entry Info{Fore.grey_70}]{Style.reset}
1922
+ {Fore.light_green}CaseCount={Fore.cyan}{casecount}{Style.reset}|{Fore.medium_violet_red}ShelfCount={Fore.light_magenta}{shelfcount}{Style.reset}|{Fore.orange_red_1}Facings={Fore.turquoise_4}{facings}{Style.reset}
1923
+ {Fore.green_yellow}LoadCount={Fore.dark_goldenrod}{loadcount}{Style.reset}|{Fore.light_red}PalletCount={Fore.orange_red_1}{palletcount}|{Fore.spring_green_3a}{fieldname}={Fore.light_sea_green}{ci}{Style.reset}
1924
+ {Fore.cyan}Name{Fore.light_steel_blue}={Name}{Style.reset}
1925
+ {Fore.dark_goldenrod}Barcode={Fore.light_green}{BCD}|{Style.reset}{Fore.light_sea_green}ALT_Barcode={Fore.turquoise_4}{ABCD}{Style.reset}
1926
+ {Style.bold}{Fore.orange_red_1}Code={Fore.spring_green_3a}{CD}{Style.reset}'''
1927
+ ptext=f'''{hafnhaf_l}
1928
+ {Fore.light_red}Enter {Style.bold}{Style.underline}{Fore.orange_red_1}Quantity/Formula{Style.reset} amount|+amount|-amount|a,+a,-a(advanced)|r,+r,-r(ReParseFormula) (Enter==1)|{Fore.light_green}ipcv={Fore.dark_goldenrod}PalletCount-value[{Fore.light_steel_blue}:-){Fore.dark_goldenrod}]|{Fore.light_green}iscv={Fore.dark_goldenrod}ShelfCount-value[{Fore.light_steel_blue}:-(){Fore.dark_goldenrod}]|{Fore.light_green}ilcv={Fore.dark_goldenrod}LoadCount-value[{Fore.light_steel_blue};-){Fore.dark_goldenrod}]|{Fore.light_green}iccv={Fore.dark_goldenrod}CaseCount-value[{Fore.light_steel_blue}:-P{Fore.dark_goldenrod}]|{Fore.light_green}ipcvc{Fore.dark_goldenrod}=(PalletCount-value)/CaseCount[{Fore.light_steel_blue}:-D{Fore.dark_goldenrod}]|{Fore.light_green}iscvc{Fore.dark_goldenrod}=(ShelfCount-value)/CaseCount[{Fore.light_steel_blue}:-|{Fore.dark_goldenrod}]|{Fore.light_green}ilcvc{Fore.dark_goldenrod}=(LoadCount-value)/CaseCount[{Fore.light_steel_blue}:-*{Fore.dark_goldenrod}]|{Fore.light_green}iccvc{Fore.dark_goldenrod}=(CaseCount-value)/CaseCount[{Fore.light_steel_blue}:O{Fore.dark_goldenrod}]{Style.reset}'''
1929
+ return ptext
1866
1930
  default_quantity_action=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Set The Default Quantity to the quantity retrieved + this value? 'd'=1",helpText="a positive(+) or Negative(-) integer.",data="float")
1867
1931
 
1868
1932
  if default_quantity_action in [None,]:
@@ -2382,11 +2446,11 @@ Location Fields:
2382
2446
 
2383
2447
 
2384
2448
  hafnhaf=f'''{Fore.grey_70}[{Fore.light_steel_blue}ListMode Entry Info{Fore.grey_70}]{Style.reset}
2385
- {Fore.light_green}CaseCount={Fore.cyan}{casecount}{Style.reset}|{Fore.medium_violet_red}ShelfCount={Fore.light_magenta}{shelfcount}{Style.reset}|{Fore.orange_red_1}Facings={Fore.turquoise_4}{facings}{Style.reset}
2386
- {Fore.green_yellow}LoadCount={Fore.dark_goldenrod}{loadcount}{Style.reset}|{Fore.light_red}PalletCount={Fore.orange_red_1}{palletcount}|{Fore.spring_green_3a}{fieldname}={Fore.light_sea_green}{ci}{Style.reset}
2387
- {Fore.cyan}Name{Fore.light_steel_blue}={Name}{Style.reset}
2388
- {Fore.dark_goldenrod}Barcode={Fore.light_green}{BCD}|{Style.reset}{Fore.light_sea_green}ALT_Barcode={Fore.turquoise_4}{ABCD}{Style.reset}
2389
- {Style.bold}{Fore.orange_red_1}Code={Fore.spring_green_3a}{CD}{Style.reset}'''
2449
+ {Fore.light_green}CaseCount={Fore.cyan}{casecount}{Style.reset}|{Fore.medium_violet_red}ShelfCount={Fore.light_magenta}{shelfcount}{Style.reset}|{Fore.orange_red_1}Facings={Fore.turquoise_4}{facings}{Style.reset}
2450
+ {Fore.green_yellow}LoadCount={Fore.dark_goldenrod}{loadcount}{Style.reset}|{Fore.light_red}PalletCount={Fore.orange_red_1}{palletcount}|{Fore.spring_green_3a}{fieldname}={Fore.light_sea_green}{ci}{Style.reset}
2451
+ {Fore.cyan}Name{Fore.light_steel_blue}={Name}{Style.reset}
2452
+ {Fore.dark_goldenrod}Barcode={Fore.light_green}{BCD}|{Style.reset}{Fore.light_sea_green}ALT_Barcode={Fore.turquoise_4}{ABCD}{Style.reset}
2453
+ {Style.bold}{Fore.orange_red_1}Code={Fore.spring_green_3a}{CD}{Style.reset}'''
2390
2454
  if isinstance(result,Entry):
2391
2455
  if result.Price is None:
2392
2456
  result.Price=0
@@ -2417,12 +2481,12 @@ Location Fields:
2417
2481
  else:
2418
2482
  total_price=round(round(result.Price+result.Tax,3)+round(result.CRV,3),3)
2419
2483
  hafnhaf=f'''{Fore.grey_70}[{Fore.light_steel_blue}ListMode Entry Info{Fore.grey_70}]
2420
- {Fore.orange_red_1}Cost({Fore.light_red}${Fore.light_green}{round(total_price,3)}({Fore.light_steel_blue}Price({round(result.Price,3)}),{Fore.light_sea_green}CRV({round(result.CRV,3)}),{Fore.spring_green_3a}Tax({round(result.Tax,3)}){Fore.light_green}){Style.reset}
2421
- {Style.reset}{Fore.light_green}CaseCount={Fore.cyan}{casecount}{Style.reset}|{Fore.medium_violet_red}ShelfCount={Fore.light_magenta}{shelfcount}{Style.reset}|{Fore.orange_red_1}Facings={Fore.turquoise_4}{facings}{Style.reset}
2422
- {Fore.green_yellow}LoadCount={Fore.dark_goldenrod}{loadcount}{Style.reset}|{Fore.light_red}PalletCount={Fore.orange_red_1}{palletcount}|{Fore.spring_green_3a}{fieldname}={Fore.light_sea_green}{ci}{Style.reset}
2423
- {Fore.cyan}Name{Fore.light_steel_blue}={Name}{Style.reset}
2424
- {Fore.dark_goldenrod}Barcode={Fore.light_green}{result.rebar()}|{Style.reset}{Fore.light_sea_green}ALT_Barcode={Fore.turquoise_4}{ABCD}{Style.reset}
2425
- {Style.bold}{Fore.light_sea_green}Code={Fore.spring_green_3a}{Entry.cfmt(None,CD)}{Style.reset}'''
2484
+ {Fore.orange_red_1}Cost({Fore.light_red}${Fore.light_green}{round(total_price,3)}({Fore.light_steel_blue}Price({round(result.Price,3)}),{Fore.light_sea_green}CRV({round(result.CRV,3)}),{Fore.spring_green_3a}Tax({round(result.Tax,3)}){Fore.light_green}){Style.reset}
2485
+ {Style.reset}{Fore.light_green}CaseCount={Fore.cyan}{casecount}{Style.reset}|{Fore.medium_violet_red}ShelfCount={Fore.light_magenta}{shelfcount}{Style.reset}|{Fore.orange_red_1}Facings={Fore.turquoise_4}{facings}{Style.reset}
2486
+ {Fore.green_yellow}LoadCount={Fore.dark_goldenrod}{loadcount}{Style.reset}|{Fore.light_red}PalletCount={Fore.orange_red_1}{palletcount}|{Fore.spring_green_3a}{fieldname}={Fore.light_sea_green}{ci}{Style.reset}
2487
+ {Fore.cyan}Name{Fore.light_steel_blue}={Name}{Style.reset}
2488
+ {Fore.dark_goldenrod}Barcode={Fore.light_green}{result.rebar()}|{Style.reset}{Fore.light_sea_green}ALT_Barcode={Fore.turquoise_4}{ABCD}{Style.reset}
2489
+ {Style.bold}{Fore.light_sea_green}Code={Fore.spring_green_3a}{Entry.cfmt(None,CD)}{Style.reset}'''
2426
2490
 
2427
2491
  print(hafnhaf)
2428
2492
  results=session.query(Entry).filter(or_(Entry.Barcode==code,Entry.Barcode.icontains(code),Entry.Code.icontains(code),Entry.Code==code,Entry.ALT_Barcode==code)).all()
@@ -2525,70 +2589,7 @@ Location Fields:
2525
2589
 
2526
2590
  ptext=f'''{hafnhaf}
2527
2591
  {Fore.light_red}Enter {Style.bold}{Style.underline}{Fore.orange_red_1}Quantity/Formula{Style.reset} amount|+amount|-amount|a,+a,-a(advanced)|r,+r,-r(ReParseFormula) (Enter==1)|{Fore.light_green}ipcv={Fore.dark_goldenrod}PalletCount-value[{Fore.light_steel_blue}:-){Fore.dark_goldenrod}]|{Fore.light_green}iscv={Fore.dark_goldenrod}ShelfCount-value[{Fore.light_steel_blue}:-(){Fore.dark_goldenrod}]|{Fore.light_green}ilcv={Fore.dark_goldenrod}LoadCount-value[{Fore.light_steel_blue};-){Fore.dark_goldenrod}]|{Fore.light_green}iccv={Fore.dark_goldenrod}CaseCount-value[{Fore.light_steel_blue}:-P{Fore.dark_goldenrod}]|{Fore.light_green}ipcvc{Fore.dark_goldenrod}=(PalletCount-value)/CaseCount[{Fore.light_steel_blue}:-D{Fore.dark_goldenrod}]|{Fore.light_green}iscvc{Fore.dark_goldenrod}=(ShelfCount-value)/CaseCount[{Fore.light_steel_blue}:-|{Fore.dark_goldenrod}]|{Fore.light_green}ilcvc{Fore.dark_goldenrod}=(LoadCount-value)/CaseCount[{Fore.light_steel_blue}:-*{Fore.dark_goldenrod}]|{Fore.light_green}iccvc{Fore.dark_goldenrod}=(CaseCount-value)/CaseCount[{Fore.light_steel_blue}:O{Fore.dark_goldenrod}]{Style.reset}'''
2528
- def hnf(resultx,fieldname,code):
2529
- if isinstance(resultx,Entry):
2530
- with Session(ENGINE) as session:
2531
- result=session.query(Entry).filter(Entry.EntryId==resultx.EntryId).first()
2532
-
2533
- if result.Price is None:
2534
- result.Price=0
2535
- if result.Tax is None:
2536
- result.Tax=0
2537
- if result.CRV is None:
2538
- result.CRV=0
2539
- for k in ['PalletCount','ShelfCount','LoadCount','CaseCount','Facings']:
2540
- if getattr(result,k) < 1 or getattr(result,k) == None:
2541
- setattr(result,k,1)
2542
- session.commit()
2543
- session.flush()
2544
- session.refresh(result)
2545
- palletcount=result.PalletCount
2546
- facings=result.Facings
2547
- shelfcount=result.ShelfCount
2548
- loadcount=result.LoadCount
2549
- casecount=result.CaseCount
2550
- Name=result.Name
2551
- BCD=result.Barcode
2552
- CD=result.Code
2553
- ABCD=result.ALT_Barcode
2554
- ci=getattr(result,fieldname)
2555
- code=result.Barcode
2556
- mkTextStore=deepcopy(result)
2557
- total_price=0
2558
- if result.Tax == 0:
2559
- total_price=round(result.Price+result.CRV,3)
2560
- else:
2561
- total_price=round(round(result.Price+result.Tax,3)+round(result.CRV,3),3)
2562
-
2563
- hafnhaf_l=f'''{Fore.grey_70}[{Fore.light_steel_blue}ListMode Entry Info{Fore.grey_70}]{Style.reset}
2564
- {Fore.orange_red_1}Cost({Fore.light_red}${Fore.light_green}{round(total_price,3)}({Fore.light_steel_blue}Price({round(result.Price,3)}),{Fore.light_sea_green}CRV({round(result.CRV,3)}),{Fore.spring_green_3a}Tax({round(result.Tax,3)}){Fore.light_green}){Style.reset}
2565
- {Fore.light_green}CaseCount={Fore.cyan}{casecount}{Style.reset}|{Fore.medium_violet_red}ShelfCount={Fore.light_magenta}{shelfcount}{Style.reset}|{Fore.orange_red_1}Facings={Fore.turquoise_4}{facings}{Style.reset}
2566
- {Fore.green_yellow}LoadCount={Fore.dark_goldenrod}{loadcount}{Style.reset}|{Fore.light_red}PalletCount={Fore.orange_red_1}{palletcount}|{Fore.spring_green_3a}{fieldname}={Fore.light_sea_green}{ci}{Style.reset}
2567
- {Fore.cyan}Name{Fore.light_steel_blue}={Name}{Style.reset}
2568
- {Fore.dark_goldenrod}Barcode={Fore.light_green}{result.rebar()}|{Style.reset}{Fore.light_sea_green}ALT_Barcode={Fore.turquoise_4}{ABCD}{Style.reset}
2569
- {Style.bold}{Fore.light_sea_green}Code={Fore.spring_green_3a}{Entry.cfmt(None,CD)}{Style.reset}'''
2570
- ptext=f'''{hafnhaf_l}
2571
- {Fore.light_red}Enter {Style.bold}{Style.underline}{Fore.orange_red_1}Quantity/Formula{Style.reset} amount|+amount|-amount|a,+a,-a(advanced)|r,+r,-r(ReParseFormula) (Enter==1)|{Fore.light_green}ipcv={Fore.dark_goldenrod}PalletCount-value[{Fore.light_steel_blue}:-){Fore.dark_goldenrod}]|{Fore.light_green}iscv={Fore.dark_goldenrod}ShelfCount-value[{Fore.light_steel_blue}:-(){Fore.dark_goldenrod}]|{Fore.light_green}ilcv={Fore.dark_goldenrod}LoadCount-value[{Fore.light_steel_blue};-){Fore.dark_goldenrod}]|{Fore.light_green}iccv={Fore.dark_goldenrod}CaseCount-value[{Fore.light_steel_blue}:-P{Fore.dark_goldenrod}]|{Fore.light_green}ipcvc{Fore.dark_goldenrod}=(PalletCount-value)/CaseCount[{Fore.light_steel_blue}:-D{Fore.dark_goldenrod}]|{Fore.light_green}iscvc{Fore.dark_goldenrod}=(ShelfCount-value)/CaseCount[{Fore.light_steel_blue}:-|{Fore.dark_goldenrod}]|{Fore.light_green}ilcvc{Fore.dark_goldenrod}=(LoadCount-value)/CaseCount[{Fore.light_steel_blue}:-*{Fore.dark_goldenrod}]|{Fore.light_green}iccvc{Fore.dark_goldenrod}=(CaseCount-value)/CaseCount[{Fore.light_steel_blue}:O{Fore.dark_goldenrod}]{Style.reset}'''
2572
- else:
2573
- casecount=0
2574
- shelfcount=0
2575
- facings=0
2576
- loadcount=0
2577
- palletcount=0
2578
- Name=code
2579
- BCD=code
2580
- ABCD=''
2581
- CD=code
2582
- ci=0
2583
- hafnhaf_l=f'''{Fore.grey_70}[{Fore.light_steel_blue}ListMode Entry Info{Fore.grey_70}]{Style.reset}
2584
- {Fore.light_green}CaseCount={Fore.cyan}{casecount}{Style.reset}|{Fore.medium_violet_red}ShelfCount={Fore.light_magenta}{shelfcount}{Style.reset}|{Fore.orange_red_1}Facings={Fore.turquoise_4}{facings}{Style.reset}
2585
- {Fore.green_yellow}LoadCount={Fore.dark_goldenrod}{loadcount}{Style.reset}|{Fore.light_red}PalletCount={Fore.orange_red_1}{palletcount}|{Fore.spring_green_3a}{fieldname}={Fore.light_sea_green}{ci}{Style.reset}
2586
- {Fore.cyan}Name{Fore.light_steel_blue}={Name}{Style.reset}
2587
- {Fore.dark_goldenrod}Barcode={Fore.light_green}{BCD}|{Style.reset}{Fore.light_sea_green}ALT_Barcode={Fore.turquoise_4}{ABCD}{Style.reset}
2588
- {Style.bold}{Fore.orange_red_1}Code={Fore.spring_green_3a}{CD}{Style.reset}'''
2589
- ptext=f'''{hafnhaf_l}
2590
- {Fore.light_red}Enter {Style.bold}{Style.underline}{Fore.orange_red_1}Quantity/Formula{Style.reset} amount|+amount|-amount|a,+a,-a(advanced)|r,+r,-r(ReParseFormula) (Enter==1)|{Fore.light_green}ipcv={Fore.dark_goldenrod}PalletCount-value[{Fore.light_steel_blue}:-){Fore.dark_goldenrod}]|{Fore.light_green}iscv={Fore.dark_goldenrod}ShelfCount-value[{Fore.light_steel_blue}:-(){Fore.dark_goldenrod}]|{Fore.light_green}ilcv={Fore.dark_goldenrod}LoadCount-value[{Fore.light_steel_blue};-){Fore.dark_goldenrod}]|{Fore.light_green}iccv={Fore.dark_goldenrod}CaseCount-value[{Fore.light_steel_blue}:-P{Fore.dark_goldenrod}]|{Fore.light_green}ipcvc{Fore.dark_goldenrod}=(PalletCount-value)/CaseCount[{Fore.light_steel_blue}:-D{Fore.dark_goldenrod}]|{Fore.light_green}iscvc{Fore.dark_goldenrod}=(ShelfCount-value)/CaseCount[{Fore.light_steel_blue}:-|{Fore.dark_goldenrod}]|{Fore.light_green}ilcvc{Fore.dark_goldenrod}=(LoadCount-value)/CaseCount[{Fore.light_steel_blue}:-*{Fore.dark_goldenrod}]|{Fore.light_green}iccvc{Fore.dark_goldenrod}=(CaseCount-value)/CaseCount[{Fore.light_steel_blue}:O{Fore.dark_goldenrod}]{Style.reset}'''
2591
- return ptext
2592
+
2592
2593
  p=Prompt.__init2__(None,func=mkT,ptext=f"{ptext}",helpText=self.helpText_barcodes.replace('#CODE#',code_log),data=code,qc=lambda self=self,code=code:self.NewEntryMenu(code=code),replace_ptext=lambda result=result,fieldname=fieldname,code=code:hnf(resultx=result,fieldname=fieldname,code=code))
2593
2594
  if self.next_barcode():
2594
2595
  continue
radboy/__init__.py CHANGED
@@ -1 +1 @@
1
- VERSION='0.0.350'
1
+ VERSION='0.0.352'
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: radboy
3
- Version: 0.0.350
3
+ Version: 0.0.352
4
4
  Summary: A small example package
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=XXy-o5Z_yOgrgHNju4iqM3h7xhRBkNIoHG1qePtBnGY,41316
7
7
  radboy/Run.py,sha256=JUoCTHnzQBv7n8PB2_i93ANdAC_iW__RkAge8esCnk4,76
8
- radboy/__init__.py,sha256=UxllezpVER4W3-s0B20FU2NVv90oU07BTQec1k5hR5k,17
8
+ radboy/__init__.py,sha256=_oBxnLh0Z3XVfFIPnmK_QBIMvDPa_I9ciceP1jg_iVM,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
@@ -90,7 +90,7 @@ radboy/DB/SMLabelImporter.py,sha256=eUoBDxVUUEKGL2g_PwkASM67ZB7FmXtSnn4bCagskhY,
90
90
  radboy/DB/__init__.py,sha256=JiigA9B7GalP7YuRdcwyGDu5PDSBahoi0lLjtScxlN8,49
91
91
  radboy/DB/blankDataFile.py,sha256=YX_05Usi71UpDkZN9UTMYwUipbTndTAtEgqzBEga0kE,9285
92
92
  radboy/DB/config.py,sha256=bvu43dUl1_yO3Zq3gsLuenGUgJSiS3S9Cs6ppFEvZbg,239
93
- radboy/DB/db.py,sha256=bTY303S1dqV5cv2JAlddtaVDMmjT5CTJTQi9KjVcUsk,228153
93
+ radboy/DB/db.py,sha256=FuCvGyUuqaWZeh2UAIQqgGXxO8cq1D1E5lBmxYmyKOI,228386
94
94
  radboy/DB/glossary_db.py,sha256=1_qxeEpjjEtpWB_eDjsgJisimLv7OBm75MuqM-Lt6zg,28218
95
95
  radboy/DB/masterLookup.py,sha256=DBaM2uscG3_X5dek49wjdnOzhrjWhKgvOEz_umdz0mY,4566
96
96
  radboy/DB/msg.txt,sha256=YxWed6A6tuP1djJ5QPS2Rz3ING4TKKf8kUiCCPtzHXE,7937
@@ -107,7 +107,7 @@ radboy/DB/__pycache__/FormBuilder.cpython-312.pyc,sha256=p1o-5SMRL8OXP_XQ5liUpf-
107
107
  radboy/DB/__pycache__/PrintLogging.cpython-312.pyc,sha256=pIAFqTi6OiQQORSc-oMH1zAbsdH7sY1TifxrN_QOvnU,148
108
108
  radboy/DB/__pycache__/Prompt.cpython-311.pyc,sha256=P2uPRpeqfLFtxieZ0JHBG3X_HZzWUCsFSLb_fpRqky0,6407
109
109
  radboy/DB/__pycache__/Prompt.cpython-312.pyc,sha256=6CcQ1gE2hcz3cKPjo4f6d7xNM2PTDnl8NzQG0Pme5BE,142886
110
- radboy/DB/__pycache__/Prompt.cpython-313.pyc,sha256=R90E6aGMoCmgfeEQkcUIOGhKJGseXxbtsdAR8BFkDU0,265793
110
+ radboy/DB/__pycache__/Prompt.cpython-313.pyc,sha256=0EaNIUpsufPXdLezWNCqsdbixkFe3HZT2ZJAm04l7Mc,265793
111
111
  radboy/DB/__pycache__/RandomStringUtil.cpython-312.pyc,sha256=TrbEY89MuLmNlvoo5d8vOE6Dyshh5_EMlTZvk8MDVN4,48597
112
112
  radboy/DB/__pycache__/RandomStringUtil.cpython-313.pyc,sha256=MCcgVwV2Y-9rAY2FVaJZCKcou3HDX70EZudoiCigT0o,49217
113
113
  radboy/DB/__pycache__/ResetTools.cpython-311.pyc,sha256=4Vyc57iAAF0yRPjjglnVKovnTn8OoFIi6Zok3Wpj_YM,9292
@@ -125,7 +125,7 @@ radboy/DB/__pycache__/config.cpython-312.pyc,sha256=Qo7E6MHrF6yqvKgepNFyCoekZXiv
125
125
  radboy/DB/__pycache__/config.cpython-313.pyc,sha256=_8wCIg_3jhyJjxnExD2Sm6aY-uZTw036p7Ki5znL7dc,376
126
126
  radboy/DB/__pycache__/db.cpython-311.pyc,sha256=rNgigyBd0D-cg1JxKAS8t0B_k0IEJivgVlRaZE10Xis,210105
127
127
  radboy/DB/__pycache__/db.cpython-312.pyc,sha256=ANDJPC0RoavbmSKFxG15vC7B4rEGyVt7xRJt7XGY3OA,334609
128
- radboy/DB/__pycache__/db.cpython-313.pyc,sha256=phmHMqSUXsdVI60Lu8o4MTHP0ERzY1xU3RUIoTxZIL8,359887
128
+ radboy/DB/__pycache__/db.cpython-313.pyc,sha256=Y8TFajotRXIsYOWn-G6FN9Az3kOlZ60P9rFmGBEjvTM,360066
129
129
  radboy/DB/__pycache__/glossary_db.cpython-312.pyc,sha256=8UL-29cKqtKovx0BANm6kzKKteef1BW_2qF3wumzst4,36023
130
130
  radboy/DB/__pycache__/glossary_db.cpython-313.pyc,sha256=Ke9bkvllGv5CK0JdT9DRvQ3MOdrXxoYv7TVLNkqLux0,36582
131
131
  radboy/DB/__pycache__/masterLookup.cpython-312.pyc,sha256=bQiOkmMwwHgcO18tYSWGQ-YUff4GQlKVhBMp1GoWAqY,6324
@@ -144,10 +144,10 @@ radboy/DayLog/__pycache__/DayLogger.cpython-313.pyc,sha256=UC2v9eX_1UZNgIA9baQzr
144
144
  radboy/DayLog/__pycache__/__init__.cpython-311.pyc,sha256=Z5Y4DdVF77LZf6-Of92MDGFdi-IXik1ASQd4AdLNNfQ,231
145
145
  radboy/DayLog/__pycache__/__init__.cpython-312.pyc,sha256=lP_GHzSPt5JTrT1jLWiRMFGPmSdJYBn4eRV__OxgJ6s,269
146
146
  radboy/DayLog/__pycache__/__init__.cpython-313.pyc,sha256=UQw5v4r7yismC9qcqP0dEme6h-lawbOA5pXYpkqUwFk,148
147
- radboy/EntryExtras/Extras.py,sha256=oft3lI6REDQjw_SWzEClSl7hw8seOjGC5MvASZ29AGY,41228
147
+ radboy/EntryExtras/Extras.py,sha256=4z1hp3CZpia-4Y6cbmv1iyzUHUyv3MnVqlZWGmNNKVw,66933
148
148
  radboy/EntryExtras/__init__.py,sha256=K76Ku7o2DwTZU-Ya2mifH856KAcxb8MXdSaQMQLhu84,902
149
149
  radboy/EntryExtras/__pycache__/Extras.cpython-312.pyc,sha256=eHkeyKblMtG37lDhl38OEGQbvvKxXMriKK49kj2mg8o,34768
150
- radboy/EntryExtras/__pycache__/Extras.cpython-313.pyc,sha256=cYtyQMRPXymNtxQC2Pcv1L5RbyBeAcp37pi4AHiDVrs,51806
150
+ radboy/EntryExtras/__pycache__/Extras.cpython-313.pyc,sha256=V7jYgyWJwgUr7FIDKnmlX7WFXNtig19rJKjnm_dLUJw,86179
151
151
  radboy/EntryExtras/__pycache__/__init__.cpython-312.pyc,sha256=0bBwhp_9PYvL-Nm_J0gsYf9yfKAFJMiMdpc6XzZrPzU,829
152
152
  radboy/EntryExtras/__pycache__/__init__.cpython-313.pyc,sha256=PqXXfBeREZI2pZc22BayKH7daLXbO7p3NozaXpnA3cQ,829
153
153
  radboy/EntryExtras/__pycache__/db.cpython-312.pyc,sha256=Qcqix5yi9h7fbsmGhJOWYdLHbHMTWixwolRRQYg8ISk,1781
@@ -330,7 +330,7 @@ radboy/SystemSettings/__pycache__/__init__.cpython-312.pyc,sha256=aIzp4Po0t8EhSA
330
330
  radboy/SystemSettings/__pycache__/__init__.cpython-313.pyc,sha256=QFDuoidxMWsGVLsy5lN-rDs6TP8nKJ4yyCyiamNOhwo,156
331
331
  radboy/TasksMode/ReFormula.py,sha256=REDRJYub-OEOE6g14oRQOLOQwv8pHqVJy4NQk3CCM90,2255
332
332
  radboy/TasksMode/SetEntryNEU.py,sha256=3nUNDUNyxq4zeMtmUQ7aS1o23P7KhDIMdUPNqPnYbRk,17343
333
- radboy/TasksMode/Tasks.py,sha256=jlBUFX5igwjLPtcEdnLs1kPRDid17SUsIv3FIMtMR84,300792
333
+ radboy/TasksMode/Tasks.py,sha256=DNPPnCth3tmV8dsvAdJrAp2187DRT1gMjxs78HWyhHg,300766
334
334
  radboy/TasksMode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
335
335
  radboy/TasksMode/__pycache__/ReFormula.cpython-311.pyc,sha256=QEG3PwVw-8HTd_Mf9XbVcxU56F1fC9yBqWXYPLC39DU,4865
336
336
  radboy/TasksMode/__pycache__/ReFormula.cpython-312.pyc,sha256=aX7BWm2PPjCTnxsbGUitR-2h9hq4AjaBiHMrUXvIl0Y,3967
@@ -339,7 +339,7 @@ radboy/TasksMode/__pycache__/SetEntryNEU.cpython-312.pyc,sha256=pCdFj61aPKkHL6Sv
339
339
  radboy/TasksMode/__pycache__/SetEntryNEU.cpython-313.pyc,sha256=leIelDzPrZE_YgKs0B99osmhyENYtYgi3ErgS2XqSPs,20088
340
340
  radboy/TasksMode/__pycache__/Tasks.cpython-311.pyc,sha256=6QOTJnLiXSKdF81hkhy3vyrz49PPhS20s5_0X52g3Hw,131120
341
341
  radboy/TasksMode/__pycache__/Tasks.cpython-312.pyc,sha256=hyJwdaYaaRLdcrNxgg36diJ5iijX5_3I0UAORsj-6LU,310295
342
- radboy/TasksMode/__pycache__/Tasks.cpython-313.pyc,sha256=ZRYY6kvK-g6Xm3xnaeZzFWNmkhBqHLVtK1OCwk98LvE,366224
342
+ radboy/TasksMode/__pycache__/Tasks.cpython-313.pyc,sha256=e2FO5tj68YvLyDMr7RHHzwBHOfHcq0Sm945tHHk1HcE,366197
343
343
  radboy/TasksMode/__pycache__/__init__.cpython-311.pyc,sha256=PKV1JbihEacm639b53bZozRQvcllSkjGP3q8STVMxF4,234
344
344
  radboy/TasksMode/__pycache__/__init__.cpython-312.pyc,sha256=ERgnEvRMiGSecWp1BpNzLdSq_SdKw7GvFWUvUM7bLVw,272
345
345
  radboy/TasksMode/__pycache__/__init__.cpython-313.pyc,sha256=lvsTxukyvGKB3C0rdF9dQi_bvVh6ceDVINfwcuIsd0s,151
@@ -386,7 +386,7 @@ radboy/__pycache__/Run.cpython-311.pyc,sha256=G_UEfMtkLRjR6ZpGA_BJzGenuaCcP469Y9
386
386
  radboy/__pycache__/Run.cpython-312.pyc,sha256=v4xolc3mHyla991XhpYBUbBHYT0bnJ1gE-lkFoQ4GFA,241
387
387
  radboy/__pycache__/__init__.cpython-311.pyc,sha256=R-DVbUioMOW-Fnaq7FpT5F1a5p0q3b_RW-HpLRArCAY,242
388
388
  radboy/__pycache__/__init__.cpython-312.pyc,sha256=FsFzLXOlTK8_7ixoPZzakkR8Wibt-DvXLFh-oG2QlPw,164
389
- radboy/__pycache__/__init__.cpython-313.pyc,sha256=RsRz4HFvfl4CaMi-UOQH9DOkgezZ-Ma6Eum40DDWHCg,165
389
+ radboy/__pycache__/__init__.cpython-313.pyc,sha256=L4tNvdvdn9QV04q8ekxMKvnkDbqMlIyIDTnkQc8CR8s,165
390
390
  radboy/__pycache__/__init__.cpython-39.pyc,sha256=D48T6x6FUeKPfubo0sdS_ZUut3FmBvPMP7qT6rYBZzU,275
391
391
  radboy/__pycache__/possibleCode.cpython-311.pyc,sha256=zFiHyzqD8gUnIWu4vtyMYIBposiRQqaRXfcT_fOl4rU,20882
392
392
  radboy/__pycache__/possibleCode.cpython-312.pyc,sha256=tk_CO-AcsO3YZj5j6vEsw3g37UmEzWc5YgeWEoJEUg4,27922
@@ -411,7 +411,7 @@ radboy/tkGui/Images/__pycache__/__init__.cpython-311.pyc,sha256=tXBYpqbOlZ24B1BI
411
411
  radboy/tkGui/__pycache__/BeginnersLuck.cpython-311.pyc,sha256=xLQOnV1wuqHGaub16mPX0dDMGU9ryCeLtNz5e517_GE,3004
412
412
  radboy/tkGui/__pycache__/Review.cpython-311.pyc,sha256=wKq24iM6Xe2OampgZ7-8U6Nvmgs2y-qWOrGwtWhc75k,4047
413
413
  radboy/tkGui/__pycache__/__init__.cpython-311.pyc,sha256=BX7DBn5qbvKTvlrKOP5gzTBPBTeTgSMjBW6EMl7N8e0,230
414
- radboy-0.0.350.dist-info/METADATA,sha256=8d6EwM0LMy5E_hyjdgzhZ2hsxvrf53U8O6NQCNQpk3o,794
415
- radboy-0.0.350.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
416
- radboy-0.0.350.dist-info/top_level.txt,sha256=mlM0RWMUxGo1YHnlLmYrHOgGdK4XNRpr7nMFD5lR56c,7
417
- radboy-0.0.350.dist-info/RECORD,,
414
+ radboy-0.0.352.dist-info/METADATA,sha256=dM7TGRzF6CHGv1QPhkmxEH8rWYCK7nS5Uf_OONuM0rA,794
415
+ radboy-0.0.352.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
416
+ radboy-0.0.352.dist-info/top_level.txt,sha256=mlM0RWMUxGo1YHnlLmYrHOgGdK4XNRpr7nMFD5lR56c,7
417
+ radboy-0.0.352.dist-info/RECORD,,