diff options
-rw-r--r-- | askbot/models/__init__.py | 4 | ||||
-rw-r--r-- | askbot/models/tag.py | 7 | ||||
-rw-r--r-- | askbot/models/user.py | 5 | ||||
-rw-r--r-- | askbot/skins/default/templates/macros.html | 2 | ||||
-rw-r--r-- | askbot/views/commands.py | 4 | ||||
-rw-r--r-- | askbot/views/users.py | 5 |
6 files changed, 21 insertions, 6 deletions
diff --git a/askbot/models/__init__.py b/askbot/models/__init__.py index 4ccc2afd..ac610506 100644 --- a/askbot/models/__init__.py +++ b/askbot/models/__init__.py @@ -31,7 +31,9 @@ from askbot.models.question import QuestionView, AnonymousQuestion from askbot.models.question import DraftQuestion from askbot.models.question import FavoriteQuestion from askbot.models.tag import Tag, MarkedTag -from askbot.models.tag import get_group_names, get_groups +from askbot.models.tag import get_global_group +from askbot.models.tag import get_group_names +from askbot.models.tag import get_groups from askbot.models.user import EmailFeedSetting, ActivityAuditStatus, Activity from askbot.models.user import GroupMembership, GroupProfile from askbot.models.post import Post, PostRevision diff --git a/askbot/models/tag.py b/askbot/models/tag.py index 539d70f8..b0fd9aac 100644 --- a/askbot/models/tag.py +++ b/askbot/models/tag.py @@ -23,7 +23,8 @@ def get_global_group(): from askbot.models import get_admin return Tag.group_tags.get_or_create( group_name=group_name, - user=get_admin() + user=get_admin(), + is_open=False ) def delete_tags(tags): @@ -307,7 +308,7 @@ class GroupTagManager(BaseQuerySetManager): def get_query_set(self): return GroupTagQuerySet(self.model) - def get_or_create(self, group_name = None, user = None): + 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 @@ -321,7 +322,7 @@ class GroupTagManager(BaseQuerySetManager): tag = self.model(name = group_name, created_by = user) tag.save() from askbot.models.user import GroupProfile - group_profile = GroupProfile(group_tag = tag) + group_profile = GroupProfile(group_tag = tag, is_open=is_open) group_profile.save() return tag diff --git a/askbot/models/user.py b/askbot/models/user.py index e4077ea5..14c1d189 100644 --- a/askbot/models/user.py +++ b/askbot/models/user.py @@ -11,6 +11,7 @@ from django.forms import EmailField, URLField from django.utils.translation import ugettext as _ 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.forms import DomainNameField @@ -380,6 +381,10 @@ class GroupProfile(models.Model): if user.is_anonymous(): return False + #a special case - automatic global group cannot be joined or left + if self.group_tag.name == askbot_settings.GLOBAL_GROUP_NAME: + return False + if self.is_open: return True diff --git a/askbot/skins/default/templates/macros.html b/askbot/skins/default/templates/macros.html index a640cda9..c03980aa 100644 --- a/askbot/skins/default/templates/macros.html +++ b/askbot/skins/default/templates/macros.html @@ -232,7 +232,7 @@ poor design of the data or methods on data objects #} {%- endmacro -%} {%- macro group_join_button(group_id = None, can_join = False, is_member = False) -%} - {% if can_join or is_member %} + {% if can_join %} <button class="group-join-btn follow-toggle {% if is_member %}on on-state{% endif %}" data-group-id="{{group_id}}" diff --git a/askbot/views/commands.py b/askbot/views/commands.py index 797652a6..64bf8d37 100644 --- a/askbot/views/commands.py +++ b/askbot/views/commands.py @@ -24,6 +24,7 @@ from askbot import models from askbot import forms from askbot.conf import should_show_sort_by_relevance from askbot.conf import settings as askbot_settings +from askbot.models.tag import get_global_group from askbot.utils import category_tree from askbot.utils import decorators from askbot.utils import url_utils @@ -614,8 +615,11 @@ def add_tag_category(request): 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( deleted = False + ).exclude( + name=global_group.name ).values_list( 'name', flat = True ) diff --git a/askbot/views/users.py b/askbot/views/users.py index 9012a048..5fb581b8 100644 --- a/askbot/views/users.py +++ b/askbot/views/users.py @@ -37,6 +37,7 @@ from askbot.conf import settings as askbot_settings from askbot import models from askbot import exceptions from askbot.models.badges import award_badges_signal +from askbot.models.tag import get_global_group from askbot.skins.loaders import render_into_skin from askbot.templatetags import extra_tags from askbot.search.state_manager import SearchState @@ -56,7 +57,7 @@ def owner_or_moderator_required(f): return f(request, profile_owner, context) return wrapped_func -def show_users(request, by_group = False, group_id = None, group_slug = None): +def show_users(request, by_group=False, group_id=None, group_slug=None): """Users view, including listing of users by group""" users = models.User.objects.exclude(status = 'b') group = None @@ -442,6 +443,8 @@ def user_stats(request, user, context): badges.sort(key=operator.itemgetter(1), reverse=True) user_groups = models.Tag.group_tags.get_for_user(user = user) + global_group = get_global_group() + user_groups = user_groups.exclude(name=global_group.name) if request.user == user: groups_membership_info = user.get_groups_membership_info(user_groups) |