X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/13bee2f2e6aea2d936909861f3ab60bb09821a60..00707e107d63126a511257f2953e87b7e9d784b7:/forum/models/node.py diff --git a/forum/models/node.py b/forum/models/node.py index abd1f5a..98c5383 100644 --- a/forum/models/node.py +++ b/forum/models/node.py @@ -142,12 +142,37 @@ class NodeManager(CachedManager): use_for_related_fields = True def get_query_set(self): + CurrentUserHolder = None + + # We try to import from the moderation module. + try: + moderation_import = 'from %s.moderation.startup import CurrentUserHolder' % MODULES_PACKAGE + exec moderation_import + + moderation_enabled = True + except: + moderation_enabled = False + 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 the moderation module has been enabled we make the filtration + if CurrentUserHolder is not None and moderation_enabled: + 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]