PasswordResetView)
from django.views import static
from teleforma.views.core import ConferenceRecordView, ConferenceView, CourseView, HelpView, MediaTranscodedView, MediaView, join_webclass
-from teleforma.views.crfpa import UserLoginView, UsersCourseView, UsersIejView, UsersTrainingView, UsersView, UsersXLSExport
+from teleforma.views.crfpa import UserLoginView, UsersCourseView, UsersIejView, UsersTrainingView, UsersView
from teleforma.views.pro import AnswerDetailView, AnswerDetailViewTest, AnswerView, AnswersPendingView, AnswersTreatedView, QuizQuestionView, SeminarDocumentDownloadView, SeminarDocumentView, SeminarMediaView, SeminarView, SeminarsView, TestimonialDownloadView, TestimonialKnowledgeView, TestimonialListView, TestimonialPaybackView, TestimonialView, evaluation_form_detail, webclass_bbb_webhook
from teleforma.views.profile import ProfileView
from teleforma.views.home import HomeView
htdocs_forma = os.path.dirname(__file__) + '/static/teleforma/'
-user_export = UsersXLSExport()
profile_view = ProfileView()
media = MediaView()
home_view = HomeView()
# Questions
- url(r'^desk/seminars/(?P<id>.*)/questions/(?P<pk>.*)/$', AnswerView.as_view(),
+ url(r'^desk/seminars/(?P<id>.*)/questions/(?P<pk>\d+)/$', AnswerView.as_view(),
name="teleforma-question-answer"),
url(r'^desk/answers_pending/$', AnswersPendingView.as_view(), name="teleforma-answers-pending"),
url(r'^desk/answers_treated/$', AnswersTreatedView.as_view(), name="teleforma-answers-treated"),
- url(r'^desk/answers/(?P<pk>.*)/$', AnswerDetailView.as_view(), name="teleforma-answer-detail"),
+ url(r'^desk/answers/(?P<pk>\d+)/$', AnswerDetailView.as_view(), name="teleforma-answer-detail"),
# Evaluations
url(r'^forms/', include('forms_builder.forms.urls')),
url(r'^users/(?P<username>[A-Za-z0-9@+._-]+)/profile/$', profile_view.profile_detail,
name="teleforma-profile-detail"),
url(r'^users/(?P<id>.*)/login/$', UserLoginView.as_view(), name="teleforma-user-login"),
- url(r'^users/all/export/$', user_export.all, name="teleforma-users-xls-export"),
+ # url(r'^users/all/export/$', user_export.all, name="teleforma-users-xls-export"),
url(r'^users/by_training/(\w+)/$', UsersTrainingView.as_view(), name="teleforma-training-users"),
- url(r'^users/by_training/(?P<id>.*)/export/$', user_export.by_training,
- name="teleforma-training-users-export"),
+ # url(r'^users/by_training/(?P<id>.*)/export/$', user_export.by_training,
+ # name="teleforma-training-users-export"),
url(r'^users/by_iej/(\w+)/$', UsersIejView.as_view(), name="teleforma-iej-users"),
- url(r'^users/by_iej/(?P<id>.*)/export/$', user_export.by_iej, name="teleforma-iej-users-export"),
+ # url(r'^users/by_iej/(?P<id>.*)/export/$', user_export.by_iej, name="teleforma-iej-users-export"),
url(r'^users/by_course/(\w+)/$', UsersCourseView.as_view(), name="teleforma-course-users"),
- url(r'^users/by_course/(?P<id>.*)/export/$', user_export.by_course,
- name="teleforma-course-users-export"),
+ # url(r'^users/by_course/(?P<id>.*)/export/$', user_export.by_course,
+ # name="teleforma-course-users-export"),
# CSS+Images (FIXME: for developement only)
#
# Authors: Guillaume Pellerin <yomguy@parisson.com>
-
-from teleforma.views.core import *
+from django.contrib.auth import get_backends, login
+from django.contrib.auth.decorators import login_required, permission_required
+from django.contrib.auth.models import User
+from django.core.paginator import InvalidPage
+from django.shortcuts import redirect
+from django.utils.decorators import method_decorator
+from django.views.generic.base import View
+from django.views.generic.list import ListView
+from teleforma.models.core import Course, CourseType, NamePaginator
+from teleforma.models.crfpa import IEJ, Training
def format_crfpa_courses(courses, course=None, queryset=None, types=None, admin=False):
for c in queryset:
if c and (c.code != 'X' or admin == True):
courses.append({'course': c, 'types': types.all(),
- 'date': c.date_modified, 'number': c.number})
+ 'date': c.date_modified, 'number': c.number})
elif course:
if course.code != 'X' or admin == True:
courses.append({'course': course, 'types': types.all(),
- 'date': course.date_modified, 'number': course.number})
+ 'date': course.date_modified, 'number': course.number})
return courses
if professor:
professor = user.professor.get()
courses = format_crfpa_courses(courses, queryset=professor.courses.all(),
- types=CourseType.objects.all())
+ types=CourseType.objects.all())
elif student:
student = user.student.get()
- s_courses = {student.procedure:student.training.procedure,
- student.written_speciality:student.training.written_speciality,
- student.oral_speciality:student.training.oral_speciality,
- student.oral_1:student.training.oral_1,
- student.oral_2:student.training.oral_2,
- student.options:student.training.options,
- }
+ s_courses = {student.procedure: student.training.procedure,
+ student.written_speciality: student.training.written_speciality,
+ student.oral_speciality: student.training.oral_speciality,
+ student.oral_1: student.training.oral_1,
+ student.oral_2: student.training.oral_2,
+ student.options: student.training.options,
+ }
for course in s_courses:
courses = format_crfpa_courses(courses, course=course,
- types=s_courses[course])
+ types=s_courses[course])
synthesis_note = student.training.synthesis_note
if synthesis_note:
courses = format_crfpa_courses(courses,
- queryset=Course.objects.filter(synthesis_note=True),
- types=synthesis_note)
+ queryset=Course.objects.filter(
+ synthesis_note=True),
+ types=synthesis_note)
obligation = student.training.obligation
if obligation:
courses = format_crfpa_courses(courses,
- queryset=Course.objects.filter(obligation=True),
- types=obligation)
+ queryset=Course.objects.filter(
+ obligation=True),
+ types=obligation)
magistral = student.training.magistral
if magistral:
courses = format_crfpa_courses(courses,
- queryset=Course.objects.filter(magistral=True),
- types=magistral)
+ queryset=Course.objects.filter(
+ magistral=True),
+ types=magistral)
elif user.is_staff or user.is_superuser:
courses = format_crfpa_courses(courses, queryset=Course.objects.all(),
- types=CourseType.objects, admin=True)
+ types=CourseType.objects, admin=True)
else:
courses = None
class UsersView(ListView):
model = User
- template_name='teleforma/users.html'
+ template_name = 'teleforma/users.html'
context_object_name = 'users'
#paginate_by = 12
context['trainings'] = Training.objects.all()
context['iejs'] = IEJ.objects.all()
context['courses'] = Course.objects.all()
- paginator = NamePaginator(self.object_list, on="last_name", per_page=10)
+ paginator = NamePaginator(
+ self.object_list, on="last_name", per_page=10)
try:
page = int(self.request.GET.get('page', '1'))
except ValueError:
def get(self, request, id):
user = User.objects.get(id=id)
backend = get_backends()[0]
- user.backend = "%s.%s" % (backend.__module__, backend.__class__.__name__)
+ user.backend = "%s.%s" % (
+ backend.__module__, backend.__class__.__name__)
login(self.request, user)
return redirect('teleforma-desk')
def dispatch(self, *args, **kwargs):
return super(UsersTrainingView, self).dispatch(*args, **kwargs)
+
class UsersIejView(UsersView):
def get_queryset(self):
def dispatch(self, *args, **kwargs):
return super(UsersIejView, self).dispatch(*args, **kwargs)
+
class UsersCourseView(UsersView):
def get_queryset(self):
def dispatch(self, *args, **kwargs):
return super(UsersCourseView, self).dispatch(*args, **kwargs)
+
def get_course_code(obj):
if obj:
return str(obj.code)
else:
return ''
-
-class UsersXLSExport(object):
-
- first_row = 2
-
- def export_user(self, counter, user):
- student = Student.objects.filter(user=user)
- if student:
- student = Student.objects.get(user=user)
- row = self.sheet.row(counter + self.first_row)
- row.write(0, user.last_name)
- row.write(1, user.first_name)
- row.write(9, user.email)
- row.write(2, str(student.iej))
- code = student.training.code
- if student.platform_only:
- code = 'I - ' + 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))
- row.write(7, get_course_code(student.oral_1))
- row.write(8, get_course_code(student.oral_2))
-
- profile = Profile.objects.filter(user=user)
- if profile:
- profile = Profile.objects.get(user=user)
- row.write(10, profile.address)
- row.write(11, profile.postal_code)
- row.write(12, profile.city)
- row.write(13, profile.telephone)
- row.write(14, user.date_joined.strftime("%d/%m/%Y"))
- return counter + 1
- else:
- return counter
-
- @method_decorator(permission_required('is_staff'))
- def export(self, request):
- self.users = self.users.order_by('last_name')
- self.book = Workbook()
- self.sheet = self.book.add_sheet('Etudiants')
-
- row = self.sheet.row(0)
- cols = [{'name':'NOM', 'width':5000},
- {'name':'PRENOM', 'width':5000},
- {'name':'IEJ', 'width':2500},
- {'name':'FORMATION', 'width':6000},
- {'name':'PROC', 'width':2500},
- {'name':'Ecrit Spe', 'width':3000},
- {'name':'Oral Spe', 'width':3000},
- {'name':'ORAL 1', 'width':3000},
- {'name':'ORAL 2', 'width':3000},
- {'name':'MAIL', 'width':7500},
- {'name':'ADRESSE', 'width':7500},
- {'name':'CP', 'width':2500},
- {'name':'VILLE', 'width':5000},
- {'name':'TEL', 'width':5000},
- {'name':"Date d'inscription", 'width':5000}
- ]
- i = 0
- for col in cols:
- row.write(i, col['name'])
- self.sheet.col(i).width = col['width']
- i += 1
-
- counter = 0
- for user in self.users:
- counter = self.export_user(counter, user)
- response = HttpResponse(mimetype="application/vnd.ms-excel")
- response['Content-Disposition'] = 'attachment; filename=users.xls'
- self.book.save(response)
- return response
-
- @method_decorator(permission_required('is_staff'))
- def all(self, request):
- self.users = User.objects.all()
- return self.export(request)
-
- @method_decorator(permission_required('is_staff'))
- def by_training(self, request, id):
- training = Training.objects.filter(id=id)
- self.users = User.objects.filter(student__training__in=training)
- return self.export(request)
-
- @method_decorator(permission_required('is_staff'))
- def by_iej(self, request, id):
- iej = IEJ.objects.filter(id=id)
- self.users = User.objects.filter(student__iej__in=iej)
- return self.export(request)
-
- @method_decorator(permission_required('is_staff'))
- def by_course(self, request, id):
- course = Course.objects.filter(id=id)
- self.users = User.objects.filter(student__training__courses__in=course)
- return self.export(request)
-
- @method_decorator(login_required)
- def profile_detail(self, request, username, template='teleforma/profile_detail.html'):
- user = User.objects.get(username=username)
- try:
- profile = user.get_profile()
- except:
- profile = None
- student = user.student.all()
- payment = None
- if student and (user.username == request.user.username or request.user.is_superuser):
- student = user.student.get()
- payment = student.payments.order_by('-id').all()
- if payment:
- payment = payment[0]
-
- return render(request, template, {'profile' : profile, 'usr': user, 'payment':payment})