4 commits - pykolab/auth pykolab/xml tests/functional

Jeroen van Meeuwen vanmeeuwen at kolabsys.com
Wed May 29 16:42:11 CEST 2013


 pykolab/auth/ldap/__init__.py |    8 ++++
 pykolab/xml/event.py          |   76 ++++++++++++++++++++++++++++++++++++++++++
 tests/functional/user_add.py  |    7 ---
 3 files changed, 84 insertions(+), 7 deletions(-)

New commits:
commit ad24c6538fc819dde8c99819e05ab546cc4023a7
Merge: 1a3dff6 38793db
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Wed May 29 16:42:06 2013 +0200

    Merge branch 'master' of ssh://git.kolab.org/git/pykolab



commit 1a3dff6fdf373a7ffa4b5b0166b3789cc05129b5
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Wed May 29 16:40:58 2013 +0200

    In debugging, make it clear we have finished handling the synchronization callback

diff --git a/pykolab/auth/ldap/__init__.py b/pykolab/auth/ldap/__init__.py
index a6a1044..a86abbd 100644
--- a/pykolab/auth/ldap/__init__.py
+++ b/pykolab/auth/ldap/__init__.py
@@ -2091,6 +2091,14 @@ class LDAP(pykolab.base.Base):
 #
 #                    server = self.imap.user_mailbox_server(folder)
 
+        log.debug(
+                _("Done with _synchronize_callback() for entry %r") % (
+                        entry['id']
+                    ),
+                level=9
+            )
+
+
     def _unbind(self):
         """
             Discard the current set of bind credentials.


commit a0a88ff30ee40502665f0b59121ce72f82ead7e1
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Wed May 29 16:26:11 2013 +0200

    There is no purpose in generating the values as they are generated upon submission anyway

diff --git a/tests/functional/user_add.py b/tests/functional/user_add.py
index 2fc44cf..6af0419 100644
--- a/tests/functional/user_add.py
+++ b/tests/functional/user_add.py
@@ -59,12 +59,5 @@ def user_add(givenname, sn, preferredlanguage='en_US'):
     fvg_params['type_id'] = user_type_id
     fvg_params['attributes'] = [attr for attr in user_type_info['auto_form_fields'].keys() if not attr in params.keys()]
 
-    exec("retval = wap_client.form_value_generate(%r)" % (params))
-
-    for attribute in user_type_info['auto_form_fields'].keys():
-        params[attribute] = retval[attribute]
-
-    params['userpassword'] = user_details['userpassword']
-
     result = wap_client.user_add(params)
 


commit 24f120a419d9bb096cbad5a3ccf428fa101031e1
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Wed May 29 15:49:02 2013 +0200

    Add more functions overlaying the Python kolabformat module

diff --git a/pykolab/xml/event.py b/pykolab/xml/event.py
index 18eea3e..97a0511 100644
--- a/pykolab/xml/event.py
+++ b/pykolab/xml/event.py
@@ -32,6 +32,7 @@ class Event(object):
 
     def __init__(self, from_ical="", from_string=""):
         self._attendees = []
+        self._categories = []
 
         if from_ical == "":
             if from_string == "":
@@ -48,6 +49,53 @@ class Event(object):
         self._attendees.append(attendee)
         self.event.setAttendees(self._attendees)
 
+    def add_category(self, category):
+        self._categories.append(category)
+        self.event.setCategories(self._categories)
+
+    def add_exception_date(self, _datetime):
+        valid_datetime = False
+        if isinstance(_datetime, datetime.date):
+            valid_datetime = True
+
+        if isinstance(_datetime, datetime.datetime):
+            # If no timezone information is passed on, make it UTC
+            if _datetime.tzinfo == None:
+                _datetime = _datetime.replace(tzinfo=pytz.utc)
+
+            valid_datetime = True
+
+        if not valid_datetime:
+            raise InvalidEventDateError, _("Event start needs datetime.date or datetime.datetime instance")
+
+        (
+                year,
+                month,
+                day,
+            ) = (
+                    _datetime.year,
+                    _datetime.month,
+                    _datetime.day,
+                )
+        if hasattr(_datetime, 'hour'):
+            (
+                    hour,
+                    minute,
+                    second
+                ) = (
+                        _datetime.hour,
+                        _datetime.minute,
+                        _datetime.second
+                    )
+            _cdatetime = kolabformat.cDateTime(year, month, day, hour, minute, second)
+        else:
+            _cdatetime = kolabformat.cDateTime(year, month, day)
+
+        if hasattr(_datetime, "tzinfo"):
+            _cdatetime.setTimezone(_datetime.tzinfo.__str__())
+
+        self.event.addExceptionDate(_cdatetime)
+
     def as_string_itip(self, method="REQUEST"):
         cal = icalendar.Calendar()
         cal.add(
@@ -194,6 +242,12 @@ class Event(object):
     def get_attendees(self):
         return self._attendees
 
+    def get_categories(self):
+        return self.event.categories()
+
+    def get_classification(self):
+        return self.classification()
+
     def get_created(self):
         _datetime = self.event.created()
 
@@ -218,6 +272,9 @@ class Event(object):
         except ValueError:
             result = datetime.datetime.now()
 
+    def get_description(self):
+        return self.event.description()
+
     def get_end(self):
         _datetime = self.event.end()
 
@@ -256,6 +313,9 @@ class Event(object):
         else:
             return datetime.datetime(year, month, day, hour, minute, second, tzinfo=_timezone)
 
+    def get_exception_dates(self):
+        return self.event.exceptionDates()
+
     def get_ical_attendee(self):
         # TODO: Formatting, aye? See also the example snippet:
         #
@@ -477,6 +537,9 @@ class Event(object):
         attendee.set_participant_status(status)
         self.event.setAttendees(self._attendees)
 
+    def set_classification(self, classification):
+        self.event.setClassification(classification)
+
     def set_created(self, _datetime=None):
         if _datetime == None:
             _datetime = datetime.datetime.now()
@@ -501,6 +564,9 @@ class Event(object):
                 kolabformat.cDateTime(year, month, day, hour, minute, second)
             )
 
+    def set_description(self, description):
+        self.event.setDescription(description)
+
     def set_dtstamp(self, _datetime):
         (
                 year,
@@ -565,6 +631,10 @@ class Event(object):
 
         self.event.setEnd(_cdatetime)
 
+    def set_exception_dates(self, _datetimes):
+        for _datetime in _datetimes:
+            self.add_exception_date(_datetime)
+
     def set_from_ical(self, attr, value):
         if attr == "dtend":
             self.set_ical_dtend(value.dt)
@@ -698,6 +768,9 @@ class Event(object):
 
         self.event.setLastModified(kolabformat.cDateTime(year, month, day, hour, minute, second))
 
+    def set_location(self, location):
+        self.event.setLocation(location)
+
     def set_organizer(self, email, name=None):
         contactreference = ContactReference(email)
         if not name == None:
@@ -708,6 +781,9 @@ class Event(object):
     def set_priority(self, priority):
         self.event.setPriority(priority)
 
+    def set_recurrence(self, recurrence):
+        self.event.setRecurrenceRule(recurrence)
+
     def set_start(self, _datetime):
 
         valid_datetime = False





More information about the commits mailing list