forked from spdx/tools-python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreview.py
83 lines (64 loc) · 2.55 KB
/
review.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# Copyright (c) 2014 Ahmed H. Ismail
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from __future__ import absolute_import
from __future__ import print_function
from __future__ import unicode_literals
from datetime import datetime
from functools import total_ordering
from spdx.utils import datetime_iso_format
@total_ordering
class Review(object):
"""
Document review information.
Fields:
- reviewer: Person, Organization or tool that reviewed the SPDX file.
Mandatory one.
- review_date: Review date, mandatory one. Type: datetime.
- comment: Review comment. Optional one. Type: str.
"""
def __init__(self, reviewer=None, review_date=None, comment=None):
self.reviewer = reviewer
self.review_date = review_date
self.comment = comment
def __eq__(self, other):
return (
isinstance(other, Review) and self.reviewer == other.reviewer
and self.review_date == other.review_date
and self.comment == other.comment
)
def __lt__(self, other):
return (
(self.reviewer, self.review_date, self.comment) <
(other.reviewer, other.review_date, other.comment,)
)
def set_review_date_now(self):
self.review_date = datetime.utcnow()
@property
def review_date_iso_format(self):
return datetime_iso_format(self.review_date)
@property
def has_comment(self):
return self.comment is not None
def validate(self, messages):
"""Returns True if all the fields are valid.
Appends any error messages to messages parameter.
"""
messages = self.validate_reviewer(messages)
messages = self.validate_review_date(messages)
return messages
def validate_reviewer(self, messages):
if self.reviewer is None:
messages = messages + ['Review missing reviewer.']
return messages
def validate_review_date(self, messages):
if self.review_date is None:
messages = messages + ['Review missing review date.']
return messages