Released under the Artistic Licence."""
- def __init__(self, name=None, source=None):
+ def __init__(self, name=None, props=None):
""" source is source service, such as LinkedIn """
self._attributes = {};
if name: self._set('fn', name)
self._multi_attributes = {}
- self._source = source
+ if props:
+ for key in props:
+ self._set(key, props[key])
+ def __getitem__(self, key):
+ return self._safe_get(key)
+
def __unicode__(self):
return self.__repr__()
def __repr__(self):
- return "Friend %s" % self._attributes['fn']
+ return "Friend %s" % self.get_name()
# public accessors -----------------
+ def add_url(self, url):
+ self._add('url', url)
+
+ def get_birthday_date(self):
+ return self._safe_get('bday')
+
def get_contact(self):
- return self._attributes['contact']
+ return self._safe_get('contact')
def get_name(self):
- return self._attributes['fn']
+ return self._safe_get('fn')
+
+ def get_source(self):
+ return self._source
def get_nickname(self):
- return self._attributes["nickname"]
+ return self._safe_get("nickname")
def get_urls(self):
try: return self._multi_attributes['url']
except: return []
def get_photo_url(self):
- try: return self._attributes['photo-url']
- except: return None
+ return self._safe_get('photo-url')
+
+ def has_birthday_date(self):
+ return self._has('bday')
- def add_url(self, url):
- self._add('url', url)
-
def is_empty(self):
for a in self._attributes:
return False
return False
return True
- def has_birthday_date(self):
- return self._has('bday')
-
def set_name(self, name):
self._set('fn', name)
def set_photo_url(self, url):
self._set('photo-url', url)
- def update(self, other_friend):
+ def update_friend(self, other_friend, overwrite=False):
"""
Overwrites any attributes in this friend, with attributes from other_friend
"""
# private helpers -----------------------
#
- def _if_defined(self, key, callback):
- if self._attributes.has_key(key):
- callback(self._attributes[key])
-
- def _set(self, key, value):
- if value is not None:
-# print "%s SET %s to %s" % (self, key, value)
- self._attributes[key] = value
-
def _add(self, key, value):
if value is not None:
if not self._multi_attributes.has_key(key):
# print "%s ADD %s to %s" % (self, key, value)
self._multi_attributes[key].append(value)
- def _has(self, key):
- return self._attributes.has_key(key) or self._multi_attributes.has_key(key)
-
def _contains(self, key, value):
if self._attributes.has_key(key):
return value == self._attributes[key]
return value in self._multi_attributes[key]
return False
- def __getitem__(self, key):
- return self._attributes[key]
+ def _if_defined(self, key, callback):
+ if self._attributes.has_key(key):
+ callback(self._attributes[key])
+
+ def _has(self, key):
+ return self._attributes.has_key(key) or self._multi_attributes.has_key(key)
+
+ def _safe_get(self, key):
+ try: return self._attributes[key]
+ except: return None
+
+ def _set(self, key, value):
+ if value is not None:
+# print "%s SET %s to %s" % (self, key, value)
+ self._attributes[key] = value
+