From 1685107039d92d83c3f3280ca074dda6de77b82e Mon Sep 17 00:00:00 2001 From: Simeon Warner Date: Sun, 13 Dec 2020 16:52:43 -0500 Subject: [PATCH] Change so that Resource.datetime is implemented over ts_datetime timestamp like other timestamps --- resync/resource.py | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/resync/resource.py b/resync/resource.py index f423c39..33c12b7 100644 --- a/resync/resource.py +++ b/resync/resource.py @@ -34,6 +34,7 @@ class Resource(object): mime_type - MIME type md5, sha1, sha256 - digests, have hash accessor change - change type + ts_datetime - time of the change, has datetime accessor path - path in dump If non-core attributes are needed then the '_extra' attribute @@ -56,15 +57,15 @@ class Resource(object): """ __slots__ = ('uri', 'timestamp', 'length', 'mime_type', - 'md5', 'sha1', 'sha256', 'change', 'datetime', + 'md5', 'sha1', 'sha256', 'change', 'ts_datetime', 'path', '_extra', 'ln') CHANGE_TYPES = ['created', 'updated', 'deleted'] def __init__(self, uri=None, timestamp=None, length=None, md5=None, sha1=None, sha256=None, mime_type=None, - change=None, datetime=None, path=None, lastmod=None, - capability=None, + change=None, ts_datetime=None, datetime=None, path=None, + lastmod=None, capability=None, ts_at=None, md_at=None, ts_completed=None, md_completed=None, ts_from=None, md_from=None, @@ -85,14 +86,14 @@ class Resource(object): self.sha1 = None self.sha256 = None self.change = None - self.datetime = None # Added in ResourceSync v1.1 + self.ts_datetime = None # Added in ResourceSync v1.1 self.path = None self._extra = None self.ln = None # Create from a Resource-like object? Copy any relevant attributes if (resource is not None): for att in ['uri', 'timestamp', 'length', 'md5', 'sha1', 'sha256', - 'change', 'datetime', 'path', 'capability', + 'change', 'ts_datetime', 'path', 'capability', 'ts_at', 'md_at', 'ts_completed', 'md_completed', 'ts_from', 'md_from', 'ts_until', 'md_until', 'ln']: if hasattr(resource, att): @@ -114,8 +115,8 @@ class Resource(object): self.mime_type = mime_type if (change is not None): self.change = change - if (datetime is not None): - self.datetime = datetime + if (ts_datetime is not None): + self.ts_datetime = ts_datetime if (path is not None): self.path = path if (ts_at is not None): @@ -133,6 +134,8 @@ class Resource(object): # Timestamp setters if (lastmod is not None): self.lastmod = lastmod + if (datetime is not None): + self.datetime = datetime if (md_at is not None): self.md_at = md_at if (md_completed is not None): @@ -178,14 +181,24 @@ class Resource(object): @property def lastmod(self): - """The Last-Modified data in W3C Datetime syntax, Z notation.""" + """The Last-Modified date for the resource in W3C Datetime syntax, Z notation.""" return datetime_to_str(self.timestamp) @lastmod.setter def lastmod(self, lastmod): - """Set timestamp from a W3C Datetime Last-Modified value.""" + """Set last modified timestamp from a W3C Datetime Last-Modified value.""" self.timestamp = str_to_datetime(lastmod, context='lastmod') + @property + def datetime(self): + """The datetime of the resource change in W3C Datetime syntax, Z notation.""" + return datetime_to_str(self.ts_datetime) + + @datetime.setter + def datetime(self, datetime): + """Set timestamp from a W3C Datetime Last-Modified value.""" + self.ts_datetime = str_to_datetime(datetime, context='ts_datetime') + @property def md_at(self): """md_at values in W3C Datetime syntax, Z notation."""