Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions irods/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ class Zone(Model):
type = Column(String, "ZONE_TYPE", 103)
connection = Column(String, "ZONE_CONNECTION", 104)
comment = Column(String, "ZONE_COMMENT", 105)
create_time = Column(DateTime, "ZONE_CREATE_TIME", 106)
modify_time = Column(DateTime, "ZONE_MODIFY_TIME", 107)


class User(Model):
Expand Down
32 changes: 32 additions & 0 deletions irods/test/zone_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import os
import sys
import time
import unittest
from datetime import datetime as _datetime

Expand Down Expand Up @@ -106,6 +107,37 @@ def test_create_remote_zone_and_update_properties__issue_816(self):
if newzone:
newzone.remove()

def test_zone_create_and_modify_times__issue_822(self):
newzone = None
try:
# Create new zone
newzonename = "otherzone"
newzone = self.sess.zones.create(newzonename, "remote")
query_zone = self.sess.query(Zone).filter(Zone.name == newzonename).one()
create_time = query_zone[Zone.create_time]
old_modify_time = query_zone[Zone.modify_time]

# Confirm that creation/modification are datetimes
self.assertIsInstance(create_time, _datetime)
self.assertIsInstance(old_modify_time, _datetime)

# Confirm we get the same result via query vs. iRODSZone object attribute
self.assertEqual(create_time, self.sess.zones.get(newzonename).create_time)
self.assertEqual(old_modify_time, self.sess.zones.get(newzonename).modify_time)

# Confirm modify time is updated after comment change after more than one second,
# but create time is not changed.
time.sleep(1.5)
newzone.modify("comment", "some comment")
query_zone = self.sess.query(Zone).filter(Zone.name == newzonename).one()
self.assertEqual(query_zone[Zone.create_time], create_time)
self.assertGreater(query_zone[Zone.modify_time], old_modify_time)
Comment thread
stsnel marked this conversation as resolved.
self.assertGreater(self.sess.zones.get(newzonename).modify_time, old_modify_time)

finally:
if newzone:
newzone.remove()


if __name__ == "__main__":
# let the tests find the parent irods lib
Expand Down
2 changes: 2 additions & 0 deletions irods/zone.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ def __init__(self, manager, result=None):
self.type = result[Zone.type]
self.connection = result[Zone.connection]
self.comment = result[Zone.comment]
self.create_time = result[Zone.create_time]
self.modify_time = result[Zone.modify_time]

def remove(self):
self.manager.remove(self.name)
Expand Down
Loading