0
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
1 # -*- coding: utf-8 -*- |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
2 # |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
3 # Authors: |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
4 # BenoƮt Allard <benoit.allard@greenbone.net> |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
5 # |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
6 # Copyright: |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
7 # Copyright (C) 2014 Greenbone Networks GmbH |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
8 # |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
9 # This program is free software; you can redistribute it and/or |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
10 # modify it under the terms of the GNU General Public License |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
11 # as published by the Free Software Foundation; either version 2 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
12 # of the License, or (at your option) any later version. |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
13 # |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
14 # This program is distributed in the hope that it will be useful, |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
17 # GNU General Public License for more details. |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
18 # |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
19 # You should have received a copy of the GNU General Public License |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
20 # along with this program; if not, write to the Free Software |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
21 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
22 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
23 """\ |
26
|
24 Common Objects related to CVRF Documents |
0
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
25 """ |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
26 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
27 class ValidationError(Exception): pass |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
28 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
29 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
30 class CVRFNote(object): |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
31 TYPES = ('General', 'Details', 'Description', 'Summary', 'FAQ', |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
32 'Legal Disclaimer', 'Other') |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
33 def __init__(self, _type, ordinal, note, title=None, audience=None): |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
34 self._type = _type |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
35 self._ordinal = ordinal |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
36 self._note = note |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
37 self._title = title |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
38 self._audience = audience |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
39 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
40 def getTitle(self): |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
41 """ returns something that can be used as a title """ |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
42 if self._title is None: |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
43 return "%s (#%d)" % (self._type, self._ordinal) |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
44 return "%s (%s)" % (self._title, self._type) |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
45 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
46 def validate(self): |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
47 if not self._type: |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
48 raise ValidationError('A Note needs to have a Type set') |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
49 if self._type not in self.TYPES: |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
50 raise ValidationError('A Note Type needs to be one of %s' % ', '.join(self.TYPES)) |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
51 if self._ordinal < 0: |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
52 raise ValidationError('A Note ordinal must be a positive integer') |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
53 if not self._note: |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
54 raise ValidationError('A Note must contain some text') |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
55 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
56 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
57 def __str__(self): |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
58 return self._note |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
59 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
60 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
61 class CVRFReference(object): |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
62 TYPES = ('Self', 'External') |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
63 def __init__(self, url, description, _type=None): |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
64 self._url = url |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
65 self._description = description |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
66 self._type = _type |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
67 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
68 def validate(self): |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
69 if (self._type is not None) and (self._type not in self.TYPES): |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
70 raise ValidationError('If a Reference type is set, it mist be one of %s' % ', '.join(self.TYPES)) |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
71 if not self._url: |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
72 raise ValidationError('A Reference must contain an URL') |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
73 if not self._description: |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
74 raise ValidationError('A Reference must contain a description') |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
75 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
76 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
77 class CVRFAcknowledgment(object): |
8
cb8b2a196f0b
Allow Name and Organization in anAcknowledgment to be plural
Benoît Allard <benoit.allard@greenbone.net>
diff
changeset
|
78 def __init__(self, names=[], organizations=[], description=None, |
0
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
79 url=None): |
8
cb8b2a196f0b
Allow Name and Organization in anAcknowledgment to be plural
Benoît Allard <benoit.allard@greenbone.net>
diff
changeset
|
80 self._names = names |
cb8b2a196f0b
Allow Name and Organization in anAcknowledgment to be plural
Benoît Allard <benoit.allard@greenbone.net>
diff
changeset
|
81 self._organizations = organizations |
0
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
82 self._description = description |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
83 self._url = url |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
84 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
85 def getTitle(self): |
8
cb8b2a196f0b
Allow Name and Organization in anAcknowledgment to be plural
Benoît Allard <benoit.allard@greenbone.net>
diff
changeset
|
86 return "%s - %s" % (', '.join(self._names), |
cb8b2a196f0b
Allow Name and Organization in anAcknowledgment to be plural
Benoît Allard <benoit.allard@greenbone.net>
diff
changeset
|
87 ', '.join(self._organizations)) |
0
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
88 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
89 def validate(self): |
8
cb8b2a196f0b
Allow Name and Organization in anAcknowledgment to be plural
Benoît Allard <benoit.allard@greenbone.net>
diff
changeset
|
90 if (not self._names) and (not self._organizations) and (not self._description): |
0
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
91 raise ValidationError('An Acknowledgment must have at least a Name, an Organization or a Description') |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
92 |
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
93 |