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
	
	 Bc. Petr Pecha
						Bc. Petr Pecha