assign ITEM_ID - assign item to last used store id
assign.item.to.store ITEM_ID STORE_ID - plan to shop for at store for item
clear.all STORE - clear **all** items for STORE, including un-purchased
+ rename OLD,NEW - rename an item
+ rename.store OLD,NEW - rename a store
remove ITEM_ID - remove a shopping item from the datatbase
remove.store STORE_ID - remove a store from the datatbase (requires clearing the list first)
setup - run one time database setup
unsorted - list all items not assigned to any store
- zone ZONE ITEM - list ITEM under given ZONE
+ zone ZONE ITEM - list ITEM under given ZONE - ZONE may not contain spaces
Example:
shop zone dairy sour cream
results.append(str(item))
return results
+ if match.command('rename'):
+ old,new = ' '.join(match.args()[1:]).split(',')
+ Data().rename_item(old,new)
+ return ['Success']
+
+ if match.command('rename.store'):
+ old,new = ' '.join(match.args()[1:]).split(',')
+ Data().rename_store(old,new)
+ return ['Success']
+
if match.command('remove'):
item_id = ' '.join(match.args()[1:])
Data().remove_item(item_id)
def _get_with_name(cls, name):
return select(cls).where(func.lower(cls.name) == func.lower(name))
+def _rename(cls, session, old, new) -> bool:
+ with session:
+ record = session.exec(_get_with_name(cls, old)).first()
+ record.name = new
+ session.commit()
+ return True
class Data():
def __init__(self, db_file=None):
self.engine = self.get_engine()
self.last_store_id = None
+ def rename_store(self, old, new):
+ with Session(self.engine) as session:
+ return _rename(Store, session, old, new)
+
+ def rename_item(self, old, new):
+ with Session(self.engine) as session:
+ return _rename(Item, session, old, new)
+
def _set_pref_store_id(self, store_id):
with Session(self.engine) as session:
prefs = session.exec(select(PreferStore)).all()
print(item)
+@task
+def rename_item(c, old, new):
+ Data().rename_item(old, new)
+
+@task
+def rename_store(c, old, new):
+ Data().rename_store(old, new)
+
@task
def remove_item(c, item_id):
Data().remove_item(item_id)