email from group page
This commit is contained in:
@@ -1206,7 +1206,14 @@ class WorkoutRaceSelectForm(forms.Form):
|
||||
)
|
||||
|
||||
# self.fields['evaluate_after'] =
|
||||
|
||||
|
||||
# form to send messages to team members
|
||||
class TeamMessageForm(forms.Form):
|
||||
message = forms.CharField(required=True,
|
||||
initial='',
|
||||
widget=forms.Textarea()
|
||||
)
|
||||
|
||||
# Form to select team by rower
|
||||
class RowerTeamForm(forms.Form):
|
||||
team = forms.ModelChoiceField(
|
||||
|
||||
@@ -861,7 +861,7 @@ class Rower(models.Model):
|
||||
privacy = models.CharField(default='visible',max_length=30,
|
||||
choices=privacychoices)
|
||||
|
||||
team = models.ManyToManyField(Team,blank=True)
|
||||
team = models.ManyToManyField(Team,blank=True,related_name='rower')
|
||||
|
||||
# Export and Time Zone Settings
|
||||
defaulttimezone = models.CharField(default='UTC',max_length=100,
|
||||
|
||||
@@ -1982,6 +1982,25 @@ def handle_sendemailnewcomment(first_name,
|
||||
|
||||
return 1
|
||||
|
||||
@app.task
|
||||
def handle_sendemail_message(email,fromemail,rowername,message,teamname,managername,
|
||||
debug=False,**kwargs):
|
||||
|
||||
fullemail = email
|
||||
subject = 'New message from team ' + teamname
|
||||
from_email = fromemail
|
||||
|
||||
d = {
|
||||
'rowername':rowername,
|
||||
'teamname':teamname,
|
||||
'managername':managername,
|
||||
'message':message,
|
||||
}
|
||||
|
||||
res = send_template_email(from_email,[fullemail],subject,
|
||||
'teammessage.html',d,**kwargs)
|
||||
|
||||
return 1
|
||||
|
||||
@app.task
|
||||
def handle_sendemail_request(email, name, code, teamname, requestor, id,
|
||||
|
||||
@@ -37,6 +37,7 @@ from rowers.tasks import (
|
||||
handle_sendemail_coachoffer_accepted,
|
||||
handle_sendemail_coachrequest_rejected,
|
||||
handle_sendemail_coachrequest_accepted,
|
||||
handle_sendemail_message,
|
||||
)
|
||||
|
||||
from rowers.models import ValidationError
|
||||
@@ -173,8 +174,11 @@ def remove_coach(coach,rower):
|
||||
def rower_get_coaches(rower):
|
||||
coaches = []
|
||||
for group in rower.coachinggroups.all():
|
||||
coach = Rower.objects.get(mycoachgroup=group)
|
||||
coaches.append(coach)
|
||||
try:
|
||||
coach = Rower.objects.get(mycoachgroup=group)
|
||||
coaches.append(coach)
|
||||
except Rower.DoesNotExist:
|
||||
pass
|
||||
|
||||
return coaches
|
||||
|
||||
@@ -567,7 +571,17 @@ def send_invite_accept_email(invitation):
|
||||
|
||||
return (1,'Invitation email sent')
|
||||
|
||||
def send_team_message(team,message):
|
||||
rowers = team.rower.all()
|
||||
managername = team.manager.first_name + " " + team.manager.last_name
|
||||
|
||||
for rower in rowers:
|
||||
rowername = rower.user.first_name + " " + rower.user.last_name
|
||||
res = myqueue(queuehigh,
|
||||
handle_sendemail_message,
|
||||
rower.user.email,team.manager.email,rowername,message,team.name,managername)
|
||||
|
||||
return (1,'message sent')
|
||||
|
||||
def send_request_email(rekwest):
|
||||
email = rekwest.team.manager.email
|
||||
@@ -606,7 +620,7 @@ def process_request_code(manager,code):
|
||||
|
||||
|
||||
rekwest.delete()
|
||||
return result
|
||||
return (result,'The member was added')
|
||||
|
||||
def process_invite_code(user,code):
|
||||
code = code.upper()
|
||||
|
||||
@@ -72,6 +72,19 @@
|
||||
</p>
|
||||
{% endif %}
|
||||
</li>
|
||||
<li class="grid_2">
|
||||
{% if team.manager == user %}
|
||||
<h2>Message</h2>
|
||||
<p>Use this form to send a message to all team members by email. </p>
|
||||
<form enctype="multipart/form-date" action="" method="post">
|
||||
<table>
|
||||
{{ groupmessageform.as_table }}
|
||||
</table>
|
||||
{% csrf_token %}
|
||||
<input type="submit" value="Send">
|
||||
</form>
|
||||
{% endif %}
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
14
rowers/templates/teammessage.html
Normal file
14
rowers/templates/teammessage.html
Normal file
@@ -0,0 +1,14 @@
|
||||
{% extends "emailbase.html" %}
|
||||
|
||||
{% block body %}
|
||||
<p>Dear <strong>{{ first_name }}</strong>,</p>
|
||||
|
||||
<p>
|
||||
Here is a message from {{ managername }}, the team manager of rowsandall.com team {{ teamname }}.
|
||||
</p>
|
||||
<p>
|
||||
<code>
|
||||
{{ message }}
|
||||
</code>
|
||||
</p>
|
||||
{% endblock %}
|
||||
@@ -48,7 +48,7 @@ from django.http import (
|
||||
)
|
||||
from django.contrib.auth import authenticate, login, logout
|
||||
from rowers.forms import (
|
||||
ForceCurveOptionsForm,HistoForm,
|
||||
ForceCurveOptionsForm,HistoForm,TeamMessageForm,
|
||||
LoginForm,DocumentsForm,UploadOptionsForm,ImageForm,CourseForm,
|
||||
TeamUploadOptionsForm,WorkFlowLeftPanelForm,WorkFlowMiddlePanelForm,
|
||||
WorkFlowLeftPanelElement,WorkFlowMiddlePanelElement,
|
||||
|
||||
@@ -27,7 +27,7 @@ def team_view(request,id=0,userid=0):
|
||||
|
||||
q = q | q2
|
||||
|
||||
if request.method == 'POST' and request.user == t.manager:
|
||||
if request.method == 'POST' and request.user == t.manager and 'email' in request.POST:
|
||||
inviteform = TeamInviteForm(request.POST)
|
||||
|
||||
inviteform.fields['user'].queryset = q
|
||||
@@ -45,12 +45,24 @@ def team_view(request,id=0,userid=0):
|
||||
else:
|
||||
message = text
|
||||
messages.error(request,message)
|
||||
groupmessageform = TeamMessageForm()
|
||||
elif request.method == 'POST' and request.user == t.manager and 'message' in request.POST:
|
||||
groupmessageform = TeamMessageForm(request.POST)
|
||||
inviteform = TeamInviteForm()
|
||||
if groupmessageform.is_valid():
|
||||
message = groupmessageform.cleaned_data['message']
|
||||
teams.send_team_message(t,message)
|
||||
messages.info(request,'Message was sent to all team members')
|
||||
groupmessageform = TeamMessageForm()
|
||||
|
||||
elif request.user == t.manager:
|
||||
inviteform = TeamInviteForm()
|
||||
inviteform.fields['user'].queryset = q
|
||||
groupmessageform = TeamMessageForm()
|
||||
else:
|
||||
inviteform = ''
|
||||
groupmessageform = ''
|
||||
|
||||
|
||||
members = Rower.objects.filter(team=t).order_by('user__last_name','user__first_name')
|
||||
thisteammyrequests = TeamRequest.objects.filter(team=t,user=request.user)
|
||||
@@ -63,7 +75,7 @@ def team_view(request,id=0,userid=0):
|
||||
breadcrumbs = [
|
||||
{
|
||||
'url':reverse(rower_teams_view),
|
||||
'name': 'Teams'
|
||||
'name': 'Groups'
|
||||
},
|
||||
{
|
||||
'url':reverse(team_view,kwargs={'id':id}),
|
||||
@@ -78,6 +90,7 @@ def team_view(request,id=0,userid=0):
|
||||
'teams':get_my_teams(request.user),
|
||||
'myteams':myteams,
|
||||
'memberteams':memberteams,
|
||||
'groupmessageform': groupmessageform,
|
||||
'members':members,
|
||||
'breadcrumbs':breadcrumbs,
|
||||
'active':'nav-teams',
|
||||
@@ -98,7 +111,7 @@ def team_leaveconfirm_view(request,id=0):
|
||||
breadcrumbs = [
|
||||
{
|
||||
'url':reverse(rower_teams_view),
|
||||
'name': 'Teams'
|
||||
'name': 'Groups'
|
||||
},
|
||||
{
|
||||
'url':reverse(team_view,kwargs={'id':id}),
|
||||
@@ -242,7 +255,7 @@ def rower_teams_view(request,message='',successmessage=''):
|
||||
breadcrumbs = [
|
||||
{
|
||||
'url':reverse(rower_teams_view),
|
||||
'name': 'Teams'
|
||||
'name': 'Groups'
|
||||
}
|
||||
]
|
||||
|
||||
@@ -328,7 +341,7 @@ def athlete_drop_coach_confirm_view(request,id):
|
||||
breadcrumbs = [
|
||||
{
|
||||
'url':reverse('rower_teams_view'),
|
||||
'name': 'Teams'
|
||||
'name': 'Groups'
|
||||
},
|
||||
{
|
||||
'url':reverse('athlete_drop_coach_confirm_view',kwargs={'id':id}),
|
||||
@@ -355,7 +368,7 @@ def coach_drop_athlete_confirm_view(request,id):
|
||||
breadcrumbs = [
|
||||
{
|
||||
'url':reverse('rower_teams_view'),
|
||||
'name': 'Teams'
|
||||
'name': 'Groups'
|
||||
},
|
||||
{
|
||||
'url':reverse('coach_drop_athlete_confirm_view',kwargs={'id':id}),
|
||||
@@ -609,7 +622,7 @@ def team_edit_view(request,id=0):
|
||||
breadcrumbs = [
|
||||
{
|
||||
'url':reverse(rower_teams_view),
|
||||
'name': 'Teams'
|
||||
'name': 'Groups'
|
||||
},
|
||||
{
|
||||
'url':reverse(team_view,kwargs={'id':id}),
|
||||
@@ -675,7 +688,7 @@ def team_create_view(request):
|
||||
breadcrumbs = [
|
||||
{
|
||||
'url':reverse(rower_teams_view),
|
||||
'name': 'Teams'
|
||||
'name': 'Groups'
|
||||
},
|
||||
{
|
||||
'url':reverse(team_create_view),
|
||||
@@ -708,7 +721,7 @@ def team_deleteconfirm_view(request,id):
|
||||
breadcrumbs = [
|
||||
{
|
||||
'url':reverse(rower_teams_view),
|
||||
'name': 'Teams'
|
||||
'name': 'Groups'
|
||||
},
|
||||
{
|
||||
'url':reverse(team_view,kwargs={'id':id}),
|
||||
@@ -764,7 +777,7 @@ def team_members_stats_view(request,id):
|
||||
breadcrumbs = [
|
||||
{
|
||||
'url':reverse(rower_teams_view),
|
||||
'name': 'Teams'
|
||||
'name': 'Groups'
|
||||
},
|
||||
{
|
||||
'url':reverse(team_view,kwargs={'id':id}),
|
||||
|
||||
Reference in New Issue
Block a user