Page MenuHomePhorge

D217.1774846713.diff
No OneTemporary

Authored By
Unknown
Size
4 KB
Referenced Files
None
Subscribers
None

D217.1774846713.diff

diff --git a/wallace/module_resources.py b/wallace/module_resources.py
--- a/wallace/module_resources.py
+++ b/wallace/module_resources.py
@@ -53,13 +53,15 @@
# define some contstants used in the code below
COND_NOTIFY = 256
-ACT_MANUAL = 1
-ACT_ACCEPT = 2
+ACT_MANUAL = 1
+ACT_ACCEPT = 2
+ACT_REJECT = 8
ACT_ACCEPT_AND_NOTIFY = ACT_ACCEPT + COND_NOTIFY
policy_name_map = {
'ACT_MANUAL': ACT_MANUAL,
'ACT_ACCEPT': ACT_ACCEPT,
+ 'ACT_REJECT': ACT_REJECT,
'ACT_ACCEPT_AND_NOTIFY': ACT_ACCEPT_AND_NOTIFY
}
@@ -355,18 +357,18 @@
# do the magic for the receiving attendee
(available_resource, itip_event) = check_availability(itip_events, resource_dns, resources, receiving_attendee)
+ reject = False
+ resource = None
+ original_resource = None
+
# accept reservation
if available_resource is not None:
if available_resource['mail'] in [a.get_email() for a in itip_event['xml'].get_attendees()]:
- log.debug(_("Accept invitation for individual resource %r / %r") % (available_resource['dn'], available_resource['mail']), level=8)
-
# check if reservation was delegated
- original_resource = None
if available_resource['mail'] != receiving_resource['mail'] and receiving_attendee.get_participant_status() == kolabformat.PartDelegated:
original_resource = receiving_resource
- accept_reservation_request(itip_event, available_resource, original_resource)
-
+ resource = available_resource
else:
# This must have been a resource collection originally.
# We have inserted the reference to the original resource
@@ -388,11 +390,25 @@
delegator.set_rsvp(False)
log.debug(_("Delegate invitation for resource collection %r to %r") % (original_resource['mail'], available_resource['mail']), level=8)
- accept_reservation_request(itip_event, available_resource, original_resource)
+ resource = available_resource
+
+ # Look for ACT_REJECT policy
+ if resource is not None:
+ invitationpolicy = get_resource_invitationpolicy(resource)
+ log.debug(_("Apply invitation policies %r") % (invitationpolicy), level=9)
- # decline reservation
+ if invitationpolicy is not None:
+ for policy in invitationpolicy:
+ if policy & ACT_REJECT:
+ reject = True
+ break
+
+ if resource is not None and not reject:
+ log.debug(_("Accept invitation for individual resource %r / %r") % (resource['dn'], resource['mail']), level=8)
+ accept_reservation_request(itip_event, resource, original_resource, False, invitationpolicy)
else:
resource = resources[resource_dns[0]] # this is the receiving resource record
+ log.debug(_("Decline invitation for individual resource %r / %r") % (resource['dn'], resource['mail']), level=8)
decline_reservation_request(itip_event, resource)
cleanup()
@@ -771,7 +787,7 @@
return (event, master)
-def accept_reservation_request(itip_event, resource, delegator=None, confirmed=False):
+def accept_reservation_request(itip_event, resource, delegator=None, confirmed=False, invitationpolicy=None):
"""
Accepts the given iTip event by booking it into the resource's
calendar. Then set the attendee status of the given resource to
@@ -781,7 +797,8 @@
confirmation_required = False
if not confirmed and owner:
- invitationpolicy = get_resource_invitationpolicy(resource)
+ if invitationpolicy is None:
+ invitationpolicy = get_resource_invitationpolicy(resource)
log.debug(_("Apply invitation policies %r") % (invitationpolicy), level=9)
if invitationpolicy is not None:
@@ -840,7 +857,7 @@
# send response and notification
owner = get_resource_owner(resource)
- send_response(resource['mail'], itip_event, get_resource_owner(resource))
+ send_response(resource['mail'], itip_event, owner)
if owner:
send_owner_notification(resource, owner, itip_event, True)

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 30, 4:58 AM (3 d, 21 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18792786
Default Alt Text
D217.1774846713.diff (4 KB)

Event Timeline