diff options
-rw-r--r-- | askbot/context.py | 7 | ||||
-rw-r--r-- | askbot/mail/lamson_handlers.py | 11 | ||||
-rw-r--r-- | askbot/migrations/0137_migrate_data_to_internal_group_models.py | 3 | ||||
-rw-r--r-- | askbot/models/__init__.py | 20 | ||||
-rw-r--r-- | askbot/models/post.py | 19 | ||||
-rw-r--r-- | askbot/models/question.py | 18 | ||||
-rw-r--r-- | askbot/models/tag.py | 58 | ||||
-rw-r--r-- | askbot/models/user.py | 53 | ||||
-rw-r--r-- | askbot/skins/default/templates/widgets/group_info.html | 18 | ||||
-rw-r--r-- | askbot/tests/db_api_tests.py | 22 | ||||
-rw-r--r-- | askbot/tests/page_load_tests.py | 4 | ||||
-rw-r--r-- | askbot/tests/thread_model_tests.py | 4 | ||||
-rw-r--r-- | askbot/tests/user_model_tests.py | 6 | ||||
-rw-r--r-- | askbot/tests/utils.py | 5 | ||||
-rw-r--r-- | askbot/views/commands.py | 42 | ||||
-rw-r--r-- | askbot/views/users.py | 20 |
16 files changed, 154 insertions, 156 deletions
diff --git a/askbot/context.py b/askbot/context.py index 402183ea..111845fb 100644 --- a/askbot/context.py +++ b/askbot/context.py @@ -55,9 +55,8 @@ def application_settings(request): } if askbot_settings.GROUPS_ENABLED: - context['group_list'] = models.Tag.group_tags.get_all().filter( - deleted=False - ).exclude( - name__startswith='_internal_') + context['group_list'] = models.Group.objects.exclude( + name__startswith='_internal_' + ) return context diff --git a/askbot/mail/lamson_handlers.py b/askbot/mail/lamson_handlers.py index 6bafbc3f..59d707c7 100644 --- a/askbot/mail/lamson_handlers.py +++ b/askbot/mail/lamson_handlers.py @@ -6,7 +6,7 @@ from django.template import Context from django.utils.translation import ugettext as _ from lamson.routing import route, stateless from lamson.server import Relay -from askbot.models import ReplyAddress, Tag +from askbot.models import ReplyAddress, Group, Tag from askbot import mail from askbot.conf import settings as askbot_settings from askbot.skins.loaders import get_template @@ -199,15 +199,12 @@ def ASK(message, host = None, addr = None): if askbot_settings.GROUP_EMAIL_ADDRESSES_ENABLED == False: return try: - group_tag = Tag.group_tags.get( - deleted = False, - name__iexact = addr - ) + group = Group.objects.get(name__iexact=addr) mail.process_emailed_question( from_address, subject, body_text, stored_files, - group_id = group_tag.id + group_id = group.id ) - except Tag.DoesNotExist: + except Group.DoesNotExist: #do nothing because this handler will match all emails return except Tag.MultipleObjectsReturned: diff --git a/askbot/migrations/0137_migrate_data_to_internal_group_models.py b/askbot/migrations/0137_migrate_data_to_internal_group_models.py index e6388db4..0f18846e 100644 --- a/askbot/migrations/0137_migrate_data_to_internal_group_models.py +++ b/askbot/migrations/0137_migrate_data_to_internal_group_models.py @@ -17,9 +17,6 @@ class Migration(DataMigration): for profile in ProgressBar(items, count, message): group_tag = profile.group_tag group_name = group_tag.name.replace('-', ' ') - if group_name.startswith('_internal_'): - group_name = group_name.replace('_internal_', '', 1) - group = orm['askbot.Group']() group.name = group_name group.logo_url = profile.logo_url diff --git a/askbot/models/__init__.py b/askbot/models/__init__.py index d5758b67..6a957265 100644 --- a/askbot/models/__init__.py +++ b/askbot/models/__init__.py @@ -47,7 +47,7 @@ from askbot.models.user import AuthUserGroups as GroupMembership from askbot.models.user import Group from askbot.models.post import Post, PostRevision from askbot.models.post import PostFlagReason, AnonymousAnswer -from askbot.models.post import PostToGroup2 as PostToGroup +from askbot.models.post import PostToGroup from askbot.models.post import DraftAnswer from askbot.models.reply_by_email import ReplyAddress from askbot.models import signals @@ -2207,11 +2207,11 @@ def get_profile_link(self): def user_get_groups(self, private=False): """returns a query set of groups to which user belongs""" #todo: maybe cache this query - return Tag.group_tags.get_for_user(self, private=private) + return Group.objects.get_for_user(self, private=private) def user_get_personal_group(self): group_name = format_personal_group_name(self) - return Tag.group_tags.get(name=group_name) + return Group.objects.get(name=group_name) def user_get_foreign_groups(self): """returns a query set of groups to which user does not belong""" @@ -2243,8 +2243,6 @@ def user_get_groups_membership_info(self, groups): ``groups`` is a group tag query set """ - groups = groups.select_related('group_profile') - group_ids = groups.values_list('id', flat = True) memberships = GroupMembership.objects.filter( user__id = self.id, @@ -2258,7 +2256,7 @@ def user_get_groups_membership_info(self, groups): info[membership.group_id]['is_member'] = True for group in groups: - info[group.id]['can_join'] = group.group_profile.can_accept_user(self) + info[group.id]['can_join'] = group.can_accept_user(self) return info @@ -2634,8 +2632,12 @@ def user_join_group(self, group): def user_leave_group(self, group): self.edit_group_membership(group=group, user=self, action='remove') -def user_is_group_member(self, group = None): - return self.group_memberships.filter(group = group).count() == 1 +def user_is_group_member(self, group=None): + import pdb + pdb.set_trace() + return GroupMembership.objects.filter( + user=self, group=group + ).count() == 1 User.add_to_class( 'add_missing_askbot_subscriptions', @@ -3371,7 +3373,7 @@ def add_user_to_personal_group(sender, instance, created, **kwargs): #in theore here we may have two users that will have #identical group names!!! group_name = format_personal_group_name(instance) - group = Tag.group_tags.get_or_create( + group = Group.objects.get_or_create( group_name=group_name, user=instance ) instance.edit_group_membership( diff --git a/askbot/models/post.py b/askbot/models/post.py index 0ca31750..fb9491f1 100644 --- a/askbot/models/post.py +++ b/askbot/models/post.py @@ -27,6 +27,7 @@ from askbot import const from askbot.models.user import Activity from askbot.models.user import EmailFeedSetting from askbot.models.user import Group +from askbot.models.user import AuthUserGroups as GroupMembership from askbot.models.tag import Tag, MarkedTag from askbot.models.tag import get_groups, tags_match_some_wildcard from askbot.models.tag import get_global_group @@ -41,7 +42,7 @@ from askbot.utils.diff import textDiff as htmldiff from askbot.utils import mysql -class PostToGroup2(models.Model): +class PostToGroup(models.Model): post = models.ForeignKey('Post') group = models.ForeignKey(Group) @@ -320,7 +321,7 @@ class Post(models.Model): parent = models.ForeignKey('Post', blank=True, null=True, related_name='comments') # Answer or Question for Comment thread = models.ForeignKey('Thread', blank=True, null=True, default = None, related_name='posts') - new_groups = models.ManyToManyField(Group, through='PostToGroup2') + groups = models.ManyToManyField(Group, through='PostToGroup') author = models.ForeignKey(User, related_name='posts') added_at = models.DateTimeField(default=datetime.datetime.now) @@ -558,21 +559,21 @@ class Post(models.Model): def add_to_groups(self, groups): #todo: use bulk-creation for group in groups: - PostToGroup.objects.get_or_create(post=self, tag=group) + PostToGroup.objects.get_or_create(post=self, group=group) if self.is_answer() or self.is_question(): comments = self.comments.all() for group in groups: for comment in comments: - PostToGroup.objects.get_or_create(post=comment, tag=group) + PostToGroup.objects.get_or_create(post=comment, group=group) def remove_from_groups(self, groups): - PostToGroup.objects.filter(post=self, tag__in=groups).delete() + PostToGroup.objects.filter(post=self, group__in=groups).delete() if self.is_answer() or self.is_question(): comment_ids = self.comments.all().values_list('id', flat=True) PostToGroup.objects.filter( post__id__in=comment_ids, - tag__in=groups + group__in=groups ).delete() @@ -650,7 +651,7 @@ class Post(models.Model): todo: this is a copy-paste in thread and post """ if group_id: - group = Tag.group_tags.get(id=group_id) + group = Group.objects.get(id=group_id) groups = [group] self.add_to_groups(groups) @@ -1965,9 +1966,9 @@ class PostRevision(models.Model): if self.by_email and self.email_address: group_name = self.email_address.split('@')[0] try: - group = Tag.objects.get(name = group_name, deleted = False) + group = Group.objects.get(name = group_name, deleted = False) return group.group.profile.moderate_email - except Tag.DoesNotExist: + except Group.DoesNotExist: pass return True return False diff --git a/askbot/models/question.py b/askbot/models/question.py index 85495e08..c30d7089 100644 --- a/askbot/models/question.py +++ b/askbot/models/question.py @@ -24,7 +24,7 @@ from askbot.models.tag import delete_tags, separate_unused_tags from askbot.models.base import DraftContent, BaseQuerySetManager from askbot.models.tag import Tag, get_groups from askbot.models.post import Post, PostRevision -from askbot.models.post import PostToGroup2 as PostToGroup +from askbot.models.post import PostToGroup from askbot.models.user import Group from askbot.models import signals from askbot import const @@ -534,11 +534,19 @@ class Thread(models.Model): groups = self.groups.filter(name__startswith='_internal_') if exclude_user: - groups = groups.exclude(created_by__id=exclude_user.id) + exclude_user_group = exclude_user.get_personal_group() + groups = groups.exclude(name=exclude_user_group.name) - user_ids = groups.values_list('created_by__id', flat=True) if max_count: - user_ids = user_ids[:max_count] + groups = groups[:max_count] + + from askbot.models import GroupMembership + user_ids = GroupMembership.objects.filter( + group__in=groups + ).values_list( + 'user__id', flat=True + ) + return User.objects.filter(id__in=user_ids) def get_groups_shared_with(self, max_count=None): @@ -904,7 +912,7 @@ class Thread(models.Model): The add by ID now only works if user belongs to that group """ if group_id: - group = Tag.group_tags.get(id=group_id) + group = Group.objects.get(id=group_id) groups = [group] self.add_to_groups(groups) diff --git a/askbot/models/tag.py b/askbot/models/tag.py index 5b6d7076..c04b36da 100644 --- a/askbot/models/tag.py +++ b/askbot/models/tag.py @@ -17,15 +17,11 @@ def get_global_group(): #revert the values #todo: change groups to django groups group_name = askbot_settings.GLOBAL_GROUP_NAME + from askbot.models import Group try: - return Tag.group_tags.get(name=group_name) - except Tag.DoesNotExist: - from askbot.models import get_admin - return Tag.group_tags.get_or_create( - group_name=group_name, - user=get_admin(), - is_open=False - ) + return Group.objects.get(name=group_name) + except Group.DoesNotExist: + return Group.objects.create(name=group_name, is_open=False) def delete_tags(tags): """deletes tags in the list""" @@ -282,28 +278,6 @@ class TagManager(BaseQuerySetManager): return created_tags -class GroupTagQuerySet(TagQuerySet): - """Custom query set for the group""" - - def get_for_user(self, user=None, private=False): - if private: - global_group = get_global_group() - return self.filter( - user_memberships__user=user - ).exclude(id=global_group.id) - else: - return self.filter(user_memberships__user = user) - - def get_all(self): - return self.annotate( - member_count = models.Count('user_memberships') - ).filter( - member_count__gt = 0 - ) - - def get_by_name(self, group_name = None): - return self.get(name = clean_group_name(group_name)) - def clean_group_name(name): """group names allow spaces, @@ -311,29 +285,6 @@ def clean_group_name(name): to replace spaces with dashes""" return re.sub('\s+', '-', name.strip()) -class GroupTagManager(BaseQuerySetManager): - """manager for group tags""" - - def get_query_set(self): - return GroupTagQuerySet(self.model) - - def get_or_create(self, group_name = None, user = None, is_open=True): - """creates a group tag or finds one, if exists""" - #todo: here we might fill out the group profile - - #replace spaces with dashes - group_name = clean_group_name(group_name) - try: - #iexact is important!!! b/c we don't want case variants - #of tags - tag = self.get(name__iexact = group_name) - except self.model.DoesNotExist: - tag = self.model(name = group_name, created_by = user) - tag.save() - from askbot.models.user import GroupProfile - group_profile = GroupProfile(group_tag = tag, is_open=is_open) - group_profile.save() - return tag class Tag(models.Model): #a couple of status constants @@ -364,7 +315,6 @@ class Tag(models.Model): ) objects = TagManager() - group_tags = GroupTagManager() class Meta: app_label = 'askbot' diff --git a/askbot/models/user.py b/askbot/models/user.py index a5b6dd1b..0eb48f6f 100644 --- a/askbot/models/user.py +++ b/askbot/models/user.py @@ -14,7 +14,9 @@ from django.utils.html import strip_tags from askbot import const from askbot.conf import settings as askbot_settings from askbot.utils import functions -from askbot.models.tag import Tag +from askbot.models.base import BaseQuerySetManager +from askbot.models.tag import Tag, get_global_group +from askbot.models.tag import clean_group_name#todo - delete this from askbot.forms import DomainNameField from askbot.utils.forms import email_is_allowed @@ -355,6 +357,49 @@ class AuthUserGroups(models.Model): managed = False +class GroupQuerySet(models.query.QuerySet): + """Custom query set for the group""" + + def get_for_user(self, user=None, private=False): + if private: + global_group = get_global_group() + return self.filter( + user=user + ).exclude(id=global_group.id) + else: + return self.filter(user = user) + + def get_by_name(self, group_name = None): + return self.get(name = clean_group_name(group_name)) + + +class GroupManager(BaseQuerySetManager): + """model manager for askbot groups""" + + def get_query_set(self): + return GroupQuerySet(self.model) + + def create(self, **kwargs): + name = kwargs['name'] + try: + group_ptr = AuthGroup.objects.get(name=name) + kwargs['group_ptr'] = group_ptr + except AuthGroup.DoesNotExist: + pass + return super(GroupManager, self).create(**kwargs) + + def get_or_create(self, group_name = None, user = None, is_open=True): + """creates a group tag or finds one, if exists""" + #todo: here we might fill out the group profile + try: + #iexact is important!!! b/c we don't want case variants + #of tags + group = self.get(name__iexact = group_name) + except self.model.DoesNotExist: + group = self.create(name=group_name, is_open=is_open) + return group + + class Group(AuthGroup): """group profile for askbot""" logo_url = models.URLField(null = True) @@ -370,6 +415,8 @@ class Group(AuthGroup): null = True, blank = True, default = '' ) + objects = GroupManager() + class Meta: app_label = 'askbot' db_table = 'askbot_group' @@ -380,7 +427,7 @@ class Group(AuthGroup): return False #a special case - automatic global group cannot be joined or left - if self.group_tag.name == askbot_settings.GLOBAL_GROUP_NAME: + if self.name == askbot_settings.GLOBAL_GROUP_NAME: return False if self.is_open: @@ -423,4 +470,4 @@ class Group(AuthGroup): def save(self, *args, **kwargs): self.clean() - super(GroupProfile, self).save(*args, **kwargs) + super(Group, self).save(*args, **kwargs) diff --git a/askbot/skins/default/templates/widgets/group_info.html b/askbot/skins/default/templates/widgets/group_info.html index 5d3a4c7f..85fcd693 100644 --- a/askbot/skins/default/templates/widgets/group_info.html +++ b/askbot/skins/default/templates/widgets/group_info.html @@ -2,8 +2,8 @@ <div id="group-wiki-{{group.id}}" class="box group-wiki"> <h2>{% trans %}Group info{% endtrans %}</h2> <img class="group-logo" - {% if group.group_profile.logo_url %} - src="{{ group.group_profile.logo_url }}" + {% if group.logo_url %} + src="{{ group.logo_url }}" {% else %} style="display:none" {% endif %} @@ -24,7 +24,7 @@ <div class="controls"> <a class="edit-description" >{% trans %}edit description{% endtrans %}</a> - {% if group.group_profile.logo_url %} + {% if group.logo_url %} <span>|</span> <a class="change-logo" >{% trans %}change logo{% endtrans %}</a> @@ -39,7 +39,7 @@ {% if group_email_moderation_enabled %} <input type="checkbox" id="moderate-email" - {% if group.group_profile.moderate_email %}checked="checked"{% endif %} + {% if group.moderate_email %}checked="checked"{% endif %} data-toggle-url="{% url toggle_group_profile_property %}" /> <label for="moderate-email"> @@ -49,7 +49,7 @@ {% endif %} <input type="checkbox" id="open-or-close-group" - {% if group.group_profile.is_open %}checked="checked"{% endif %} + {% if group.is_open %}checked="checked"{% endif %} data-toggle-url="{% url toggle_group_profile_property %}" /> <label for="open-or-close-group"> @@ -59,8 +59,8 @@ <a id="preapproved-emails" title="{% trans %}list of email addresses of pre-approved users{% endtrans %}" - data-object-id="{{group.group_profile.id}}" - data-model-name="GroupProfile" + data-object-id="{{group.group_ptr_id}}" + data-model-name="Group" data-property-name="preapproved_emails" data-url="{% url edit_object_property_text %}" data-editor-heading="{% trans %}List of preapproved email addresses{% endtrans %}" @@ -70,8 +70,8 @@ <a id="preapproved-email-domains" title="{% trans %}list of preapproved email address domain names{% endtrans %}" - data-object-id="{{group.group_profile.id}}" - data-model-name="GroupProfile" + data-object-id="{{group.group_ptr_id}}" + data-model-name="Group" data-property-name="preapproved_email_domains" data-url="{% url edit_object_property_text %}" data-editor-heading="{% trans %}List of preapproved email domain names{% endtrans %}" diff --git a/askbot/tests/db_api_tests.py b/askbot/tests/db_api_tests.py index 07590487..909616ff 100644 --- a/askbot/tests/db_api_tests.py +++ b/askbot/tests/db_api_tests.py @@ -431,13 +431,6 @@ class TagAndGroupTests(AskbotTestCase): 'answer_comment': answer_comment } - def test_group_cannot_create_case_variant_tag(self): - self.post_question(user = self.u1, tags = 'one two three') - models.Tag.group_tags.get_or_create(user = self.u1, group_name = 'One') - tag_one = models.Tag.objects.filter(name__iexact = 'one') - self.assertEqual(tag_one.count(), 1) - self.assertEqual(tag_one[0].name, 'one') - def test_posts_added_to_global_group(self): q = self.post_question(user=self.u1) group_name = askbot_settings.GLOBAL_GROUP_NAME @@ -579,3 +572,18 @@ class TagAndGroupTests(AskbotTestCase): visible_threads = models.Thread.objects.get_visible(AnonymousUser()) self.assertEqual(visible_threads.count(), 0) + +class GroupTests(AskbotTestCase): + + def setUp(self): + self.u1 = self.create_user('user1') + + def test_join_group(self): + #create group + group = models.Group(name='somegroup') + group.save() + #join + self.u1.join_group(group) + #assert membership of askbot group object + found_count = self.u1.get_groups().filter(name='somegroup').count() + self.assertEqual(found_count, 1) diff --git a/askbot/tests/page_load_tests.py b/askbot/tests/page_load_tests.py index f3e10c1e..a3f36e80 100644 --- a/askbot/tests/page_load_tests.py +++ b/askbot/tests/page_load_tests.py @@ -520,9 +520,9 @@ class PageLoadTestCase(AskbotTestCase): ) def test_user_page_with_groups_enabled(self): - askbot_settings.GROUPS_ENABLED = True + askbot_settings.update('GROUPS_ENABLED', True) self.try_url('users', status_code=302) - askbot_settings.GROUPS_ENABLED = False + askbot_settings.update('GROUPS_ENABLED', False) self.try_url('users', status_code=200) class AvatarTests(AskbotTestCase): diff --git a/askbot/tests/thread_model_tests.py b/askbot/tests/thread_model_tests.py index 3f313ff3..45a704c0 100644 --- a/askbot/tests/thread_model_tests.py +++ b/askbot/tests/thread_model_tests.py @@ -19,9 +19,7 @@ class ThreadModelTestsWithGroupsEnabled(AskbotTestCase): 'm_and_c': 'i' } ) - self.group = models.Tag.group_tags.get_or_create( - group_name = 'jockeys', user = self.admin - ) + self.group = models.Group.objects.get_or_create(group_name = 'jockeys') self.admin.edit_group_membership( group = self.group, user = self.admin, diff --git a/askbot/tests/user_model_tests.py b/askbot/tests/user_model_tests.py index 7a8fd9f2..df4974dd 100644 --- a/askbot/tests/user_model_tests.py +++ b/askbot/tests/user_model_tests.py @@ -9,12 +9,8 @@ class UserModelTests(AskbotTestCase): def test_new_user_has_personal_group(self): user = User.objects.create_user('somebody', 'somebody@example.com') group_name = format_personal_group_name(user) - group = models.Tag.objects.filter(name=group_name) + group = models.Group.objects.filter(name=group_name) self.assertEqual(group.count(), 1) - - group_profile = models.GroupProfile.objects.filter(group_tag=group) - self.assertEqual(group_profile.count(), 1) - memberships = models.GroupMembership.objects.filter( group=group, user=user ) diff --git a/askbot/tests/utils.py b/askbot/tests/utils.py index 99f43677..eea9b96b 100644 --- a/askbot/tests/utils.py +++ b/askbot/tests/utils.py @@ -252,10 +252,7 @@ class AskbotTestCase(TestCase): return tag def create_group(self, group_name=None, user=None): - return models.Tag.group_tags.get_or_create( - group_name='private', - user=self.u1 - ) + return models.Group.objects.get_or_create(group_name='private') def post_comment( self, diff --git a/askbot/views/commands.py b/askbot/views/commands.py index 50a94d6a..abc1457d 100644 --- a/askbot/views/commands.py +++ b/askbot/views/commands.py @@ -656,12 +656,12 @@ def get_groups_list(request): """returns names of group tags for the autocomplete function""" global_group = get_global_group() - group_names = models.Tag.group_tags.get_all().filter( + group_names = models.Group.objects.all().filter( deleted = False ).exclude( - name=global_group.name - ).exclude( name__startswith='_internal_' + ).exclude( + name=global_group.name ).values_list( 'name', flat = True ) @@ -896,7 +896,7 @@ def edit_group_membership(request): #warning: possible race condition if action == 'add': group_params = {'group_name': group_name, 'user': user} - group = models.Tag.group_tags.get_or_create(**group_params) + group = models.Group.objects.get_or_create(**group_params) request.user.edit_group_membership(user, group, 'add') template = get_template('widgets/group_snippet.html') return { @@ -906,9 +906,9 @@ def edit_group_membership(request): } elif action == 'remove': try: - group = models.Tag.group_tags.get_by_name(group_name = group_name) + group = models.Group.objects.get(group_name = group_name) request.user.edit_group_membership(user, group, 'remove') - except models.Tag.DoesNotExist: + except models.Group.DoesNotExist: raise exceptions.PermissionDenied() else: raise exceptions.PermissionDenied() @@ -926,9 +926,9 @@ def save_group_logo_url(request): if form.is_valid(): group_id = form.cleaned_data['group_id'] image_url = form.cleaned_data['image_url'] - group = models.Tag.group_tags.get(id = group_id) - group.group_profile.logo_url = image_url - group.group_profile.save() + group = models.Group.objects.get(id = group_id) + group.logo_url = image_url + group.save() else: raise ValueError('invalid data found when saving group logo') @@ -939,9 +939,9 @@ def save_group_logo_url(request): @decorators.admins_only def delete_group_logo(request): group_id = IntegerField().clean(int(request.POST['group_id'])) - group = models.Tag.group_tags.get(id = group_id) - group.group_profile.logo_url = None - group.group_profile.save() + group = models.Group.objects.get(id = group_id) + group.logo_url = None + group.save() @csrf.csrf_exempt @@ -964,10 +964,10 @@ def toggle_group_profile_property(request): property_name = CharField().clean(request.POST['property_name']) assert property_name in ('is_open', 'moderate_email') - group = models.Tag.objects.get(id = group_id) - new_value = not getattr(group.group_profile, property_name) - setattr(group.group_profile, property_name, new_value) - group.group_profile.save() + group = models.Group.objects.get(id = group_id) + new_value = not getattr(group, property_name) + setattr(group, property_name, new_value) + group.save() return {'is_enabled': new_value} @@ -980,8 +980,8 @@ def edit_object_property_text(request): property_name = CharField().clean(request.REQUEST['property_name']) accessible_fields = ( - ('GroupProfile', 'preapproved_emails'), - ('GroupProfile', 'preapproved_email_domains') + ('Group', 'preapproved_emails'), + ('Group', 'preapproved_email_domains') ) if (model_name, property_name) not in accessible_fields: @@ -1007,7 +1007,7 @@ def join_or_leave_group(request): raise exceptions.PermissionDenied() group_id = IntegerField().clean(request.POST['group_id']) - group = models.Tag.objects.get(id = group_id) + group = models.Group.objects.get(id = group_id) if request.user.is_group_member(group): action = 'remove' @@ -1070,7 +1070,7 @@ def moderate_suggested_tag(request): thread_id = form.cleaned_data.get('thread_id', None) try: - tag = models.Tag.objects.get(id = tag_id)#can tag not exist? + tag = models.Tag.objects.get(id=tag_id)#can tag not exist? except models.Tag.DoesNotExist: return @@ -1208,7 +1208,7 @@ def share_question_with_group(request): if group_name == askbot_settings.GLOBAL_GROUP_NAME: thread.make_public(recursive=True) else: - group = models.Tag.group_tags.get(name=group_name) + group = models.Group.objects.get(name=group_name) thread.add_to_groups((group,), recursive=True) #get notif sets after diff --git a/askbot/views/users.py b/askbot/views/users.py index c5b95390..d76712e6 100644 --- a/askbot/views/users.py +++ b/askbot/views/users.py @@ -81,18 +81,17 @@ def show_users(request, by_group=False, group_id=None, group_slug=None): return HttpResponseRedirect('groups') else: try: - group = models.Tag.group_tags.get(id = group_id) + group = models.Group.objects.get(id = group_id) group_email_moderation_enabled = \ ( askbot_settings.GROUP_EMAIL_ADDRESSES_ENABLED \ and askbot_settings.ENABLE_CONTENT_MODERATION ) - user_can_join_group = group.group_profile.can_accept_user(request.user) - except models.Tag.DoesNotExist: + user_can_join_group = group.can_accept_user(request.user) + except models.Group.DoesNotExist: raise Http404 if group_slug == slugify(group.name): - users = users.filter( - group_memberships__group__id = group_id + users = users.filter(groups__id = group_id ) if request.user.is_authenticated(): user_is_group_member = bool( @@ -462,7 +461,7 @@ def user_stats(request, user, context): badges = badges_dict.items() badges.sort(key=operator.itemgetter(1), reverse=True) - user_groups = models.Tag.group_tags.get_for_user(user = user) + user_groups = models.Group.objects.get_for_user(user = user) user_groups = user_groups.exclude(name__startswith='_internal_') global_group = get_global_group() user_groups = user_groups.exclude(name=global_group.name) @@ -1011,15 +1010,14 @@ def groups(request, id = None, slug = None): scope = 'all-groups' if scope == 'all-groups': - groups = models.Tag.group_tags.get_all() + groups = models.Group.objects.all() else: - groups = models.Tag.group_tags.get_for_user( - user = request.user + groups = models.Group.objects.get_for_user( + user=request.user ) groups = groups.exclude(name__startswith='_internal_') - groups = groups.annotate(users_count=Count('user_memberships')) - groups = groups.select_related('group_profile') + groups = groups.annotate(users_count=Count('user')) user_can_add_groups = request.user.is_authenticated() and \ request.user.is_administrator_or_moderator() |