def showBranch_byPath(user_name=None, tree_name=None, branch_id=None): user = None trees = None if g.user is not None and g.user.is_authenticated(): user = g.user trees = user.allTrees() tree_owner = Users.getUser(nickname = user_name) if tree_owner != None: tree = tree_owner.getTree(name=tree_name) if tree != None: branch = tree.getB(branch_id) if branch != None: return render_template("tree.html", title='Tree', curtree=tree, trees=trees, user=user, latestUsedB=branch.id) flash("Can't find the branch by current path") return render_template("base.html")
def mngtrees(): user = Users.getUser(email=g.user.email) if request.method == "GET": cmd = request.args.get('cmd', default='', type=str) if cmd == "create_tree": try: treename = request.args.get('name', default='NewTree', type=str) if user.getTree(name=treename) != None: raise BaseException createdTree = Tree(user, treename) return jsonify({ 'id' : createdTree.id, 'name' : createdTree.name }) except BaseException: return jsonify({ 'error' : "Error: The tree with such name exists. Try another name.", }) elif cmd == "remove_tree": try: tree_id = request.args.get('tree_id', default=None, type=int) tree = user.getTree(id=tree_id) tree.remove() return "True" except BaseException: return "False" elif cmd == "rename_tree": try: tree_id = request.args.get('tree_id', default=None, type=int) newname = request.args.get('newname', default='Tree', type=str) if user.getTree(name=newname) != None: raise BaseException tree = user.getTree(id=tree_id) tree.rename(newname) return "" except BaseException: return "Error: The tree with such name exists. Try another name." db.session.commit() return ""
def mngtree(): #for_test() # get data from request ## via GET method if request.method == "GET": # curtree_id is require only for cases when jstree return '#' as a sign of root branch_id. To get rid of it we have to rewrite a big part of jstree try: curtree_id = request.args.get('tree_id', default='', type=str) except AttributeError as e: msg='Can\'t find any trees. Try to create one.' print('\n' + str(msg) + '\n') return "" import app.general nestedocs = app.general.str2bool(request.args.get('nestedocs', default='False', type=str)) cmd = request.args.get('cmd', default='', type=str) id = request.args.get('id', default='', type=str) # after integration with flask symbole '%' has started to add to id. So we need to remove it if id[:1] == "%": id = int(id[1:]) if id == '#' or id == None or id == '': curtree = Tree.getTree(id = curtree_id) id = curtree.rootb_id data = request.args.get('data', default='', type=str) ## via POST method else: form = SaveDataForm(request.form) if request.method == "POST" and form.validate(): nestedocs = form.nestedocs.data cmd = form.cmd.data id = form.id.data data = form.data.data ## branch = Branch.get(id=id) curtree = Tree.getTree(id=branch.tree_id) tree_owner = curtree.owner """ cmd = "load_subbs" id = 4 id = '#' """ # set permission for actions if g.user is not None and g.user.is_authenticated(): curuser = g.user else: curuser = '******' owner = True if tree_owner.id != curuser.id: owner = False if not ( branch.read and cmd == "load_subbs" ): cmd = '' # if cmd != "" : if cmd == "fold": branch.folded = True elif cmd == "unfold": branch.folded = False elif cmd == "rename_node": branch.text = data elif cmd == "move_node": new_parent_id = request.args.get('new_parent', default=curtree.rootb_id, type=int) position = request.args.get('position', default=-1, type=int) branch.move(new_parent_id, position) elif cmd == "load_data": return branch.text elif cmd == "delete_node": branch.remove() elif cmd == "create_node": parent_id = request.args.get('parent_id', default=curtree.rootb_id, type=int) parentB = curtree.getB(parent_id) newB = Branch(main = (not nestedocs), parent_id = parent_id) position = request.args.get('position', default=-1, type=int) newB.move(pos=position) return str( newB.id ) elif cmd == "load_subbs": curtree.set_latestB(id) return json.dumps(getList_subbsOf(branch, nestedocs, withReadLabel=(not owner))) elif cmd == "get_privileges": return json.dumps(branch.get_priv_all()) elif cmd == "set_privileges": for_class = request.args.get('for_class', default='bydefault', type=str) priv_read = app.general.str2bool(request.args.get('read', default=None, type=str)) priv_rw = app.general.str2bool(request.args.get('rw', default=None, type=str)) if for_class == 'bydefault': new_privs = branch.set_priv_bydefault(priv_read, priv_rw) elif for_class == 'users': nickname = request.args.get('nickname', default=None, type=str) if nickname != None: user = Users.getUser(nickname = nickname) new_privs = branch.set_priv_foruserid(user.id, priv_read, priv_rw) return json.dumps(new_privs) elif cmd == "set_priv_adduser": nickname = request.args.get('nickname', default=None, type=str) if nickname != None: user = Users.getUser(nickname = nickname) if branch.set_priv_adduser(user) == 0: return 0 return -1 else: if nestedocs : if cmd == "save_data": branch.text = data else: pass db.session.commit() return ""
def removeuser(): user = g.user user = Users.getUser(email=user.email) user.remove() return redirect(url_for('about'))