Private
Public Access
1
0

updated t&c,

This commit is contained in:
Sander Roosendaal
2019-02-16 11:08:41 +01:00
parent 6afde11b7c
commit 0d3763ebb3
8 changed files with 111 additions and 57 deletions

View File

@@ -154,6 +154,7 @@ def update_subscription(rower,data,method='up'):
return False,0
if result.is_success:
yesterday = (timezone.now()-datetime.timedelta(days=1)).date()
rower.paidplan = plan
rower.planexpires = result.subscription.billing_period_end_date
rower.teamplanexpires = result.subscription.billing_period_end_date
@@ -161,6 +162,8 @@ def update_subscription(rower,data,method='up'):
rower.paymenttype = plan.paymenttype
rower.rowerplan = plan.shortname
rower.subscription_id = result.subscription.id
rower.protrialexpires = yesterday
rower.plantrialexpires = yesterday
rower.save()
name = '{f} {l}'.format(
f = rower.user.first_name,

View File

@@ -8,13 +8,11 @@
<i class="fas fa-cog fa-fw"></i>&nbsp;Overview
</a>
</li>
{% if user|is_manager %}
<li id="create">
<a href="/rowers/team/create/">
<i class="fas fa-plus fa-fw"></i>&nbsp;New Team
</a>
</li>
{% endif %}
</ul><!-- cd-accordion-menu -->

View File

@@ -59,13 +59,13 @@
other fitness sites. You can actually revoke these at any time.
<li>User preferences as shown on the user settings page
<li>Your favorite Flex Charts if defined
<li>The teams you are a member of.
<li>The teams or groups you are a member of.
<li>Estimated four minute, 2k and 1 hour ergometer and OTW power values,
based on the workouts you upload, and their evolution during your
usage of the site
<li>For members on the Coach plan, the names and purposes of teams. Names
of team members. (Members who delete their account will be erased from
existing teams.)
<li>For members on the Coach plan, the names and purposes of teams or groups. Names
of team or group members. (Members who delete their account will be erased from
existing teams or groups.)
<li>Any rowing courses you uploaded
<li>Training targets and training plans
<li>Your uploaded workouts, their names, boat type, start time and date,
@@ -212,57 +212,62 @@
</p>
<h3>Team Functionality</h3>
<h3>Team Or Group Functionality</h3>
<p>
On rowsandall.com, users with the paid "Coach" plan can establish teams and invite other users to become part of the team. The purpose
of a team is to share workout and training plan data between the coach and the team members. In terms of sharing behavior, there are two types of teams:
On rowsandall.com, users with the paid "Coach" plan can establish teams or groups and invite other users to become part of the team or group. The purpose
of a team or group is to share workout and training plan data between the coach and the team or group members. In terms of sharing behavior, there are two types of teams or groups:
<ul>
<li>"All Members" - This is the default team type. All members can see workouts of all other members, except those workouts that the members have
<li>"All Members" - This is the default team or group type. All members can see workouts of all other members, except those workouts that the members have
marked as "private".
<li>"Coach Only" - With this setting, each individual team member is sharing his workout data only with the team manager. Other members cannot see
<li>"Coach Only" - With this setting, each individual team or group member is sharing his workout data only with the team or group manager. Other members cannot see
his workouts.
</ul>
The sharing behavior is chosen by the team member when he establishes the team and can be changed during the existence of the team.
The sharing behavior is chosen by the team or group member when he establishes the team or group and can be changed during the existence of the team or group.
</p>
<p>
By accepting an "invitation" to become a member of a team, or by requesting to become part of a team, you agree to automatically
share all your workout data (including workouts done prior to becoming a member of the team) to the team manager (coach) and,
depending to the team policy, to other members of the team. When you leave
a team, all your workout data will immediately become invisible to those who had access to it during your team membership, including
workouts that cover the period of time when you were member of the team. As a member of a team, you grant the team manager
By accepting an "invitation" to become a member of a team or group, or by requesting to become part of a team or group, you agree to automatically
share all your workout data (including workouts done prior to becoming a member of the team or group) to the team or group manager (coach) and,
depending to the team or group policy, to other members of the team or group. When you leave
a team or group, all your workout data will immediately become invisible to those who had access to it during your team or group membership, including
workouts that cover the period of time when you were member of the team or group. As a member of a team or group, you may grant the team or group manager
permission to edit workout data
on your behalf, including the creation of charts and cross workout analysis. You also grant the team manager permission to
on your behalf, including the creation of charts and cross workout analysis.
This includes permission to
edit your heart rate and power settings, as well as functional threshold information and the account information accessible on your
settings page under the header "Account Information". The team manager is not able to access or change your passwords, team memberships,
favorite charts, export settings, workflow layout, or secret tokens. Also, the team manager is not able to download all your data,
settings page under the header "Account Information". The team or group manager is not able to access or change your passwords, team or group memberships,
favorite charts, export settings, workflow layout, or secret tokens. Also, the team or group manager is not able to download all your data,
nor can he deactivate or delete your account.
</p>
<p>
Each team member is bound by this privacy policy and the GDPR regulation of the European Union regarding the personal data of other team
members that he has access to. By accepting an invitation to a team, the new member agrees to limit the use of these data strictly to the
Each team or group member is bound by this privacy policy and the GDPR regulation of the European Union regarding the personal data of other team or group
members that he has access to. By accepting an invitation to a team or group, the new member agrees to limit the use of these data strictly to the
allowed use according to this privacy policy and the GDPR.
</p>
<p>
Team managers can access requests of users to be added to one of their teams. By accepting the invitation, the manager accepts the responsibilities
and duties associated with access to personal data of the new team member. He is bound by this privacy policy and the GDPR regulation
Team Or Group managers can access requests of users to be added to one of their teams or groups.
He can request or receive permission to edit an athlete's data and run analysis on an
athlete's behalf as described above.
By requesting or receiving these permissions, the manager accepts the responsibilities
and duties associated with access to personal data of the new team or group member.
He is bound by this privacy policy and the GDPR regulation
of the European Union regarding the personal data that he has access to.
</p>
<p>
In case that a team manager wants to change the sharing behavior of one of his teams from "Coach Only" to "All Members", he has to inform all
impacted team members in due time. He shall give team members a minimum of three days to decide whether they agree with the new sharing policy, and
collect the consent of the team members with the new sharing policy. The team manager must remove team members who did not give their active consent
to the new policy from his team. If a team member has not responded within 7 days of being notified, the team manager will understand this as "no consent"
and remove the team member.
In case that a team or group manager wants to change the sharing behavior of one of his teams or groups from "Coach Only" to "All Members", he has to inform all
impacted team or group members in due time. He shall give team or group members a minimum of three days to decide whether they agree with the new sharing policy, and
collect the consent of the team or group members with the new sharing policy. The team or group manager must remove team or group members who did not give their active consent
to the new policy from his team or group. If a team or group member has not responded within 7 days of being notified, the team or group manager will understand this as "no consent"
and remove the team or group member.
</p>
<p>
When notified of a change in team sharing behavior by the team manager, the team member has to decide whether he agrees. In case of disagreement, he shall
revoke his team membership within less than 7 days of being notified.
When notified of a change in team or group sharing behavior by the team or group manager, the team or group member has to decide whether he agrees. In case of disagreement, he shall
revoke his team or group membership within less than 7 days of being notified.
</p>
<h3>Third Party Sharing</h3>

View File

@@ -1,12 +1,12 @@
{% extends "newbase.html" %}
{% block title %}Teams {% endblock %}
{% block title %}Groups {% endblock %}
{% block main %}
<ul class="main-content">
{% if teams %}
<li >
<h2>My Teams</h2>
<h2>My Groups</h2>
<table width="100%" class="listtable">
<thead>
<tr>
@@ -32,7 +32,7 @@
{% if otherteams %}
<li >
<h2>Other Teams</h2>
<h2>Open Groups</h2>
<table width="100%" class="listtable">
<thead>
<tr>
@@ -57,7 +57,7 @@
{% endif %}
<li >
<h2>Teams I manage</h2>
<h2>Groups I manage</h2>
{% if myteams %}
<table width="100%" class="listtable">
<thead>
@@ -82,23 +82,75 @@
{% endif %}
<a class="button green" href="/rowers/team/create/">New Team</a>
</li>
{% if coaches %}
<li>
<h2>My Coaches</h2>
<table width="100%" class="listtable">
<thead>
<tr>
<th>Coach</th>
</tr>
</thead>
<tbody>
{% for coach in coaches %}
<tr>
<td>
{{ coach.user.first_name }} {{ coach.user.last_name }}
</td>
<td>
<a class="button small red"
href="/rowers/coaches/{{ coach.id }}/dropconfirm/">Remove
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</li>
{% endif %}
{% if coachees %}
<li>
<h2>My Rowers</h2>
<table width="100%" class="listtable">
<thead>
<tr>
<th>Name</th>
</tr>
</thead>
<tbody>
{% for coachee in coachees %}
<tr>
<td>
{{ coachee.user.first_name }} {{ coachee.user.last_name }}
</td>
<td>
<a class="button small red"
href="/rowers/coaches/{{ coach.id }}/dropconfirm/">Remove
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</li>
{% endif %}
{% if invites or requests or myrequests or myinvites %}
<li class="grid_2">
<h2>Invitations and Requests</h2>
<p>This section lists open invites to join a team. By accepting
a team invite, you are agreeing with the sharing
of personal data between team members and coaches according to
<p>This section lists open invites to join a group. By accepting
a group invite, you are agreeing with the sharing
of personal data between group members and coaches according to
our <a href="/rowers/legal/">privacy policy</a>.
</p>
<p>As a team manager, by accepting a team invite, you are agreeing
with our <a href="/rowers/legal/">privacy policy</a> regarding teams and
personal data owned by team members.</p>
<p>As a group manager, by accepting a group invite, you are agreeing
with our <a href="/rowers/legal/">privacy policy</a> regarding groups and
personal data owned by group members.</p>
<table width="90%" class="listtable">
<thead>
<tr>
<th>Team</th>
<th>Group</th>
<th>Manager</th>
<th>User</th>
<th>Action</th>

View File

@@ -93,17 +93,17 @@ class PermissionsBasicsTests(TestCase):
## TeamPro, TeamCoach, TeamSelfCoach
self.teampro = Team.objects.create(
name=faker.word(),
name=faker.word()+'1',
notes=faker.text(),
manager=self.upro2)
self.teamplan = Team.objects.create(
name=faker.word(),
name=faker.word()+'2',
notes=faker.text(),
manager=self.uplan2)
self.teamcoach = Team.objects.create(
name=faker.word(),
name=faker.word()+'3',
notes=faker.text(),
manager=self.ucoach)
@@ -355,12 +355,12 @@ class PermissionsViewTests(TestCase):
manager=self.upro2)
self.teamplan = Team.objects.create(
name=faker.word(),
name=faker.word()+'2',
notes=faker.text(),
manager=self.uplan2)
self.teamcoach = Team.objects.create(
name=faker.word(),
name=faker.word()+'3',
notes=faker.text(),
manager=self.ucoach)
@@ -991,6 +991,11 @@ class PermissionsViewTests(TestCase):
expected_url = expected_url,
status_code=302,target_status_code=200)
# coach related
## coach disappears from list when downgrading
# Race related
## Basic and Pro users can create races

View File

@@ -349,13 +349,4 @@ class TeamTestLowLevel(TestCase):
id, comment = create_invite(self.t, self.users[3],self.users[4])
self.assertEqual(id,0)
# cannot exceed club size
for i in range(5):
id, comment = create_invite(self.t,self.u,user=self.users[i+1])
if i <= self.u.rower.clubsize:
self.assertEqual(comment,'Invitation created')
else:
self.assertEqual(id,0)

Binary file not shown.

View File

@@ -216,7 +216,7 @@
</li>
<li id="nav-teams">
<a href="/rowers/me/teams/">
<i class="fas fa-bullhorn"></i>&nbsp;Teams
<i class="fas fa-bullhorn"></i>&nbsp;Groups
</a>
</li>
</ul>