Skip to content

Commit bbedd6a

Browse files
committed
Merge remote-tracking branch 'chris/master'
Conflicts: tincan/statement.py
2 parents ed6baaf + 812ea95 commit bbedd6a

File tree

3 files changed

+201
-213
lines changed

3 files changed

+201
-213
lines changed

tincan/statement.py

Lines changed: 12 additions & 155 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,10 @@
1616
import re
1717
from datetime import datetime
1818

19-
from tincan.serializable_base import SerializableBase
19+
from tincan.statement_base import StatementBase
2020
from tincan.agent import Agent
2121
from tincan.group import Group
22-
from tincan.verb import Verb
23-
from tincan.attachment import Attachment
24-
from tincan.attachment_list import AttachmentList
2522
from tincan.result import Result
26-
from tincan.context import Context
2723
from tincan.substatement import SubStatement
2824
from tincan.statement_ref import StatementRef
2925
from tincan.activity import Activity
@@ -34,7 +30,15 @@
3430
:synopsis: A Statement object that contains all the information for one statement that is sent to an LRS
3531
"""
3632

37-
class Statement(SerializableBase):
33+
class Statement(StatementBase):
34+
35+
_UUID_REGEX = re.compile(
36+
r'^[a-f0-9]{8}-'
37+
r'[a-f0-9]{4}-'
38+
r'[1-5][a-f0-9]{3}-'
39+
r'[89ab][a-f0-9]{3}-'
40+
r'[a-f0-9]{12}$'
41+
)
3842

3943
_props_req = [
4044
"id",
@@ -78,60 +82,6 @@ def id(self, value):
7882
def id(self):
7983
del self._id
8084

81-
@property
82-
def actor(self):
83-
"""Actor for Statement
84-
85-
:setter: Tries to convert to Agent or Group
86-
:setter type: :mod:`tincan.agent` | :mod:`tincan.group`
87-
:rtype: :mod:`tincan.agent` | :mod:`tincan.group`
88-
89-
"""
90-
return self._actor
91-
92-
@actor.setter
93-
def actor(self, value):
94-
if value is not None and not isinstance(value, Agent) and not isinstance(value, Group):
95-
if isinstance(value, dict):
96-
if 'object_type' in value or 'objectType' in value:
97-
if 'objectType' in value:
98-
value['object_type'] = value['objectType']
99-
value.pop('objectType')
100-
if value['object_type'] == 'Agent':
101-
value = Agent(value)
102-
elif value['object_type'] == 'Group':
103-
value = Group(value)
104-
else:
105-
value = Agent(value)
106-
else:
107-
value = Agent(value)
108-
self._actor = value
109-
110-
@actor.deleter
111-
def actor(self):
112-
del self._actor
113-
114-
@property
115-
def verb(self):
116-
"""Verb for Statement
117-
118-
:setter: Tries to convert to Verb
119-
:setter type: :mod:`tincan.verb`
120-
:rtype: :mod:`tincan.verb`
121-
122-
"""
123-
return self._verb
124-
125-
@verb.setter
126-
def verb(self, value):
127-
if value is not None and not isinstance(value, Verb):
128-
value = Verb(value)
129-
self._verb = value
130-
131-
@verb.deleter
132-
def verb(self):
133-
del self._verb
134-
13585
@property
13686
def object(self):
13787
"""Object for Statement
@@ -172,54 +122,6 @@ def object(self, value):
172122
def object(self):
173123
del self._object
174124

175-
@property
176-
def timestamp(self):
177-
"""Timestamp for Statement
178-
179-
:setter: Tries to convert to :class:`datetime.datetime`. If
180-
no timezone is given, makes a naive `datetime.datetime`.
181-
182-
Strings will be parsed as ISO 8601 timestamps.
183-
184-
If a number is provided, it will be interpreted as a UNIX
185-
timestamp, which by definition is UTC.
186-
187-
If a `dict` is provided, does `datetime.datetime(**value)`.
188-
189-
If a `tuple` or a `list` is provided, does
190-
`datetime.datetime(*value)`. Uses the timezone in the tuple or
191-
list if provided.
192-
193-
:setter type: :class:`datetime.datetime` | unicode | str | int | float | dict | tuple | list | None
194-
:rtype: :class:`datetime.datetime`
195-
"""
196-
return self._timestamp
197-
198-
@timestamp.setter
199-
def timestamp(self, value):
200-
if value is None:
201-
self._timestamp = value
202-
return
203-
204-
try:
205-
self._timestamp = make_datetime(value)
206-
except TypeError as e:
207-
e.message = (
208-
"Property 'timestamp' in a 'tincan.%s' "
209-
"object must be set with a "
210-
"datetime.datetime, str, unicode, int, float, dict "
211-
"or None.\n\n%s" %
212-
(
213-
self.__class__.__name__,
214-
e.message,
215-
)
216-
)
217-
raise e
218-
219-
@timestamp.deleter
220-
def timestamp(self):
221-
del self._timestamp
222-
223125
@property
224126
def stored(self):
225127
"""Storage time. Tries to convert to :class:`datetime.datetime`.
@@ -243,7 +145,7 @@ def stored(self):
243145

244146
@stored.setter
245147
def stored(self, value):
246-
if value is None:
148+
if value is None or isinstance(value, datetime):
247149
self._stored = value
248150
return
249151

@@ -308,27 +210,6 @@ def result(self, value):
308210
def result(self):
309211
del self._result
310212

311-
@property
312-
def context(self):
313-
"""Context for Statement
314-
315-
:setter: Tries to convert to Context
316-
:setter type: :mod:`tincan.context`
317-
:rtype: :mod:`tincan.context`
318-
319-
"""
320-
return self._context
321-
322-
@context.setter
323-
def context(self, value):
324-
if value is not None and not isinstance(value, Context):
325-
value = Context(value)
326-
self._context = value
327-
328-
@context.deleter
329-
def context(self):
330-
del self._context
331-
332213
@property
333214
def version(self):
334215
"""Version for Statement
@@ -351,28 +232,4 @@ def version(self, value):
351232

352233
@version.deleter
353234
def version(self):
354-
del self._version
355-
356-
@property
357-
def attachments(self):
358-
"""Attachments for Statement
359-
360-
:setter: Tries to convert each element to Attachment
361-
:setter type: :mod:`tincan.attachment_list`
362-
:rtype: :mod:`tincan.attachment_list`
363-
364-
"""
365-
return self._attachments
366-
367-
@attachments.setter
368-
def attachments(self, value):
369-
if value is not None and not isinstance(value, AttachmentList):
370-
try:
371-
value = AttachmentList([Attachment(value)])
372-
except (TypeError, AttributeError):
373-
value = AttachmentList(value)
374-
self._attachments = value
375-
376-
@attachments.deleter
377-
def attachments(self):
378-
del self._attachments
235+
del self._version

0 commit comments

Comments
 (0)