radboy 0.0.454__py3-none-any.whl → 0.0.455__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/Prompt.py CHANGED
@@ -31,6 +31,7 @@ import biip
31
31
  import radboy.Orders.MilkWaterOrder as MWR
32
32
  import itertools
33
33
  from inputimeout import inputimeout, TimeoutOccurred
34
+ from uuid import uuid1
34
35
 
35
36
  def timedout(ptext):
36
37
  try:
@@ -2049,6 +2050,7 @@ CMD's are not final until ended with {Fore.magenta}{hw_delim}{Style.reset}""")
2049
2050
  {Fore.grey_70}**{Fore.light_green}exp{Fore.light_steel_blue} - product expiration menu{Style.reset}
2050
2051
  {Fore.grey_70}**{Fore.light_green}comm{Fore.light_steel_blue} - send an email message with gmail{Style.reset}
2051
2052
  {Fore.grey_70}**{Fore.light_sea_green}'crbc',"checked random barcode"{Fore.light_yellow}- generate a random, but non-local-system existant barcode for input{Style.reset}
2053
+ {Fore.grey_70}**{Fore.light_sea_green}'cruid',"checked uid"{Fore.light_yellow}- generate a uid, but non-local-system existant uid for input{Style.reset}
2052
2054
  {Fore.grey_70}**{Fore.light_sea_green}'bcd-gen','bcd-img'{Fore.light_yellow}- generate a custom barcode img from input data possible output is selected from {barcode.PROVIDED_BARCODES}{Style.reset}
2053
2055
  {Fore.grey_70}**{Fore.light_sea_green}'qr-gen','qr-img'{Fore.light_yellow}- generate a custom barcode img from input data possible output is selected{Style.reset}
2054
2056
  {Fore.grey_70}**{Fore.light_red}u{Fore.light_steel_blue} is for {Fore.light_red}Universally{Fore.light_steel_blue} accessible where this menu is{Style.reset}
@@ -2312,6 +2314,18 @@ which will result in a cmd of 'ls Shelf'{Style.reset}
2312
2314
  return func(str(UPCAcode),data)
2313
2315
  except Exception as e:
2314
2316
  print(e)
2317
+ elif cmd.lower() in ['cruid',"checked uid"]:
2318
+ with db.Session(db.ENGINE) as session:
2319
+ while True:
2320
+ try:
2321
+ uid=str(uuid1())
2322
+ check=session.query(db.Entry).filter(or_(db.Entry.Barcode==str(uid),db.Entry.Barcode.icontains(str(uid)))).first()
2323
+ if check != None:
2324
+ continue
2325
+ print(uid)
2326
+ return func(str(uid),data)
2327
+ except Exception as e:
2328
+ print(e)
2315
2329
  elif cmd.lower() in ['h+','help+']:
2316
2330
  print(f'''{Fore.grey_50}If a Number in a formula is like '1*12345678*1', use '1*12345678.0*1' to get around regex for '*' values; {Fore.grey_70}{Style.bold}If An Issue Arises!{Style.reset}
2317
2331
  {Fore.grey_50}This is due to the {Fore.light_green}Start/{Fore.light_red}Stop{Fore.grey_50} Characters for Code39 ({Fore.grey_70}*{Fore.grey_50}) being filtered with {Fore.light_yellow}Regex
Binary file
radboy/DB/db.py CHANGED
@@ -5266,4 +5266,71 @@ try:
5266
5266
  CookBook.metadata.create_all(ENGINE)
5267
5267
  except Exception as e:
5268
5268
  CookBook.__table__.drop(ENGINE)
5269
- CookBook.metadata.create_all(ENGINE)
5269
+ CookBook.metadata.create_all(ENGINE)
5270
+
5271
+ class PhoneBook(BASE,Template):
5272
+ __tablename__='PhoneBook'
5273
+ pbid=Column(Integer,primary_key=True)
5274
+
5275
+ #to bind ingredients together as one
5276
+ phone_uid=Column(String,default=None)
5277
+ phone_name=Column(String,default=None)
5278
+
5279
+ non_personnel_name=Column(String,default=None)
5280
+
5281
+ phone_number_1=Column(String,default=None)
5282
+ phone_number_2=Column(String,default=None)
5283
+ phone_number_3=Column(String,default=None)
5284
+
5285
+ email_1=Column(String,default=None)
5286
+ email_2=Column(String,default=None)
5287
+ email_3=Column(String,default=None)
5288
+
5289
+ fax_1=Column(String,default=None)
5290
+ fax_2=Column(String,default=None)
5291
+ fax_3=Column(String,default=None)
5292
+
5293
+ other_1=Column(String,default=None)
5294
+ other_2=Column(String,default=None)
5295
+ other_3=Column(String,default=None)
5296
+
5297
+ firstName=Column(String,default=None)
5298
+ lastName=Column(String,default=None)
5299
+ middleName=Column(String,default=None)
5300
+
5301
+ occupation=Column(String,default=None)
5302
+ title=Column(String,default=None)
5303
+
5304
+ street_address=Column(String,default=None)
5305
+ street_address_2=Column(String,default=None)
5306
+ suite=Column(String,default=None)
5307
+ city=Column(String,default=None)
5308
+ county=Column(String,default=None)
5309
+ state=Column(String,default=None)
5310
+ zipcode=Column(String,default=None)
5311
+ country=Column(String,default=None)
5312
+
5313
+
5314
+ DTOE=Column(DateTime,default=datetime.now())
5315
+ Comment=Column(String,default='N/A')
5316
+
5317
+ LongNote=Column(Text,default='')
5318
+
5319
+ def as_json(self):
5320
+ excludes=['cbid','DTOE']
5321
+ dd={str(d.name):self.__dict__[d.name] for d in self.__table__.columns if d.name not in excludes}
5322
+ return json.dumps(dd)
5323
+
5324
+ def asID(self):
5325
+ return f"{self.__class__.__name__}(cbid={self.cbid})"
5326
+
5327
+ def __init__(self,**kwargs):
5328
+ for k in kwargs.keys():
5329
+ if k in [s.name for s in self.__table__.columns]:
5330
+ setattr(self,k,kwargs.get(k))
5331
+
5332
+ try:
5333
+ PhoneBook.metadata.create_all(ENGINE)
5334
+ except Exception as e:
5335
+ PhoneBook.__table__.drop(ENGINE)
5336
+ PhoneBook.metadata.create_all(ENGINE)
@@ -0,0 +1,375 @@
1
+ from . import *
2
+
3
+
4
+ class PhoneBookUi:
5
+
6
+ def create_new_rcp(self):
7
+ with Session(ENGINE) as session:
8
+ uid=uuid1()
9
+ uid=str(uid)
10
+ phonebook=PhoneBook()
11
+ session.add(phonebook)
12
+ session.commit()
13
+ excludes=['pbid','DTOE']
14
+ instructions={i.name:{'default':getattr(phonebook,i.name),'type':str(i.type).lower()} for i in PhoneBook.__table__.columns if i.name not in excludes}
15
+ fdi=FormBuilder(data=instructions)
16
+ if fdi is None:
17
+ print("User Quit Early, so all work has been deleted!")
18
+ r=session.delete(phonebook)
19
+ session.commit()
20
+ else:
21
+ session.query(PhoneBook).filter(PhoneBook.pbid==phonebook.pbid).update(fdi)
22
+ session.commit()
23
+
24
+ results=session.query(PhoneBook).filter(PhoneBook.pbid==phonebook.pbid)
25
+ results=orderQuery(results,PhoneBook.DTOE,inverse=True)
26
+ results=results.all()
27
+ ctt=len(results)
28
+ for num,i in enumerate(results):
29
+ msg=std_colorize(i,num,ctt)
30
+ print(msg)
31
+
32
+
33
+ def fix_table(self):
34
+ PhoneBook.__table__.drop(ENGINE)
35
+ PhoneBook.metadata.create_all(ENGINE)
36
+
37
+
38
+ def rm_rcp(self):
39
+ with Session(ENGINE) as session:
40
+ rcp=self.ls_rcp_names(asSelector=True,whole=True,names=True,grouped=True)
41
+ if rcp is None:
42
+ print("User returned, or no results!")
43
+ return
44
+ ct=len(rcp[0])
45
+ htext=[]
46
+ for i in rcp[0]:
47
+ htext.append(i)
48
+ htext='\n'.join(htext)
49
+ print(htext)
50
+ which=Prompt.__init2__(self,func=FormBuilderMkText,ptext="which index",helpText=f"{htext}\nindex of rcp to delete",data="integer")
51
+ if which in [None,'d']:
52
+ return
53
+ try:
54
+ query_2=session.query(PhoneBook).filter(PhoneBook.phone_uid==rcp[-1][which].phone_uid).delete()
55
+ session.commit()
56
+ print("Done Deleting!")
57
+ except Exception as e:
58
+ print(e)
59
+ #delete everything found by searchtext using recipe_uid as the final selection parameter
60
+
61
+ def edit_rcp(self):
62
+ with Session(ENGINE) as session:
63
+ rcp=self.ls_rcp_names(asSelector=True,whole=True,names=True)
64
+ if rcp is None:
65
+ print("User returned, or no results!")
66
+ return
67
+ ct=len(rcp[0])
68
+ htext=[]
69
+ for i in rcp[0]:
70
+ htext.append(i)
71
+ htext='\n'.join(htext)
72
+ print(htext)
73
+ whiches=Prompt.__init2__(self,func=FormBuilderMkText,ptext="which index",helpText=f"{htext}\nindex of contact to edit",data="list")
74
+ if whiches in [None,'d']:
75
+ return
76
+ for which in whiches:
77
+ try:
78
+ which=int(which)
79
+ query_2=session.query(PhoneBook).filter(PhoneBook.pbid==rcp[-1][which].pbid).first()
80
+ fields={
81
+ 'phone_name':{'default':getattr(query_2,'phone_name'),'type':"string"},
82
+ 'phone_uid':{'default':getattr(query_2,'phone_uid'),'type':"string"},
83
+ }
84
+ fd=FormBuilder(data=fields)
85
+ if fd is not None:
86
+ r=session.query(PhoneBook).filter(PhoneBook.pbid==query_2.pbid)
87
+ r.update(fd)
88
+ session.commit()
89
+ print("Done Editing!")
90
+ except Exception as e:
91
+ print(e)
92
+ #edit everything found by searchtext using recipe_uid as the final selection parameter
93
+
94
+ def rm_ingredient(self):
95
+ with Session(ENGINE) as session:
96
+ rcp=self.ls_rcp_names(asSelector=True,whole=True,names=True)
97
+ if rcp is None:
98
+ print("User returned, or no results!")
99
+ return
100
+ ct=len(rcp[0])
101
+ htext=[]
102
+ for i in rcp[0]:
103
+ htext.append(i)
104
+ htext='\n'.join(htext)
105
+ print(htext)
106
+ whiches=Prompt.__init2__(self,func=FormBuilderMkText,ptext="which index",helpText=f"{htext}\nindex of contact to delete ",data="list")
107
+ if whiches in [None,'d']:
108
+ return
109
+ for which in whiches:
110
+ try:
111
+ which=int(which)
112
+ query_2=session.query(PhoneBook).filter(PhoneBook.pbid==rcp[-1][which].pbid)
113
+ ordered_2=orderQuery(query_2,PhoneBook.DTOE)
114
+ results_2=ordered_2.all()
115
+ ct=len(results_2)
116
+ for num,i in enumerate(results_2):
117
+ print(std_colorize(i,num,ct))
118
+ delete=Prompt.__init2__(self,func=FormBuilderMkText,ptext="Delete[default=False]?",helpText="delete it, yes or no?",data="boolean")
119
+ if delete in [None,]:
120
+ return
121
+ elif delete in ['d',]:
122
+ continue
123
+ elif delete == True:
124
+ session.delete(i)
125
+ session.commit()
126
+ except Exception as e:
127
+ print(e)
128
+ #find a recipe, list its ingredients, select ingredients to delete, delete selected ingredients
129
+
130
+ #asSelector==False,whole==True,names==False - print selector_string_whole
131
+ #asSelector==False,whole==False,names==True - print selector_string_names
132
+ #asSelector==False,whole==True,names==True - print selector_string_whole,selector_string_names
133
+ #asSelector==True,whole==True,names==False - return selector_string_whole,selector_list
134
+ #asSelector==True,whole==False,names==True - return selector_string_names,selector_list
135
+ #asSelector==True,whole==True,names==True - return selector_string_names,selector_string_whole,selector_list
136
+ def ls_rcp_names(self,asSelector=False,whole=False,names=False,grouped=False):
137
+ with Session(ENGINE) as session:
138
+ selector_list=[]
139
+ selector_string_names=[]
140
+ selector_string_whole=[]
141
+
142
+ searchText=Prompt.__init2__(None,func=FormBuilderMkText,ptext="What are you looking for?",helpText="text to search for",data="string")
143
+ if searchText is None:
144
+ return
145
+ includes=["string","varchar","text"]
146
+ excludes=['pbid','DTOE']
147
+ fields=[i.name for i in PhoneBook.__table__.columns if str(i.name) not in excludes and str(i.type).lower() in includes]
148
+ q=[]
149
+
150
+ if searchText not in ['','d','all','*']:
151
+ for i in fields:
152
+ q.append(getattr(PhoneBook,i).icontains(searchText))
153
+ query=session.query(PhoneBook).filter(or_(*q))
154
+ else:
155
+ query=session.query(PhoneBook)
156
+ if grouped:
157
+ query=query.group_by(PhoneBook.phone_uid,PhoneBook.phone_name)
158
+ ordered=orderQuery(query,PhoneBook.DTOE,inverse=True)
159
+
160
+ results=ordered.all()
161
+ ct=len(results)
162
+ if ct <= 0:
163
+ print("No Results")
164
+ return None
165
+ for num,i in enumerate(results):
166
+ selector_list.append(i)
167
+ selector_string_whole.append(std_colorize(i,num,ct))
168
+ msg=[]
169
+ other_excludes=[None,'','N/A',' ','0','-1']
170
+ f=[ii.name for ii in PhoneBook.__table__.columns if ii.name not in excludes and str(ii.type).lower() in includes and getattr(i,ii.name) not in other_excludes]
171
+ for ff in f:
172
+ x=f"{Fore.light_sea_green}{ff}{Fore.light_steel_blue}={Fore.orange_red_1}{getattr(i,ff)}{Style.reset}"
173
+ msg.append(x)
174
+ msg='|'.join(msg)
175
+ selector_string_names.append(std_colorize(msg,num,ct))
176
+ #selector_string_names.append(std_colorize(f"[PN]{i.phone_name}[PUID]{i.phone_uid}|[NPN]{i.non_personnel_name}|[LN]{i.lastName},[MN]{i.middleName},[FN]{i.firstName}|",num,ct))
177
+ if not asSelector:
178
+ if whole:
179
+ print(selector_string_whole[num])
180
+ if names:
181
+ print(selector_string_names[num])
182
+ if asSelector:
183
+ if whole and not names:
184
+ return selector_string_whole,selector_list
185
+ elif names and not whole:
186
+ return selector_string_names,selector_list
187
+ elif names and whole:
188
+ return selector_string_names,selector_string_whole,selector_list
189
+ '''
190
+ def list_groups(self):
191
+ with Session(ENGINE) as session:
192
+ rcp=self.ls_rcp_names(asSelector=True,whole=True,names=True,grouped=True)
193
+ if rcp is None:
194
+ print("User returned, or no results!")
195
+ return
196
+ ct=len(rcp[0])
197
+ htext=[]
198
+ for i in rcp[0]:
199
+ htext.append(i)
200
+ htext='\n'.join(htext)
201
+ print(htext)
202
+ whiches=Prompt.__init2__(self,func=FormBuilderMkText,ptext="which index",helpText=f"{htext}\nindex of contact uid to view its grouped",data="list")
203
+ if whiches in [None,'d']:
204
+ return
205
+ for which in whiches:
206
+ try:
207
+ which=int(which)
208
+ query_2=session.query(PhoneBook).filter(PhoneBook.phone_uid==rcp[-1][which].phone_uid)
209
+ ordered_2=orderQuery(query_2,PhoneBook.DTOE)
210
+ results_2=ordered_2.all()
211
+ ct=len(results_2)
212
+ for num,i in enumerate(results_2):
213
+ print(std_colorize(i,num,ct))
214
+ except Exception as e:
215
+ print(e)
216
+ '''
217
+ def list_contacts(self):
218
+ with Session(ENGINE) as session:
219
+ rcp=self.ls_rcp_names(asSelector=True,whole=True,names=True)
220
+ if rcp is None:
221
+ print("User returned, or no results!")
222
+ return
223
+ ct=len(rcp[0])
224
+ htext=[]
225
+ for i in rcp[0]:
226
+ htext.append(i)
227
+ htext='\n'.join(htext)
228
+ print(htext)
229
+ whiches=Prompt.__init2__(self,func=FormBuilderMkText,ptext="which index",helpText=f"{htext}\nindex of phonebook.pbid to view its content",data="list")
230
+ if whiches in [None,'d']:
231
+ return
232
+ for which in whiches:
233
+ try:
234
+ which=int(which)
235
+ query_2=session.query(PhoneBook).filter(PhoneBook.pbid==rcp[-1][which].pbid)
236
+ ordered_2=orderQuery(query_2,PhoneBook.DTOE)
237
+ results_2=ordered_2.all()
238
+ ct=len(results_2)
239
+ for num,i in enumerate(results_2):
240
+ print(std_colorize(i,num,ct))
241
+ except Exception as e:
242
+ print(e)
243
+
244
+ def ls_rcp_ingredients(self):
245
+ with Session(ENGINE) as session:
246
+ rcp=self.ls_rcp_names(asSelector=True,whole=True,names=True,grouped=True)
247
+ if rcp is None:
248
+ print("User returned, or no results!")
249
+ return
250
+ else:
251
+ print('next_state')
252
+ try:
253
+ query_2=session.query(PhoneBook).filter(PhoneBook.phone_uid==rcp[-1][0].phone_uid)
254
+ ordered_2=orderQuery(query_2,PhoneBook.DTOE)
255
+ results_2=ordered_2.all()
256
+ ct=len(results_2)
257
+ for num,i in enumerate(results_2):
258
+ print(std_colorize(i,num,ct))
259
+ except Exception as e:
260
+ print(e)
261
+
262
+ def edit_rcp_ingredients(self):
263
+ with Session(ENGINE) as session:
264
+ rcp=self.ls_rcp_names(asSelector=True,whole=True,names=True)
265
+ if rcp is None:
266
+ print("User returned, or no results!")
267
+ return
268
+ ct=len(rcp[0])
269
+ htext=[]
270
+ for i in rcp[0]:
271
+ htext.append(i)
272
+ htext='\n'.join(htext)
273
+ print(htext)
274
+ whiches=Prompt.__init2__(self,func=FormBuilderMkText,ptext="which index",helpText=f"{htext}\nindex of rcp to view its ingredients",data="list")
275
+ if whiches in [None,'d']:
276
+ return
277
+ for which in whiches:
278
+ try:
279
+ which=int(which)
280
+ query_2=session.query(PhoneBook).filter(PhoneBook.pbid==rcp[-1][which].pbid)
281
+ ordered_2=orderQuery(query_2,PhoneBook.DTOE)
282
+ results_2=ordered_2.all()
283
+ ct=len(results_2)
284
+ for num,i in enumerate(results_2):
285
+ print(std_colorize(i,num,ct))
286
+ edit=Prompt.__init2__(self,func=FormBuilderMkText,ptext="Edit[default=False]?",helpText="Edit it, yes or no?",data="boolean")
287
+ if edit in [None,]:
288
+ return
289
+ elif edit in ['d',]:
290
+ continue
291
+ elif edit == True:
292
+ excludes=['pbid','phone_uid','phone_name','DTOE']
293
+ fields={ii.name:{'default':getattr(i,ii.name),'type':str(ii.type).lower()} for ii in PhoneBook.__table__.columns if ii.name not in excludes}
294
+ fd=FormBuilder(data=fields)
295
+ if fd is not None:
296
+ for k in fd:
297
+ setattr(i,k,fd[k])
298
+ session.commit()
299
+ else:
300
+ continue
301
+ except Exception as e:
302
+ print(e)
303
+
304
+
305
+ def __init__(self):
306
+ cmds={
307
+ str(uuid1()):{
308
+ 'cmds':generate_cmds(startcmd=['create new','cn','cnw'],endCmd=['contact','cnct','c']),
309
+ 'desc':"create a new contact",
310
+ 'exec':self.create_new_rcp,
311
+ },
312
+ uuid1():{
313
+ 'cmds':generate_cmds(startcmd=['fix','fx'],endCmd=['tbl','table']),
314
+ 'desc':"reinstall table",
315
+ 'exec':self.fix_table,
316
+ },
317
+ uuid1():{
318
+ 'cmds':generate_cmds(startcmd=['rm','del','remove','delete'],endCmd=['grps','groups','g']),
319
+ 'desc':"delete a group of contacts by uid(delete everything found by searchtext using recipe_uid as the final selection parameter)",
320
+ 'exec':self.rm_rcp,
321
+ },
322
+ uuid1():{
323
+ 'cmds':generate_cmds(startcmd=['rm','del','remove','delete'],endCmd=['contact','cnct','c']),
324
+ 'desc':"delete a contact(find a recipe, list its ingredients, select ingredients to delete, delete selected ingredients)",
325
+ 'exec':self.rm_ingredient,
326
+ },
327
+ uuid1():{
328
+ 'cmds':generate_cmds(startcmd=['ls','list','lst'],endCmd=['grps','groups','g']),
329
+ 'desc':"list contacts grouped by uid or basically list of groups",
330
+ 'exec':lambda self=self:self.ls_rcp_names(asSelector=False,whole=False,names=True,grouped=True),
331
+ },
332
+ uuid1():{
333
+ 'cmds':generate_cmds(startcmd=['ls','list','lst'],endCmd=['groups','grps','g']),
334
+ 'desc':"list contacts in a group",
335
+ 'exec':lambda self=self:self.ls_rcp_ingredients(),
336
+ },
337
+ uuid1():{
338
+ 'cmds':generate_cmds(startcmd=['ls','list','lst'],endCmd=['contact','cnct','c']),
339
+ 'desc':"list contacts from search without group by phone_uid",
340
+ 'exec':lambda self=self:self.list_contacts(),
341
+ },
342
+ uuid1():{
343
+ 'cmds':generate_cmds(startcmd=['ed','edt','edit'],endCmd=['contact','cnct','c']),
344
+ 'desc':"edit phone contact",
345
+ 'exec':lambda self=self:self.edit_rcp_ingredients(),
346
+ },
347
+ uuid1():{
348
+ 'cmds':generate_cmds(startcmd=['ed','edt','edit'],endCmd=['grps','groups','g']),
349
+ 'desc':"edit phone name and phone uid",
350
+ 'exec':lambda self=self:self.edit_rcp(),
351
+ },
352
+ }
353
+
354
+ htext=[]
355
+ ct=len(cmds)
356
+ for num,i in enumerate(cmds):
357
+ m=f"{Fore.light_sea_green}{cmds[i]['cmds']}{Fore.orange_red_1} - {Fore.light_steel_blue}{cmds[i]['desc']}"
358
+ msg=f"{std_colorize(m,num,ct)}"
359
+ htext.append(msg)
360
+ htext='\n'.join(htext)
361
+ while True:
362
+ doWhat=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"{self.__class__.__name__} @ Do What? ",helpText=htext,data="string")
363
+ if doWhat is None:
364
+ return
365
+ elif doWhat in ['','d',]:
366
+ print(htext)
367
+ continue
368
+ for i in cmds:
369
+ if doWhat.lower() in [i.lower() for i in cmds[i]['cmds']]:
370
+ if callable(cmds[i]['exec']):
371
+ cmds[i]['exec']()
372
+ break
373
+ else:
374
+ print(f"{i} - {cmds[i]['cmds']} - {cmds[i]['exec']}() - {cmds[i]['desc']}")
375
+ return
@@ -0,0 +1,29 @@
1
+ from radboy.DB.db import *
2
+ #from radboy.DB.RandomStringUtil import *
3
+ #import radboy.Unified.Unified as unified
4
+ #import radboy.possibleCode as pc
5
+ from radboy.DB.Prompt import *
6
+ from radboy.DB.Prompt import prefix_text
7
+ #from radboy.TasksMode.ReFormula import *
8
+ #from radboy.TasksMode.SetEntryNEU import *
9
+ from radboy.FB.FormBuilder import *
10
+ from radboy.FB.FBMTXT import *
11
+ #from radboy.RNE.RNE import *
12
+ #from radboy.Lookup2.Lookup2 import Lookup as Lookup2
13
+ #from radboy.DayLog.DayLogger import *
14
+ #from radboy.DB.masterLookup import *
15
+ from collections import namedtuple,OrderedDict
16
+ import nanoid,qrcode,io
17
+ #from password_generator import PasswordGenerator
18
+ import random
19
+ from pint import UnitRegistry
20
+ import pandas as pd
21
+ import numpy as np
22
+ from datetime import *
23
+ from colored import Style,Fore
24
+ import json,sys,math,re,calendar,hashlib,haversine
25
+ from time import sleep
26
+ import itertools
27
+ from uuid import uuid1
28
+
29
+ from .PhoneBook import *
radboy/TasksMode/Tasks.py CHANGED
@@ -40,6 +40,7 @@ from radboy.GDOWN.GDOWN import *
40
40
  from radboy.Unified.clearalll import clear_all
41
41
  from radboy.RepeatableDates import *
42
42
  from radboy.CookBook import *
43
+ from radboy.PhoneBook import *
43
44
 
44
45
  def today():
45
46
  dt=datetime.now()
@@ -295,6 +296,9 @@ class TasksMode:
295
296
  def cookbook(self):
296
297
  CookBookUi()
297
298
 
299
+ def phonebook(self):
300
+ PhoneBookUi()
301
+
298
302
  def process_cmd(self,buffer):
299
303
  ''
300
304
  data=OrderedDict()
@@ -4763,6 +4767,12 @@ where:
4763
4767
  'exec':lambda self=self: print(self.cookbook()),
4764
4768
  }
4765
4769
  count+=1
4770
+ self.options[str(uuid1())]={
4771
+ 'cmds':["#"+str(count),*[i for i in generate_cmds(startcmd=["phonebook","phnbk"],endCmd=["",])]],
4772
+ 'desc':f"phonebook",
4773
+ 'exec':lambda self=self: print(self.phonebook()),
4774
+ }
4775
+ count+=1
4766
4776
  self.options[str(uuid1())]={
4767
4777
  'cmds':["#"+str(count),*[i for i in generate_cmds(startcmd=["loads2","lds2"],endCmd=["",])]],
4768
4778
  'desc':f"dates that repeat weekly, or upcoming dates that are important",
radboy/__init__.py CHANGED
@@ -1 +1 @@
1
- VERSION='0.0.454'
1
+ VERSION='0.0.455'
Binary file
radboy/code.png CHANGED
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: radboy
3
- Version: 0.0.454
3
+ Version: 0.0.455
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,12 +5,12 @@ radboy/Holidays.txt,sha256=y-JZPihh5iaWKxMIHNXD39yVuVmf1vMs4FdNDcg0f1Y,3114
5
5
  radboy/InventoryGlossary.txt,sha256=018-Yqca6DFb10jPdkUY-5qhkRlQN1k3rxoTaERQ-LA,91008
6
6
  radboy/RecordMyCodes.py,sha256=dOm24buf-rWC4FGLQLDjL5obdxOKF3D01t6Qkkit-R0,41421
7
7
  radboy/Run.py,sha256=JUoCTHnzQBv7n8PB2_i93ANdAC_iW__RkAge8esCnk4,76
8
- radboy/__init__.py,sha256=fzYy5PwPeh0IUCbyPE89DZkSsP2tm2WS_a7mag9kL6k,17
8
+ radboy/__init__.py,sha256=umGfShdv3Gsnqw1ZszLIVKwO0cDVEKmCD2A5zh-GzP4,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
12
12
  radboy/changelog.txt,sha256=_73e-OcHDecsK-eHEE45T84zHbUZ8Io3FzvLNwHPdoY,3714
13
- radboy/code.png,sha256=l8oCZat3ajbFPsW60HqSvQAwdQr-X5ZT7Wz_xoHTEBs,764
13
+ radboy/code.png,sha256=YKN-2pqd2YzmW1I4CJzQYissselOYGZDWZ6M-j051pI,663
14
14
  radboy/db.csv,sha256=hpecu18LtCow5fH01queqWgqPByR628K7pLuEuLSuj4,19
15
15
  radboy/dictionary.txt,sha256=EJlEazI8RfTDX_Uzd6xnXLm9IjU5AEq6HVDwi42Y4_4,195680
16
16
  radboy/export.csv,sha256=YIU8c34enlknKMzKwzfQEN8e0mUdyW8m6O8GvgUQ9do,41015
@@ -85,14 +85,14 @@ radboy/DB/ExerciseTracker.py,sha256=CZ8jdKJiAE_QTAiJTRXi8ZOnS1NUiSvWVSKLHLpYVGk,
85
85
  radboy/DB/PayDay.py,sha256=H2kPGvBCDkMOz7lbxQhYtUt_oAInpxi37Q6MFrah98I,8710
86
86
  radboy/DB/PayModels.py,sha256=hjwWxP7PL33hmfzQl5YTf0HqzaMxXJxFknPdxFJXJc8,3499
87
87
  radboy/DB/PrintLogging.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
- radboy/DB/Prompt.py,sha256=7CnAerwbfUGnIilh7TVuE5RVU4JWZa9ZGfG06tA_y4c,139279
88
+ radboy/DB/Prompt.py,sha256=EPyB9WYfwRrgzJe6cO7whncKUvAnel7yooGLNp_q8F8,140177
89
89
  radboy/DB/RandomStringUtil.py,sha256=eZCpR907WStgfbk4Evcghjv9hOkUDXH-iMXIq0-kXq8,24386
90
90
  radboy/DB/ResetTools.py,sha256=RbI-Ua7UlsN0S9qLqtEkTWvzyTZ6R-hHR3CW4NHlUPE,6660
91
91
  radboy/DB/SMLabelImporter.py,sha256=eUoBDxVUUEKGL2g_PwkASM67ZB7FmXtSnn4bCagskhY,4013
92
92
  radboy/DB/__init__.py,sha256=JiigA9B7GalP7YuRdcwyGDu5PDSBahoi0lLjtScxlN8,49
93
93
  radboy/DB/blankDataFile.py,sha256=YX_05Usi71UpDkZN9UTMYwUipbTndTAtEgqzBEga0kE,9285
94
94
  radboy/DB/config.py,sha256=bvu43dUl1_yO3Zq3gsLuenGUgJSiS3S9Cs6ppFEvZbg,239
95
- radboy/DB/db.py,sha256=0qgG_wF14-jsUmawNeSRqkceapQbY-oByCLBiM3Uo3A,240197
95
+ radboy/DB/db.py,sha256=221N6a3G-2iL0pQ75sjbWZVL_fiGvDVrlAkyMg0U8j0,242258
96
96
  radboy/DB/glossary_db.py,sha256=1_qxeEpjjEtpWB_eDjsgJisimLv7OBm75MuqM-Lt6zg,28218
97
97
  radboy/DB/masterLookup.py,sha256=DBaM2uscG3_X5dek49wjdnOzhrjWhKgvOEz_umdz0mY,4566
98
98
  radboy/DB/msg.txt,sha256=YxWed6A6tuP1djJ5QPS2Rz3ING4TKKf8kUiCCPtzHXE,7937
@@ -109,7 +109,7 @@ radboy/DB/__pycache__/FormBuilder.cpython-312.pyc,sha256=p1o-5SMRL8OXP_XQ5liUpf-
109
109
  radboy/DB/__pycache__/PrintLogging.cpython-312.pyc,sha256=pIAFqTi6OiQQORSc-oMH1zAbsdH7sY1TifxrN_QOvnU,148
110
110
  radboy/DB/__pycache__/Prompt.cpython-311.pyc,sha256=P2uPRpeqfLFtxieZ0JHBG3X_HZzWUCsFSLb_fpRqky0,6407
111
111
  radboy/DB/__pycache__/Prompt.cpython-312.pyc,sha256=6CcQ1gE2hcz3cKPjo4f6d7xNM2PTDnl8NzQG0Pme5BE,142886
112
- radboy/DB/__pycache__/Prompt.cpython-313.pyc,sha256=G8e01ZqWa3qgLzc1w36N7mgXI5fZNbMNDG9NGfuqgcw,214144
112
+ radboy/DB/__pycache__/Prompt.cpython-313.pyc,sha256=ugSoQiDwP_6OiaCsa4v09WsxYUjCbIvRxpJjYK6OogY,215661
113
113
  radboy/DB/__pycache__/RandomStringUtil.cpython-312.pyc,sha256=TrbEY89MuLmNlvoo5d8vOE6Dyshh5_EMlTZvk8MDVN4,48597
114
114
  radboy/DB/__pycache__/RandomStringUtil.cpython-313.pyc,sha256=MCcgVwV2Y-9rAY2FVaJZCKcou3HDX70EZudoiCigT0o,49217
115
115
  radboy/DB/__pycache__/ResetTools.cpython-311.pyc,sha256=4Vyc57iAAF0yRPjjglnVKovnTn8OoFIi6Zok3Wpj_YM,9292
@@ -127,7 +127,7 @@ radboy/DB/__pycache__/config.cpython-312.pyc,sha256=Qo7E6MHrF6yqvKgepNFyCoekZXiv
127
127
  radboy/DB/__pycache__/config.cpython-313.pyc,sha256=_8wCIg_3jhyJjxnExD2Sm6aY-uZTw036p7Ki5znL7dc,376
128
128
  radboy/DB/__pycache__/db.cpython-311.pyc,sha256=rNgigyBd0D-cg1JxKAS8t0B_k0IEJivgVlRaZE10Xis,210105
129
129
  radboy/DB/__pycache__/db.cpython-312.pyc,sha256=ANDJPC0RoavbmSKFxG15vC7B4rEGyVt7xRJt7XGY3OA,334609
130
- radboy/DB/__pycache__/db.cpython-313.pyc,sha256=GQIVxeVDRS3NYC7VUirhhnb4lKRD7284BxAK0h-7a-s,379076
130
+ radboy/DB/__pycache__/db.cpython-313.pyc,sha256=ALOjlGb7v1Us7y1mXGJAWjY0OTm38h8cVpFm_brqB_o,381725
131
131
  radboy/DB/__pycache__/glossary_db.cpython-312.pyc,sha256=8UL-29cKqtKovx0BANm6kzKKteef1BW_2qF3wumzst4,36023
132
132
  radboy/DB/__pycache__/glossary_db.cpython-313.pyc,sha256=Ke9bkvllGv5CK0JdT9DRvQ3MOdrXxoYv7TVLNkqLux0,36582
133
133
  radboy/DB/__pycache__/masterLookup.cpython-312.pyc,sha256=bQiOkmMwwHgcO18tYSWGQ-YUff4GQlKVhBMp1GoWAqY,6324
@@ -282,6 +282,8 @@ radboy/POS/__pycache__/POS.cpython-313.pyc,sha256=-es1vNYvFK6MXznK6FTNTcsdGZzpC6
282
282
  radboy/POS/__pycache__/__init__.cpython-311.pyc,sha256=EjkCiNyf59_mmFLzbgGLqpStpeo9gi2dx8IZlhg_Qyg,228
283
283
  radboy/POS/__pycache__/__init__.cpython-312.pyc,sha256=mpESqOMEmBPUkkkP2Sci7XPA3MSko8Qw-eMFB2854EE,266
284
284
  radboy/POS/__pycache__/__init__.cpython-313.pyc,sha256=DR0_hbFS6FQFh6GWnXDs5bXThEqOZoNBwuzGOW_X9co,145
285
+ radboy/PhoneBook/PhoneBook.py,sha256=PmznDKAcLsIuzIpei1-1y9HeLieA-tdx5NewHhSnrac,13437
286
+ radboy/PhoneBook/__init__.py,sha256=ehY4XgI8wlGvgUugs1HHrMLSaGQi2ox9bGGDIJCq9_E,928
285
287
  radboy/PunchCard/CalcTimePad.py,sha256=wpjHbGtqkhWgPABoR_wSwroP3-0o_TH2EKASKUPqsZg,4315
286
288
  radboy/PunchCard/PunchCard.py,sha256=Y4hzx5lLFw-1yDyxJukt-Xb3_ADsF6wEmpW_egXGCDc,38123
287
289
  radboy/PunchCard/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -338,7 +340,7 @@ radboy/SystemSettings/__pycache__/__init__.cpython-312.pyc,sha256=aIzp4Po0t8EhSA
338
340
  radboy/SystemSettings/__pycache__/__init__.cpython-313.pyc,sha256=QFDuoidxMWsGVLsy5lN-rDs6TP8nKJ4yyCyiamNOhwo,156
339
341
  radboy/TasksMode/ReFormula.py,sha256=REDRJYub-OEOE6g14oRQOLOQwv8pHqVJy4NQk3CCM90,2255
340
342
  radboy/TasksMode/SetEntryNEU.py,sha256=TTzlAT5rNXvXUAy16BHBq0hJOKhONYpPhdAfQKdTfGw,17364
341
- radboy/TasksMode/Tasks.py,sha256=dmYTHK2ZccoQh5sK-aym2NT3TDqr2OvHbNjFvhyE8WM,310492
343
+ radboy/TasksMode/Tasks.py,sha256=rqmQT7LpDCYxSf9qpFLF3thLeiT00-AbxJJxtcbMVaQ,310876
342
344
  radboy/TasksMode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
343
345
  radboy/TasksMode/__pycache__/ReFormula.cpython-311.pyc,sha256=QEG3PwVw-8HTd_Mf9XbVcxU56F1fC9yBqWXYPLC39DU,4865
344
346
  radboy/TasksMode/__pycache__/ReFormula.cpython-312.pyc,sha256=aX7BWm2PPjCTnxsbGUitR-2h9hq4AjaBiHMrUXvIl0Y,3967
@@ -347,7 +349,7 @@ radboy/TasksMode/__pycache__/SetEntryNEU.cpython-312.pyc,sha256=pCdFj61aPKkHL6Sv
347
349
  radboy/TasksMode/__pycache__/SetEntryNEU.cpython-313.pyc,sha256=eSWkYvfm5RuRE5rbO5wI7XxzFyKnp6KlbphSqPAF2z4,20133
348
350
  radboy/TasksMode/__pycache__/Tasks.cpython-311.pyc,sha256=6QOTJnLiXSKdF81hkhy3vyrz49PPhS20s5_0X52g3Hw,131120
349
351
  radboy/TasksMode/__pycache__/Tasks.cpython-312.pyc,sha256=hyJwdaYaaRLdcrNxgg36diJ5iijX5_3I0UAORsj-6LU,310295
350
- radboy/TasksMode/__pycache__/Tasks.cpython-313.pyc,sha256=HKHPDgrNmMlsHaqBwza4GuE6853_9gJBUWRu_rRpPZE,382713
352
+ radboy/TasksMode/__pycache__/Tasks.cpython-313.pyc,sha256=ucTFrI002onaK0ve0J-QqcnpkTRgj-_zfkJ7fboAMCw,383368
351
353
  radboy/TasksMode/__pycache__/__init__.cpython-311.pyc,sha256=PKV1JbihEacm639b53bZozRQvcllSkjGP3q8STVMxF4,234
352
354
  radboy/TasksMode/__pycache__/__init__.cpython-312.pyc,sha256=ERgnEvRMiGSecWp1BpNzLdSq_SdKw7GvFWUvUM7bLVw,272
353
355
  radboy/TasksMode/__pycache__/__init__.cpython-313.pyc,sha256=lvsTxukyvGKB3C0rdF9dQi_bvVh6ceDVINfwcuIsd0s,151
@@ -394,7 +396,7 @@ radboy/__pycache__/Run.cpython-311.pyc,sha256=G_UEfMtkLRjR6ZpGA_BJzGenuaCcP469Y9
394
396
  radboy/__pycache__/Run.cpython-312.pyc,sha256=v4xolc3mHyla991XhpYBUbBHYT0bnJ1gE-lkFoQ4GFA,241
395
397
  radboy/__pycache__/__init__.cpython-311.pyc,sha256=R-DVbUioMOW-Fnaq7FpT5F1a5p0q3b_RW-HpLRArCAY,242
396
398
  radboy/__pycache__/__init__.cpython-312.pyc,sha256=FsFzLXOlTK8_7ixoPZzakkR8Wibt-DvXLFh-oG2QlPw,164
397
- radboy/__pycache__/__init__.cpython-313.pyc,sha256=mZcf2EOpcmXvU0oyOWeRYaF37nr9qFcuIyHHiaruZ7E,165
399
+ radboy/__pycache__/__init__.cpython-313.pyc,sha256=BXtKAaaD8b5nIBA5vCcKIJ3_eopa56EAGAav2f9gmC4,165
398
400
  radboy/__pycache__/__init__.cpython-39.pyc,sha256=D48T6x6FUeKPfubo0sdS_ZUut3FmBvPMP7qT6rYBZzU,275
399
401
  radboy/__pycache__/possibleCode.cpython-311.pyc,sha256=zFiHyzqD8gUnIWu4vtyMYIBposiRQqaRXfcT_fOl4rU,20882
400
402
  radboy/__pycache__/possibleCode.cpython-312.pyc,sha256=tk_CO-AcsO3YZj5j6vEsw3g37UmEzWc5YgeWEoJEUg4,27922
@@ -419,7 +421,7 @@ radboy/tkGui/Images/__pycache__/__init__.cpython-311.pyc,sha256=tXBYpqbOlZ24B1BI
419
421
  radboy/tkGui/__pycache__/BeginnersLuck.cpython-311.pyc,sha256=xLQOnV1wuqHGaub16mPX0dDMGU9ryCeLtNz5e517_GE,3004
420
422
  radboy/tkGui/__pycache__/Review.cpython-311.pyc,sha256=wKq24iM6Xe2OampgZ7-8U6Nvmgs2y-qWOrGwtWhc75k,4047
421
423
  radboy/tkGui/__pycache__/__init__.cpython-311.pyc,sha256=BX7DBn5qbvKTvlrKOP5gzTBPBTeTgSMjBW6EMl7N8e0,230
422
- radboy-0.0.454.dist-info/METADATA,sha256=gt0a9gRPA7RqIRwnFP538xpoR9gRKU7h1oY0b0tRgF8,1601
423
- radboy-0.0.454.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
424
- radboy-0.0.454.dist-info/top_level.txt,sha256=mlM0RWMUxGo1YHnlLmYrHOgGdK4XNRpr7nMFD5lR56c,7
425
- radboy-0.0.454.dist-info/RECORD,,
424
+ radboy-0.0.455.dist-info/METADATA,sha256=2UAIiaJ5kk32VsRxRn3kiRqZg6wl02Mz5Noop3UceJg,1601
425
+ radboy-0.0.455.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
426
+ radboy-0.0.455.dist-info/top_level.txt,sha256=mlM0RWMUxGo1YHnlLmYrHOgGdK4XNRpr7nMFD5lR56c,7
427
+ radboy-0.0.455.dist-info/RECORD,,