Как я могу применить monkeypatch к GAE? - PullRequest
2 голосов
/ 06 мая 2011

Можете ли вы сказать мне, как я применяю этот патч к движку приложений Google и где его поставить?Спасибо

def _user_init(self, email=None, _auth_domain=None,
             _user_id=None, federated_identity=None, federated_provider=None):
  if not _auth_domain:
    _auth_domain = os.environ.get('AUTH_DOMAIN')
  assert _auth_domain

  if email is None and federated_identity is None:
    email = os.environ.get('USER_EMAIL', email)
    _user_id = os.environ.get('USER_ID', _user_id)
    federated_identity = os.environ.get('FEDERATED_IDENTITY',
                                        federated_identity)
    federated_provider = os.environ.get('FEDERATED_PROVIDER',
                                        federated_provider)

  if not email and not federated_identity:
    raise UserNotFoundError

  self.__email = email
  self.__federated_identity = federated_identity
  self.__federated_provider = federated_provider
  self.__auth_domain = _auth_domain
  self.__user_id = _user_id or None

users.User.__init__ = _user_init

Ответы [ 3 ]

2 голосов
/ 06 мая 2011

Просто используйте его как есть: поместите этот код в модуль, который импортируется, прежде чем использовать соответствующий пользовательский модуль или функцию хранилища данных.Я включил соответствующую строку для исправления кода (последняя строка) с самим исправлением.

1 голос
/ 06 мая 2011

Переопределять конструктор, как это, небезопасно. Если внутренняя реализация API пользователя изменяется в рабочей среде, ваше приложение может выйти из строя без предупреждения.

Чего ты здесь пытаешься достичь? Я не вижу никакой собственной логики; похоже, что вы только что скопировали конструктор из дословно SDK. Если вам нужно добавить пользовательскую логику, попробуйте создать подкласс UserProperty и / или вместо него использовать вызовы API пользователя.

1 голос
/ 06 мая 2011

Я думаю, это относится к некоторому приложению как grep в appengine sdk, поскольку 'federated_identity' не дает никаких подсказок.Кстати, вы должны делать то же самое.Grep (или WinGrep) для таких терминов, как «federated», чтобы увидеть, можно ли применить этот частичный патч к любому источнику.

Спасибо за обновленную ссылку.Патч можно добавить в файл google / appengine / api / users.py

Возможно, вам просто нужно добавить последнюю строку: users.User.__init__ = _user_init

Я могвыяснить это после проверки последнего кода в SVN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...