from django.template.loader import render_to_string
from django.core.mail import send_mail, mail_admins
from django.utils import translation
+
+from teleforma.views.pro import get_seminar_delta
from telemeta.models import *
from telemeta.util.unaccent import unaccent
from teleforma.models import *
for seminar in all_seminars:
if seminar.expiry_date:
delta = seminar.expiry_date - today
- if delta.days < days and delta.days > 0 and not seminar_validated(user, seminar):
+
+ completed = seminar_validated(user, seminar)
+ enough_time = get_seminar_delta(user, seminar)
+ validated = completed and enough_time > 0
+ if delta.days < days and delta.days > 0 and not validated:
seminars.append(seminar)
+
if seminars:
context['organization'] = seminars[0].course.department.name
context['gender'] = auditor.get_gender_display()
context['last_name'] = user.last_name
context['site'] = Site.objects.get_current()
context['seminars'] = seminars
-
+
text = render_to_string(self.message_template, context)
subject = render_to_string(self.subject_template, context)
# subject = '%s : %s' % (seminar.title, subject)
-
mess = Message(sender=sender, recipient=user, subject=subject[:119], body=text)
+ # mess = Message(sender=sender, recipient='yoanl@pilotsystems.net', subject=subject[:119], body=text)
mess.moderation_status = 'a'
mess.save()
-
+
if not settings.DEBUG:
notify_user(mess, 'acceptance')
-
+ #
from teleforma.views.core import *
from teleforma.context_processors import *
+from telemeta.util.unicode import UnicodeWriter
+
from django.utils.translation import ugettext_lazy as _
from django.template import loader, Context, RequestContext
from django.views.generic.base import TemplateResponseMixin
delta = timer - datetime.timedelta(seconds=seminar.duration.as_seconds())
return delta.total_seconds()
+def pretty_duration(delta):
+ seconds = delta.total_seconds()
+ hours = seconds // 3600
+ minutes = (seconds % 3600) // 60
+ seconds = seconds % 60
+ duration = "%d heures %d minutes %d secondes" % (hours, minutes, seconds)
+ return duration
+
+
def export_seminar_revisions(request):
response = HttpResponse(content_type='text/csv')
- filename = "releve-revision-%s"
- response['Content-Disposition'] = 'attachment; filename="somefilename.csv"'
-
- writer = csv.writer(response)
- users = SeminarRevision.objects.values_list('user', flat=True).distinct()
- revs = SeminarRevision.objects.all()
- users = set(users)
- users = list(users)
- for user in users:
- revisions = revs.filter(user__id=user)
- l = []
- for revision in revisions:
- l.append("%s à %s" % (revision.date, revision.date_modified))
- writer.writerow([user]+l)
+ filename = "releve-revision"
+ response['Content-Disposition'] = 'attachment; filename="%s.csv"' % filename
+
+ revs = SeminarRevision.objects.all().order_by('-date')
+ data = {}
+ for rev in revs:
+ seminar_id = rev.seminar.id
+ if seminar_id not in data:
+ data[seminar_id] = {'title':rev.seminar.pretty_title.encode('utf-8'), 'users':{}}
+
+ user = rev.user.email
+ if user not in data[seminar_id]['users']:
+ data[seminar_id]['users'][user] = []
+
+ if rev.date_modified:
+ data[seminar_id]['users'][user].append({'start':rev.date, 'end':rev.date_modified})
+
+ writer = UnicodeWriter(response, delimiter=";")
+ writer.writerow(["seminaire", "email", "duree total", "date debut", "date fin", "duree"])
+ for seminar in data.keys():
+ title = data[seminar]['title']
+ users = data[seminar]['users']
+ for user in users.keys():
+ l = [title, user]
+ revs = users[user]
+ duration = datetime.timedelta()
+ for rev in revs:
+ diff = rev['end'] - rev['start'] if rev['end'] else datetime.timedelta()
+ if diff.total_seconds() < 0:
+ continue
+ l.append(str(rev['start']))
+ l.append(str(rev['end']))
+ l.append(pretty_duration(rev['end'] - rev['start']) if rev['end'] else 0)
+ duration += rev['end'] - rev['start'] if rev['end'] else datetime.timedelta()
+ l.insert(2, pretty_duration(duration))
+ writer.writerow(l)
return response