Browse Source

Merge branch 'korekturovatko_emaily'

remotes/origin/korekturovatko_emaily
Bc. Petr Pecha 8 years ago
parent
commit
5c1842a4df
  1. 25
      korektury/migrations/0010_Pridani_odkazu_na_organizatora.py
  2. 56
      korektury/migrations/0011_prevod_autora_z_charField_na_Organizator.py
  3. 22
      korektury/migrations/0012_delete_autor.py
  4. 24
      korektury/migrations/0013_rename_autor_org.py
  5. 13
      korektury/models.py
  6. 5
      korektury/templates/korektury/opraf.html
  7. 38
      korektury/views.py

25
korektury/migrations/0010_Pridani_odkazu_na_organizatora.py

@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('seminar', '0041_konfery'),
('korektury', '0009_trizeni_korektur_v_seznamu'),
]
operations = [
migrations.AddField(
model_name='komentar',
name='autor_org',
field=models.ForeignKey(blank=True, to='seminar.Organizator', help_text='Autor koment\xe1\u0159e', null=True),
),
migrations.AddField(
model_name='oprava',
name='autor_org',
field=models.ForeignKey(blank=True, to='seminar.Organizator', help_text=b'Autor opravy', null=True),
),
]

56
korektury/migrations/0011_prevod_autora_z_charField_na_Organizator.py

@ -0,0 +1,56 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
def transform_autor(apps, schema_editor):
print
Organizator = apps.get_model('seminar', 'Organizator')
# preorgovani oprav
Oprava = apps.get_model('korektury', 'Oprava')
for oprava in Oprava.objects.all():
jmeno = oprava.autor.split()
if len(jmeno) == 2:
try:
org = Organizator.objects.get(user__first_name=jmeno[0],
user__last_name=jmeno[1])
oprava.autor_org = org
oprava.save()
except:
print "Org nenalezen -- mažu korekturu"
# oprava.delete()
else:
print "Org nenalezen -- mažu korekturu"
oprava.delete()
# preorgovani komentaru
Komentar = apps.get_model('korektury', 'Komentar')
for komentar in Komentar.objects.all():
jmeno = komentar.autor.split()
if len(jmeno) == 2:
try:
org = Organizator.objects.get(user__first_name=jmeno[0],
user__last_name=jmeno[1])
komentar.autor_org = org
komentar.save()
except:
print "Org nenalezen -- mažu korekturu"
# oprava.delete()
else:
print "Org nenalezen -- mažu korekturu"
komentar.delete()
def back(apps, schema_editor):
pass
class Migration(migrations.Migration):
dependencies = [
('korektury', '0010_Pridani_odkazu_na_organizatora'),
]
operations = [
migrations.RunPython(transform_autor, back),
]

22
korektury/migrations/0012_delete_autor.py

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('korektury', '0011_prevod_autora_z_charField_na_Organizator'),
]
operations = [
migrations.RemoveField(
model_name='komentar',
name='autor',
),
migrations.RemoveField(
model_name='oprava',
name='autor',
),
]

24
korektury/migrations/0013_rename_autor_org.py

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('korektury', '0012_delete_autor'),
]
operations = [
migrations.RenameField(
model_name='komentar',
old_name='autor_org',
new_name='autor',
),
migrations.RenameField(
model_name='oprava',
old_name='autor_org',
new_name='autor',
),
]

13
korektury/models.py

@ -8,6 +8,8 @@ from django.utils.encoding import force_unicode
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.utils.text import get_valid_filename from django.utils.text import get_valid_filename
from seminar.models import Organizator
import subprocess import subprocess
from reversion import revisions as reversion from reversion import revisions as reversion
@ -122,9 +124,9 @@ class Oprava(models.Model):
status = models.CharField(u'stav opravy',max_length=16, choices=STATUS_CHOICES, blank=False, status = models.CharField(u'stav opravy',max_length=16, choices=STATUS_CHOICES, blank=False,
default = STATUS_K_OPRAVE) default = STATUS_K_OPRAVE)
autor = models.ForeignKey(Organizator, blank = True,
# TODO: Změnit na cizí klíč do orgů help_text='Autor opravy',
autor = models.CharField(u'autor opravy',blank = True,max_length=20, help_text='Autor opravy') null = True)
text = models.TextField(u'text opravy',blank = True, help_text='Text opravy') text = models.TextField(u'text opravy',blank = True, help_text='Text opravy')
@ -152,8 +154,9 @@ class Komentar(models.Model):
cas = models.DateTimeField(u'čas komentáře',default=timezone.now,help_text = 'Čas zadání komentáře') cas = models.DateTimeField(u'čas komentáře',default=timezone.now,help_text = 'Čas zadání komentáře')
oprava = models.ForeignKey(Oprava) oprava = models.ForeignKey(Oprava)
# TODO: Změnit na cizí klíč do orgů autor = models.ForeignKey(Organizator, blank = True,
autor = models.CharField(u'autor komentáře',blank = True,max_length=20, help_text='Autor komentáře') help_text = u'Autor komentáře',
null = True)
text = models.TextField(u'text komentáře',blank = True, help_text='Text komentáře') text = models.TextField(u'text komentáře',blank = True, help_text='Text komentáře')

5
korektury/templates/korektury/opraf.html

@ -82,7 +82,10 @@
<!-- /Zmenit stav PDF !--> <!-- /Zmenit stav PDF !-->
<hr/> <hr/>
<p> <p>
Děkujeme opravovatelům: {% for autor,pocet in zasluhy.items %} {{autor}}({{pocet}}) {% endfor %}</p> Děkujeme opravovatelům:
{% for autor,pocet in zasluhy.items %}
{{autor}} ({{pocet}}){% if not forloop.last %},{% endif %}
{% endfor %}</p>
<hr> <hr>
{% for o in opravy %} {% for o in opravy %}

38
korektury/views.py

@ -3,8 +3,10 @@ from django.shortcuts import get_object_or_404, render
from django.views import generic from django.views import generic
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from django.conf import settings from django.conf import settings
from django.http import HttpResponseForbidden
from django.core.mail import send_mail
from .models import Oprava,Komentar,KorekturovanePDF from .models import Oprava,Komentar,KorekturovanePDF, Organizator
from .forms import OpravaForm from .forms import OpravaForm
import subprocess import subprocess
@ -29,14 +31,17 @@ class KorekturyView(generic.TemplateView):
form = self.form_class(request.POST) form = self.form_class(request.POST)
q = request.POST q = request.POST
scroll = q.get('scroll') scroll = q.get('scroll')
autor = q.get('au')
# prirazeni autora podle prihlaseni
autor_user = request.user
# pokud existuje ucet (user), ale neni to organizator = 403
autor = Organizator.objects.filter(user=autor_user).first()
if not autor: if not autor:
autor = 'anonym' return HttpResponseForbidden()
if not scroll: if not scroll:
scroll = 0 scroll = 0
action = q.get('action') action = q.get('action')
if (action == u''): # Přidej if (action == u''): # Přidej
x = int(q.get('x')) x = int(q.get('x'))
@ -79,6 +84,7 @@ class KorekturyView(generic.TemplateView):
text = q.get('txt') text = q.get('txt')
kom = Komentar(oprava=op,autor=autor,text=text) kom = Komentar(oprava=op,autor=autor,text=text)
kom.save() kom.save()
self.send_email_notification_komentar(op, autor, text)
elif (action == u'update-comment'): elif (action == u'update-comment'):
id = int(q.get('id')) id = int(q.get('id'))
kom = Komentar.objects.get(id=id) kom = Komentar.objects.get(id=id)
@ -112,6 +118,29 @@ class KorekturyView(generic.TemplateView):
context['autor'] = autor context['autor'] = autor
return render(request, 'korektury/opraf.html',context) return render(request, 'korektury/opraf.html',context)
def send_email_notification_komentar(self, oprava, autor, text):
''' Rozesle e-mail pri pridani komentare,
ktery obsahuje text komentare.
'''
# parametry e-mailu
from_email = 'korekturovatko@mam.mff.cuni.cz'
subject = u'Nová korektura od {}'.format(autor)
text = u"Text komentáře:\n\n{}\n\n=== Konec textu komentáře ===\n\
\nVaše korekturovátko\n".format(text)
# Prijemci e-mailu
emails = set()
email = oprava.autor.user.email
if email:
emails.add(email)
for komentar in oprava.komentar_set.all():
email = komentar.autor.user.email
if email:
emails.add(email)
send_mail(subject, text, from_email, list(emails))
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(KorekturyView,self).get_context_data(**kwargs) context = super(KorekturyView,self).get_context_data(**kwargs)
pdf = get_object_or_404(KorekturovanePDF, id=self.kwargs['pdf']) pdf = get_object_or_404(KorekturovanePDF, id=self.kwargs['pdf'])
@ -141,6 +170,7 @@ class KorekturyView(generic.TemplateView):
context['opravy'] = opravy context['opravy'] = opravy
context['zasluhy'] = zasluhy context['zasluhy'] = zasluhy
return context return context
def form_valid(self,form): def form_valid(self,form):
return super(KorekturyView,self).form_valid(form) return super(KorekturyView,self).form_valid(form)

Loading…
Cancel
Save