radboy 0.0.500__py3-none-any.whl → 0.0.502__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of radboy might be problematic. Click here for more details.

Binary file
radboy/DB/db.py CHANGED
@@ -46,6 +46,29 @@ class BOOLEAN_ANSWERS:
46
46
  self.timeout=5
47
47
  self.long_boot_time=90
48
48
  self.timeout_msg=f"{Fore.light_yellow}SessionOnly({Fore.light_red}lb|longboot = timeout of 90s;{Fore.light_cyan}fb|fastboot = timeout of 0s){Style.reset}\n"
49
+ self.math_operators={
50
+ '+':None,
51
+ '-':None,
52
+ '*':None,
53
+ '**':None,
54
+ '/':None,
55
+ '//':None,
56
+ '%':None,
57
+ '&':None,
58
+ '|':None,
59
+ }
60
+ self.comparison_operators={
61
+ '==':None,
62
+ '<':None,
63
+ '<=':None,
64
+ '>':None,
65
+ '>=':None,
66
+ '!=':None,
67
+ }
68
+ self.and_or={
69
+ 'or':None,
70
+ 'and':None,
71
+ }
49
72
 
50
73
  BooleanAnswers=BOOLEAN_ANSWERS()
51
74
  class switch_bootable:
@@ -5382,23 +5405,9 @@ class Occurances(BASE,Template):
5382
5405
  quantity=Column(Float,default=0.0)
5383
5406
 
5384
5407
  comment=Column(String,default='')
5385
- long_comment=Column(Text,default='')
5386
-
5387
- max_pre=Column(Float,default=sys.maxsize)
5388
- min_pre=Column(Float,default=-sys.maxsize)
5389
-
5390
- max_post=Column(Float,default=sys.maxsize)
5391
- min_post=Column(Float,default=-sys.maxsize)
5392
-
5393
- hidden=Column(Boolean,default=False)
5394
- hidden_dtoe=Column(DateTime,default=None)
5395
-
5396
- soft_deleted=Column(Boolean,default=False)
5397
- soft_deleted_dtoe=Column(DateTime,default=None)
5398
5408
 
5399
5409
  created_dtoe=Column(DateTime,default=datetime.now())
5400
- modified_dtoe=Column(DateTime,default=None)
5401
- modified_how_many_times_since_created=Column(Integer,default=0)
5410
+
5402
5411
 
5403
5412
  def as_json(self):
5404
5413
  excludes=['cbid','DTOE']
@@ -5409,6 +5418,8 @@ class Occurances(BASE,Template):
5409
5418
  return f"{self.__class__.__name__}(cbid={self.cbid})"
5410
5419
 
5411
5420
  def __init__(self,**kwargs):
5421
+ if 'uid' not in kwargs:
5422
+ self.uid=str(uuid1())
5412
5423
  for k in kwargs.keys():
5413
5424
  if k in [s.name for s in self.__table__.columns]:
5414
5425
  setattr(self,k,kwargs.get(k))
radboy/Lookup2/Lookup2.py CHANGED
@@ -6,6 +6,82 @@ from colored import Style,Fore,Back
6
6
  import qrcode
7
7
 
8
8
  class Lookup:
9
+ def searchSpec(self,short=False):
10
+ with Session(ENGINE) as session:
11
+ fields={i.name:{'default':None,"type":str(i.type).lower()} for i in Entry.__table__.columns}
12
+ fd=FormBuilder(data=fields)
13
+
14
+ query=None
15
+ if fd is not None:
16
+ filters=[]
17
+ for i in fd:
18
+ if fd[i] is not None:
19
+ ct=len(BooleanAnswers.comparison_operators)
20
+ htext=[std_colorize(i,num,ct) for num,i in enumerate(BooleanAnswers.comparison_operators)]
21
+ htext='\n'.join(htext)
22
+ operators=[i for i in BooleanAnswers.comparison_operators]
23
+
24
+ if fields[i]['type'] in ['varchar','text','string']:
25
+ filters.append(getattr(Entry,i).icontains(fd[i]))
26
+ else:
27
+ print(htext)
28
+ operator=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"'{i}' operator? ",helpText=htext,data="integer")
29
+ if operator is None:
30
+ return
31
+ elif operator in ['d',]:
32
+ operator=0
33
+ operator=operators[operator]
34
+
35
+ if operator == '==':
36
+ filters.append(getattr(Entry,i)==fd[i])
37
+ elif operator == '>':
38
+ filters.append(getattr(Entry,i)>fd[i])
39
+ elif operator == '>=':
40
+ filters.append(getattr(Entry,i)>=fd[i])
41
+ elif operator == '<':
42
+ filters.append(getattr(Entry,i)<fd[i])
43
+ elif operator == '<=':
44
+ filters.append(getattr(Entry,i)<=fd[i])
45
+ elif operator == '!=':
46
+ filters.append(getattr(Entry,i)!=fd[i])
47
+
48
+ ct=len(BooleanAnswers.and_or)
49
+ htext=[std_colorize(i,num,ct) for num,i in enumerate(BooleanAnswers.and_or)]
50
+ htext='\n'.join(htext)
51
+ operators=[i for i in BooleanAnswers.and_or]
52
+ print(htext)
53
+ operator=Prompt.__init2__(None,func=FormBuilderMkText,ptext="and | or? ",helpText=htext,data="integer")
54
+ if operator is None:
55
+ return
56
+ elif operator in ['d',]:
57
+ operator=0
58
+ operator=operators[operator]
59
+
60
+ if operator == 'and':
61
+ query=session.query(Entry).filter(and_(*filters))
62
+ query=orderQuery(query,Entry.Timestamp)
63
+ elif operator == 'or':
64
+ query=session.query(Entry).filter(or_(*filters))
65
+ query=orderQuery(query,Entry.Timestamp)
66
+ else:
67
+ query=session.query(Entry).filter(or_(*filters))
68
+ query=orderQuery(query,Entry.Timestamp)
69
+ else:
70
+ query=session.query(Entry)
71
+ query=orderQuery(query,Entry.Timestamp)
72
+ if query is not None:
73
+ results=query.all()
74
+ cta=len(results)
75
+ if cta < 1:
76
+ print("No Results")
77
+ return
78
+ for num,i in enumerate(results):
79
+ if short:
80
+ print(std_colorize(i.seeShort(),num,cta))
81
+ else:
82
+ print(std_colorize(i,num,cta))
83
+ print(f"Total Results: {len(results)}")
84
+
9
85
  def entrySearchBlank(self,just_code=True,fix=False):
10
86
  print("Looking for Blank Barcode|Code")
11
87
  with Session(ENGINE) as session:
@@ -149,6 +225,16 @@ class Lookup:
149
225
  'cmds':['13.f','sch blank fx','schblnk fx','sch \'\' fx','sch "" fx','sch blnk fx'],
150
226
  'exec':lambda self=self:self.entrySearchBlank(fix=True),
151
227
  'desc':f'{Fore.light_blue}Search For Product by Entry Data where or_(Entry.Code=="") and set Entry.Code=="UNASSIGNED_TO_NEW_ITEM"'
228
+ },
229
+ uuid1():{
230
+ 'cmds':['14','sch spec','schspec','spec sch','search specific','ssp','ssp+'],
231
+ 'exec':lambda self=self:self.searchSpec(),
232
+ 'desc':f'{Fore.light_blue}Search For Product by Entry Data using prompted fields'
233
+ },
234
+ uuid1():{
235
+ 'cmds':['14.1','sch spec sht','schspecsht','spec sch sht','search specific short','ssps','ssp-'],
236
+ 'exec':lambda self=self:self.searchSpec(short=True),
237
+ 'desc':f'{Fore.light_blue}Search For Product by Entry Data using prompted fields'
152
238
  }
153
239
  }
154
240
  def mehelp(self):
@@ -2,7 +2,7 @@ from . import *
2
2
 
3
3
 
4
4
  class OccurancesUi:
5
- first_time_excludes=['oid','hidden','hidden_dtoe','soft_deleted','soft_deleted_dtoe','created_dtoe','modified_dtoe','modified_how_many_times_since_created']
5
+ first_time_excludes=['oid','created_dtoe',]
6
6
  basic_includes=['name','type','unit_of_measure','quantity']
7
7
 
8
8
  group_fields=['group_name','group_uid']
@@ -19,6 +19,7 @@ class OccurancesUi:
19
19
  session.delete(OCT)
20
20
  session.commit()
21
21
  print("user backed out, nothing was saved!")
22
+ return
22
23
  for k in fd:
23
24
  setattr(OCT,k,fd[k])
24
25
  session.commit()
@@ -40,6 +41,7 @@ class OccurancesUi:
40
41
  session.delete(OCT)
41
42
  session.commit()
42
43
  print("user backed out, nothing was saved!")
44
+ return
43
45
  for k in fd:
44
46
  setattr(OCT,k,fd[k])
45
47
  session.commit()
@@ -49,11 +51,9 @@ class OccurancesUi:
49
51
  print(e)
50
52
  session.rollback()
51
53
 
52
- def edit_occurance(self):
53
- pass
54
-
55
54
  def lst_group_names(self):
56
55
  with Session(ENGINE) as session:
56
+ hs=[]
57
57
  search={
58
58
  'group_name':{
59
59
  'default':None,
@@ -62,6 +62,10 @@ class OccurancesUi:
62
62
  'group_uid':{
63
63
  'default':None,
64
64
  'type':'string',
65
+ },
66
+ 'oid':{
67
+ 'default':None,
68
+ 'type':'integer',
65
69
  }
66
70
  }
67
71
  fd=FormBuilder(data=search)
@@ -83,89 +87,276 @@ class OccurancesUi:
83
87
  ct=len(results)
84
88
  if ct == 0:
85
89
  print(std_colorize("No Results Found",0,1))
86
- return
90
+ return None,None
87
91
  for num,result in enumerate(results):
88
- self.master_display(result,num,ct)
92
+ hs.append(self.master_display(result,num,ct))
93
+ helpText='\n'.join(hs)
94
+ return results,helpText
95
+ return None,None
89
96
 
90
- return results
91
- return None
92
97
  def master_display(self,result,num,ct):
93
- print(std_colorize(f"{Fore.light_sea_green}[group name] '{result.group_name}' {Fore.dodger_blue3}- [guuid] '{result.group_uid}' -{Fore.green_yellow} [oid] '{result.oid}' - {Fore.light_magenta}[name] '{result.name}' - {Fore.magenta}[type] '{result.type}' - {Fore.orange_red_1}[qty] '{result.quantity}' {Fore.light_steel_blue}'{result.unit_of_measure}'{Fore.light_salmon_1} - [uid]'{result.uid}'",num,ct))
98
+ hstring=std_colorize(f"{Fore.light_sea_green}[group name] '{result.group_name}' {Fore.dodger_blue_3}- [guuid] '{result.group_uid}' -{Fore.green_yellow} [oid] '{result.oid}' - {Fore.light_magenta}[name] '{result.name}' - {Fore.magenta}[type] '{result.type}' - {Fore.orange_red_1}[qty] '{result.quantity}' {Fore.light_steel_blue}'{result.unit_of_measure}'{Fore.light_salmon_1} - [uid]'{result.uid}'",num,ct)
99
+ print(hstring)
100
+ return hstring
94
101
 
95
102
  def lst_names(self):
96
- pass
103
+ with Session(ENGINE) as session:
104
+ hs=[]
105
+ search={
106
+ 'name':{
107
+ 'default':None,
108
+ 'type':'string',
109
+ },
110
+ 'uid':{
111
+ 'default':None,
112
+ 'type':'string',
113
+ },
114
+ 'oid':{
115
+ 'default':None,
116
+ 'type':'integer',
117
+ }
118
+ }
119
+ fd=FormBuilder(data=search)
120
+ query=None
121
+ if fd is not None:
122
+ filters=[]
123
+ for i in fd:
124
+ if fd[i] is not None:
125
+ filters.append(getattr(Occurances,i).icontains(fd[i]))
126
+ query=session.query(Occurances).filter(or_(*filters))
127
+ query=orderQuery(query,Occurances.created_dtoe)
128
+ else:
129
+ query=session.query(Occurances)
130
+ query=orderQuery(query,Occurances.created_dtoe)
131
+ query=query.group_by(Occurances.uid)
97
132
 
98
- def edit_groups(self):
99
- pass
133
+ if query is not None:
134
+ results=query.all()
135
+ ct=len(results)
136
+ if ct == 0:
137
+ print(std_colorize("No Results Found",0,1))
138
+ return None,None
139
+ for num,result in enumerate(results):
140
+ hs.append(self.master_display(result,num,ct))
141
+ helpText='\n'.join(hs)
142
+ return results,helpText
143
+ return None,None
144
+ def total_by(self):
145
+ by=['group_name','group_uid','name','uid','type']
146
+ #need to select for total
100
147
 
101
- def delete_groups(self):
102
- pass
148
+ def copy_to_new(self,prompted=True):
149
+ local_excludes=['quantity','uid',]
150
+ #search and copy old details to a new Occurance setting created_dtoe to today, and quantity to 0
151
+ with Session(ENGINE) as session:
152
+ while True:
153
+ search,helpText=self.lst_names()
154
+ if search is None:
155
+ return
156
+ whiches=Prompt.__init2__(None,func=FormBuilderMkText,ptext="which indexes to copy to new Occurances",helpText=helpText,data="list")
157
+ if whiches in [None,'d']:
158
+ return
159
+ cta=len(search)
160
+ try:
161
+ for which in whiches:
162
+ try:
163
+ which=int(which)
164
+ if which in range(0,cta+1):
165
+ oid=search[which].oid
166
+ x=session.query(Occurances).filter(Occurances.oid==oid).first()
167
+ new=Occurances()
168
+ session.add(new)
169
+ excludes=[]
170
+ excludes.extend(self.first_time_excludes)
171
+ excludes.extend(local_excludes)
172
+ if prompted:
173
+ fields={i.name:{'default':getattr(x,i.name),'type':str(i.type).lower()} for i in Occurances.__table__.columns if i.name not in excludes}
174
+ fd=FormBuilder(data=fields)
175
+ else:
176
+ fd={}
177
+ fields=[i.name for i in Occurances.__table__.columns if i.name not in excludes]
178
+ for k in fields:
179
+ old=getattr(x,k)
180
+ fd[k]=old
103
181
 
104
- def searchAuto(self):
105
- pass
182
+ includes2=['quantity',]
183
+ fields2={i.name:{'default':getattr(x,i.name),'type':str(i.type).lower()} for i in Occurances.__table__.columns if i.name in includes2}
184
+ fd2=FormBuilder(data=fields2)
185
+ if fd2:
186
+ fd['quantity']=fd2['quantity']
187
+ else:
188
+ fd['quantity']=0
189
+ fd['name']=f"{fd['name']} {dayString(datetime.now())}"
190
+ if fd:
191
+ try:
192
+ for k in fd:
193
+ setattr(new,k,fd[k])
194
+ session.commit()
195
+ except Exception as eee:
196
+ print(eee)
197
+ session.rollback()
198
+ except Exception as e:
199
+ print(e)
200
+ return
201
+ except Exception as ee:
202
+ print(ee)
203
+ break
106
204
 
107
- def set_max_pre(self):
108
- pass
109
- def set_min_pre(self):
110
- pass
111
- def set_min_post(self):
112
- pass
113
- def set_max_post(self):
114
- pass
205
+ def edit_selected(self):
206
+ with Session(ENGINE) as session:
207
+ while True:
208
+ search,helpText=self.lst_names()
209
+ if search is None:
210
+ return
211
+ whiches=Prompt.__init2__(None,func=FormBuilderMkText,ptext="which indexes to edit",helpText=helpText,data="list")
212
+ if whiches in [None,'d']:
213
+ return
214
+ cta=len(search)
215
+ try:
216
+ for which in whiches:
217
+ try:
218
+ which=int(which)
219
+ if which in range(0,cta+1):
220
+ oid=search[which].oid
221
+ x=session.query(Occurances).filter(Occurances.oid==oid).first()
222
+ fields={i.name:{'default':getattr(x,i.name),'type':str(i.type).lower()} for i in Occurances.__table__.columns if i.name not in self.first_time_excludes}
223
+ fd=FormBuilder(data=fields)
224
+ if fd:
225
+ try:
226
+ for k in fd:
227
+ setattr(x,k,fd[k])
228
+ session.commit()
229
+ except Exception as eee:
230
+ print(eee)
231
+ session.rollback()
232
+ except Exception as e:
233
+ print(e)
234
+ return
235
+ except Exception as ee:
236
+ print(ee)
237
+ break
238
+
239
+ def edit_selected_qty(self):
240
+ with Session(ENGINE) as session:
241
+ while True:
242
+ search,helpText=self.lst_names()
243
+ if search is None:
244
+ return
245
+ whiches=Prompt.__init2__(None,func=FormBuilderMkText,ptext="which indexes to edit",helpText=helpText,data="list")
246
+ if whiches in [None,'d']:
247
+ return
248
+ cta=len(search)
249
+ try:
250
+ for which in whiches:
251
+ try:
252
+ which=int(which)
253
+ if which in range(0,cta+1):
254
+ oid=search[which].oid
255
+ x=session.query(Occurances).filter(Occurances.oid==oid).first()
256
+ includes=['quantity',]
257
+ fields={i.name:{'default':getattr(x,i.name),'type':str(i.type).lower()} for i in Occurances.__table__.columns if i.name in includes}
258
+ fd=FormBuilder(data=fields)
259
+ if fd:
260
+ try:
261
+ for k in fd:
262
+ setattr(x,k,fd[k])
263
+ session.commit()
264
+ except Exception as eee:
265
+ print(eee)
266
+ session.rollback()
267
+ except Exception as e:
268
+ print(e)
269
+ return
270
+ except Exception as ee:
271
+ print(ee)
272
+ break
115
273
 
116
- #hide
117
- def set_hidden(self):
118
- pass
274
+ def delete_groups_uid(self):
275
+ with Session(ENGINE) as session:
276
+ while True:
277
+ search,helpText=self.lst_group_names()
278
+ if search is None:
279
+ return
280
+ whiches=Prompt.__init2__(None,func=FormBuilderMkText,ptext="which indexes to delete",helpText=helpText,data="list")
281
+ if whiches in [None,'d']:
282
+ return
283
+ cta=len(search)
284
+ try:
285
+ for which in whiches:
286
+ try:
287
+ which=int(which)
288
+ if which in range(0,cta+1):
289
+ guid=search[which].group_uid
290
+ x=session.query(Occurances).filter(Occurances.group_uid==guid).delete()
291
+ session.commit()
292
+ except Exception as e:
293
+ print(e)
294
+ return
295
+ except Exception as ee:
296
+ print(ee)
297
+ break
119
298
 
120
- def set_soft_delete(self):
121
- pass
122
- def set_unit_of_measure(self):
123
- pass
124
- def set_qty(self):
125
- pass
299
+ def delete_groups_name(self):
300
+ with Session(ENGINE) as session:
301
+ while True:
302
+ search,helpText=self.lst_group_names()
303
+ if search is None:
304
+ return
305
+ whiches=Prompt.__init2__(None,func=FormBuilderMkText,ptext="which indexes to delete",helpText=helpText,data="list")
306
+ if whiches in [None,'d']:
307
+ return
308
+ cta=len(search)
309
+ try:
310
+ for which in whiches:
311
+ try:
312
+ which=int(which)
313
+ #print(which,which in range(0,cta),cta,range(0,cta))
314
+ if which in range(0,cta+1):
315
+ guid=search[which].group_name
316
+ print(guid)
317
+ x=session.query(Occurances).filter(Occurances.group_name==search[which].group_name).delete()
318
+ session.commit()
319
+ except Exception as e:
320
+ print(e)
321
+ return
322
+ except Exception as ee:
323
+ print(ee)
324
+ break
126
325
 
127
326
  def delete(self):
128
- pass
129
-
130
- def search_select(self,rTYPE=list,display=True):
131
- '''Search for, select,
132
- display selected, or
133
- return selected as:
134
- list of Occurances
135
- a single Occurance
136
-
137
- '''
138
327
  with Session(ENGINE) as session:
139
- stext=Prompt.__init2__(None,func=FormBuilderMkText,ptext="What are you looking for?",helpText="text data to search for",data="string")
140
- if stext is None:
141
- return
142
- elif stext in ['d','']:
143
- pass
328
+ while True:
329
+ search,helpText=self.lst_names()
330
+ if search is None:
331
+ return
332
+ whiches=Prompt.__init2__(None,func=FormBuilderMkText,ptext="which indexes to delete",helpText=helpText,data="list")
333
+ if whiches in [None,'d']:
334
+ return
335
+ cta=len(search)
336
+ try:
337
+ for which in whiches:
338
+ try:
339
+ which=int(which)
340
+ #print(which,which in range(0,cta),cta,range(0,cta))
341
+ if which in range(0,cta+1):
342
+ oid=search[which].oid
343
+ x=session.query(Occurances).filter(Occurances.oid==oid).delete()
344
+ session.commit()
345
+ except Exception as e:
346
+ print(e)
347
+ return
348
+ except Exception as ee:
349
+ print(ee)
350
+ break
144
351
 
352
+ def list_all(self):
353
+ with Session(ENGINE) as session:
145
354
  query=session.query(Occurances)
146
- text_fields=[]
147
- text_query_fields=[]
148
- #setup filters for stext
149
-
150
- query=orderQuery(query,Occurances.created_dtoe,inverse=True)
355
+ query=orderQuery(query,Occurances.created_dtoe)
151
356
  results=query.all()
152
- def display_results(results,session,query):
153
- pass
154
- if isinstance(rTYPE,list) or rType is list:
155
- if display:
156
- display_results(results,session,query)
157
- else:
158
- #list selector here
159
- return results
160
- elif isinstance(rTYPE,Occurances) or rType is Occurances:
161
- if display:
162
- display_results(results,session,query)
163
- else:
164
- pass
165
- #Occurance selector here
166
- return results
167
- else:
168
- display_results(results,session,query)
357
+ ct=len(results)
358
+ for num, i in enumerate(results):
359
+ self.master_display(i,num,ct)
169
360
 
170
361
  def fix_table(self):
171
362
  Occurances.__table__.drop(ENGINE)
@@ -190,9 +381,54 @@ class OccurancesUi:
190
381
  },
191
382
  uuid1():{
192
383
  'cmds':generate_cmds(startcmd=['lst','list','ls','l'],endCmd=['group names','grpnms','group-names','group_names']),
193
- 'desc':f"list group names and uids",
384
+ 'desc':f"list group names and group uids",
194
385
  'exec':self.lst_group_names,
386
+ },
387
+ uuid1():{
388
+ 'cmds':generate_cmds(startcmd=['lst','list','ls','l'],endCmd=['names','nms','nmes']),
389
+ 'desc':f"list names and uids, group by uid",
390
+ 'exec':self.lst_names,
391
+ },
392
+ uuid1():{
393
+ 'cmds':generate_cmds(startcmd=['delete','del','remove','rem','rm'],endCmd=['',' ']),
394
+ 'desc':f"delete occurances data",
395
+ 'exec':self.delete,
396
+ },
397
+ uuid1():{
398
+ 'cmds':generate_cmds(startcmd=['delete','del','remove','rem','rm'],endCmd=['grps uid','groups uid','grps-uid','grpsuid']),
399
+ 'desc':f"delete occurances data by group uid",
400
+ 'exec':self.delete_groups_uid,
195
401
  },
402
+ uuid1():{
403
+ 'cmds':generate_cmds(startcmd=['delete','del','remove','rem','rm'],endCmd=['grps nm','groups name','grps-nm','grpsnm']),
404
+ 'desc':f"delete occurances data by group name",
405
+ 'exec':self.delete_groups_name,
406
+ },
407
+ uuid1():{
408
+ 'cmds':generate_cmds(startcmd=['lst','list','ls','l'],endCmd=["all","a","*"]),
409
+ 'desc':f"list all",
410
+ 'exec':self.list_all,
411
+ },
412
+ uuid1():{
413
+ 'cmds':generate_cmds(startcmd=['edit','edt','ed'],endCmd=['occurance','cntr','selected','s',]),
414
+ 'desc':f"edit occurances data",
415
+ 'exec':self.edit_selected,
416
+ },
417
+ uuid1():{
418
+ 'cmds':generate_cmds(startcmd=['edit','edt','ed'],endCmd=['quantity','qty','amnt','amount']),
419
+ 'desc':f"edit occurances quantity only",
420
+ 'exec':self.edit_selected_qty,
421
+ },
422
+ uuid1():{
423
+ 'cmds':generate_cmds(startcmd=['cp','copy','cpy'],endCmd=['2new','2 new',' ','']),
424
+ 'desc':f"copy all details of Occurances to new Occurance except for quantity and uids prompting for user provided changes to old",
425
+ 'exec':self.copy_to_new,
426
+ },
427
+ uuid1():{
428
+ 'cmds':generate_cmds(startcmd=['cp','copy','cpy'],endCmd=['2new np','2 new np','2nw np','2 new no prompt','2new no-prompt']),
429
+ 'desc':f"copy all details of Occurances to new Occurance except for quantity and uids prompting for user provided changes to old",
430
+ 'exec':lambda self=self:self.copy_to_new(prompted=False),
431
+ },
196
432
  }
197
433
 
198
434
  htext=[]
radboy/__init__.py CHANGED
@@ -1 +1 @@
1
- VERSION='0.0.500'
1
+ VERSION='0.0.502'
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: radboy
3
- Version: 0.0.500
3
+ Version: 0.0.502
4
4
  Summary: A small example package
5
5
  Author: Carl Joseph Hirner III
6
6
  Author-email: Carl Hirner III <k.j.hirner.wisdom@gmail.com>
@@ -5,7 +5,7 @@ radboy/Holidays.txt,sha256=y-JZPihh5iaWKxMIHNXD39yVuVmf1vMs4FdNDcg0f1Y,3114
5
5
  radboy/InventoryGlossary.txt,sha256=018-Yqca6DFb10jPdkUY-5qhkRlQN1k3rxoTaERQ-LA,91008
6
6
  radboy/RecordMyCodes.py,sha256=Lt2reA6xchq3U7Y08DvkrHboZ25i1ts7X2E9gSIwcVg,41101
7
7
  radboy/Run.py,sha256=JUoCTHnzQBv7n8PB2_i93ANdAC_iW__RkAge8esCnk4,76
8
- radboy/__init__.py,sha256=7MYe_lxc8Ci3RHVydZNAUtYKPcTWSMBSPtmD_KA5JEk,17
8
+ radboy/__init__.py,sha256=Us27Bqzc2h2YT-8rjX2f1imPTMI9oyE6_sdTy5_ht9I,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
@@ -92,7 +92,7 @@ radboy/DB/SMLabelImporter.py,sha256=eUoBDxVUUEKGL2g_PwkASM67ZB7FmXtSnn4bCagskhY,
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=5OupVpg7B2gtNopY5efcglKaV1yQyQW8j9ENU9QLnow,246414
95
+ radboy/DB/db.py,sha256=lFGyGn4ZD6PDg3dOQZxRCk3HLLp88cGrpBlUyiB2mhc,246363
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
@@ -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=I8qlQslulnTWhklBVkTRZfpD1TQSmu7qyuiib63iRNI,392315
130
+ radboy/DB/__pycache__/db.cpython-313.pyc,sha256=iCo8Bq54dG0hlAzKeAXOSRUs8t6gPQomS7rg5qDjuc4,392241
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
@@ -254,17 +254,17 @@ radboy/Lookup/__pycache__/Lookup.cpython-313.pyc,sha256=XLNpbTGk4ryJSRvzf2SDzoxI
254
254
  radboy/Lookup/__pycache__/__init__.cpython-311.pyc,sha256=Jm4q7Xibyc4UjYYBeYK6uBoMNTBCYoivU7FCtdX5G08,231
255
255
  radboy/Lookup/__pycache__/__init__.cpython-312.pyc,sha256=-3XFxnbTtwL4YFln0aSCyRFd2DD-Gr2-UoBV-eOOqqs,269
256
256
  radboy/Lookup/__pycache__/__init__.cpython-313.pyc,sha256=p5qY0NPTD_pjFDK1cIJ6qwHaJb91xspPXboIvk-dIgE,148
257
- radboy/Lookup2/Lookup2.py,sha256=Sl2MsiFId83he4bCiwM3FgXpWqXyFEsleWCbhquLhtg,22887
257
+ radboy/Lookup2/Lookup2.py,sha256=IEutQYva9s5l1b74xT_ldq9qOUAVr5BTXcGeiRX57bk,25971
258
258
  radboy/Lookup2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
259
259
  radboy/Lookup2/__pycache__/Lookup2.cpython-312.pyc,sha256=Mka0F5UbDbhfF0ogsnklb8eVJz1v7H8hcm5N0yEjUjI,35474
260
- radboy/Lookup2/__pycache__/Lookup2.cpython-313.pyc,sha256=LmqbvP4sladF32erK97o9iI5YKnlPhdecLZpiIvYZrE,41781
260
+ radboy/Lookup2/__pycache__/Lookup2.cpython-313.pyc,sha256=JDaPNWBUvdYQXJp2L71fYWp8m1TMe4uVHDKyDBxPoDk,46917
261
261
  radboy/Lookup2/__pycache__/__init__.cpython-312.pyc,sha256=0mqw_7WZPG7luwCFsqX5YMx3-2pN9URwnp8cuel5rGM,270
262
262
  radboy/Lookup2/__pycache__/__init__.cpython-313.pyc,sha256=iuBE5G-ThcR2mSYUgGwZI8WCpQwwJXy6hHnYI-h97_Y,149
263
263
  radboy/ModuleTemplate/Tasks.py,sha256=RF4sWnLH4FyzMU8AHOov7WP24-udd96-l9c9SvbIP_0,1088
264
264
  radboy/ModuleTemplate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
265
265
  radboy/ModuleTemplate/__pycache__/Tasks.cpython-311.pyc,sha256=rllpmYgt71yfhr2e08OB_iYnlcO5eIIGCQErAj6ikTA,1989
266
266
  radboy/ModuleTemplate/__pycache__/__init__.cpython-311.pyc,sha256=J6kTs2HBMSDNpjWxKLwzOfg70xEDLVtulYrYvCVF3Mw,239
267
- radboy/Occurances/Occurances.py,sha256=yyazaVz4RuPmg3LDWQOuyFDcAEwo4wmRiiqHZSQbvVE,6177
267
+ radboy/Occurances/Occurances.py,sha256=ll7QGbkZRmrSKBhJxUW1GaEB4c2spQejkeLSYVAMQ0I,14357
268
268
  radboy/Occurances/__init__.py,sha256=Xv528_TFNgaC7fr3ykgYG4qUxoz-_8dQMEAhDBAtdXw,930
269
269
  radboy/Of/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
270
270
  radboy/Of/of.py,sha256=l5YyMVe4rixyYeJZ6BKzkVEr7lk2SuMyPxm14LMwF9c,1341
@@ -398,7 +398,7 @@ radboy/__pycache__/Run.cpython-311.pyc,sha256=G_UEfMtkLRjR6ZpGA_BJzGenuaCcP469Y9
398
398
  radboy/__pycache__/Run.cpython-312.pyc,sha256=v4xolc3mHyla991XhpYBUbBHYT0bnJ1gE-lkFoQ4GFA,241
399
399
  radboy/__pycache__/__init__.cpython-311.pyc,sha256=R-DVbUioMOW-Fnaq7FpT5F1a5p0q3b_RW-HpLRArCAY,242
400
400
  radboy/__pycache__/__init__.cpython-312.pyc,sha256=FsFzLXOlTK8_7ixoPZzakkR8Wibt-DvXLFh-oG2QlPw,164
401
- radboy/__pycache__/__init__.cpython-313.pyc,sha256=e0cS7JRd01K3U6wS7WrU9juoeBGPfAoHUi6b0FIBWrA,165
401
+ radboy/__pycache__/__init__.cpython-313.pyc,sha256=6-d12VLxilYwsrI29rhnmzNU2ME2iS6onbVZS7eh_TI,165
402
402
  radboy/__pycache__/__init__.cpython-39.pyc,sha256=D48T6x6FUeKPfubo0sdS_ZUut3FmBvPMP7qT6rYBZzU,275
403
403
  radboy/__pycache__/possibleCode.cpython-311.pyc,sha256=zFiHyzqD8gUnIWu4vtyMYIBposiRQqaRXfcT_fOl4rU,20882
404
404
  radboy/__pycache__/possibleCode.cpython-312.pyc,sha256=tk_CO-AcsO3YZj5j6vEsw3g37UmEzWc5YgeWEoJEUg4,27922
@@ -423,7 +423,7 @@ radboy/tkGui/Images/__pycache__/__init__.cpython-311.pyc,sha256=tXBYpqbOlZ24B1BI
423
423
  radboy/tkGui/__pycache__/BeginnersLuck.cpython-311.pyc,sha256=xLQOnV1wuqHGaub16mPX0dDMGU9ryCeLtNz5e517_GE,3004
424
424
  radboy/tkGui/__pycache__/Review.cpython-311.pyc,sha256=wKq24iM6Xe2OampgZ7-8U6Nvmgs2y-qWOrGwtWhc75k,4047
425
425
  radboy/tkGui/__pycache__/__init__.cpython-311.pyc,sha256=BX7DBn5qbvKTvlrKOP5gzTBPBTeTgSMjBW6EMl7N8e0,230
426
- radboy-0.0.500.dist-info/METADATA,sha256=JOt_xv1HpY38XNmpbZElVcW7o6m1BECqgE5Whw4m6dE,1601
427
- radboy-0.0.500.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
428
- radboy-0.0.500.dist-info/top_level.txt,sha256=mlM0RWMUxGo1YHnlLmYrHOgGdK4XNRpr7nMFD5lR56c,7
429
- radboy-0.0.500.dist-info/RECORD,,
426
+ radboy-0.0.502.dist-info/METADATA,sha256=v8Lzb-Jq6PpPYX-siwJ9DtjSyZUrRwU5QJup-iaZCe8,1601
427
+ radboy-0.0.502.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
428
+ radboy-0.0.502.dist-info/top_level.txt,sha256=mlM0RWMUxGo1YHnlLmYrHOgGdK4XNRpr7nMFD5lR56c,7
429
+ radboy-0.0.502.dist-info/RECORD,,