OLD | NEW |
1 # coding=utf8 | 1 # coding=utf8 |
2 # Copyright (c) 2010 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2010 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 """Defines base classes for pending change verification classes.""" | 5 """Defines base classes for pending change verification classes.""" |
6 | 6 |
7 import model | 7 import model |
8 | 8 |
9 | 9 |
10 class DiscardPending(Exception): | 10 class DiscardPending(Exception): |
(...skipping 26 matching lines...) Expand all Loading... |
37 if not self.verifications: | 37 if not self.verifications: |
38 return False | 38 return False |
39 return all(v.succeeded() for v in self.verifications.itervalues()) | 39 return all(v.succeeded() for v in self.verifications.itervalues()) |
40 | 40 |
41 def failed(self): | 41 def failed(self): |
42 """At least one verification failed.""" | 42 """At least one verification failed.""" |
43 if not self.verifications: | 43 if not self.verifications: |
44 return False | 44 return False |
45 return any(v.failed() for v in self.verifications.itervalues()) | 45 return any(v.failed() for v in self.verifications.itervalues()) |
46 | 46 |
| 47 def ignored(self): |
| 48 """This item shouldn't be processed any further. |
47 | 49 |
48 class SimpleStatus(model.PersistentMixIn): | 50 At least one verification step marked it as ignored. |
| 51 """ |
| 52 if not self.verifications: |
| 53 return False |
| 54 return any(v.ignored() for v in self.verifications.itervalues()) |
| 55 |
| 56 def done(self): |
| 57 """Processing on this item is done.""" |
| 58 return self.ignored() or self.succeeded() or self.failed() |
| 59 |
| 60 |
| 61 class IVerifierStatus(model.PersistentMixIn): |
| 62 """Interface for objects in Verified.verifications dictionary.""" |
| 63 def succeeded(self): |
| 64 raise NotImplementedError() |
| 65 |
| 66 def failed(self): |
| 67 raise NotImplementedError() |
| 68 |
| 69 def ignored(self): |
| 70 raise NotImplementedError() |
| 71 |
| 72 def done(self): |
| 73 return self.ignored() or self.succeeded() or self.failed() |
| 74 |
| 75 |
| 76 class SimpleStatus(IVerifierStatus): |
49 """Base class to be used for simple true/false verifiers.""" | 77 """Base class to be used for simple true/false verifiers.""" |
50 def __init__(self, state=None): | 78 def __init__(self, state=None): |
51 super(SimpleStatus, self).__init__() | 79 super(SimpleStatus, self).__init__() |
52 self.state = state | 80 self.state = state |
53 | 81 |
54 def succeeded(self): | 82 def succeeded(self): |
55 return self.state is True | 83 return self.state is True |
56 | 84 |
57 def failed(self): | 85 def failed(self): |
58 return self.state is False | 86 return self.state is False |
59 | 87 |
| 88 def ignored(self): |
| 89 return False |
| 90 |
60 | 91 |
61 class Verifier(object): | 92 class Verifier(object): |
62 name = None | 93 name = None |
63 | 94 |
64 def verify(self, pending, revision): | 95 def verify(self, pending, revision): |
65 raise NotImplementedError() | 96 raise NotImplementedError() |
66 | 97 |
67 def update_status(self, queue): | 98 def update_status(self, queue): |
68 raise NotImplementedError() | 99 raise NotImplementedError() |
69 | 100 |
70 def loop(self, queue, gen_obj): | 101 def loop(self, queue, gen_obj): |
71 """Loops in a pending queue and returns the verified item corresponding to | 102 """Loops in a pending queue and returns the verified item corresponding to |
72 the Verifier. | 103 the Verifier. |
73 """ | 104 """ |
74 for pending in queue: | 105 for pending in queue: |
75 if not pending.verifications.get(self.name, None): | 106 if not pending.verifications.get(self.name, None): |
76 pending.verifications[self.name] = gen_obj() | 107 pending.verifications[self.name] = gen_obj() |
77 yield pending, pending.verifications[self.name] | 108 yield pending, pending.verifications[self.name] |
OLD | NEW |