diff --git a/rowers/teams.py b/rowers/teams.py
index d6179919..6bdbf566 100644
--- a/rowers/teams.py
+++ b/rowers/teams.py
@@ -133,25 +133,11 @@ def count_invites(manager):
return count
-def count_members(id):
- t = Team.objects.get(id=id)
- return Rower.objects.filter(team=t).count()
def count_club_members(manager):
ts = Team.objects.filter(manager=manager)
return Rower.objects.filter(team__in=ts).distinct().count()
-def get_club_members(manager):
- ts = Team.objects.filter(manager=manager)
- return Rower.objects.filter(team__in=ts).distinct()
-
-def get_team_members(id):
- t = Team.objects.get(id=id)
- return Rower.objects.filter(team=t)
-
-def get_team_workouts(id):
- t = Team.objects.get(id=id)
- return Workout.objects.filter(team=t).order_by("-date", "-starttime")
# Medium level functionality
diff --git a/rowers/tests/test_teams.py b/rowers/tests/test_teams.py
index 51ac041f..3b7614e4 100644
--- a/rowers/tests/test_teams.py
+++ b/rowers/tests/test_teams.py
@@ -60,6 +60,8 @@ class TeamCreateTest(TestCase):
self.t = TeamFactory(manager=self.u)
+ # need to set up some requests for testing (they are not good below)
+
def tearDown(self):
for csvfilename in self.csvfilenames:
try:
@@ -67,6 +69,22 @@ class TeamCreateTest(TestCase):
except (IOError, WindowsError):
pass
+ def test_manager_drop_member(self):
+ res = add_member(self.t.id,self.users[1].rower)
+ login = self.c.login(username=self.u.username, password = self.password)
+ self.assertTrue(login)
+
+ url = '/rowers/me/team/{t}/drop/{u}/'.format(
+ t = self.t.id,
+ u = self.users[1].id
+ )
+
+ response = self.c.get(url,follow=True)
+ self.assertEqual(response.status_code,200)
+ self.assertRedirects(response,
+ expected_url='/rowers/me/teams/'.format(t=self.t.id),
+ status_code=302,target_status_code=200)
+
def test_teamview(self):
login = self.c.login(username=self.u.username, password = self.password)
self.assertTrue(login)
@@ -87,6 +105,117 @@ class TeamCreateTest(TestCase):
response = self.c.get(url)
self.assertEqual(response.status_code, 200)
+ def test_teamsview(self):
+ id, result = create_request(self.t,self.users[2].id)
+ id, comment = create_invite(self.t,self.u,user=self.users[1])
+
+ url = '/rowers/me/teams/'
+
+ login = self.c.login(username=self.users[2].username, password = self.user_passwords[2])
+ self.assertTrue(login)
+
+ response = self.c.get(url,follow=True)
+ self.assertEqual(response.status_code,200)
+
+ html = BeautifulSoup(response.content,'html.parser')
+ urls = [a['href'] for a in html.find_all('a')]
+
+ for u in urls:
+ if 'rowers' in u and 'http' not in u and 'authorize' not in u and 'import' not in u and 'logout' not in u:
+ response = self.c.get(u)
+ if response.status_code not in [200,302]:
+ print url
+ print u
+ print response.status_code
+ self.assertIn(response.status_code,[200,302])
+
+ login = self.c.login(username=self.users[1].username,
+ password = self.user_passwords[1])
+ self.assertTrue(login)
+
+ response = self.c.get(url,follow=True)
+ self.assertEqual(response.status_code,200)
+
+ html = BeautifulSoup(response.content,'html.parser')
+ urls = [a['href'] for a in html.find_all('a')]
+
+ for u in urls:
+ if 'rowers' in u and 'http' not in u and 'authorize' not in u and 'import' not in u and 'logout' not in u:
+ response = self.c.get(u)
+ if response.status_code not in [200,302]:
+ print url
+ print u
+ print response.status_code
+ self.assertIn(response.status_code,[200,302])
+
+ def test_teamsview_manager(self):
+ id, result = create_request(self.t,self.users[2].id)
+ id, comment = create_invite(self.t,self.u,user=self.users[1])
+
+ url = '/rowers/me/teams/'
+
+ login = self.c.login(username=self.u,password=self.password)
+ self.assertTrue(login)
+
+ response = self.c.get(url,follow=True)
+ self.assertEqual(response.status_code,200)
+
+ html = BeautifulSoup(response.content,'html.parser')
+ urls = [a['href'] for a in html.find_all('a')]
+
+ for u in urls:
+ if 'rowers' in u and 'http' not in u and 'authorize' not in u and 'import' not in u and 'logout' not in u:
+ response = self.c.get(u)
+ if response.status_code not in [200,302]:
+ print url
+ print u
+ print response.status_code
+ self.assertIn(response.status_code,[200,302])
+
+ def test_teamview_member_request(self):
+
+ login = self.c.login(username=self.users[1].username, password = self.user_passwords[1])
+ self.assertTrue(login)
+
+ url = '/rowers/team/{t}/requestmembership/{u}/'.format(
+ t=self.t.id,
+ u=self.users[1].id)
+
+ response = self.c.get(url,follow=True)
+ self.assertEqual(response.status_code, 200)
+
+ self.assertRedirects(response,
+ expected_url='/rowers/team/{t}/'.format(t=self.t.id),
+ status_code=302,target_status_code=200)
+
+ id, result = create_request(self.t,self.users[2].id)
+ self.assertTrue(id != 0)
+
+ login = self.c.login(username=self.users[2].username, password = self.user_passwords[2])
+ self.assertTrue(login)
+
+ url = '/rowers/me/invitation/{id}/revoke/'.format(id=id)
+ self.assertRedirects(response,
+ expected_url='/rowers/team/{t}/'.format(t=self.t.id),
+ status_code=302,target_status_code=200)
+
+ response = self.c.get(url,follow=True)
+ self.assertEqual(response.status_code,200)
+
+ id, result = create_request(self.t,self.users[2].id)
+ self.assertTrue(id != 0)
+
+ login = self.c.login(username=self.u.username, password = self.password)
+ self.assertTrue(login)
+
+ url = '/rowers/me/invitation/{id}/reject/'.format(id=id)
+ response = self.c.get(url,follow=True)
+ self.assertEqual(response.status_code,200)
+ self.assertRedirects(response,
+ expected_url='/rowers/me/teams/',
+ status_code=302,target_status_code=200)
+
+
def test_team_invite_view(self):
login = self.c.login(username=self.u.username, password = self.password)
self.assertTrue(login)
@@ -135,6 +264,9 @@ class TeamCreateTest(TestCase):
test = Team.objects.filter(id=tid)
self.assertEqual(len(test),0)
+ def test_lowlevel_create_request(self):
+ id,comment = create_request(self.t,self.users[1].id)
+ self.assertEqual(id,1)
def test_lowlevel_remove_member(self):
id, comment = add_member(self.t.id, self.users[3].rower)
diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz
index dbfd9aaf..4c9f0258 100644
Binary files a/rowers/tests/testdata/testdata.csv.gz and b/rowers/tests/testdata/testdata.csv.gz differ
diff --git a/rowers/tests/testdata/testdata.tcx b/rowers/tests/testdata/testdata.tcx
index ce2c78f0..77e29c4f 100644
--- a/rowers/tests/testdata/testdata.tcx
+++ b/rowers/tests/testdata/testdata.tcx
@@ -2502,7 +2502,7 @@
- <Element 'Notes' at 0x138f7dd8>
+ <Element 'Notes' at 0x19d5f2b0>
diff --git a/rowers/urls.py b/rowers/urls.py
index 3e070748..ef652679 100644
--- a/rowers/urls.py
+++ b/rowers/urls.py
@@ -397,8 +397,8 @@ urlpatterns = [
url(r'^me/invitation/$',views.rower_invitations_view),
url(r'^me/raise500/$',views.raise_500),
url(r'^me/invitation/(\w+.*)/$',views.rower_invitations_view),
- url(r'^me/request/(?P\d+)/revoke',views.request_revoke_view),
- url(r'^me/request/(?P\d+)/reject',views.request_reject_view),
+ url(r'^me/request/(?P\d+)/revoke/$',views.request_revoke_view),
+ url(r'^me/request/(?P\d+)/reject/$',views.request_reject_view),
url(r'^me/request/(\w+.*)/$',views.manager_requests_view),
url(r'^me/request/$',views.manager_requests_view),
url(r'^me/edit/$',views.rower_edit_view),