From 425db5a3cd0207194a9c7454d95236a7df406d0a Mon Sep 17 00:00:00 2001
From: Hendrik Buschmeier <hbuschme@uni-bielefeld.de>
Date: Tue, 25 Jun 2013 15:58:33 +0200
Subject: [PATCH] Added merge method to Payload to enable batch Payload
 changes.

---
 ipaacalib/python/src/ipaaca/__init__.py | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/ipaacalib/python/src/ipaaca/__init__.py b/ipaacalib/python/src/ipaaca/__init__.py
index ae65c82..0381304 100755
--- a/ipaacalib/python/src/ipaaca/__init__.py
+++ b/ipaacalib/python/src/ipaaca/__init__.py
@@ -132,6 +132,7 @@ class IUNotFoundError(Exception):
 
 class Payload(dict):
 	def __init__(self, iu, writer_name=None, new_payload=None, omit_init_update_message=False):
+		self.iu = iu
 		pl1 = {} if new_payload is None else new_payload
 		pl = {}
 		for k,v in pl1.items():
@@ -140,7 +141,6 @@ class Payload(dict):
 			if type(v)==str:
 				v=unicode(v,'utf8')
 			pl[k] = v
-		self.iu = iu
 		# NOTE omit_init_update_message is necessary to prevent checking for
 		#   exceptions and sending updates in the case where we just receive
 		#   a whole new payload from the remote side and overwrite it locally.
@@ -148,6 +148,16 @@ class Payload(dict):
 			self.iu._modify_payload(is_delta=False, new_items=pl, keys_to_remove=[], writer_name=writer_name)
 		for k, v in pl.items():
 			dict.__setitem__(self, k, v)
+
+	def merge(self, payload, writer_name=None):
+		for k, v in payload:
+			if type(k)==str:
+				k=unicode(k,'utf8')
+			if type(v)==str:
+				v=unicode(v,'utf8')
+		self.iu._modify_payload(is_delta=True, new_items=payload, keys_to_remove=[], writer_name=writer_name)
+		return dict.update(payload) # batch update
+
 	def __setitem__(self, k, v, writer_name=None):
 		if type(k)==str:
 			k=unicode(k,'utf8')
-- 
GitLab