У меня есть пользовательская страница регистрации и @@ личных настроек на моем сайте Plone 4, у нее есть несколько дополнительных полей, таких как область для людей, чтобы вставить свои социальные сети ссылки и какова их позиция в компании - она также отображает дату, когда они были зарегистрированы на сайте. (Я использовал collective.examples.userdata для достижения этой цели)Сценарий Python для получения содержимого поля личных предпочтений в Plone
Я успешно способен ссылаться на эти поля в шаблоне страницы с использованием определений ниже:
tal:define="membership context/portal_membership;
info python:membership.getMemberInfo(user.getId());
userPosition python:user.getProperty('position');
userFB python:user.getProperty('facebook');
userLinkedIn python:user.getProperty('linkedin');
userTwitter python:user.getProperty('twitter');
userRegDay python:user.getProperty('regday')"
Я пытаюсь написать скрипт на Python, который будет захватывать последний Definiton из python:user.getProperty('regday')
и немного математики, чтобы показать, как долго они были зарегистрированы на сайте.
Мой сценарий звонит memberLength и в моей пользовательской папки, я называю это следующим:
tal:content="context/memberLength"
Я пробовал много вещей, но постоянно получаю ошибки отладочных, так что я не совсем уверен, как выполнить говоря Python, чтобы получить эти детали поля .. Я попробовал следующее (приведенные ниже примеры мне просто пытается получить питон, чтобы получить информацию о поле):
Python скрипт:
membership = context.portal_membership.getMemberInfo()
return "%s" % membership
Однако это возвращает словарь основной информации о текущих пользователях (имя пользователя, описание и т. Д.), Для меня нет ничего полезного - ни одно из моих настраиваемых полей никогда не появляется в этом dict.
membership = context.getProperty('regday', 'Could not find')
return "%s" % membership
Вышеприведенные возвращает мой «Не удалось найти» сообщение, так что не работает либо, то же самое можно сказать ниже сценария:
membership = context.portal_membership.getProperty('regday','Could not find')
return "%s" % membership
Я попытался это:
membership = context.portal_membership.user.getProperty('regday','Could not find')
return "%s" % membership
Тем не менее, я получил сообщение об ошибке AttributeError: user
.
Я также пробовал это утверждение tal: context/userRegDay/membershipLegth
, но это дало мне ошибку, поэтому я попробовал альтернативу Python context.userRegDay.membershipLegth()
- но они не сработали.
Все мои поля выше существуют на вкладке Properties
моей страницы portal_memberdata
в ZMI.
Google не помогает мне так много здесь, все, что я могу найти, это this page, однако на самом деле он не охватывает то, что я пытаюсь сделать, насколько я могу судить.
Может ли кто-нибудь сказать мне, как я могу передать переменную UserRegDay в мой сценарий Python? Или я все об этом ошибаюсь?
Извинения перед любым опытным народом Plone, у которого кровное давление может повыситься в результате чтения моих попыток.
Большое спасибо.
К сожалению, у меня возникают некоторые проблемы, я думаю, может быть, userdata.examples вызывает какой-то вопрос с ним, скорее всего, мое знание Python выпускающая меня ... 'member.getProperty (» regday ') 'похоже, возвращает объект вместо строки, если я укажу альтернативное поле, такое как« имя пользователя », он также возвращает объект. FYI мой модифицированный скрипт: http://pastie.org/8610556 однако, если я делаю прямую копию и вставляю код и обновляю идентификатор пользователя, он также возвращает объект, я попытался собрать все это в список, но это дало мне traceback ('для элемента в члене: append.mylist (item)') – Dan
UPDATE: Я пробовал 'member.getProperty ('regday', 'couldnt find')' и он возвращал 'couldnt find', поэтому я думаю что-то еще пошло не так. Возможно, лучший способ сделать это - избежать «collect.examples.userdata»? – Dan
@Dan 'collect.examples.userdata' определяет некоторые дополнительные поля, такие как' gender'. Они работают на вашем сайте? Другой вопрос: вы на самом деле настроили 'коллектив.examples.userdata' или у вас есть ваша собственная реализация? или оба установлены одновременно? Можете ли вы также вставить выходные данные сценария (какой объект?). – Mathias