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.
- radboy/DB/__pycache__/Prompt.cpython-313.pyc +0 -0
- radboy/DB/__pycache__/db.cpython-313.pyc +0 -0
- radboy/DB/db.py +5 -2
- radboy/EntryExtras/Extras.py +619 -130
- radboy/EntryExtras/__pycache__/Extras.cpython-313.pyc +0 -0
- radboy/TasksMode/Tasks.py +77 -76
- radboy/TasksMode/__pycache__/Tasks.cpython-313.pyc +0 -0
- radboy/__init__.py +1 -1
- radboy/__pycache__/__init__.cpython-313.pyc +0 -0
- {radboy-0.0.350.dist-info → radboy-0.0.352.dist-info}/METADATA +1 -1
- {radboy-0.0.350.dist-info → radboy-0.0.352.dist-info}/RECORD +13 -13
- {radboy-0.0.350.dist-info → radboy-0.0.352.dist-info}/WHEEL +0 -0
- {radboy-0.0.350.dist-info → radboy-0.0.352.dist-info}/top_level.txt +0 -0
|
Binary file
|
|
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
|
-
|
|
740
|
-
|
|
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])
|
radboy/EntryExtras/Extras.py
CHANGED
|
@@ -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
|
-
|
|
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
|
|
308
|
-
|
|
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=
|
|
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
|
|
372
|
-
|
|
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=
|
|
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
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
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
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
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
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
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
|
-
|
|
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
|
-
|
|
514
|
-
|
|
515
|
-
|
|
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
|
-
|
|
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
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
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
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
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
|
-
|
|
580
|
-
|
|
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
|
|
585
|
-
|
|
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=
|
|
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
|
-
|
|
757
|
-
|
|
758
|
-
|
|
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
|
-
|
|
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
|
-
|
|
866
|
-
|
|
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")
|
|
Binary file
|
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
|
-
|
|
2386
|
-
|
|
2387
|
-
|
|
2388
|
-
|
|
2389
|
-
|
|
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
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
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
|
-
|
|
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
|
|
Binary file
|
radboy/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
VERSION='0.0.
|
|
1
|
+
VERSION='0.0.352'
|
|
Binary file
|
|
@@ -5,7 +5,7 @@ radboy/Holidays.txt,sha256=y-JZPihh5iaWKxMIHNXD39yVuVmf1vMs4FdNDcg0f1Y,3114
|
|
|
5
5
|
radboy/InventoryGlossary.txt,sha256=018-Yqca6DFb10jPdkUY-5qhkRlQN1k3rxoTaERQ-LA,91008
|
|
6
6
|
radboy/RecordMyCodes.py,sha256=XXy-o5Z_yOgrgHNju4iqM3h7xhRBkNIoHG1qePtBnGY,41316
|
|
7
7
|
radboy/Run.py,sha256=JUoCTHnzQBv7n8PB2_i93ANdAC_iW__RkAge8esCnk4,76
|
|
8
|
-
radboy/__init__.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
415
|
-
radboy-0.0.
|
|
416
|
-
radboy-0.0.
|
|
417
|
-
radboy-0.0.
|
|
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,,
|
|
File without changes
|
|
File without changes
|