def render_PUT(self, request): result = WebdavResource.render_PUT(self, request) if result is not None and result.has_key(request.path) and \ request.env['CONTENT_TYPE'].strip().find('text/calendar') == 0: user=request.env.get('user') stream = self.storageProvider.get(request.path, user=user) try: event = vobject.readOne(stream) self.calendarProvider.store(request.path, event, user=user) # generate the etag data and add it to the document. stream.seek(0) md5Sum = getMD5(stream) md5Sum.update(request.path) etag = md5Sum.hexdigest() request.setHeader("ETag", "%s" % etag) self.storageProvider.setMeta(request.path, {'{DAV:}getetag': "%s" % etag, '{DAV:}getcontenttype': 'text/calendar' }, user=user ) except Exception as ex: logging.getLogger().warn('Not a calendar object. Got error: %s' % ex) finally: stream.close() return result
def render_GET(self, request): result = WebdavResource.render_GET(self, request) user = request.env.get('user') if not self.storageProvider.isCollection(request.path, user=user) and \ self.calendarProvider.isCalendar(request.path, user=user): request.setHeader('Content-Type','text/calendar; charset=utf-8') return result
def render_PUT(self, request): result = WebdavResource.render_PUT(self, request) if result is not None and result.has_key(request.path): user = request.env.get('user') stream = self.storageProvider.get(request.path, user=user) md5Sum = getMD5(stream) md5Sum.update(request.path) etag = md5Sum.hexdigest() request.setHeader("ETag", "%s" % etag) self.storageProvider.setMeta(request.path, {'{DAV:}getetag': "%s" % etag}, user=user ) stream.seek(0) event = vobject.readOne(stream) self.contactProvider.store(request.path, event) return result
def render_OPTIONS(self, request): WebdavResource.render_OPTIONS(self, request) request.setHeader('DAV', '1, 2, access-control, addressbook') request.setHeader('Allow', 'REPORT, ACL')
def __init__(self, *args, **kwargs): """ @param contactProvider """ self.contactProvider = kwargs.pop('contactProvider') WebdavResource.__init__(self, *args, **kwargs)
def render_OPTIONS(self, request): WebdavResource.render_OPTIONS(self, request) request.setHeader('DAV', '1, 2, access-control, calendar-access')
def render_PROPFIND(self,request): request.env['HTTP_ACCEPT']='text/xml' if request.env.has_key('HTTP_X_REQUESTED_WITH'): del request.env['HTTP_X_REQUESTED_WITH'] return WebdavResource.render_PROPFIND(self, request)
def __init__(self, *args, **kwargs): """ @param calendarProvider """ self.calendarProvider = kwargs.pop('calendarProvider') WebdavResource.__init__(self, *args, **kwargs)