From: jordan Date: Sun, 13 Mar 2011 13:30:44 +0000 (+0000) Subject: reintegrate merge jambazov -> trunk X-Git-Tag: live~434 X-Git-Url: https://git.openstreetmap.org/osqa.git/commitdiff_plain/8945ce2a649c7e4f0c46b434fab0d36b548d9cc2 reintegrate merge jambazov -> trunk git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@832 0cfe37f9-358a-4d5e-be75-b63607b5c754 --- diff --git a/forum/models/node.py b/forum/models/node.py index d4d0442..7449082 100644 --- a/forum/models/node.py +++ b/forum/models/node.py @@ -143,12 +143,30 @@ class NodeManager(CachedManager): use_for_related_fields = True def get_query_set(self): + CurrentUserHolder = None + + moderation_import = 'from %s.moderation.startup import CurrentUserHolder' % MODULES_PACKAGE + exec moderation_import + qs = NodeQuerySet(self.model) if self.model is not Node: - return qs.filter(node_type=self.model.get_type()) - else: - return qs + qs = qs.filter(node_type=self.model.get_type()) + + if CurrentUserHolder is not None: + user = CurrentUserHolder.user + + try: + filter_content = not user.is_staff and not user.is_superuser + except: + filter_content = True + + if filter_content: + qs = qs.exclude(state_string__contains="(in_moderation)").exclude(state_string__contains="(deleted)").exclude( + state_string__contains="(rejected)" + ) + + return qs def get_for_types(self, types, *args, **kwargs): kwargs['node_type__in'] = [t.get_type() for t in types] diff --git a/forum/models/tag.py b/forum/models/tag.py index d189a1c..79ec7dd 100644 --- a/forum/models/tag.py +++ b/forum/models/tag.py @@ -8,7 +8,28 @@ import django.dispatch class ActiveTagManager(models.Manager): def get_query_set(self): - return super(ActiveTagManager, self).get_query_set().exclude(used_count__lt=1) + qs = super(ActiveTagManager, self).get_query_set().exclude(used_count__lt=1) + + CurrentUserHolder = None + moderation_import = 'from %s.moderation.startup import CurrentUserHolder' % MODULES_PACKAGE + exec moderation_import + + if CurrentUserHolder is not None: + user = CurrentUserHolder.user + + try: + filter_content = not user.is_staff and not user.is_superuser + except: + filter_content = True + + if filter_content: + moderation_import = 'from %s.moderation.hooks import get_tag_ids' % MODULES_PACKAGE + exec moderation_import + qs = qs.exclude(id__in=get_tag_ids('deleted')).exclude(id__in=get_tag_ids('rejected')).exclude( + id__in=get_tag_ids('in_moderation') + ) + + return qs class Tag(BaseModel): name = models.CharField(max_length=255, unique=True) diff --git a/settings.py b/settings.py index 6a9112a..0db3f3b 100644 --- a/settings.py +++ b/settings.py @@ -72,7 +72,6 @@ if FORCE_SCRIPT_NAME.endswith('/'): FORCE_SCRIPT_NAME = FORCE_SCRIPT_NAME[:-1] from forum import modules - modules.init_modules_engine(SITE_SRC_ROOT, DISABLED_MODULES) [MIDDLEWARE_CLASSES.extend(