Mercurial > farol > farol
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 |