]> git.parisson.com Git - teleforma.git/commitdiff
Create testimonial only when timing is reached
authorYoan Le Clanche <yoanl@pilotsystems.net>
Mon, 27 Feb 2023 15:21:51 +0000 (16:21 +0100)
committerYoan Le Clanche <yoanl@pilotsystems.net>
Mon, 27 Feb 2023 15:21:51 +0000 (16:21 +0100)
teleforma/migrations/0014_testimonial_sent.py [new file with mode: 0644]
teleforma/models/pro.py
teleforma/templates/teleforma/seminar_testimonial.html
teleforma/views/pro.py

diff --git a/teleforma/migrations/0014_testimonial_sent.py b/teleforma/migrations/0014_testimonial_sent.py
new file mode 100644 (file)
index 0000000..f8c414d
--- /dev/null
@@ -0,0 +1,18 @@
+# Generated by Django 3.2.3 on 2023-02-15 17:39
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('teleforma', '0013_seminarpart_index'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='testimonial',
+            name='sent',
+            field=models.BooleanField(default=False, verbose_name='Envoyé par email ?'),
+        ),
+    ]
index bc3205556a9068124ad137f642675baabeb0dd13..a9fbddf06b2769441e5bac20cb191cb6b3f1668d 100644 (file)
@@ -437,6 +437,7 @@ class Testimonial(models.Model):
     date_added  = models.DateTimeField(_('date added'), auto_now_add=True, null=True)
     date_modified  = models.DateTimeField(_('date modified'), blank=True, null=True)
     title       = models.CharField(_('title'), max_length=255, blank=True)
+    sent        = models.BooleanField("Envoyé par email ?", default=False)
 
     def get_title(self):
         if self.date_modified:
index 08dfba8bb37e1551f373f21d8d3c8d7ab7725405..224289f32924648ef7330a73ace0bfabc301302f 100644 (file)
@@ -46,8 +46,8 @@
           {% endif %}
         {% endif %}
       </td></tr>
-      <tr><td class="bold">{% trans "Training begin date" %} : </td><td>{{ first_revision.date|date:'j F Y' }}</td></tr>
-      <tr><td class="bold">{% trans "Training end date" %} : </td><td>{% if testimonial.date_modified %}{{ testimonial.date_modified|date:'j F Y' }}{% else %}{{ testimonial.date_added|date:'j F Y' }}{% endif %}</td></tr>
+      <tr><td class="bold">{% trans "Training begin date" %} : </td><td>{{ first_revision.date|date:'j F Y' }}</td></tr>
+      <tr><td class="bold">{% trans "Training end date" %} : </td><td>{% if testimonial.date_modified %}{{ testimonial.date_modified|date:'j F Y' }}{% else %}{{ testimonial.date_added|date:'j F Y' }}{% endif %}</td></tr>
     </table>
 
     <table class="table2">
index 29e06211ddcc1f72334fa85aa207cccc2239c02c..65f62098f3b4ce30a4187a51dbcb4edb1c313199 100644 (file)
@@ -234,7 +234,7 @@ class SeminarView(SeminarAccessMixin, DetailView):
         context['parts'] = seminar.get_parts(user)
 
 
-        validated = seminar_validated(user, seminar)
+        validated = seminar_validated(user, seminar) and get_seminar_delta(user, seminar) >= 0
         if validated:
             # check if testimonial exists and create it
             testimonials = Testimonial.objects.filter(
@@ -501,7 +501,7 @@ class AnswersView(ListView):
         context['organization'] = organization
         context['date'] = answer.question.seminar.expiry_date
 
-        if seminar_validated(user, seminar):
+        if seminar_validated(user, seminar) and get_seminar_delta(user, seminar) >= 0:
             testimonial = Testimonial(user=user, seminar=seminar)
             now = datetime.datetime.now()
             if context['date'] < now:
@@ -809,6 +809,44 @@ class PDFTemplateResponseMixin(TemplateResponseMixin):
         context['site_url'] = Site.objects.get_current().domain
         return context
 
+
+def get_testimonial_context(testimonial):
+    """ make it a stateless function so we can use it in django admin command to send testimonial pdf """
+    context = {'testimonial': testimonial}
+    seminar = testimonial.seminar
+    context['seminar'] = seminar
+    user = testimonial.user
+    revisions = SeminarRevision.objects.filter(
+            seminar=seminar, user=user).order_by('date')
+            
+    if revisions:
+        context['first_revision'] = revisions[0]
+
+    testimonials = Testimonial.objects.filter(
+        seminar=seminar, user=user)
+    if testimonials:
+        context['testimonial'] = testimonials[0]
+
+    context['hours_presentiel'] = 0
+    context['hours_elearning'] = seminar.duration
+    context['blended'] = False
+    if seminar.conference:
+        if seminar.conference.webclass and seminar.conference in user.auditor.get().conferences.all():
+            context['blended'] = True
+            context['conference'] = seminar.conference
+            context['hours_presentiel'] = (seminar.duration.as_seconds() - seminar.conference.webclass_hours_complementary.as_seconds()) / 3600
+            context['hours_elearning'] = seminar.conference.webclass_hours_complementary
+
+    hours = seminar.duration.as_seconds() / 3600
+    context['nb_parts'] = seminar.is_multipart and seminar.number_of_parts or 5
+    context['nb_days'] = int(hours / 6)
+    context['nb_semi_days'] = (hours / 3 ) % 2 >= 1 and 1 or 0
+    context['title'] = seminar.title
+    if seminar.level == "Spécialisation":
+        context['title'] = seminar.course.title + " - " + seminar.title
+    return context
+
+
 class TestimonialView(PDFTemplateResponseMixin, SeminarView):
 
     context_object_name = "seminar"
@@ -821,33 +859,12 @@ class TestimonialView(PDFTemplateResponseMixin, SeminarView):
         context = super(TestimonialView, self).get_context_data(**kwargs)
         seminar = context['seminar']
 
-        revisions = SeminarRevision.objects.filter(
-            seminar=seminar, user=self.request.user).order_by('date')
-        if revisions:
-            context['first_revision'] = revisions[0]
-
         testimonials = Testimonial.objects.filter(
             seminar=seminar, user=self.request.user)
+        
         if testimonials:
-            context['testimonial'] = testimonials[0]
-
-        context['hours_presentiel'] = 0
-        context['hours_elearning'] = seminar.duration
-        context['blended'] = False
-        if seminar.conference:
-            if seminar.conference.webclass and seminar.conference in self.request.user.auditor.get().conferences.all():
-                context['blended'] = True
-                context['conference'] = seminar.conference
-                context['hours_presentiel'] = (seminar.duration.as_seconds() - seminar.conference.webclass_hours_complementary.as_seconds()) / 3600
-                context['hours_elearning'] = seminar.conference.webclass_hours_complementary
-
-        hours = seminar.duration.as_seconds() / 3600
-        context['nb_parts'] = seminar.is_multipart and seminar.number_of_parts or 5
-        context['nb_days'] = int(hours / 6)
-        context['nb_semi_days'] = (hours / 3 ) % 2 >= 1 and 1 or 0
-        context['title'] = seminar.title
-        if seminar.level == "Spécialisation":
-            context['title'] = seminar.course.title + " - " + seminar.title
+            testimonial = testimonials[0]
+            context.update(get_testimonial_context(testimonial))
 
         return context