/usr/lib/python2.7/dist-packages/kopano/outofoffice.py is in python-kopano 8.5.5-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 | """
Part of the high-level python bindings for Kopano
Copyright 2005 - 2016 Zarafa and its licensors (see LICENSE file for details)
Copyright 2016 - Kopano and its licensors (see LICENSE file for details)
"""
import time
import datetime
from MAPI import KEEP_OPEN_READWRITE
from MAPI.Tags import (
PR_EC_OUTOFOFFICE, PR_EC_OUTOFOFFICE_SUBJECT_W,
PR_EC_OUTOFOFFICE_MSG_W, PR_EC_OUTOFOFFICE_FROM,
PR_EC_OUTOFOFFICE_UNTIL
)
from MAPI.Struct import SPropValue
from MAPI.Time import unixtime
from .compat import repr as _repr, fake_unicode as _unicode
from .errors import NotFoundError
class OutOfOffice(object):
"""OutOfOffice class
Class which contains a :class:`store <Store>` out of office properties and
can set out-of-office status, message and subject.
:param store: :class:`store <Store>`
"""
def __init__(self, store):
self.store = store
@property
def enabled(self):
""" Out of office enabled status """
try:
return self.store.prop(PR_EC_OUTOFOFFICE).value
except NotFoundError:
return False
@enabled.setter
def enabled(self, value):
self.store.mapiobj.SetProps([SPropValue(PR_EC_OUTOFOFFICE, value)])
self.store.mapiobj.SaveChanges(KEEP_OPEN_READWRITE)
@property
def subject(self):
""" Subject """
try:
return self.store.prop(PR_EC_OUTOFOFFICE_SUBJECT_W).value
except NotFoundError:
return u''
@subject.setter
def subject(self, value):
if value is None:
self.store.mapiobj.DeleteProps([PR_EC_OUTOFOFFICE_SUBJECT_W])
else:
self.store.mapiobj.SetProps([SPropValue(PR_EC_OUTOFOFFICE_SUBJECT_W, _unicode(value))])
self.store.mapiobj.SaveChanges(KEEP_OPEN_READWRITE)
@property
def message(self):
""" Message """
try:
return self.store.prop(PR_EC_OUTOFOFFICE_MSG_W).value
except NotFoundError:
return u''
@message.setter
def message(self, value):
if value is None:
self.store.mapiobj.DeleteProps([PR_EC_OUTOFOFFICE_MSG_W])
else:
self.store.mapiobj.SetProps([SPropValue(PR_EC_OUTOFOFFICE_MSG_W, _unicode(value))])
self.store.mapiobj.SaveChanges(KEEP_OPEN_READWRITE)
@property
def start(self):
""" Out-of-office is activated from the particular datetime onwards """
try:
return self.store.prop(PR_EC_OUTOFOFFICE_FROM).value
except NotFoundError:
pass
@start.setter
def start(self, value):
if value is None:
self.store.mapiobj.DeleteProps([PR_EC_OUTOFOFFICE_FROM])
else:
value = unixtime(time.mktime(value.timetuple()))
self.store.mapiobj.SetProps([SPropValue(PR_EC_OUTOFOFFICE_FROM, value)])
self.store.mapiobj.SaveChanges(KEEP_OPEN_READWRITE)
@property
def end(self):
""" Out-of-office is activated until the particular datetime """
try:
return self.store.prop(PR_EC_OUTOFOFFICE_UNTIL).value
except NotFoundError:
pass
@end.setter
def end(self, value):
if value is None:
self.store.mapiobj.DeleteProps([PR_EC_OUTOFOFFICE_UNTIL])
else:
value = unixtime(time.mktime(value.timetuple()))
self.store.mapiobj.SetProps([SPropValue(PR_EC_OUTOFOFFICE_UNTIL, value)])
self.store.mapiobj.SaveChanges(KEEP_OPEN_READWRITE)
@property
def period_desc(self): # XXX class Period?
terms = []
if self.start:
terms.append('from %s' % self.start)
if self.end:
terms.append('until %s' % self.end)
return ' '.join(terms)
@property
def active(self):
if not self.enabled:
return False
now = datetime.datetime.now()
if self.start and now < self.start:
return False
if self.end and now >= self.end:
return False
return True
def __unicode__(self):
return u'OutOfOffice(%s)' % self.subject
def __repr__(self):
return _repr(self)
def update(self, **kwargs):
""" Update function for outofoffice """
for key, val in kwargs.items():
setattr(self, key, val)
|