collective / collective/collective.examples.userdata

Simplified adapter code

Open
#4 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
0
Forks
5
PR merge metrics
No merged PRs in 30d

Description

The adapter code is very redundant and can be shrinked significantly be creating the properties dynamically - however there is a certain performance impact:

from plone.app.users.browser.personalpreferences import UserDataPanelAdapter

class EnhancedUserDataPanelAdapter(UserDataPanelAdapter):
""" Adapter for extended user schema """

```
def __init__(self, context):
super(EnhancedUserDataPanelAdapter, self).__init__(context)
self.add_property('academic')
self.add_property('comment')
self.add_property('gender')
self.add_property('phone')
self.add_property('academic')
self.add_property('comment')
self.add_property('state')
self.add_property('expertise')
self.add_property('title')
self.add_property('firstname')
self.add_property('lastname')
self.add_property('position')
self.add_property('phone')
self.add_property('db_projects')
self.add_property('specialties')
self.add_property('institution')
self.add_property('institution_location')
self.add_property('memberships')
self.add_property('projects')
self.add_property('gender')
self.add_property('birthday')
self.add_property('zipcode')
self.add_property('cooperation_interests')

def add_property(self, name, value=None):
fget = lambda self: self._get_property(name)
fset = lambda self, value: self._set_property(name, value)
setattr(self.__class__, name, property(fget, fset))
setattr(self, '_' + name, value)

def _set_property(self, name, value):
return self.context.setMemberProperties({name: value})

def _get_property(self, name):
return self.context.getProperty(name, None)
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.