Skip to content

Commit

Permalink
superusers don't see all extensions in the question editor
Browse files Browse the repository at this point in the history
see #516
  • Loading branch information
christianp committed Jul 21, 2020
1 parent 2a7842a commit c71cf70
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 4 deletions.
5 changes: 4 additions & 1 deletion accounts/templates/profile/extensions.html
Expand Up @@ -53,7 +53,10 @@
</table>
{% else %}
{% if is_me %}
<p><a class="btn btn-primary" href="{% url 'extension_new' %}"><span class="glyphicon glyphicon-upload"></span> Upload a new extension</a></p>
<p>
<a class="btn btn-primary" href="{% url 'extension_new' %}"><span class="glyphicon glyphicon-plus"></span> Create a new extension</a>
<a class="btn btn-primary" href="{% url 'extension_new' %}"><span class="glyphicon glyphicon-upload"></span> Upload a new extension</a>
</p>
{% else %}
<p class="nothing-here">{{view_user.first_name}} hasn't uploaded any extensions yet.</p>
{% endif %}
Expand Down
10 changes: 7 additions & 3 deletions editor/models.py
Expand Up @@ -57,6 +57,8 @@
@deconstructible
class ControlledObject(object):

superuser_sees_everything = True

@property
def owner(self):
raise NotImplementedError
Expand All @@ -74,7 +76,7 @@ def can_be_viewed_by(self, user):
return True
except AttributeError:
pass
return (user.is_superuser) or (self.owner == user) or (self.has_access(user, accept_levels))
return (self.superuser_sees_everything and user.is_superuser) or (self.owner == user) or (self.has_access(user, accept_levels))

def can_be_copied_by(self, user):
if not self.can_be_viewed_by(user):
Expand Down Expand Up @@ -107,7 +109,7 @@ def filter_can_be_viewed_by(cls, user):
return Q()

view_perms = ('edit', 'view')
if user.is_superuser:
if user.is_superuser and self.superuser_sees_everything:
return Q()
elif user.is_anonymous:
return Q(published=True, public_access__in=view_perms)
Expand Down Expand Up @@ -361,6 +363,8 @@ class Extension(models.Model, ControlledObject):
editable = models.BooleanField(default=True, help_text='Is this extension stored within the editor\'s media folder?')
runs_headless = models.BooleanField(default=True, help_text='Can this extension run outside a browser?')

superuser_sees_everything = False

class Meta:
ordering = ['name']
def __str__(self):
Expand Down Expand Up @@ -393,7 +397,7 @@ def filter_can_be_viewed_by(cls, user):
return Q()

view_perms = ('edit', 'view')
if user.is_superuser:
if self.superuser_sees_everything and user.is_superuser:
return Q()
elif user.is_anonymous:
return Q(public=True)
Expand Down

0 comments on commit c71cf70

Please sign in to comment.