From 922c704bee7c79d85eefdf8538edd7e17d02f137 Mon Sep 17 00:00:00 2001 From: Evgeny Fadeev Date: Tue, 7 Aug 2012 10:59:22 -0400 Subject: made it impossible to leave the "everyone" group --- askbot/models/__init__.py | 4 +++- askbot/models/tag.py | 7 ++++--- askbot/models/user.py | 5 +++++ askbot/skins/default/templates/macros.html | 2 +- askbot/views/commands.py | 4 ++++ 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 %}