profile is now a dict, not a list

This commit is contained in:
Romain Bignon 2011-10-05 15:36:50 +02:00
commit 97fe89ab66
4 changed files with 14 additions and 11 deletions

View file

@ -38,7 +38,7 @@ class ProfileFormatter(IFormatter):
result = u''
if node.flags & node.SECTION:
result += u'\t' * level + node.label + '\n'
for sub in node.value:
for sub in node.value.itervalues():
result += self.print_node(sub, level+1)
else:
if isinstance(node.value, (tuple,list)):
@ -63,7 +63,7 @@ class ProfileFormatter(IFormatter):
for name, photo in item['photos'].iteritems():
result += u'\t%s%s\n' % (photo, ' (hidden)' if photo.hidden else '')
result += u'Profile:\n'
for head in item['profile']:
for head in item['profile'].itervalues():
result += self.print_node(head)
result += u'Description:\n'
for s in item['summary'].split('\n'):

View file

@ -250,7 +250,7 @@ class ContactProfile(QWidget):
missing_fields.add('profile')
elif not self.loaded_profile:
self.loaded_profile = True
for head in contact.profile:
for head in contact.profile.itervalues():
if head.flags & head.HEAD:
widget = self.ui.headWidget
else:
@ -265,7 +265,7 @@ class ContactProfile(QWidget):
if node.flags & node.SECTION:
value = QWidget()
value.setLayout(QFormLayout())
for sub in node.value:
for sub in node.value.itervalues():
self.process_node(sub, value)
elif isinstance(node.value, list):
value = QLabel('<br />'.join(unicode(s) for s in node.value))

View file

@ -208,20 +208,20 @@ class Contact(_Contact):
url=photo['url'],
thumbnail_url=photo['url'].replace('image', 'thumb1_'),
hidden=photo['hidden'])
self.profile = []
self.profile = OrderedDict()
for section, d in self.TABLE.iteritems():
flags = ProfileNode.SECTION
if section.startswith('_'):
flags |= ProfileNode.HEAD
section = section.lstrip('_')
s = ProfileNode(section, section.capitalize(), [], flags=flags)
s = ProfileNode(section, section.capitalize(), OrderedDict(), flags=flags)
for key, builder in d.iteritems():
value = builder.get_value(profile, consts[int(profile['sex'])])
s.value.append(ProfileNode(key, key.capitalize().replace('_', ' '), value))
s.value[key] = ProfileNode(key, key.capitalize().replace('_', ' '), value)
self.profile.append(s)
self.profile[section] = s
self.aum_profile = profile
@ -230,7 +230,7 @@ class Contact(_Contact):
result = u''
if node.flags & node.SECTION:
result += u'\t' * level + node.label + '\n'
for sub in node.value:
for sub in node.value.itervalues():
result += print_node(sub, level+1)
else:
if isinstance(node.value, (tuple,list)):
@ -257,7 +257,7 @@ class Contact(_Contact):
for name, photo in self.photos.iteritems():
result += u'\t%s%s\n' % (photo, ' (hidden)' if photo.hidden else '')
result += u'\nProfile:\n'
for head in self.profile:
for head in self.profile.itervalues():
result += print_node(head)
result += u'Description:\n'
for s in self.summary.split('\n'):

View file

@ -35,6 +35,9 @@ class ProfileNode(object):
self.sufix = sufix
self.flags = flags
def __getitem__(self, key):
return self.value[key]
class ContactPhoto(CapBaseObject):
def __init__(self, name):
CapBaseObject.__init__(self, name)
@ -70,7 +73,7 @@ class Contact(CapBaseObject):
self.add_field('status_msg', basestring)
self.add_field('summary', basestring)
self.add_field('photos', dict, OrderedDict())
self.add_field('profile', list)
self.add_field('profile', dict)
def set_photo(self, name, **kwargs):
if not name in self.photos: