Merge branch 'korekturovatko_emaily'
This commit is contained in:
commit
5c1842a4df
7 changed files with 173 additions and 10 deletions
25
korektury/migrations/0010_Pridani_odkazu_na_organizatora.py
Normal file
25
korektury/migrations/0010_Pridani_odkazu_na_organizatora.py
Normal file
|
@ -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),
|
||||
),
|
||||
]
|
|
@ -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
Normal file
22
korektury/migrations/0012_delete_autor.py
Normal file
|
@ -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
Normal file
24
korektury/migrations/0013_rename_autor_org.py
Normal file
|
@ -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',
|
||||
),
|
||||
]
|
|
@ -8,6 +8,8 @@ from django.utils.encoding import force_unicode
|
|||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from django.utils.text import get_valid_filename
|
||||
|
||||
from seminar.models import Organizator
|
||||
|
||||
import subprocess
|
||||
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,
|
||||
default = STATUS_K_OPRAVE)
|
||||
|
||||
|
||||
# TODO: Změnit na cizí klíč do orgů
|
||||
autor = models.CharField(u'autor opravy',blank = True,max_length=20, help_text='Autor opravy')
|
||||
autor = models.ForeignKey(Organizator, blank = True,
|
||||
help_text='Autor opravy',
|
||||
null = True)
|
||||
|
||||
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')
|
||||
|
||||
oprava = models.ForeignKey(Oprava)
|
||||
# TODO: Změnit na cizí klíč do orgů
|
||||
autor = models.CharField(u'autor komentáře',blank = True,max_length=20, help_text='Autor komentáře')
|
||||
autor = models.ForeignKey(Organizator, blank = True,
|
||||
help_text = u'Autor komentáře',
|
||||
null = True)
|
||||
|
||||
text = models.TextField(u'text komentáře',blank = True, help_text='Text komentáře')
|
||||
|
||||
|
|
|
@ -82,7 +82,10 @@
|
|||
<!-- /Zmenit stav PDF !-->
|
||||
<hr/>
|
||||
<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>
|
||||
|
||||
{% for o in opravy %}
|
||||
|
|
|
@ -3,8 +3,10 @@ from django.shortcuts import get_object_or_404, render
|
|||
from django.views import generic
|
||||
from django.utils.translation import ugettext as _
|
||||
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
|
||||
|
||||
import subprocess
|
||||
|
@ -29,14 +31,17 @@ class KorekturyView(generic.TemplateView):
|
|||
form = self.form_class(request.POST)
|
||||
q = request.POST
|
||||
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:
|
||||
autor = 'anonym'
|
||||
return HttpResponseForbidden()
|
||||
|
||||
if not scroll:
|
||||
scroll = 0
|
||||
|
||||
|
||||
action = q.get('action')
|
||||
if (action == u''): # Přidej
|
||||
x = int(q.get('x'))
|
||||
|
@ -79,6 +84,7 @@ class KorekturyView(generic.TemplateView):
|
|||
text = q.get('txt')
|
||||
kom = Komentar(oprava=op,autor=autor,text=text)
|
||||
kom.save()
|
||||
self.send_email_notification_komentar(op, autor, text)
|
||||
elif (action == u'update-comment'):
|
||||
id = int(q.get('id'))
|
||||
kom = Komentar.objects.get(id=id)
|
||||
|
@ -112,6 +118,29 @@ class KorekturyView(generic.TemplateView):
|
|||
context['autor'] = autor
|
||||
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):
|
||||
context = super(KorekturyView,self).get_context_data(**kwargs)
|
||||
pdf = get_object_or_404(KorekturovanePDF, id=self.kwargs['pdf'])
|
||||
|
@ -141,6 +170,7 @@ class KorekturyView(generic.TemplateView):
|
|||
context['opravy'] = opravy
|
||||
context['zasluhy'] = zasluhy
|
||||
return context
|
||||
|
||||
def form_valid(self,form):
|
||||
return super(KorekturyView,self).form_valid(form)
|
||||
|
||||
|
|
Loading…
Reference in a new issue