def _edit_category(self, category_tc, is_new = True):
        dbFacade = self.dbFacade();
        new_category_name = request.params.get('name');
        parent_name = request.params.get('parent');

        if dbFacade.balances.categoryDao.find_by_name(new_category_name, h.authenticated_user().uid):
            return { "failure" : Messages.categoryAlreadyExists(name=new_category_name) }
        parent_tc = dbFacade.balances.categoryDao.find_by_name(parent_name, h.authenticated_user().uid)

        if not parent_tc or parent_tc.name == '' or not new_category_name:
            return { "failure" : Messages.invalidArguments() }
        if not hasattr(parent_tc, 'subcats') or not parent_tc.subcats:            
            return { "failure" : Messages.wrongParentCategory(name=parent_name) }

        category_tc.name = new_category_name
        category_tc.parent = parent_tc.key
        category_tc.user_uid = h.authenticated_user().uid
        dbFacade.balances.categoryDao.save(category_tc)

        if not is_new:
            self._change_changes_category(request.params.get('old_name'), new_category_name)

        dbFacade.db.commit()
        return { "id" : category_tc.uid }