def getColumns(cls, categoryID): session = Session() categoryIndex = CommandCategories.getIndexFromCategoryID(categoryID) category = session.query(CommandCategories).filter( CommandCategories.i == categoryIndex ).first() out = [] for i in range(1, 5): name = u'column' + unicode(i) out.append({ 'label':getattr(category, name) if category else (u'Column ' + unicode(i)), 'commands':[] }) session.close() if not category: return out for cmd in cls.getCommands(categoryID): out[cmd['column']]['commands'].append(cmd) return out
def getCommands(cls, categoryID): session = Session() categoryIndex = CommandCategories.getIndexFromCategoryID(categoryID) result = session.query(UserCommands) \ .filter(UserCommands.categoryfk == categoryIndex) \ .order_by(UserCommands.row.asc()) \ .all() if not result: session.close() return [] out = [] for r in result: out.append(r.toButtonDict()) session.close() return out
def modifyCategory(cls, categoryID, **kwargs): session = Session() result = session.query(CommandCategories).filter( CommandCategories.i == CommandCategories.getIndexFromCategoryID(categoryID) ).first() if result is None: return {'error':'No Such Category'} for n,v in kwargs.iteritems(): if isinstance(v, str): v = unicode(v) setattr(result, n, v) session.commit() out = result.toDict() session.close() return out
def deleteCategory(cls, categoryID): session = Session() categoryIndex = CommandCategories.getIndexFromCategoryID(categoryID) result = session.query(CommandCategories).filter(CommandCategories.i == categoryIndex).first() if result: session.delete(result) result = session.query(UserCommands).filter(UserCommands.categoryfk == categoryIndex).all() for r in result: session.delete(r) variants = session.query(CommandVariants).filter(CommandVariants.usrcmdfk == r.i).all() for v in variants: session.delete(v) session.commit() session.close() return {'id':categoryID}
def createCommand(cls, categoryID, column, row =None, **kwargs): session = Session() categoryIndex = CommandCategories.getIndexFromCategoryID(categoryID) if row is None or row < 0: row = session.query(UserCommands).filter( and_( UserCommands.categoryfk == categoryIndex, UserCommands.column == column ) ).count() for n,v in kwargs.iteritems(): if isinstance(v, str): kwargs[n] = unicode(v) command = UserCommands(categoryfk=categoryIndex, column=column, row=row, **kwargs) session.add(command) session.commit() out = command.toButtonDict() session.close() return out