Skip to content

Commit

Permalink
[Backend] Add function to check host or staff # (#4080)
Browse files Browse the repository at this point in the history
Co-authored-by: Gunjan Chhablani <chhablani.gunjan@gmail.com>
  • Loading branch information
Suryansh5545 and gchhablani authored Aug 10, 2023
1 parent c712300 commit 5b4c44d
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 1 deletion.
14 changes: 14 additions & 0 deletions apps/base/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -329,3 +329,17 @@ def is_user_a_staff(user):
{bool} : True/False if the user is staff or not
"""
return user.is_staff


def is_user_a_staff_or_host(user, challenge):
"""
Function to check if a user is staff or host
Args:
user ([User Class Object]): User model class object
challenge.pk ([int]): Challenge primary key
Return:
{bool} : True/False if the user is staff or host
"""
return user.is_staff or user == challenge.creator
59 changes: 58 additions & 1 deletion tests/unit/base/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
from rest_framework import status
from rest_framework.test import APITestCase, APIClient

from base.utils import RandomFileName, send_slack_notification, is_user_a_staff
from base.utils import RandomFileName, send_slack_notification, is_user_a_staff, is_user_a_staff_or_host
from challenges.models import Challenge, ChallengePhase
from hosts.models import ChallengeHostTeam
from jobs.models import Submission
Expand Down Expand Up @@ -157,3 +157,60 @@ def test_if_user_is_not_staff(self):
self.user.is_staff = False
self.user.save()
self.assertFalse(is_user_a_staff(self.user))


class TestUserisStafforHost(BaseAPITestClass):
def setUp(self):
self.user = User.objects.create(
username="someuser1",
email="user@test.com",
password="secret_password",
is_staff=True,
)

self.user2 = User.objects.create(
username="someuser2",
email="user2@test.com",
password="secret_password2",
is_staff=False,
)

EmailAddress.objects.create(
user=self.user, email="user@test.com", primary=True, verified=True
)

EmailAddress.objects.create(
user=self.user2, email="user2@test.com", primary=True, verified=True
)

self.challenge_host_team = ChallengeHostTeam.objects.create(
team_name="Test Challenge Host Team", created_by=self.user
)

self.challenge = Challenge.objects.create(
title="Test Challenge",
description="Description for test challenge",
terms_and_conditions="Terms and conditions for test challenge",
submission_guidelines="Submission guidelines for test challenge",
creator=self.challenge_host_team,
start_date=timezone.now() - timedelta(days=2),
end_date=timezone.now() + timedelta(days=1),
published=False,
enable_forum=True,
anonymous_leaderboard=False,
)

def test_if_user_is_staff(self):
self.assertTrue(is_user_a_staff_or_host(self.user, self.challenge))

def test_if_user_is_not_staff(self):
self.assertFalse(is_user_a_staff_or_host(self.user2, self.challenge))

def test_if_user_is_host(self):
self.assertTrue(is_user_a_staff_or_host(self.user, self.challenge))

def test_if_user_is_not_host(self):
self.assertFalse(is_user_a_staff_or_host(self.user2, self.challenge))

def test_if_user_is_not_host_or_staff(self):
self.assertFalse(is_user_a_staff_or_host(self.user2, self.challenge))

0 comments on commit 5b4c44d

Please sign in to comment.