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.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')
|
||||||
|
|
||||||
|
|
|
@ -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 %}
|
||||||
|
|
|
@ -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…
Reference in a new issue