user messages work
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
from django.contrib.staticfiles import finders
|
||||
|
||||
from bs4 import BeautifulSoup
|
||||
import os
|
||||
import time
|
||||
import gc
|
||||
@@ -112,17 +112,22 @@ def send_template_email(from_email, to_email, subject,
|
||||
else:
|
||||
emailbounced = False
|
||||
|
||||
try:
|
||||
usr = User.objects.get(email=to_email)
|
||||
umsg = UserMessage(
|
||||
receiver = usr.rower,
|
||||
datetime = timezone.now(),
|
||||
text = text_content,
|
||||
subject=subject,
|
||||
)
|
||||
umsg.save()
|
||||
except User.DoesNotExist:
|
||||
pass
|
||||
for recipient in to_email:
|
||||
try:
|
||||
soup = BeautifulSoup(html_content)
|
||||
|
||||
s2 = soup.body
|
||||
|
||||
usr = User.objects.get(email=recipient)
|
||||
umsg = UserMessage(
|
||||
receiver = usr.rower,
|
||||
datetime = timezone.now(),
|
||||
text = '{text}'.format(text=s2),
|
||||
subject=subject,
|
||||
)
|
||||
umsg.save()
|
||||
except User.DoesNotExist:
|
||||
pass
|
||||
|
||||
if not emailbounced:
|
||||
res = msg.send()
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
sander@rowsandall-2.6250:1697974899
|
||||
@@ -5,6 +5,9 @@
|
||||
<li id="manage-messgs">
|
||||
<a href="/rowers/me/messages/">
|
||||
<i class="fas fa-envelope fa-fw"></i> Messages
|
||||
{% if rower|usermessages %}
|
||||
( {{ rower|usermessages }} )
|
||||
{% endif %}
|
||||
</a>
|
||||
</li>
|
||||
<li id="manage-prefs-simple">
|
||||
|
||||
@@ -3,17 +3,52 @@
|
||||
{% block title %}Messages{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
<h1>{{ rower.user.first_name }}'s Messages</h1>
|
||||
<h1>{{ rower.user.first_name }}'s New Messages</h1>
|
||||
|
||||
<ul class="main-content">
|
||||
{% for usermessage in usermessages %}
|
||||
{% if not usermessage.isread %}
|
||||
<li class="rounder">
|
||||
<h2>{{ usermessage.subject }}</h2>
|
||||
<p><em>{{ usermessage.datetime }}</em></p>
|
||||
<p>
|
||||
{{ usermessage.text }}
|
||||
{{ usermessage.text|safe }}
|
||||
</p>
|
||||
{% if request.user.rower == usermessage.receiver %}
|
||||
<p>
|
||||
<a href="/rowers/me/messages/{{ usermessage.id }}/delete/">
|
||||
<i class="fas fa-trash-alt fa-fw"></i>
|
||||
</a>
|
||||
<a href="/rowers/me/messages/{{ usermessage.id }}/markread/">
|
||||
<i class="fas fa-check fa-fw"></i>
|
||||
</a>
|
||||
</p>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
<h1>{{ rower.user.first_name }}'s Previous Messages</h1>
|
||||
|
||||
<ul class="main-content">
|
||||
{% for usermessage in usermessages %}
|
||||
{% if usermessage.isread %}
|
||||
<li class="rounder">
|
||||
<h2>{{ usermessage.subject }}</h2>
|
||||
<p><em>{{ usermessage.datetime }}</em></p>
|
||||
<p>
|
||||
{{ usermessage.text|safe }}
|
||||
</p>
|
||||
{% if request.user.rower == usermessage.receiver %}
|
||||
<p>
|
||||
<a href="/rowers/me/messages/{{ usermessage.id }}/delete/">
|
||||
<i class="fas fa-trash-alt fa-fw"></i>
|
||||
</a>
|
||||
</p>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ from rowers.models import (
|
||||
course_length, WorkoutComment,
|
||||
TrainingMacroCycle, TrainingMesoCycle, TrainingMicroCycle,
|
||||
Rower, Workout, SiteAnnouncement, TeamInvite, TeamRequest, CoachOffer, CoachRequest,
|
||||
VirtualRaceFollower, VirtualRace, favanalysischoices,
|
||||
VirtualRaceFollower, VirtualRace, favanalysischoices, UserMessage,
|
||||
Team, TrainingPlan, TrainingTarget)
|
||||
|
||||
from rowers.plannedsessions import (
|
||||
@@ -56,6 +56,15 @@ def workoutdate(id): # pragma: no cover
|
||||
except Workout.DoesNotExist:
|
||||
return 'unknown'
|
||||
|
||||
@register.filter
|
||||
def usermessages(rower):
|
||||
try:
|
||||
msgs = UserMessage.objects.filter(receiver=rower, isread=False)
|
||||
return msgs.count()
|
||||
except UserMessage.DoesNotExist:
|
||||
pass
|
||||
|
||||
return 0
|
||||
|
||||
@register.filter
|
||||
def isfollower(user, id):
|
||||
|
||||
@@ -651,6 +651,9 @@ urlpatterns = [
|
||||
views.alert_report_view, name='alert_report_view'),
|
||||
re_path(r'^me/deactivate/$', views.deactivate_user, name='deactivate_user'),
|
||||
re_path(r'^me/messages/$', views.user_messages, name='user_messages'),
|
||||
re_path(r'^me/messages/(?P<id>\d+)/delete/$', views.user_message_delete, name='user_message_delete'),
|
||||
re_path(r'^me/messages/(?P<id>\d+)/markread/$', views.user_message_markread, name='user_message_markread'),
|
||||
re_path(r'^me/messages/user/(?P<userid>\d+)/$', views.user_messages, name='user_messages'),
|
||||
re_path(r'^me/delete/$', views.remove_user, name='remove_user'),
|
||||
re_path(r'^survey/$', views.survey, name='survey'),
|
||||
re_path(r'^me/gdpr-optin-confirm/?/$',
|
||||
|
||||
@@ -257,6 +257,42 @@ def user_messages(request,userid=0):
|
||||
{'usermessages':usermessages,
|
||||
'rower':r})
|
||||
|
||||
@login_required()
|
||||
def user_message_delete(request,id=0):
|
||||
try:
|
||||
msg = UserMessage.objects.get(id=id)
|
||||
except UserMessage.DoesNotExist:
|
||||
pass
|
||||
|
||||
if msg.receiver == request.user.rower:
|
||||
msg.delete()
|
||||
messages.info(request,'Deleted message {id}'.format(id=id))
|
||||
else:
|
||||
messages.error('You are not allowed to delete this message')
|
||||
|
||||
url = reverse('user_messages')
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
|
||||
@login_required()
|
||||
def user_message_markread(request,id=0):
|
||||
try:
|
||||
msg = UserMessage.objects.get(id=id)
|
||||
except UserMessage.DoesNotExist:
|
||||
pass
|
||||
|
||||
if msg.receiver == request.user.rower:
|
||||
msg.isread = True
|
||||
msg.save()
|
||||
messages.info(request,'Marked message {id} read'.format(id=id))
|
||||
else:
|
||||
messages.error('You are not allowed to change this message')
|
||||
|
||||
url = reverse('user_messages')
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
|
||||
|
||||
# Page where user can manage his favorite charts
|
||||
@login_required()
|
||||
@permission_required('rower.is_coach', fn=get_user_by_userid, raise_exception=True)
|
||||
|
||||
Reference in New Issue
Block a user