[ADD]: Images: caldav, crm_caldav, document_webdav, project_caldav
[odoo/odoo.git] / addons / caldav / caldav_node.py
index b735d85..5272d0f 100644 (file)
 #
 ##############################################################################
 
-import time
 from document_webdav import nodes
-from document.nodes import _str2time
+from document.nodes import _str2time, nodefd_static
 import logging
-import StringIO
 from orm_utils import get_last_modified
 
 try:
-    from tools.dict_tools import dict_merge, dict_merge2
+    from tools.dict_tools import  dict_merge2
 except ImportError:
-    from document.dict_tools import dict_merge, dict_merge2
+    from document.dict_tools import  dict_merge2
 
 # TODO: implement DAV-aware errors, inherit from IOError
 
@@ -381,6 +379,9 @@ class node_calendar(nodes.node_class):
             res.append(child._get_caldav_calendar_data(cr))
         return res
 
+    def open_data(self, cr, mode):
+        return nodefd_static(self, cr, mode)
+
     def _get_caldav_calendar_description(self, cr):
         uid = self.context.uid
         calendar_obj = self.context._dirobj.pool.get('basic.calendar')
@@ -389,7 +390,7 @@ class node_calendar(nodes.node_class):
         try:
             calendar = calendar_obj.browse(cr, uid, self.calendar_id, context=ctx)
             return calendar.description or calendar.name
-        except Exception, e:
+        except Exception:
             return None
 
     def _get_dav_supported_report_set(self, cr):
@@ -458,14 +459,10 @@ class res_node_calendar(nodes.node_class):
         self.model = res_model
         self.res_id = res_id
 
-    def open(self, cr, mode=False):
-        if self.type in ('collection','database'):
-            return False
-        s = StringIO.StringIO(self.get_data(cr))
-        s.name = self
-        return s
+    def open_data(self, cr, mode):
+        return nodefd_static(self, cr, mode)
 
-    def get_data(self, cr, fil_obj = None):
+    def get_data(self, cr, fil_obj=None):
         uid = self.context.uid
         calendar_obj = self.context._dirobj.pool.get('basic.calendar')
         context = self.context.context.copy()
@@ -497,6 +494,17 @@ class res_node_calendar(nodes.node_class):
             res = '%d' % (self.calendar_id)
         return res
 
+    def _get_wtag(self, cr):
+        uid = self.context.uid
+        context = self.context.context
+        if self.model and self.res_id:
+            mod_obj = self.context._dirobj.pool.get(self.model)
+            pr = mod_obj.perm_read(cr, uid, [self.res_id], context=context, details=False)[0]
+            self.write_date = pr.get('write_date') or pr.get('create_date')
+        
+        # Super will use self.write_date, so we should be fine.
+        return super(res_node_calendar, self)._get_wtag(cr)
+
     def rm(self, cr):
         uid = self.context.uid
         res = False