Mercurial > farol > farol
annotate farol/templates/producttree/view.j2 @ 138:43cd11ba7928
Fix missing space
author | Benoît Allard <benoit.allard@greenbone.net> |
---|---|
date | Mon, 27 Oct 2014 11:22:59 +0100 |
parents | 1feed9a3156e |
children |
rev | line source |
---|---|
0 | 1 {# |
2 # Description: | |
3 # Web Template used in Farol Design | |
4 # | |
5 # Authors: | |
6 # BenoƮt Allard <benoit.allard@greenbone.net> | |
7 # | |
8 # Copyright: | |
9 # Copyright (C) 2014 Greenbone Networks GmbH | |
10 # | |
11 # This program is free software; you can redistribute it and/or | |
12 # modify it under the terms of the GNU General Public License | |
13 # as published by the Free Software Foundation; either version 2 | |
14 # of the License, or (at your option) any later version. | |
15 # | |
16 # This program is distributed in the hope that it will be useful, | |
17 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 # GNU General Public License for more details. | |
20 # | |
21 # You should have received a copy of the GNU General Public License | |
22 # along with this program; if not, write to the Free Software | |
23 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
24 -#} | |
25 | |
26 {% extends "base.j2" %} | |
105
09915cbdf549
Unify the add / edit / delete buttons
Benoît Allard <benoit.allard@greenbone.net>
parents:
99
diff
changeset
|
27 {% from "macros.j2" import panel, modal, add_button, edit_button, delete_button %} |
45
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
28 {% block title %}Product Tree{% endblock %} |
0 | 29 |
45
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
30 {% set active = 'product' %} |
7
8f41bb7f4681
Move the Document management routines to a document Blueprint
Benoît Allard <benoit.allard@greenbone.net>
parents:
0
diff
changeset
|
31 |
0 | 32 {% block content %} |
45
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
33 <div class='page-header'> |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
34 <h1>Document's Product Tree<a href="#prodtree_modal" data-toggle="modal">?</a> <small>{{ producttree._products | length }} Products defined</small></h1> |
0 | 35 </div> |
45
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
36 {% call modal('prodtree_modal', "Product Tree") %} |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
37 <p>The <strong>Product Tree</strong> container contains all the fully qualified product names that can be referenced elsewhere in the document (specifically when describing the products that are affected by a vulnerability using the <strong>Product Statuses</strong>, <strong>Threats</strong>, <strong>CVSS Score Sets</strong>, and <strong>Remediation</strong> containers). The <strong>Product Tree</strong> can have as many branches as needed, but each endpoint of the tree must be terminated with a <strong>Full Product Name</strong> element, which represents a product that can be referenced elsewhere.</p> |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
38 <p>The <strong>Product Tree</strong> can be kept simple (flat) or made more detailed (branched out). It also supports concatenating products to describe relationships, such as components contained in a product or products installed on other products.</p> |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
39 <dl> |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
40 <dt>Flat:</dt> |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
41 <dd><p>In the simplest case, a flat <strong>Product TreeM</strong> would contain one or more <strong>Full Product Name</strong> elements at the root level, one for each product that needs to be described.</p></dd> |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
42 <dt>Branched:</dt> |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
43 <dd><p>In a more detailed <strong>Product Tree</strong>, the root element would contain one or more <strong>Branch</strong> elements at the root level, one for each class/type/category of product, each of which again contains one or more <strong>Branch</strong> elements until all desired categories and subcategories are described to the satisfaction of the document issuer. Then each open <strong>Branch</strong> element is terminated with the actual product item in the form of a <strong>Full Product Name</strong> element.</p></dd> |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
44 <dt>Concatenated:</dt> |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
45 <dd><p>No matter whether a flat or branched structure is chosen, you may need to be able to describe the combination of two <strong>Full Product Name</strong> elements, such as when a product is only vulnerable when installed together with another, or to describe operating system components. To do that, a <strong>Relationship</strong> element is inserted at the root of the <strong>Product Tree</strong>, with attributes establishing a link between two existing <strong>Full Product Name</strong> elements, allowing the document producer to define a combination of two products that form a new <strong>Full Product Name</strong> entry.</p></dd> |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
46 <dt>Grouped:</dt> |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
47 <dd><p>Once <strong>Full Product Name</strong> elements are defined, they may be freely added to logical groups, which may then be used to refer to a group of products. Given that it is possible for a product to be a member of more than one logical group, some areas of the CVRF document may not allow references to product groups to avoid ambiguity.</p></dd> |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
48 </dl> |
0 | 49 {% endcall %} |
45
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
50 {% call panel(heading="Branches", badge=producttree._branches | length, title=4, extended=True) %} |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
51 {% for branch in producttree._branches recursive %} |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
52 {% call panel() %} |
105
09915cbdf549
Unify the add / edit / delete buttons
Benoît Allard <benoit.allard@greenbone.net>
parents:
99
diff
changeset
|
53 <div> |
09915cbdf549
Unify the add / edit / delete buttons
Benoît Allard <benoit.allard@greenbone.net>
parents:
99
diff
changeset
|
54 {{ branch._type}}: <em>{{ branch._name }}</em> |
09915cbdf549
Unify the add / edit / delete buttons
Benoît Allard <benoit.allard@greenbone.net>
parents:
99
diff
changeset
|
55 {{ edit_button(url_for('.edit_branch', path=branch.getPath() | join('/'))) }} |
09915cbdf549
Unify the add / edit / delete buttons
Benoît Allard <benoit.allard@greenbone.net>
parents:
99
diff
changeset
|
56 {% if branch.isOrphaned() %} |
09915cbdf549
Unify the add / edit / delete buttons
Benoît Allard <benoit.allard@greenbone.net>
parents:
99
diff
changeset
|
57 {{ delete_button(url_for('.del_branch', path=branch.getPath() | join('/'))) }} |
09915cbdf549
Unify the add / edit / delete buttons
Benoît Allard <benoit.allard@greenbone.net>
parents:
99
diff
changeset
|
58 {% endif %} |
09915cbdf549
Unify the add / edit / delete buttons
Benoît Allard <benoit.allard@greenbone.net>
parents:
99
diff
changeset
|
59 </div> |
45
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
60 {% if branch._product %} |
76
e39fd204eb33
Remove possibility to view and edit a product (edit from the view page) and set url relative
Benoît Allard <benoit.allard@greenbone.net>
parents:
45
diff
changeset
|
61 <p><strong><a href="{{ url_for('.view_product', productid=branch._product._productid) }}">{{ branch._product._name }}</a></strong></p> |
0 | 62 {% else %} |
45
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
63 {{ loop(branch._childs) }} |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
64 {% endif %} |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
65 {% if branch.isOrphaned() %} |
76
e39fd204eb33
Remove possibility to view and edit a product (edit from the view page) and set url relative
Benoît Allard <benoit.allard@greenbone.net>
parents:
45
diff
changeset
|
66 <p class="text-danger">This branch is <em>orphaned</em>. A <a href="{{ url_for('.add_product') }}">product</a> or a new <a href="{{ url_for('.add_branch') }}">branch</a> should be created as child of this one.</p> |
0 | 67 {% endif %} |
68 {% endcall %} | |
45
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
69 {% endfor %} |
105
09915cbdf549
Unify the add / edit / delete buttons
Benoît Allard <benoit.allard@greenbone.net>
parents:
99
diff
changeset
|
70 <div class="pull-right">{{ add_button(url_for('.add_branch')) }}</div> |
45
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
71 {% endcall %} |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
72 {% call panel(heading="Products", badge=producttree.nbProducts(), title=4) %} |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
73 {% for product in producttree._products if product._parent is sameas producttree %} |
76
e39fd204eb33
Remove possibility to view and edit a product (edit from the view page) and set url relative
Benoît Allard <benoit.allard@greenbone.net>
parents:
45
diff
changeset
|
74 <p><strong><a href="{{ url_for('.view_product', productid=product._productid) }}">{{ product._name }}</a></strong></p> |
45
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
75 {% endfor %} |
105
09915cbdf549
Unify the add / edit / delete buttons
Benoît Allard <benoit.allard@greenbone.net>
parents:
99
diff
changeset
|
76 <div class="pull-right">{{ add_button(url_for('.add_product')) }}</div> |
45
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
77 {% endcall %} |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
78 {% call panel(heading="Relationships", badge=producttree._relationships | length, title=4) %} |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
79 {% for relationship in producttree._relationships %} |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
80 {% call panel() %} |
105
09915cbdf549
Unify the add / edit / delete buttons
Benoît Allard <benoit.allard@greenbone.net>
parents:
99
diff
changeset
|
81 <div> |
09915cbdf549
Unify the add / edit / delete buttons
Benoît Allard <benoit.allard@greenbone.net>
parents:
99
diff
changeset
|
82 <em>{{ cvrf.getProductForID(relationship._productreference)._name }}</em> as {{ relationship._relationtype | lower }} <em>{{ cvrf.getProductForID(relationship._relatestoproductreference)._name }}</em> |
09915cbdf549
Unify the add / edit / delete buttons
Benoît Allard <benoit.allard@greenbone.net>
parents:
99
diff
changeset
|
83 {{ edit_button(url_for('.edit_relationship', index=loop.index0)) }} |
09915cbdf549
Unify the add / edit / delete buttons
Benoît Allard <benoit.allard@greenbone.net>
parents:
99
diff
changeset
|
84 {% if relationship.isOrphaned() %} |
09915cbdf549
Unify the add / edit / delete buttons
Benoît Allard <benoit.allard@greenbone.net>
parents:
99
diff
changeset
|
85 {{ delete_button(url_for('.del_relationship', index=loop.index0)) }} |
09915cbdf549
Unify the add / edit / delete buttons
Benoît Allard <benoit.allard@greenbone.net>
parents:
99
diff
changeset
|
86 {% endif %} |
09915cbdf549
Unify the add / edit / delete buttons
Benoît Allard <benoit.allard@greenbone.net>
parents:
99
diff
changeset
|
87 </div> |
09915cbdf549
Unify the add / edit / delete buttons
Benoît Allard <benoit.allard@greenbone.net>
parents:
99
diff
changeset
|
88 {% if relationship._product %} |
09915cbdf549
Unify the add / edit / delete buttons
Benoît Allard <benoit.allard@greenbone.net>
parents:
99
diff
changeset
|
89 <p><strong><a href="{{ url_for('.view_product', productid=relationship._product._productid) }}">{{ relationship._product._name }}</a></strong></p> |
09915cbdf549
Unify the add / edit / delete buttons
Benoît Allard <benoit.allard@greenbone.net>
parents:
99
diff
changeset
|
90 {% endif %} |
45
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
91 {% if relationship.isOrphaned() %} |
76
e39fd204eb33
Remove possibility to view and edit a product (edit from the view page) and set url relative
Benoît Allard <benoit.allard@greenbone.net>
parents:
45
diff
changeset
|
92 <p class="text-danger">This relationship is <em>orphaned</em>. A product should be <a href="{{ url_for('.add_product') }}">created</a> as child of this one.</p> |
45
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
93 {% endif %} |
0 | 94 {% endcall %} |
45
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
95 {% endfor %} |
105
09915cbdf549
Unify the add / edit / delete buttons
Benoît Allard <benoit.allard@greenbone.net>
parents:
99
diff
changeset
|
96 <div class="pull-right">{{ add_button(url_for('.add_relationship')) }}</div> |
45
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
97 {% endcall %} |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
98 {% call panel(heading="Groups", badge=producttree._groups | length, title=4) %} |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
99 {% for group in producttree._groups %} |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
100 {% call panel() %} |
88
521c0ec35338
Add deletion of Groups
Benoît Allard <benoit.allard@greenbone.net>
parents:
87
diff
changeset
|
101 <div class="pull-right"> |
105
09915cbdf549
Unify the add / edit / delete buttons
Benoît Allard <benoit.allard@greenbone.net>
parents:
99
diff
changeset
|
102 {{ edit_button(url_for('.edit_group', groupid=group._groupid)) }} |
112 | 103 {%if cvrf.isGroupOrphan(group._groupid) %} |
104 {{ delete_button(url_for('.del_group', groupid=group._groupid)) }} | |
105 {% endif %} | |
88
521c0ec35338
Add deletion of Groups
Benoît Allard <benoit.allard@greenbone.net>
parents:
87
diff
changeset
|
106 </div> |
112 | 107 {% if group._description %}<p class="small">{{ group._description }}</p>{% endif %} |
45
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
108 <ul> |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
109 {% for productid in group._productids %} |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
110 {% with product = cvrf.getProductForID(productid) %} |
76
e39fd204eb33
Remove possibility to view and edit a product (edit from the view page) and set url relative
Benoît Allard <benoit.allard@greenbone.net>
parents:
45
diff
changeset
|
111 <li><a href="{{ url_for('.view_product', productid=product._productid) }}">{{ product._name }}</a></li> |
45
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
112 {% endwith %} |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
113 {% endfor %} |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
114 </ul> |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
115 {% endcall %} |
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
116 {% endfor %} |
105
09915cbdf549
Unify the add / edit / delete buttons
Benoît Allard <benoit.allard@greenbone.net>
parents:
99
diff
changeset
|
117 <div class="pull-right">{{ add_button(url_for('.add_group')) }}</div> |
45
7c4d001839e7
Move the Display of the ProductTree to its own page
Benoît Allard <benoit.allard@greenbone.net>
parents:
32
diff
changeset
|
118 {% endcall %} |
110
f68944a92b5e
Only allow producttree deletion if possible
Benoît Allard <benoit.allard@greenbone.net>
parents:
105
diff
changeset
|
119 <div class="pull-right"> |
f68944a92b5e
Only allow producttree deletion if possible
Benoît Allard <benoit.allard@greenbone.net>
parents:
105
diff
changeset
|
120 {% if cvrf.isProductTreeOrphan() %} |
f68944a92b5e
Only allow producttree deletion if possible
Benoît Allard <benoit.allard@greenbone.net>
parents:
105
diff
changeset
|
121 {{ delete_button(url_for('.delete'), text="delete whole Product Tree") }} |
f68944a92b5e
Only allow producttree deletion if possible
Benoît Allard <benoit.allard@greenbone.net>
parents:
105
diff
changeset
|
122 {% else %} |
138
43cd11ba7928
Fix missing space
Benoît Allard <benoit.allard@greenbone.net>
parents:
112
diff
changeset
|
123 <p class="text-danger"><small>The Product Tree cannot be deleted as some of its elements are referenced in the Document</small></p> |
110
f68944a92b5e
Only allow producttree deletion if possible
Benoît Allard <benoit.allard@greenbone.net>
parents:
105
diff
changeset
|
124 {% endif %} |
f68944a92b5e
Only allow producttree deletion if possible
Benoît Allard <benoit.allard@greenbone.net>
parents:
105
diff
changeset
|
125 </div> |
0 | 126 {% endblock %} |