magic parthenay store

This commit is contained in:
Frédéric Péters 2008-12-12 11:26:14 +01:00
parent 2c5238f749
commit c692c43f98
1 changed files with 37 additions and 1 deletions

View File

@ -1,10 +1,15 @@
import os
import twill
from quixote import get_session, get_session_manager, get_request, get_publisher
from qommon.storage import fix_key
import authentic.identities
import collectivity
class MergedIdentityStore(authentic.identities.IdentitiesStoreStorage):
def get_identity_for_name_identifier(self, name_identifier):
x = authentic.identities.IdentitiesStoreStorage.get_identity_for_name_identifier(
@ -33,15 +38,46 @@ class InheritingIdentityStore(authentic.identities.IdentitiesStoreStorage):
return t
class ParthenayIdentityStore(InheritingIdentityStore):
def get_identity_for_account(self, account):
t = None
if not self.identity_class.has_key('_' + account.username):
t = InheritingIdentityStore.get_identity_for_account(self, account)
if t:
return t
# some twill magic
twill.commands.reset_browser()
twill.commands.go(
"http://web.cc-parthenay.fr/_layouts/login.aspx?ReturnUrl=%2f_layouts%2fAuthenticate.aspx%3fSource%3d%252fPages%252f&Source=%2fPages%2f")
twill.commands.fv('aspnetForm', '2', account.username)
twill.commands.fv('aspnetForm', '3', account.password)
twill.commands.submit()
if twill.commands.browser.get_url() == 'http://web.cc-parthenay.fr/Pages/':
# authent ok
try:
t = self.identity_class.get('_' + account.username)
except KeyError:
t = self.identity_class(id = '_' + account.username)
t.store()
return t
def get_collectivity_identity_class(collectivity_id):
class CollectivityIdentity(authentic.identities.Identity):
_names = 'identities-' + str(collectivity_id)
def store(self):
self._filename = os.path.join(self._names, fix_key(self.id))
self.__class__ = authentic.identities.Identity
authentic.identities.Identity.store(self)
return CollectivityIdentity
def get_collectivity_store(collectivity_id):
if collectivity_id == '547263': # Parthenay
raise NotImplementedError()
store = ParthenayIdentityStore(
identity_class = get_collectivity_identity_class(collectivity_id))
elif collectivity_id:
# Vandoeuvre (546555) and others
store = InheritingIdentityStore(