@@ -21,18 +21,24 @@ class InvalidAtomicAVURequest(Exception): pass
2121
2222class MetadataManager (Manager ):
2323
24+ @property
25+ def use_timestamps (self ):
26+ return getattr (self ,'_use_ts' ,False )
27+
2428 __kw = {} # default (empty) keywords
2529
2630 def _updated_keywords (self ,opts ):
2731 kw_ = self .__kw .copy ()
2832 kw_ .update (opts )
2933 return kw_
3034
31- def __call__ (self , admin = False , ** irods_kw_opt ):
32- x = copy .copy (self )
33- irods_kw_opt .update ([() if not admin else (kw .ADMIN_KW ,"" )])
34- x .__kw = irods_kw_opt
35- return x
35+ def __call__ (self , admin = False , timestamps = False , ** irods_kw_opt ):
36+ if admin :
37+ irods_kw_opt .update ([(kw .ADMIN_KW ,"" )])
38+ new_self = copy .copy (self )
39+ new_self ._use_ts = timestamps
40+ new_self .__kw = irods_kw_opt
41+ return new_self
3642
3743 @staticmethod
3844 def _model_class_to_resource_type (model_cls ):
@@ -69,17 +75,24 @@ def get(self, model_cls, path):
6975 'R' : [Resource .name == path ],
7076 'u' : [User .name == path ]
7177 }[resource_type ]
72- results = self .sess .query (model .id , model .name , model .value , model .units , model .create_time , model .modify_time )\
73- .filter (* conditions ).all ()
78+
79+ columns = (model .id , model .name , model .value , model .units )
80+ if self .use_timestamps :
81+ columns += (model .create_time , model .modify_time )
82+ results = self .sess .query (* columns ).filter (* conditions ).all ()
83+
84+ def meta_opts (row ):
85+ opts = {'avu_id' : row [model .id ]}
86+ if self .use_timestamps :
87+ opts .update (create_time = row [model .create_time ], modify_time = row [model .modify_time ])
88+ return opts
89+
7490 return [iRODSMeta (
75- row [model .name ],
76- row [model .value ],
77- row [model .units ],
78- avu_id = row [model .id ],
79- create_time = row [model .create_time ],
80- modify_time = row [model .modify_time ],
81-
82- ) for row in results ]
91+ row [model .name ],
92+ row [model .value ],
93+ row [model .units ],
94+ ** meta_opts (row ))
95+ for row in results ]
8396
8497 def add (self , model_cls , path , meta , ** opts ):
8598 # Avoid sending request with empty argument(s)
0 commit comments