team edit
This commit is contained in:
@@ -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+'>'
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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>
|
||||
</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>
|
||||
|
||||
28
rowers/templates/teamedit.html
Normal file
28
rowers/templates/teamedit.html
Normal 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 %}
|
||||
@@ -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),
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user