changed user-api, so it can be filter the result for the prefix and the id

This commit is contained in:
Oskar Hahn 2012-08-03 14:23:13 +02:00
parent 4f61c763d7
commit 1ae91d1130
3 changed files with 35 additions and 30 deletions

View File

@ -89,17 +89,6 @@ class Profile(models.Model, UserMixin):
) )
class ParticipantUsers(object):
user_prefix = Profile.user_prefix
def __iter__(self):
for profile in Profile.objects.all():
yield profile
def __getitem__(self, key):
return Profile.objects.get(pk=key)
class DjangoGroup(models.Model, UserMixin): class DjangoGroup(models.Model, UserMixin):
user_prefix = 'djangogroup' user_prefix = 'djangogroup'
@ -109,20 +98,33 @@ class DjangoGroup(models.Model, UserMixin):
return unicode(self.group) return unicode(self.group)
class DjangoGroupUsers(object): class ParticipantUsers(object):
user_prefix = DjangoGroup.user_prefix def __init__(self, user_prefix=None, id=None):
self.user_prefix = user_prefix
self.id = id
def __iter__(self): def __iter__(self):
if not self.user_prefix or self.user_prefix == Profile.user_prefix:
if self.id:
yield Profile.objects.get(pk=self.id)
else:
for profile in Profile.objects.all():
yield profile
if not self.user_prefix or self.user_prefix == DjangoGroup.user_prefix:
if self.id:
yield DjangoGroup.objects.get(pk=self.id)
else:
for group in DjangoGroup.objects.all(): for group in DjangoGroup.objects.all():
yield group yield group
def __getitem__(self, key): def __getitem__(self, key):
return DjangoGroup.objects.get(pk=key) return Profile.objects.get(pk=key)
@receiver(receiv_users, dispatch_uid="participant_profile") @receiver(receiv_users, dispatch_uid="participant_profile")
def receiv_users(sender, **kwargs): def receiv_users(sender, **kwargs):
return [ParticipantUsers(), DjangoGroupUsers()] return ParticipantUsers(user_prefix=kwargs['user_prefix'], id=kwargs['id'])
@receiver(default_config_value, dispatch_uid="participant_default_config") @receiver(default_config_value, dispatch_uid="participant_default_config")

View File

@ -87,29 +87,32 @@ def split_uid(uid):
def get_user(uid): def get_user(uid):
try: try:
user_type, id = split_uid(uid) user_prefix, id = split_uid(uid)
except TypeError: except TypeError:
return EmtyUser() return EmtyUser()
for receiver, users_list in receiv_users.send(sender='get_user'): return Users(user_prefix=user_prefix, id=id)[0]
for users in users_list:
if users.user_prefix == user_type:
return users[id]
# TODO: Use own Exception
raise Exception('User with uid %s does not exist' % uid)
class Users(object): class Users(object):
""" """
A Storage for a multiplicity of different User-Objects. A Storage for a multiplicity of different User-Objects.
""" """
def __init__(self, user_prefix=None, id=None):
self.user_prefix = user_prefix
self.id = id
def __iter__(self): def __iter__(self):
for receiver, users_list in receiv_users.send(sender='users'): for receiver, users in receiv_users.send(sender='users', user_prefix=self.user_prefix, id=self.id):
for users in users_list:
# Does iter(users) work? # Does iter(users) work?
for user in users: for user in users:
yield user yield user
def __getitem__(self, key):
user_list = list(self)
print user_list
return user_list[key]
def generate_uid(prefix, id): def generate_uid(prefix, id):
if ':' in prefix: if ':' in prefix:

View File

@ -12,4 +12,4 @@
from django.dispatch import Signal from django.dispatch import Signal
receiv_users = Signal(providing_args=[]) receiv_users = Signal(providing_args=['user_prefix', 'id'])