from django.contrib import admin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
-from longerusername.forms import UserCreationForm, UserChangeForm
-from django.contrib.contenttypes.generic import GenericInlineModelAdmin
+# from longerusername.forms import UserCreationForm, UserChangeForm
from django.http import HttpResponse
import time
from datetime import date
class UserProfileAdmin(UserAdmin):
inlines = [ProfessorProfileInline, AuditorProfileInline]
- add_form = UserCreationForm
- form = UserChangeForm
+ # add_form = UserCreationForm
+ # form = UserChangeForm
list_filter = ['is_staff', 'is_superuser', 'is_active', 'date_joined']
actions = ['export_user_profiles']
title = conference.pretty_title
if conference.webclass:
- title = u"Webconférence - " + title
+ title = "Webconférence - " + title
if conference.duration:
- title += u" - Durée : %s" % (fancy_duration_shop_like(conference.duration))
+ title += " - Durée : %s" % (fancy_duration_shop_like(conference.duration))
if conference.webclass:
- title += u" (%s live + %s de validation des acquis)" % (fancy_seconds(conference.webclass_duration), fancy_seconds(conference.webclass_hours_complementary.as_seconds()))
+ title += " (%s live + %s de validation des acquis)" % (fancy_seconds(conference.webclass_duration), fancy_seconds(conference.webclass_hours_complementary.as_seconds()))
row = (conference.id, title, conference.price, conference.product_code)
writer.writerow(row)
return response
writer = UnicodeWriter(response, delimiter=";")
writer.writerow(["seminaire", "email", "duree total", "date debut", "date fin", "duree"])
- for seminar in data.keys():
+ for seminar in list(data.keys()):
title = data[seminar]['title']
users = data[seminar]['users']
- for user in users.keys():
+ for user in list(users.keys()):
l = [title, user]
revs = users[user]
duration = datetime.timedelta()
def __add__(self, other):
return self.__decorate(self._delta.__add__, other)
- def __nonzero__(self):
+ def __bool__(self):
return self._delta.__nonzero__()
def __str__(self):
return Duration(hours=hours, minutes=minutes, seconds=seconds)
except TypeError:
- print groups
+ print(groups)
raise
else:
raise ValueError("Malformed duration string: " + str)
The default value can also be overriden with the default=value argument.
"""
required = False
- if args.has_key('required'):
+ if 'required' in args:
required = args['required']
args.pop('required')
args['blank'] = not required
if not required:
- if not args.has_key('default'):
+ if 'default' not in args:
if args.get('null'):
args['default'] = None
elif default_value is not None:
# The following is based on Django TimeField
-class DurationField(models.Field):
+class DurationField(models.Field, metaclass=models.SubfieldBase):
"""Duration Django model field. Essentially the same as a TimeField, but
with values over 24h allowed.
description = _("Duration")
- __metaclass__ = models.SubfieldBase
-
default_error_messages = {
'invalid': _('Enter a valid duration in HH:MM[:ss] format.'),
}
def to_python(self, value):
if value is None:
return None
- if isinstance(value, int) or isinstance(value, long):
+ if isinstance(value, int):
return Duration(seconds=value)
if isinstance(value, datetime.time):
return Duration(hours=value.hour, minutes=value.minute, seconds=value.second)
if val is None:
data = ''
else:
- data = unicode(val)
+ data = str(val)
return data
def formfield(self, **kwargs):
for testimonial2 in testimonials:
if testimonial2.date_added < testimonial1.date_added:
testimonial2.delete()
- print ('kept', testimonial1.title, testimonial1.date_added)
- print ('deleted', testimonial2.title, testimonial2.date_added)
+ print(('kept', testimonial1.title, testimonial1.date_added))
+ print(('deleted', testimonial2.title, testimonial2.date_added))
clone.status = 1
clone.quiz = seminar.quiz
clone.save()
- log = 'new seminar:' + unicode(clone)
+ log = 'new seminar:' + str(clone)
logger.logger.info(log)
- print log
+ print(log)
log = 'http://' + self.site.domain + reverse('teleforma-seminar-detail', kwargs={'pk': clone.id})
logger.logger.info(log)
- print log
+ print(log)
for field in seminar._meta.many_to_many:
import logging
from datetime import datetime, timedelta, date
import csv
-import StringIO
+import io
from ftplib import FTP
from teleforma.context_processors import seminar_validated
print(dry_run)
logging.info('Generate csv file...')
- output = StringIO.StringIO()
+ output = io.StringIO()
writer = csv.writer(output, delimiter=';')
writer.writerow([
'email': user.email,
'courses': courses,
})
- print 'exported: ' + user.first_name + ' ' + user.last_name + ' ' + user.username
+ print('exported: ' + user.first_name + ' ' + user.last_name + ' ' + user.username)
return json.dumps(list)
row.write(0, user.last_name)
row.write(1, user.first_name)
row.write(9, user.email)
- row.write(2, unicode(student.iej))
+ row.write(2, str(student.iej))
code = student.training.code
if student.platform_only:
code = 'I - ' + code
- row.write(3, unicode(code))
- row.write(4, unicode(student.procedure.code))
- row.write(5, unicode(student.written_speciality.code))
- row.write(6, unicode(student.oral_speciality.code))
- row.write(7, unicode(student.oral_1.code))
- row.write(8, unicode(student.oral_2.code))
- row.write(15, unicode(student.period))
+ row.write(3, str(code))
+ row.write(4, str(student.procedure.code))
+ row.write(5, str(student.written_speciality.code))
+ row.write(6, str(student.oral_speciality.code))
+ row.write(7, str(student.oral_1.code))
+ row.write(8, str(student.oral_2.code))
+ row.write(15, str(student.period))
profile = Profile.objects.filter(user=user)
if profile:
row.write(13, profile.telephone)
row.write(14, profile.date_added.strftime("%d/%m/%Y"))
- print 'exported: ' + user.first_name + ' ' + user.last_name + ' ' + user.username
+ print('exported: ' + user.first_name + ' ' + user.last_name + ' ' + user.username)
def export(self):
self.book = Workbook()
row.write(3, 'FORMATION')
row.write(4, 'PROC')
row.write(5, 'Ecrit Spe')
- row.write(6, unicode('Oral Spe'))
+ row.write(6, str('Oral Spe'))
row.write(7, 'ORAL 1')
row.write(8, 'ORAL 2')
row.write(9, 'MAIL')
media_file = args[0]
session = KDEnLiveSession(media_file)
for mark in session.markers():
- print mark['session_timecode'], mark['time'], mark['comment']
+ print(mark['session_timecode'], mark['time'], mark['comment'])
)
if created:
- print 'imported: ' + course.title
+ print('imported: ' + course.title)
course = Course.objects.filter(code=code)
if course:
p.courses.add(course[0])
- print 'imported: ' + user.first_name + ' ' + user.last_name + ' ' + user.username
+ print('imported: ' + user.first_name + ' ' + user.last_name + ' ' + user.username)
def handle(self, *args, **options):
file = args[0]
and not 'preview' in filename and not 'Preview' in filename and filename[0] != '.' \
and statinfo.st_size > self.size_limit:
- print path
+ print(path)
# seminar_rank <= 9
seminar_rank = int(root_list[-1][0])
seminar.save()
for s in seminars:
- print 'http://' + self.site.domain + reverse('teleforma-seminar-detail', kwargs={'pk': s.id})
+ print('http://' + self.site.domain + reverse('teleforma-seminar-detail', kwargs={'pk': s.id}))
name = os.path.splitext(filename)[0]
ext = os.path.splitext(filename)[1][1:]
root_list = root.split(os.sep)
- print root + os.sep + filename
+ print(root + os.sep + filename)
if ext in self.original_format and not 'preview' in root_list \
and not 'preview' in filename and not 'Preview' in filename and filename[0] != '.':
seminar.save()
for s in seminars:
- print 'http://' + self.site.domain + reverse('teleforma-seminar-detail', kwargs={'pk': s.id})
+ print('http://' + self.site.domain + reverse('teleforma-seminar-detail', kwargs={'pk': s.id}))
seminar.media_preview = media
seminar.save()
- print 'Done!'
\ No newline at end of file
+ print('Done!')
\ No newline at end of file
profile.telephone = row[13].value
profile.save()
student.save()
- print 'imported: ' + first_name + ' ' + last_name + ' ' + username
+ print('imported: ' + first_name + ' ' + last_name + ' ' + username)
def handle(self, *args, **options):
file = args[0]
profile.telephone = row[13].value
profile.save()
student.save()
- print 'imported: ' + first_name + ' ' + last_name + ' ' + username
+ print('imported: ' + first_name + ' ' + last_name + ' ' + username)
def handle(self, *args, **options):
file = args[0]
profile.telephone = row[13].value
profile.save()
student.save()
- print 'imported: ' + first_name + ' ' + last_name + ' ' + username
+ print('imported: ' + first_name + ' ' + last_name + ' ' + username)
def handle(self, *args, **options):
file = args[0]
elif key in ('commentaires', 'commentaire') and seminar:
if val == 'non':
if not '(' in seminar or not seminar.endswith(')'):
- print("WARNING: malformed seminar %s" % seminar)
+ print(("WARNING: malformed seminar %s" % seminar))
continue
title, sid = seminar.rsplit('(', 1)
sid = sid[:-1]
seminar = list(Seminar.objects.filter(pk = sid)[:1])
seminar = seminar and seminar[0]
if not seminar:
- print('WARNING: Seminar %s not found' % sid)
+ print(('WARNING: Seminar %s not found' % sid))
wanted_title = str(seminar).strip()
if title != wanted_title:
- print("WARNING: Seminar %s: mismatched title %r %r" % (sid, title, wanted_title))
+ print(("WARNING: Seminar %s: mismatched title %r %r" % (sid, title, wanted_title)))
todel.append(seminar)
else:
seminar = None
user = list(User.objects.filter(email = email)[:1])
user = user and user[0]
if not user:
- print("WARNING: user %s not found" % email)
+ print(("WARNING: user %s not found" % email))
return
auditor = list(user.auditor.all()[:1])
auditor = auditor and auditor[0]
if not auditor:
- print("WARNING: auditor for user %s not found" % email)
+ print(("WARNING: auditor for user %s not found" % email))
return
existing = auditor.seminars.all().values('id')
existing = set([ sem['id'] for sem in existing ])
- print("===> ", email)
+ print(("===> ", email))
for seminar in todel:
if seminar.pk in existing:
- print seminar
+ print(seminar)
auditor.seminars.remove(seminar)
else:
- print("WARNING: seminar %d for user %s not found" % (seminar.pk, email))
+ print(("WARNING: seminar %d for user %s not found" % (seminar.pk, email)))
self.init_password_email(user)
profile.init_password = True
profile.save()
- print user.username
+ print(user.username)
self.init_password_email(user)
profile.init_password = True
profile.save()
- print user.username
+ print(user.username)
def handle(self, *args, **options):
if len(args) != 1 or not args[0].isdigit():
- print("Syntax: %s %s <duration in seconds>" % (sys.argv[0],
- sys.argv[1]))
+ print(("Syntax: %s %s <duration in seconds>" % (sys.argv[0],
+ sys.argv[1])))
sys.exit(1)
duration = int(args[0])
end = datetime.datetime.now()
start = end - datetime.timedelta(seconds = duration)
- print("=== Starting at %s" % end.strftime('%Y-%m-%d %H:%M:%S'))
+ print(("=== Starting at %s" % end.strftime('%Y-%m-%d %H:%M:%S')))
meetings = bbb.get_meetings()
meetings = meetings.get_field("meetings")
# no conference in BBB
return
meetings = as_list(meetings["meeting"])
- print("=== Starting at %s" % end.strftime('%Y-%m-%d %H:%M:%S'))
+ print(("=== Starting at %s" % end.strftime('%Y-%m-%d %H:%M:%S')))
done = set()
conf = Conference.objects.get(webclass_id = meeting_id)
seminar = Seminar.objects.get(conference = conf)
except:
- print("Warning, can't find Seminar for %s" % meeting_id)
+ print(("Warning, can't find Seminar for %s" % meeting_id))
continue
sem_txt = "%s (%s)" % (seminar, seminar.pk)
user_id = str(attendee['userID'])
key = (meeting_id, user_id)
if key in done:
- print("Warning, user %s duplicate for %s" % (user_id, sem_txt))
+ print(("Warning, user %s duplicate for %s" % (user_id, sem_txt)))
continue
done.add(key)
try:
user = User.objects.get(username = user_id)
except:
- print("Warning, can't find user %s for seminar %s" % (user_id, sem_txt))
+ print(("Warning, can't find user %s for seminar %s" % (user_id, sem_txt)))
continue
user_txt = "%s (%s)" % (user, user.pk)
rev = SeminarRevision.objects.filter(seminar = seminar,
user = user,
date_modified = None)
if rev.count():
- print("User %s already has an open revision on %s" % (user_txt, sem_txt))
+ print(("User %s already has an open revision on %s" % (user_txt, sem_txt)))
else:
- print("Crediting %d seconds to %s on %s" % (duration, user_txt, sem_txt))
+ print(("Crediting %d seconds to %s on %s" % (duration, user_txt, sem_txt)))
sr = SeminarRevision(seminar = seminar,
user = user,
date = start,
# Adding model 'Answer'
db.create_table('teleforma_answer', (
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name=u'answer', to=orm['auth.User'])),
- ('question', self.gf('django.db.models.fields.related.ForeignKey')(related_name=u'answer', to=orm['teleforma.Question'])),
+ ('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name='answer', to=orm['auth.User'])),
+ ('question', self.gf('django.db.models.fields.related.ForeignKey')(related_name='answer', to=orm['teleforma.Question'])),
('answer', self.gf('django.db.models.fields.TextField')()),
('status', self.gf('django.db.models.fields.IntegerField')(default=1)),
('validated', self.gf('django.db.models.fields.BooleanField')(default=False)),
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('organization', self.gf('django.db.models.fields.related.ForeignKey')(related_name='testimonial_template', to=orm['teleforma.Organization'])),
('text', self.gf('django.db.models.fields.TextField')()),
- ('template_doc', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name=u'testimonial_template', null=True, to=orm['teleforma.Document'])),
+ ('template_doc', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='testimonial_template', null=True, to=orm['teleforma.Document'])),
))
db.send_create_signal('teleforma', ['TestimonialTemplate'])
db.create_table('teleforma_testimonial', (
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('seminar', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['teleforma.Seminar'])),
- ('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name=u'testimonial', to=orm['auth.User'])),
- ('document', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name=u'testimonial', null=True, to=orm['teleforma.Document'])),
+ ('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name='testimonial', to=orm['auth.User'])),
+ ('document', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='testimonial', null=True, to=orm['teleforma.Document'])),
))
db.send_create_signal('teleforma', ['Testimonial'])
def forwards(self, orm):
# Adding field 'Testimonial.template'
db.add_column('teleforma_testimonial', 'template',
- self.gf('django.db.models.fields.related.ForeignKey')(default=1, related_name=u'testimonial', to=orm['teleforma.TestimonialTemplate']),
+ self.gf('django.db.models.fields.related.ForeignKey')(default=1, related_name='testimonial', to=orm['teleforma.TestimonialTemplate']),
keep_default=False)
def backwards(self, orm):
# Adding field 'TestimonialTemplate.document'
db.add_column('teleforma_testimonial_template', 'document',
- self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name=u'testimonial_template', null=True, to=orm['teleforma.DocumentSimple']),
+ self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='testimonial_template', null=True, to=orm['teleforma.DocumentSimple']),
keep_default=False)
# Adding field 'TestimonialTemplate.template_doc'
db.add_column('teleforma_testimonial_template', 'template_doc',
- self.gf('django.db.models.fields.related.ForeignKey')(related_name=u'testimonial_template', null=True, to=orm['teleforma.Document'], blank=True),
+ self.gf('django.db.models.fields.related.ForeignKey')(related_name='testimonial_template', null=True, to=orm['teleforma.Document'], blank=True),
keep_default=False)
# Deleting field 'TestimonialTemplate.document'
-from core import *
-from crfpa import *
-from pro import *
-from ae import *
\ No newline at end of file
+from .core import *
+from .crfpa import *
+from .pro import *
+from .ae import *
\ No newline at end of file
if self.course:
strings.append(self.course.code)
if self.course_type.all():
- types = ' - '.join([unicode(t) for t in self.course_type.all()])
- strings.append(unicode(types))
+ types = ' - '.join([str(t) for t in self.course_type.all()])
+ strings.append(str(types))
if self.type:
strings.append(self.type.name)
strings.append(self.title)
pretty_title = self.pretty_title
if self.duration:
from teleforma.templatetags.teleforma_tags import fancy_duration_shop_like
- pretty_title += u" - Durée : %s" % (fancy_duration_shop_like(self.duration))
+ pretty_title += " - Durée : %s" % (fancy_duration_shop_like(self.duration))
return pretty_title
def public_url(self):
status = models.IntegerField(_('status'), choices=STATUS_CHOICES, default=3)
def __unicode__(self):
- return ' - '.join([unicode(self.seminar), self.title, str(self.rank)])
+ return ' - '.join([str(self.seminar), self.title, str(self.rank)])
class Meta(MetaCore):
db_table = app_label + '_' + 'question'
date_added = models.DateTimeField(_('date added'), auto_now_add=True, null=True)
def __unicode__(self):
- return ' - '.join([unicode(self.question), self.user.username, unicode(self.date_submitted)])
+ return ' - '.join([str(self.question), self.user.username, str(self.date_submitted)])
def validate(self):
self.validated = True
date_validated = models.DateTimeField(_('date validated'), auto_now_add=True, null=True)
def __unicode__(self):
- return ' - '.join([unicode(self.quiz), self.user.username, unicode(self.date_validated)])
+ return ' - '.join([str(self.quiz), self.user.username, str(self.date_validated)])
def validate(self):
self.validated = True
from django.template.defaultfilters import stringfilter
import django.utils.timezone as timezone
from django.utils.translation import ugettext_lazy as _
-from urlparse import urlparse
+from urllib.parse import urlparse
from docutils.core import publish_parts
from django.utils.encoding import smart_str, force_unicode
from django.utils.safestring import mark_safe
from teleforma.models.crfpa import Course
from teleforma.views import get_courses
from teleforma.context_processors import *
-from urlparse import urlparse
+from urllib.parse import urlparse
register = template.Library()
# split_contents() knows not to split quoted strings.
tag_name, var = token.split_contents()
except ValueError:
- raise template.TemplateSyntaxError, "%r tag requires a single argument" % token.contents.split()[0]
+ raise template.TemplateSyntaxError("%r tag requires a single argument" % token.contents.split()[0])
return ValueFromSettings(var)
class ValueFromSettings(template.Node):
Typical usage: sender|or_me:user
"""
- if not isinstance(value, (unicode, str)):
- value = unicode(value)
- if not isinstance(arg, (unicode, str)):
- arg = unicode(arg)
+ if not isinstance(value, str):
+ value = str(value)
+ if not isinstance(arg, str):
+ arg = str(arg)
return _('me') if value == arg else value
@register.filter
@register.filter
def fancy_duration(duration):
time = ''
- d = unicode(duration).split(':')
+ d = str(duration).split(':')
hours = int(d[0])
minutes = int(d[1])
if hours:
if not duration:
return ""
time = ''
- d = unicode(duration).split(':')
+ d = str(duration).split(':')
hours = int(d[0])
minutes = int(d[1])
if hours:
def render_flatpage(content):
parsed = ""
path = getattr(content, 'path', '')
- if isinstance(content, basestring):
+ if isinstance(content, str):
content = content.split("\n")
for line in content:
# Author: jdunck
# taken from https://github.com/jdunck/python-unicodecsv.git
-import csv, codecs, cStringIO
+import csv, codecs, io
def _stringify(s, encoding):
- if type(s)==unicode:
+ if type(s)==str:
return s.encode(encoding)
elif isinstance(s, (int , float)):
pass #let csv.QUOTE_NONNUMERIC do its thing.
-from core import *
-from crfpa import *
-from ae import *
-from pro import *
-from profile import *
+from .core import *
+from .crfpa import *
+from .ae import *
+from .pro import *
+from .profile import *
import datetime
from datetime import timedelta
import random
-import urllib
-import urllib2
+import urllib.request, urllib.parse, urllib.error
+import urllib.request, urllib.error, urllib.parse
import json
import os
-import StringIO
+import io
import datetime
from jsonrpc import jsonrpc_method
from teleforma.models import *
from teleforma.forms import *
from teleforma.context_processors import *
-import pages
+from . import pages
import jqchat.models
from xlwt import Workbook
@jsonrpc_method('teleforma.get_dep_courses')
def get_dep_courses(request, id):
department = Department.objects.get(id=id)
- return [{'id': str(c.id), 'name': unicode(c)} for c in department.course.all()]
+ return [{'id': str(c.id), 'name': str(c)} for c in department.course.all()]
@jsonrpc_method('teleforma.get_dep_periods')
def get_dep_periods(request, id):
department = Department.objects.get(id=id)
- return [{'id': str(c.id), 'name': unicode(c)} for c in department.period.all()]
+ return [{'id': str(c.id), 'name': str(c)} for c in department.period.all()]
class CourseView(DetailView):
media_list = []
for media in course.media.all():
if media.is_published and media.file and media.conference and 'video' in media.mime_type:
- urls = [ {'url': settings.MEDIA_URL + unicode(media.file), 'mime_type': media.mime_type} ]
+ urls = [ {'url': settings.MEDIA_URL + str(media.file), 'mime_type': media.mime_type} ]
for transcoded in media.transcoded.all():
- urls.append({'url':settings.MEDIA_URL + unicode(transcoded.file), 'mime_type': transcoded.mime_type})
+ urls.append({'url':settings.MEDIA_URL + str(transcoded.file), 'mime_type': transcoded.mime_type})
media_list.append({'session': media.conference.session, 'urls': urls, 'poster': media.poster_url()})
return media_list
context['seminar'] = None
context['record'] = None
# debug -> test links
- context['range'] = range(0,15)
+ context['range'] = list(range(0,15))
webclass_status = ""
now = datetime.datetime.now()
def snapshot(self, url, dir):
width = 160
height = 90
- img = urllib.urlopen(url)
+ img = urllib.request.urlopen(url)
path = dir + os.sep + 'preview.webp'
f = open(path, 'w')
f.write(img.read())
stream_type=stream_type, streaming=True)
stream.save()
else:
- raise 'Error : Bad Conference dictionnary'
+ raise Exception('Error : Bad Conference dictionnary')
def push(self, conference):
url = 'http://' + conference.department.domain + '/json/'
def get_course_code(obj):
if obj:
- return unicode(obj.code)
+ return str(obj.code)
else:
return ''
row.write(0, user.last_name)
row.write(1, user.first_name)
row.write(9, user.email)
- row.write(2, unicode(student.iej))
+ row.write(2, str(student.iej))
code = student.training.code
if student.platform_only:
code = 'I - ' + code
- row.write(3, unicode(code))
+ row.write(3, str(code))
row.write(4, get_course_code(student.procedure))
row.write(5, get_course_code(student.written_speciality))
row.write(6, get_course_code(student.oral_speciality))
# Authors: Olivier Guilyardi <olivier@samalyse.com>
# Guillaume Pellerin <yomguy@parisson.com>
-import pages
+from . import pages
from django.shortcuts import render, redirect
from django.contrib import auth
from django.http import HttpResponse
from teleforma.context_processors import *
from django.core.exceptions import PermissionDenied
-from teleforma.utils.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
import os, datetime
from cgi import escape
-from cStringIO import StringIO
+from io import StringIO
import weasyprint
testimonial.save()
# url = reverse('teleforma-seminar-testimonial-download', kwargs={'pk':seminar.id}) + '?format=pdf'
text = render_to_string('teleforma/messages/seminar_validated.txt', context)
- subject = seminar.title + ' : ' + unicode(_('all your answers has been validated'))
+ subject = seminar.title + ' : ' + str(_('all your answers has been validated'))
else:
text = render_to_string('teleforma/messages/answer_validated.txt', context)
sender = request.user
text = render_to_string('teleforma/messages/answer_rejected.txt', context)
- subject = seminar.title + ' : ' + unicode(_('validation conditions for an answer'))
+ subject = seminar.title + ' : ' + str(_('validation conditions for an answer'))
mess = Message(sender=sender, recipient=user, subject=subject, body=text)
mess.moderation_status = 'a'
mess.save()
"""
if self.pdf_template_name is None:
names = super(PDFTemplateResponseMixin, self).get_template_names()
- return map(self._get_pdf_template_name, names)
+ return list(map(self._get_pdf_template_name, names))
return [self.pdf_template_name]
def get_pdf_filename(self):
def get_pdf_filename(self):
super(TestimonialDownloadView, self).get_pdf_filename()
seminar = self.get_object()
- prefix = unicode(_('Testimonial'))
+ prefix = str(_('Testimonial'))
filename = '_'.join([prefix, seminar.title.replace(',', ' '),
self.request.user.first_name, self.request.user.last_name,])
filename += '.pdf'
mixin = SeminarRevisionMixin()
if event["id"] == "user-joined":
- print("JOIN", seminar, conf, user)
+ print(("JOIN", seminar, conf, user))
mixin.seminar_do_load(request, seminar.pk, user.username)
- print("JOIN DONE", seminar, conf, user)
+ print(("JOIN DONE", seminar, conf, user))
else:
- print("LEAVE", seminar, conf, user)
+ print(("LEAVE", seminar, conf, user))
mixin.seminar_do_unload(request, seminar.pk, user.username)
- print("LEAVE DONE", seminar, conf, user)
+ print(("LEAVE DONE", seminar, conf, user))
@csrf_exempt
def webclass_bbb_webhook(request):
event = event[0]["data"]
if event["type"] != "event":
raise PermissionDenied
- print(event["id"])
+ print((event["id"]))
if event["id"] not in ('user-joined', 'user-left'):
return HttpResponse("ok")