Private
Public Access
1
0

team edit

This commit is contained in:
Sander Roosendaal
2017-02-11 08:18:48 +01:00
parent 06eff02eb5
commit 97b6212161
6 changed files with 134 additions and 5 deletions

View File

@@ -355,6 +355,28 @@ def handle_sendemail_member_dropped(email,name,teamname,managername):
return 1
@app.task
def handle_sendemail_team_removed(email,name,teamname,managername):
fullemail = name+' <'+email+'>'
subject = 'Team '+teamname+' was deleted'
message = 'Dear '+name+',\n\n'
message += managername
message += ' has decided to delete the team '
message += teamname
message += '\n\n'
message += 'The '+teamname+' tag has been removed from all your '
message += 'workouts on rowsandall.com.\n\n'
message += "Best Regards, the Rowsandall Team"
email = EmailMessage(subject, message,
'Rowsandall <info@rowsandall.com>',
[fullemail])
res = email.send()
return 1
@app.task
def handle_sendemail_invite_reject(email,name,teamname,managername):
fullemail = managername+' <'+email+'>'

View File

@@ -23,13 +23,24 @@ from rowers.tasks import (
handle_add_workouts_team,handle_sendemail_request,
handle_sendemail_member_dropped,handle_sendemail_request_accept,
handle_sendemail_request_reject,handle_sendemail_invite_reject,
handle_sendemail_invite_accept,
handle_sendemail_invite_accept,handle_sendemail_team_removed,
)
# Low level functions - to be called by higher level methods
inviteduration = 14 # days
def update_team(t,name,manager,private,notes):
try:
t.name = name
t.manager = manager
t.private = private
t.notes = notes
t.save()
except IntegrityError:
return (0,'Team name duplication')
return (1,'Team Updated')
def create_team(name,manager,private='open',notes=''):
# needs some error testing
try:
@@ -44,6 +55,8 @@ def create_team(name,manager,private='open',notes=''):
def remove_team(id):
t = Team.objects.get(id=id)
for r in Rower.objects.filter(team=t):
send_team_delete_mail(t,r)
return t.delete()
def set_teamplanexpires(rower):
@@ -272,6 +285,20 @@ def send_invite_email(id):
return (1,'Invitation email sent')
def send_team_delete_mail(t,rower):
u = rower.user
teamname = t.name
email = u.email
name = u.first_name+' '+u.last_name
manager = t.manager.first_name+' '+t.manager.last_name
if settings.DEBUG:
res = handle_sendemail_team_removed.delay(email,name,teamname,manager)
else:
res = queuehigh.enqueue(handle_sendemail_team_removed,
email,name,teamname,manager)
return (1,'Team delete email sent')
def send_email_member_dropped(teamid,rower):
t = Team.objects.get(id=teamid)
u = rower.user
@@ -286,7 +313,7 @@ def send_email_member_dropped(teamid,rower):
res = queuehigh.enqueue(handle_sendemail_member_dropped,
email,name,teamname,manager)
return (1,'Invitation email sent')
return (1,'Member dropped email sent')
def send_request_accept_email(rekwest):

View File

@@ -8,11 +8,20 @@
<p>{{ team.notes }}</p>
<p><b>Manager:</b> {{ team.manager.first_name }} {{ team.manager.last_name }}</p>
{% if ismember %}
<div class="grid_2 suffix_10 alpha">
<div class="grid_2 alpha">
<a class="button red small" href="/rowers/team/{{ team.id }}/leaveconfirm">Leave this team</a>
</div>
{% if team.manager == user %}
<div class="grid_2 suffix_8 omega">
<a class="button blue small" href="/rowers/team/{{ team.id }}/edit">Edit Team</a>
</div>
{% else %}
<div class="grid_2 suffix_8 omega">
<p>&nbsp;
</div>
{% endif %}
{% elif hasrequested %}
<p>You have requested access to this team</p>
<p>You have requested access to this team</p>
{% else %}
<div class="grid_2 suffix_10 alpha tooltip">
<a class="button green small" href="/rowers/team/{{ team.id }}/requestmembership/{{ user.id }}">Join</a>

View File

@@ -0,0 +1,28 @@
{% extends "base.html" %}
{% load staticfiles %}
{% block title %}New Team{% endblock %}
{% block content %}
<form enctype="multipart/form-data" action="{{ formloc }}" method="post">
<div id="left" class="grid_6 alpha">
<h1>Edit Team {{ team.name }}</h1>
{% if form.errors %}
<p style="color: red;">
Please correct the error{{ form.errors|pluralize }} below.
</p>
{% endif %}
<table>
{{ form.as_table }}
</table>
{% csrf_token %}
<div id="formbutton" class="grid_1 prefix_4 suffix_1">
<input class="button green" type="submit" value="Submit">
</div>
</div>
</form>
{% endblock %}

View File

@@ -207,6 +207,7 @@ urlpatterns = [
url(r'^team/(?P<id>\d+)/c/(?P<message>\w+.*)$',views.team_view),
url(r'^team/(?P<id>\d+)/s/(?P<successmessage>\w+.*)$',views.team_view),
url(r'^team/(\d+)/$',views.team_view),
url(r'^team/(\d+)/edit$',views.team_edit_view),
url(r'^team/(\d+)/leaveconfirm/$',views.team_leaveconfirm_view),
url(r'^team/(\d+)/leave/$',views.team_leave_view),
url(r'^team/(\d+)/deleteconfirm/$',views.team_deleteconfirm_view),

View File

@@ -5541,7 +5541,49 @@ def rower_invitations_view(request,code=None,message='',successmessage=''):
url = reverse(rower_teams_view,kwargs={
})
return HttpResponseRedirect(url)
@user_passes_test(iscoachmember,login_url="/",redirect_field_name=None)
def team_edit_view(request,id=0):
try:
t = Team.objects.get(id=id)
except Team.DoesNotExist:
return HttpResponse("Team does not exist")
if request.method == 'POST':
teamcreateform = TeamForm(request.POST,instance=t)
if teamcreateform.is_valid():
cd = teamcreateform.cleaned_data
name = cd['name']
notes = cd['notes']
manager = request.user
private = cd['private']
res,message=teams.update_team(t,name,manager,private,notes)
if res:
url = reverse(team_view,
kwargs={
'id':id,
'successmessage':message
}
)
else:
url = reverse(team_view,
kwargs={
'id':id,
'message':message
}
)
response = HttpResponseRedirect(url)
return response
else:
teamcreateform = TeamForm(instance=t)
return render(request,'teamedit.html',
{
'form':teamcreateform,
'team':t,
})
@user_passes_test(iscoachmember,login_url="/",redirect_field_name=None)
def team_create_view(request):