comparison farol/producttree.py @ 135:5e9237340630

Add server-side check before deleting a producttree element.
author Benoît Allard <benoit.allard@greenbone.net>
date Fri, 24 Oct 2014 14:55:00 +0200
parents 4ea7966dcc99
children 64a6e69d54fc
comparison
equal deleted inserted replaced
134:50f15280dfee 135:5e9237340630
60 producttree=cvrf._producttree, cvrf=cvrf) 60 producttree=cvrf._producttree, cvrf=cvrf)
61 61
62 @producttree.route('/delete', methods=['POST']) 62 @producttree.route('/delete', methods=['POST'])
63 @producttree_required 63 @producttree_required
64 def delete(): 64 def delete():
65 # XXX: We should first check if no PID and GID is used ... 65 if not cvrf.isProductTreeOrphan():
66 flash('Not deleting the Product Tree, some Products are mentionned in the document', 'danger')
67 return redirect(url_for('.view'))
66 get_current()._producttree = None 68 get_current()._producttree = None
67 return redirect(url_for('document.view')) 69 return redirect(url_for('document.view'))
68 70
69 @producttree.route('/branch/<path:path>/edit', methods=['GET', 'POST']) 71 @producttree.route('/branch/<path:path>/edit', methods=['GET', 'POST'])
70 @document_required 72 @document_required
235 ptree = cvrf._producttree 237 ptree = cvrf._producttree
236 try: 238 try:
237 product = cvrf.getProductForID(productid) 239 product = cvrf.getProductForID(productid)
238 except KeyError: 240 except KeyError:
239 abort(404) 241 abort(404)
242 if not cvrf.isProductOrphan(product._productid):
243 flash('Not deleting the Product, it is used in the Document.', 'danger')
244 return redirect(url_for('.view_product', productid=product._productid))
240 product.unlink() 245 product.unlink()
241 ptree._products.remove(product) 246 ptree._products.remove(product)
242 del product 247 del product
243 return redirect(url_for('.view')) 248 return redirect(url_for('.view'))
244 249
345 group = get_current().getGroupForID(groupid) 350 group = get_current().getGroupForID(groupid)
346 except KeyError: 351 except KeyError:
347 flash('Group not found', 'danger') 352 flash('Group not found', 'danger')
348 abort(404) 353 abort(404)
349 354
355 if not cvrf.isGroupOrphan(group._groupid):
356 flash('Not deleting group, it is mentionned in the document.', 'danger')
357 return redirect(url_for('.view'))
358
350 cvrf._producttree._groups.remove(group) 359 cvrf._producttree._groups.remove(group)
351 return redirect(url_for('.view')) 360 return redirect(url_for('.view'))
352 361

http://farol.wald.intevation.org