summaryrefslogtreecommitdiffstats
path: root/askbot
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2012-09-16 22:11:16 -0400
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2012-09-16 22:11:16 -0400
commit5ea0e8458e93483347c4db08166ed5e6cd9e34f8 (patch)
tree49cc1e34b7983605c90ddee51e214464a26a53dc /askbot
parent547f8c19aaa41199624ff59c89c86cfd1293945b (diff)
downloadaskbot-5ea0e8458e93483347c4db08166ed5e6cd9e34f8.tar.gz
askbot-5ea0e8458e93483347c4db08166ed5e6cd9e34f8.tar.bz2
askbot-5ea0e8458e93483347c4db08166ed5e6cd9e34f8.zip
factored out the name prefix for the personal groups to just one place
Diffstat (limited to 'askbot')
-rw-r--r--askbot/context.py5
-rw-r--r--askbot/forms.py2
-rw-r--r--askbot/management/commands/delete_unused_tags.py6
-rw-r--r--askbot/models/__init__.py2
-rw-r--r--askbot/models/question.py22
-rw-r--r--askbot/models/tag.py3
-rw-r--r--askbot/models/user.py18
-rw-r--r--askbot/views/commands.py15
-rw-r--r--askbot/views/users.py6
9 files changed, 44 insertions, 35 deletions
diff --git a/askbot/context.py b/askbot/context.py
index 2dace3eb..1828ae11 100644
--- a/askbot/context.py
+++ b/askbot/context.py
@@ -59,9 +59,8 @@ def application_settings(request):
}
if askbot_settings.GROUPS_ENABLED:
- groups = models.Group.objects.exclude(
- name__startswith='_internal_'
- ).values('id', 'name')
+ groups = models.Group.objects.exclude_personal()
+ groups = groups.values('id', 'name')
group_list = []
for group in groups:
group_slug = slugify(group['name'])
diff --git a/askbot/forms.py b/askbot/forms.py
index eb791595..8548683f 100644
--- a/askbot/forms.py
+++ b/askbot/forms.py
@@ -952,7 +952,7 @@ class CreateAskWidgetForm(forms.Form, FormWithHideableFields):
from askbot.models import Tag
super(CreateAskWidgetForm, self).__init__(*args, **kwargs)
self.fields['group'] = forms.ModelChoiceField(
- queryset=get_groups().exclude(name__startswith='_internal_'),
+ queryset=get_groups().exclude_personal(),
required=False
)
self.fields['tag'] = forms.ModelChoiceField(queryset=Tag.objects.get_content_tags(),
diff --git a/askbot/management/commands/delete_unused_tags.py b/askbot/management/commands/delete_unused_tags.py
index bc0b7d69..9bcf191b 100644
--- a/askbot/management/commands/delete_unused_tags.py
+++ b/askbot/management/commands/delete_unused_tags.py
@@ -14,11 +14,6 @@ class Command(NoArgsCommand):
tags = tags.iterator()
deleted_tags = list()
for tag in ProgressBar(tags, total, message):
- if tag.name == askbot_settings.GLOBAL_GROUP_NAME:#todo: temporary
- continue
- if tag.name.startswith('_internal_'):
- continue
-
if not tag.threads.exists():
deleted_tags.append(tag.name)
tag.delete()
@@ -38,4 +33,3 @@ class Command(NoArgsCommand):
print "Deleted."
else:
print "Did not find any."
-
diff --git a/askbot/models/__init__.py b/askbot/models/__init__.py
index 418a5dba..f5e67189 100644
--- a/askbot/models/__init__.py
+++ b/askbot/models/__init__.py
@@ -2249,7 +2249,7 @@ def user_get_primary_group(self):
"""
groups = self.get_groups(private=True)
for group in groups:
- if group.name.startswith('_internal_'):
+ if group.is_personal():
continue
return group
return None
diff --git a/askbot/models/question.py b/askbot/models/question.py
index 98a38c90..a4b3233a 100644
--- a/askbot/models/question.py
+++ b/askbot/models/question.py
@@ -25,7 +25,7 @@ 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 PostToGroup
-from askbot.models.user import Group
+from askbot.models.user import Group, PERSONAL_GROUP_NAME_PREFIX
from askbot.models import signals
from askbot import const
from askbot.utils.lists import LazyList
@@ -540,8 +540,8 @@ class Thread(models.Model):
exclude_user=visitor
)
groups = self.groups
- ugroups = groups.filter(name__startswith='_internal_')
- ggroups = groups.exclude(name__startswith='_internal_')
+ ugroups = groups.get_personal()
+ ggroups = groups.exclude_personal()
sharing_info = {
'users': shared_users,
@@ -559,7 +559,7 @@ class Thread(models.Model):
thread=self,
visibility=ThreadToGroup.SHOW_ALL_RESPONSES
) & models.Q(
- group__name__startswith='_internal_'
+ group__name__startswith=PERSONAL_GROUP_NAME_PREFIX
)
if exclude_user:
@@ -585,13 +585,13 @@ class Thread(models.Model):
def get_groups_shared_with(self, max_count=None):
"""returns query set of groups with whom thread is shared"""
thread_groups = ThreadToGroup.objects.filter(
- models.Q(
- thread=self,
- visibility=ThreadToGroup.SHOW_ALL_RESPONSES
- ) & ~models.Q(
- group__name__startswith='_internal_'
- )
- )
+ models.Q(
+ thread=self,
+ visibility=ThreadToGroup.SHOW_ALL_RESPONSES
+ ) & ~models.Q(
+ group__name__startswith=PERSONAL_GROUP_NAME_PREFIX
+ )
+ )
if max_count:
thread_groups = thread_groups[:max_count]
diff --git a/askbot/models/tag.py b/askbot/models/tag.py
index 4b635a2f..91fd354c 100644
--- a/askbot/models/tag.py
+++ b/askbot/models/tag.py
@@ -59,7 +59,8 @@ def filter_suggested_tags(tags):
def format_personal_group_name(user):
#todo: after migration of groups away from tags,
#this function will be moved somewhere else
- return '_internal_%s_%d' % (user.username, user.id)
+ from askbot.models.user import PERSONAL_GROUP_NAME_PREFIX as prefix
+ return '%s%s_%d' % (prefix, user.username, user.id)
def is_preapproved_tag_name(tag_name):
"""true if tag name is in the category tree
diff --git a/askbot/models/user.py b/askbot/models/user.py
index 8314b28a..b8a88d73 100644
--- a/askbot/models/user.py
+++ b/askbot/models/user.py
@@ -20,6 +20,8 @@ from askbot.models.tag import clean_group_name#todo - delete this
from askbot.forms import DomainNameField
from askbot.utils.forms import email_is_allowed
+PERSONAL_GROUP_NAME_PREFIX = '_internal_'
+
class ResponseAndMentionActivityManager(models.Manager):
def get_query_set(self):
response_types = const.RESPONSE_ACTIVITY_TYPES_FOR_DISPLAY
@@ -388,6 +390,18 @@ class GroupMembership(AuthUserGroups):
class GroupQuerySet(models.query.QuerySet):
"""Custom query set for the group"""
+ def exclude_personal(self):
+ """excludes the personal groups"""
+ return self.exclude(
+ name__startswith=PERSONAL_GROUP_NAME_PREFIX
+ )
+
+ def get_personal(self):
+ """filters for the personal groups"""
+ return self.filter(
+ name__startswith=PERSONAL_GROUP_NAME_PREFIX
+ )
+
def get_for_user(self, user=None, private=False):
if private:
global_group = get_global_group()
@@ -524,6 +538,10 @@ class Group(AuthGroup):
return 'closed'
+ def is_personal(self):
+ """``True`` if the group is personal"""
+ return self.name.startswith(PERSONAL_GROUP_NAME_PREFIX)
+
def clean(self):
"""called in `save()`
"""
diff --git a/askbot/views/commands.py b/askbot/views/commands.py
index bd04dd99..e967a080 100644
--- a/askbot/views/commands.py
+++ b/askbot/views/commands.py
@@ -536,8 +536,6 @@ def get_tag_list(request):
tags = models.Tag.objects.filter(
deleted = False,
status = models.Tag.STATUS_ACCEPTED
- ).exclude(
- name__startswith='_internal_'
)
tag_names = tags.values_list(
@@ -652,13 +650,12 @@ def get_groups_list(request):
"""returns names of group tags
for the autocomplete function"""
global_group = get_global_group()
- group_names = models.Group.objects.all().exclude(
- name__startswith='_internal_'
- ).exclude(
- name=global_group.name
- ).values_list(
- 'name', flat = True
- )
+ groups = models.Group.objects.exclude_personal()
+ group_names = groups.exclude(
+ name=global_group.name
+ ).values_list(
+ 'name', flat = True
+ )
output = '\n'.join(group_names)
return HttpResponse(output, mimetype = 'text/plain')
diff --git a/askbot/views/users.py b/askbot/views/users.py
index b0b0cfbe..7a3bc116 100644
--- a/askbot/views/users.py
+++ b/askbot/views/users.py
@@ -176,7 +176,7 @@ def show_users(request, by_group=False, group_id=None, group_slug=None):
#extra context for the groups
if askbot_settings.GROUPS_ENABLED:
#todo: cleanup this branched code after groups are migrated to auth_group
- user_groups = get_groups().exclude(name__startswith='_internal_')
+ user_groups = get_groups().exclude_personal()
if len(user_groups) <= 1:
assert(user_groups[0].name == askbot_settings.GLOBAL_GROUP_NAME)
user_groups = None
@@ -482,7 +482,7 @@ def user_stats(request, user, context):
badges.sort(key=operator.itemgetter(1), reverse=True)
user_groups = models.Group.objects.get_for_user(user = user)
- user_groups = user_groups.exclude(name__startswith='_internal_')
+ user_groups = user_groups.exclude_personal()
global_group = get_global_group()
user_groups = user_groups.exclude(name=global_group.name)
@@ -1073,7 +1073,7 @@ def groups(request, id = None, slug = None):
user=request.user
)
- groups = groups.exclude(name__startswith='_internal_')
+ groups = groups.exclude_personal()
groups = groups.annotate(users_count=Count('user'))
user_can_add_groups = request.user.is_authenticated() and \