Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -324,7 +324,7 @@ def summarisePerStore():
|
|
| 324 |
sesh.summary_joined[store][item] = {'product_dict': pd, 'count':1}
|
| 325 |
|
| 326 |
|
| 327 |
-
def updateItemDisplay(budget=False):
|
| 328 |
if True:
|
| 329 |
keys = ['filtered_items_room', 'current_img_signature', 'items', 'filtered_items_style', 'room_style', 'room_type', 'bedsize', 'price', 'filtered_items_colors', 'Palette_ids', 'item_data', 'item_data_', 'display_items', 'item_data_keys', 'Palettes_displayed', 'room_img_loaded', 'Paletteid', 'img_id', 'seshid']
|
| 330 |
url = 'https://dreamdemo.pythonanywhere.com/sesh'
|
|
@@ -502,12 +502,13 @@ def isJSONSerialiazable(obj):
|
|
| 502 |
except:
|
| 503 |
return False
|
| 504 |
|
| 505 |
-
def updateItemDisplay(budget=False):
|
| 506 |
if True:
|
| 507 |
keys = ['filtered_items_room', 'current_img_signature', 'items', 'filtered_items_style', 'room_style', 'room_type', 'bedsize', 'price', 'filtered_items_colors', 'Palette_ids', 'item_data', 'item_data_', 'display_items', 'item_data_keys', 'Palettes_displayed', 'room_img_loaded', 'Paletteid', 'img_id', 'seshid']
|
| 508 |
url = 'https://dreamdemo.pythonanywhere.com/sesh'
|
| 509 |
data = sesh.__dict__
|
| 510 |
valid_data = {k:v for k,v in data.items() if k in keys and isJSONSerialiazable(v)}
|
|
|
|
| 511 |
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
|
| 512 |
|
| 513 |
if True: #try:
|
|
@@ -620,7 +621,7 @@ first mover
|
|
| 620 |
"""
|
| 621 |
|
| 622 |
|
| 623 |
-
def updateRoomType(evt: gr.SelectData):
|
| 624 |
label = evt.value['caption'].lower().split()[0] if evt.value['caption'] else sesh.room_type
|
| 625 |
sesh.room_type = label
|
| 626 |
images = [(v['bedroom'] if sesh.room_type == 'bedroom' else v['living room'], k) for k,v in styles_images.items()]
|
|
@@ -630,7 +631,7 @@ def updateRoomType(evt: gr.SelectData):
|
|
| 630 |
#display = updateItemDisplay()
|
| 631 |
|
| 632 |
if hasattr(sesh, 'room_img_loaded') and sesh.room_img_loaded:
|
| 633 |
-
display = updateItemDisplay()
|
| 634 |
else:
|
| 635 |
display = sesh.updated_display
|
| 636 |
|
|
@@ -646,12 +647,12 @@ def updateRoomType(evt: gr.SelectData):
|
|
| 646 |
return images, gr.Radio(['Full', 'Queen', 'King'], value='Full', label='Bed Size', interactive=True, visible=True) if label == 'bedroom' else gr.Radio(visible=False), gr.Gallery(sesh.updated_display, label='Room Items', columns=5)"""
|
| 647 |
|
| 648 |
|
| 649 |
-
def updateStyle(evt: gr.SelectData):
|
| 650 |
style = evt.value['caption'].lower().split()[0] if evt.value['caption'] else sesh.room_style
|
| 651 |
sesh.room_style = style
|
| 652 |
|
| 653 |
if hasattr(sesh, 'room_img_loaded') and sesh.room_img_loaded:
|
| 654 |
-
display = updateItemDisplay()
|
| 655 |
return display
|
| 656 |
else:
|
| 657 |
return sesh.updated_display
|
|
@@ -664,14 +665,14 @@ def updateStyle(evt: gr.SelectData):
|
|
| 664 |
sesh.filtered_items_style[sesh.current_img_signature] = {item: ifiles if item in ['Palette', 'Living Room', 'Bedroom'] else [f for f in ifiles if '_'.join(sesh.price.replace('-', ' ').lower().split()) in f] for item,ifiles in sesh.filtered_items_style[sesh.current_img_signature].items()}
|
| 665 |
print('updateStyle: ', [(item,len(ifiles)) for item,ifiles in sesh.filtered_items_style[sesh.current_img_signature].items()])"""
|
| 666 |
|
| 667 |
-
def updatePrice(evt: gr.SelectData):
|
| 668 |
print('updatePrice: ', type(evt.value), evt.value)
|
| 669 |
price = evt.value if evt.value else sesh.price
|
| 670 |
sesh.price = price
|
| 671 |
|
| 672 |
|
| 673 |
if hasattr(sesh, 'room_img_loaded') and sesh.room_img_loaded:
|
| 674 |
-
display = updateItemDisplay()
|
| 675 |
return display
|
| 676 |
else:
|
| 677 |
return sesh.updated_display
|
|
@@ -684,13 +685,13 @@ def updatePrice(evt: gr.SelectData):
|
|
| 684 |
sesh.filtered_items_style[sesh.current_img_signature] = {item: ifiles if item in ['Palette', 'Living Room', 'Bedroom'] else [f for f in ifiles if '_'.join(sesh.price.replace('-', ' ').lower().split()) in f] for item,ifiles in sesh.filtered_items_style[sesh.current_img_signature].items()}
|
| 685 |
print('updatePrice: ', [(item,len(ifiles)) for item,ifiles in sesh.filtered_items_style[sesh.current_img_signature].items()]) """
|
| 686 |
|
| 687 |
-
def updateBedsize(evt: gr.SelectData):
|
| 688 |
bedsize = evt.value if evt.value else sesh.bedsize
|
| 689 |
sesh.bedsize = bedsize
|
| 690 |
|
| 691 |
|
| 692 |
if hasattr(sesh, 'room_img_loaded') and sesh.room_img_loaded:
|
| 693 |
-
display = updateItemDisplay()
|
| 694 |
return display
|
| 695 |
else:
|
| 696 |
return sesh.updated_display
|
|
@@ -705,7 +706,7 @@ def updateBedsize(evt: gr.SelectData):
|
|
| 705 |
|
| 706 |
|
| 707 |
#sesh.palettes_data
|
| 708 |
-
def updateColors(evt: gr.SelectData):
|
| 709 |
Paletteid = evt.value['caption'] if evt.value['caption'] else '0'
|
| 710 |
sesh.Paletteid = evt.value['caption']
|
| 711 |
sesh.Palette_ids[sesh.current_img_signature] = Paletteid
|
|
@@ -721,7 +722,7 @@ def updateColors(evt: gr.SelectData):
|
|
| 721 |
sesh.Palette_imgs[sesh.img_id] = sesh.Palette_img
|
| 722 |
|
| 723 |
if hasattr(sesh, 'room_img_loaded') and sesh.room_img_loaded:
|
| 724 |
-
display = updateItemDisplay()
|
| 725 |
return display
|
| 726 |
else:
|
| 727 |
return sesh.updated_display
|
|
@@ -776,11 +777,11 @@ def updateColors(evt: gr.SelectData):
|
|
| 776 |
|
| 777 |
#Palettes_displayed, Palettes
|
| 778 |
|
| 779 |
-
def makePalettes(evt: gr.SelectData):
|
| 780 |
#print('makePalettes: ', type(evt.value), evt.value)
|
| 781 |
sesh.img_id = sesh.current_img_signature = evt.value['caption'] if evt.value['caption'] else sesh.current_img_signature
|
| 782 |
if sesh.current_img_signature in sesh.Palettes_displayed:
|
| 783 |
-
display = updateItemDisplay()
|
| 784 |
return sesh.Palettes_displayed[sesh.current_img_signature], sesh.img_data[sesh.current_img_signature], display
|
| 785 |
|
| 786 |
img = sesh.img_data[sesh.img_id]
|
|
@@ -806,7 +807,8 @@ def makePalettes(evt: gr.SelectData):
|
|
| 806 |
#print('bestclr_keys: ', bestclr_keys)
|
| 807 |
url = 'https://dreamdemo.pythonanywhere.com/palletes'
|
| 808 |
#valid_data = {'seshid': str(sesh.seshid), 'img_id':str(sesh.img_id), 'dark_light_bool':str(dark_light_bool), 'bestclr_keys':bestclr_keys}
|
| 809 |
-
valid_data = {'seshid': str(sesh.seshid), 'img_id':str(sesh.img_id), 'dark_light_bool':str(dark_light_bool), 'counts_srtd_rgb':counts_srtd_rgb}
|
|
|
|
| 810 |
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
|
| 811 |
#print('json requests response: ', str({k:(type(v), None if type(v) != type(dict({})) or not v else (type(list(v.items())[0][0]), type(list(v.items())[0][1]))) for k,v in valid_data.items()}))
|
| 812 |
#print('json requests response: ', str({k:(type(v), None if type(v) != type(dict({})) or not v else (type(list(v.items())[0][0]), type(list(v.items())[0][1]))) for k,v in data.items()}))
|
|
@@ -887,7 +889,7 @@ def makePalettes(evt: gr.SelectData):
|
|
| 887 |
sesh.Palette_img[150:,:] = palettes_data[0][3]
|
| 888 |
|
| 889 |
sesh.Palette_imgs[sesh.img_id] = sesh.Palette_img
|
| 890 |
-
display = updateItemDisplay()
|
| 891 |
|
| 892 |
sesh.Palettes_displayed[sesh.current_img_signature] = Palette_out
|
| 893 |
|
|
@@ -1203,12 +1205,12 @@ def updateProductCount(count):
|
|
| 1203 |
|
| 1204 |
return gr.Label(str(sesh.counts_totals[sesh.summary_store][0]) if sesh.summary_store and sesh.summary_radio != 'Complete' else all_counts, label='Number of Items'), gr.Label('$'+str(np.round(sesh.counts_totals[sesh.summary_store][1], 2)) if sesh.summary_store and sesh.summary_radio != 'Complete' else '$'+str(np.round(all_totals, 2)), label='Total')
|
| 1205 |
|
| 1206 |
-
def updateBudget(budget_number):
|
| 1207 |
sesh.budget_number = float(budget_number)
|
| 1208 |
#sesh.item_budgets = {img: {item: int(weight*sesh.budget_number) for item,weight in weights.items()} for img,weights in sesh.product_means_weights.items()}
|
| 1209 |
#print('updateBudget: ', sesh.budget_number, sesh.item_budgets)
|
| 1210 |
|
| 1211 |
-
display = updateItemDisplay(budget=True)
|
| 1212 |
sesh.counts_totals = {store:selectMerchantItemCountAndTotal(store) for store in sesh.summary_joined}
|
| 1213 |
all_counts = str(sum([ct[0] for store,ct in sesh.counts_totals.items()]))
|
| 1214 |
all_totals = sum([ct[1] for store,ct in sesh.counts_totals.items()])
|
|
@@ -2593,20 +2595,22 @@ with gr.Blocks(theme=gr.themes.Monochrome(), js=js_func) as demo:
|
|
| 2593 |
|
| 2594 |
|
| 2595 |
upload_photo.click(submitPhoto, [upload, choose_room], [choose_room, upload])
|
| 2596 |
-
choose_room.select(makePalettes, None, [color_Palettes, room2decorate, room_items])
|
|
|
|
| 2597 |
|
| 2598 |
#upload_photo.click(submitPhoto, upload, [working_room, upload])
|
| 2599 |
#working_room.select(makePalettes, None, [working_room1, color_Palettes])
|
| 2600 |
-
working_room.select(makePalettes, None, [working_room1, working_room2, working_room3, color_Palettes, room_items])
|
|
|
|
| 2601 |
#rooms_gallery.select(set_style, None, [design_gallery, bedsize_radio, room_items])
|
| 2602 |
-
rooms_gallery.select(updateRoomType,
|
| 2603 |
|
| 2604 |
#color_Palettes.select(set_Palette, None, None)
|
| 2605 |
-
color_Palettes.select(updateColors,
|
| 2606 |
|
| 2607 |
-
design_gallery.select(updateStyle,
|
| 2608 |
-
price_radio.select(updatePrice,
|
| 2609 |
-
bedsize_radio.select(updateBedsize,
|
| 2610 |
|
| 2611 |
replace.select(productClick, None, merchant)
|
| 2612 |
replace_item.click(replaceProduct, None, [items_display, item_side, room_side, colors_side, merchant, replace, ads, room_items])
|
|
@@ -2619,7 +2623,7 @@ with gr.Blocks(theme=gr.themes.Monochrome(), js=js_func) as demo:
|
|
| 2619 |
|
| 2620 |
product_dropdown.select(displaySource, None, [source, count])
|
| 2621 |
count.change(updateProductCount, count, [total, num_of_items])
|
| 2622 |
-
budget.submit(updateBudget, budget, [room_items, total, num_of_items])
|
| 2623 |
|
| 2624 |
|
| 2625 |
|
|
|
|
| 324 |
sesh.summary_joined[store][item] = {'product_dict': pd, 'count':1}
|
| 325 |
|
| 326 |
|
| 327 |
+
def updateItemDisplay(seshid, budget=False):
|
| 328 |
if True:
|
| 329 |
keys = ['filtered_items_room', 'current_img_signature', 'items', 'filtered_items_style', 'room_style', 'room_type', 'bedsize', 'price', 'filtered_items_colors', 'Palette_ids', 'item_data', 'item_data_', 'display_items', 'item_data_keys', 'Palettes_displayed', 'room_img_loaded', 'Paletteid', 'img_id', 'seshid']
|
| 330 |
url = 'https://dreamdemo.pythonanywhere.com/sesh'
|
|
|
|
| 502 |
except:
|
| 503 |
return False
|
| 504 |
|
| 505 |
+
def updateItemDisplay(seshid, budget=False):
|
| 506 |
if True:
|
| 507 |
keys = ['filtered_items_room', 'current_img_signature', 'items', 'filtered_items_style', 'room_style', 'room_type', 'bedsize', 'price', 'filtered_items_colors', 'Palette_ids', 'item_data', 'item_data_', 'display_items', 'item_data_keys', 'Palettes_displayed', 'room_img_loaded', 'Paletteid', 'img_id', 'seshid']
|
| 508 |
url = 'https://dreamdemo.pythonanywhere.com/sesh'
|
| 509 |
data = sesh.__dict__
|
| 510 |
valid_data = {k:v for k,v in data.items() if k in keys and isJSONSerialiazable(v)}
|
| 511 |
+
valid_data['seshid'] = seshid
|
| 512 |
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
|
| 513 |
|
| 514 |
if True: #try:
|
|
|
|
| 621 |
"""
|
| 622 |
|
| 623 |
|
| 624 |
+
def updateRoomType(evt: gr.SelectData, seshid):
|
| 625 |
label = evt.value['caption'].lower().split()[0] if evt.value['caption'] else sesh.room_type
|
| 626 |
sesh.room_type = label
|
| 627 |
images = [(v['bedroom'] if sesh.room_type == 'bedroom' else v['living room'], k) for k,v in styles_images.items()]
|
|
|
|
| 631 |
#display = updateItemDisplay()
|
| 632 |
|
| 633 |
if hasattr(sesh, 'room_img_loaded') and sesh.room_img_loaded:
|
| 634 |
+
display = updateItemDisplay(seshid)
|
| 635 |
else:
|
| 636 |
display = sesh.updated_display
|
| 637 |
|
|
|
|
| 647 |
return images, gr.Radio(['Full', 'Queen', 'King'], value='Full', label='Bed Size', interactive=True, visible=True) if label == 'bedroom' else gr.Radio(visible=False), gr.Gallery(sesh.updated_display, label='Room Items', columns=5)"""
|
| 648 |
|
| 649 |
|
| 650 |
+
def updateStyle(evt: gr.SelectData, seshid):
|
| 651 |
style = evt.value['caption'].lower().split()[0] if evt.value['caption'] else sesh.room_style
|
| 652 |
sesh.room_style = style
|
| 653 |
|
| 654 |
if hasattr(sesh, 'room_img_loaded') and sesh.room_img_loaded:
|
| 655 |
+
display = updateItemDisplay(seshid)
|
| 656 |
return display
|
| 657 |
else:
|
| 658 |
return sesh.updated_display
|
|
|
|
| 665 |
sesh.filtered_items_style[sesh.current_img_signature] = {item: ifiles if item in ['Palette', 'Living Room', 'Bedroom'] else [f for f in ifiles if '_'.join(sesh.price.replace('-', ' ').lower().split()) in f] for item,ifiles in sesh.filtered_items_style[sesh.current_img_signature].items()}
|
| 666 |
print('updateStyle: ', [(item,len(ifiles)) for item,ifiles in sesh.filtered_items_style[sesh.current_img_signature].items()])"""
|
| 667 |
|
| 668 |
+
def updatePrice(evt: gr.SelectData, seshid):
|
| 669 |
print('updatePrice: ', type(evt.value), evt.value)
|
| 670 |
price = evt.value if evt.value else sesh.price
|
| 671 |
sesh.price = price
|
| 672 |
|
| 673 |
|
| 674 |
if hasattr(sesh, 'room_img_loaded') and sesh.room_img_loaded:
|
| 675 |
+
display = updateItemDisplay(seshid)
|
| 676 |
return display
|
| 677 |
else:
|
| 678 |
return sesh.updated_display
|
|
|
|
| 685 |
sesh.filtered_items_style[sesh.current_img_signature] = {item: ifiles if item in ['Palette', 'Living Room', 'Bedroom'] else [f for f in ifiles if '_'.join(sesh.price.replace('-', ' ').lower().split()) in f] for item,ifiles in sesh.filtered_items_style[sesh.current_img_signature].items()}
|
| 686 |
print('updatePrice: ', [(item,len(ifiles)) for item,ifiles in sesh.filtered_items_style[sesh.current_img_signature].items()]) """
|
| 687 |
|
| 688 |
+
def updateBedsize(evt: gr.SelectData, seshid):
|
| 689 |
bedsize = evt.value if evt.value else sesh.bedsize
|
| 690 |
sesh.bedsize = bedsize
|
| 691 |
|
| 692 |
|
| 693 |
if hasattr(sesh, 'room_img_loaded') and sesh.room_img_loaded:
|
| 694 |
+
display = updateItemDisplay(seshid)
|
| 695 |
return display
|
| 696 |
else:
|
| 697 |
return sesh.updated_display
|
|
|
|
| 706 |
|
| 707 |
|
| 708 |
#sesh.palettes_data
|
| 709 |
+
def updateColors(evt: gr.SelectData, seshid):
|
| 710 |
Paletteid = evt.value['caption'] if evt.value['caption'] else '0'
|
| 711 |
sesh.Paletteid = evt.value['caption']
|
| 712 |
sesh.Palette_ids[sesh.current_img_signature] = Paletteid
|
|
|
|
| 722 |
sesh.Palette_imgs[sesh.img_id] = sesh.Palette_img
|
| 723 |
|
| 724 |
if hasattr(sesh, 'room_img_loaded') and sesh.room_img_loaded:
|
| 725 |
+
display = updateItemDisplay(seshid)
|
| 726 |
return display
|
| 727 |
else:
|
| 728 |
return sesh.updated_display
|
|
|
|
| 777 |
|
| 778 |
#Palettes_displayed, Palettes
|
| 779 |
|
| 780 |
+
def makePalettes(evt: gr.SelectData, seshid):
|
| 781 |
#print('makePalettes: ', type(evt.value), evt.value)
|
| 782 |
sesh.img_id = sesh.current_img_signature = evt.value['caption'] if evt.value['caption'] else sesh.current_img_signature
|
| 783 |
if sesh.current_img_signature in sesh.Palettes_displayed:
|
| 784 |
+
display = updateItemDisplay(seshid)
|
| 785 |
return sesh.Palettes_displayed[sesh.current_img_signature], sesh.img_data[sesh.current_img_signature], display
|
| 786 |
|
| 787 |
img = sesh.img_data[sesh.img_id]
|
|
|
|
| 807 |
#print('bestclr_keys: ', bestclr_keys)
|
| 808 |
url = 'https://dreamdemo.pythonanywhere.com/palletes'
|
| 809 |
#valid_data = {'seshid': str(sesh.seshid), 'img_id':str(sesh.img_id), 'dark_light_bool':str(dark_light_bool), 'bestclr_keys':bestclr_keys}
|
| 810 |
+
#valid_data = {'seshid': str(sesh.seshid), 'img_id':str(sesh.img_id), 'dark_light_bool':str(dark_light_bool), 'counts_srtd_rgb':counts_srtd_rgb}
|
| 811 |
+
valid_data = {'seshid': str(seshid), 'img_id':str(sesh.img_id), 'dark_light_bool':str(dark_light_bool), 'counts_srtd_rgb':counts_srtd_rgb}
|
| 812 |
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
|
| 813 |
#print('json requests response: ', str({k:(type(v), None if type(v) != type(dict({})) or not v else (type(list(v.items())[0][0]), type(list(v.items())[0][1]))) for k,v in valid_data.items()}))
|
| 814 |
#print('json requests response: ', str({k:(type(v), None if type(v) != type(dict({})) or not v else (type(list(v.items())[0][0]), type(list(v.items())[0][1]))) for k,v in data.items()}))
|
|
|
|
| 889 |
sesh.Palette_img[150:,:] = palettes_data[0][3]
|
| 890 |
|
| 891 |
sesh.Palette_imgs[sesh.img_id] = sesh.Palette_img
|
| 892 |
+
display = updateItemDisplay(seshid)
|
| 893 |
|
| 894 |
sesh.Palettes_displayed[sesh.current_img_signature] = Palette_out
|
| 895 |
|
|
|
|
| 1205 |
|
| 1206 |
return gr.Label(str(sesh.counts_totals[sesh.summary_store][0]) if sesh.summary_store and sesh.summary_radio != 'Complete' else all_counts, label='Number of Items'), gr.Label('$'+str(np.round(sesh.counts_totals[sesh.summary_store][1], 2)) if sesh.summary_store and sesh.summary_radio != 'Complete' else '$'+str(np.round(all_totals, 2)), label='Total')
|
| 1207 |
|
| 1208 |
+
def updateBudget(budget_number, seshid):
|
| 1209 |
sesh.budget_number = float(budget_number)
|
| 1210 |
#sesh.item_budgets = {img: {item: int(weight*sesh.budget_number) for item,weight in weights.items()} for img,weights in sesh.product_means_weights.items()}
|
| 1211 |
#print('updateBudget: ', sesh.budget_number, sesh.item_budgets)
|
| 1212 |
|
| 1213 |
+
display = updateItemDisplay(seshid, budget=True)
|
| 1214 |
sesh.counts_totals = {store:selectMerchantItemCountAndTotal(store) for store in sesh.summary_joined}
|
| 1215 |
all_counts = str(sum([ct[0] for store,ct in sesh.counts_totals.items()]))
|
| 1216 |
all_totals = sum([ct[1] for store,ct in sesh.counts_totals.items()])
|
|
|
|
| 2595 |
|
| 2596 |
|
| 2597 |
upload_photo.click(submitPhoto, [upload, choose_room], [choose_room, upload])
|
| 2598 |
+
#choose_room.select(makePalettes, None, [color_Palettes, room2decorate, room_items])
|
| 2599 |
+
choose_room.select(makePalettes, seshid, [color_Palettes, room2decorate, room_items])
|
| 2600 |
|
| 2601 |
#upload_photo.click(submitPhoto, upload, [working_room, upload])
|
| 2602 |
#working_room.select(makePalettes, None, [working_room1, color_Palettes])
|
| 2603 |
+
#working_room.select(makePalettes, None, [working_room1, working_room2, working_room3, color_Palettes, room_items])
|
| 2604 |
+
working_room.select(makePalettes, seshid, [working_room1, working_room2, working_room3, color_Palettes, room_items])
|
| 2605 |
#rooms_gallery.select(set_style, None, [design_gallery, bedsize_radio, room_items])
|
| 2606 |
+
rooms_gallery.select(updateRoomType, seshid, [design_gallery, bedsize_radio, room_items])
|
| 2607 |
|
| 2608 |
#color_Palettes.select(set_Palette, None, None)
|
| 2609 |
+
color_Palettes.select(updateColors, seshid, [room_items])
|
| 2610 |
|
| 2611 |
+
design_gallery.select(updateStyle, seshid, room_items)
|
| 2612 |
+
price_radio.select(updatePrice, seshid, room_items)
|
| 2613 |
+
bedsize_radio.select(updateBedsize, seshid, room_items)
|
| 2614 |
|
| 2615 |
replace.select(productClick, None, merchant)
|
| 2616 |
replace_item.click(replaceProduct, None, [items_display, item_side, room_side, colors_side, merchant, replace, ads, room_items])
|
|
|
|
| 2623 |
|
| 2624 |
product_dropdown.select(displaySource, None, [source, count])
|
| 2625 |
count.change(updateProductCount, count, [total, num_of_items])
|
| 2626 |
+
budget.submit(updateBudget, [budget, seshid], [room_items, total, num_of_items])
|
| 2627 |
|
| 2628 |
|
| 2629 |
|