from jsonrpc import jsonrpc_site
htdocs_forma = os.path.dirname(__file__) + '/static/teleforma/'
-user_export = UsersXLSExport()
profile_view = ProfileView()
document = DocumentView()
media = MediaView()
url(r'^messages/', include('postman.urls')),
# Users
- url(r'^users/all/$', UsersView.as_view(), name="teleforma-users"),
- 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/training/(?P<training_id>.*)/iej/(?P<iej_id>.*)/course/(?P<course_id>.*)/list/$',
+ UsersView.as_view(), name="teleforma-users"),
- 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/training/(?P<training_id>.*)/iej/(?P<iej_id>.*)/course/(?P<course_id>.*)/export/$',
+ UsersExportView.as_view(), name="teleforma-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/(?P<username>[A-Za-z0-9._-]+)/profile/$', profile_view.profile_detail,
+ name="teleforma-profile-detail"),
- 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/(?P<id>.*)/login/$', UserLoginView.as_view(), name="teleforma-user-login"),
# JSON RPC
url(r'json/$', jsonrpc_site.dispatch, name='jsonrpc_mountpoint'),
from teleforma.views.core import *
+def get_course_code(obj):
+ if obj:
+ return unicode(obj.code)
+ else:
+ return ''
+
def get_crfpa_courses(user, date_order=False, num_order=False, period=None):
courses = []
model = User
template_name='telemeta/users.html'
context_object_name = 'users'
+ training = None
+ iej = None
+ course = None
#paginate_by = 12
+
def get_queryset(self):
- return User.objects.all().select_related(depth=1).order_by('last_name')
+ self.users = User.objects.all().select_related(depth=1).order_by('last_name')
+
+ if self.kwargs['training_id'] != '0':
+ self.training = Training.objects.filter(id=self.kwargs['training_id'])
+ self.users = self.users.filter(student__trainings__in=self.training)
+ self.training = self.training[0]
+ else:
+ self.training = Training(id=0)
+
+ if self.kwargs['iej_id'] != '0':
+ self.iej = IEJ.objects.filter(id=self.kwargs['iej_id'])
+ self.users = self.users.filter(student__iej__in=self.iej)
+ self.iej = self.iej[0]
+ else:
+ self.iej = IEJ(id=0)
+
+ if self.kwargs['course_id'] != '0':
+ self.course = Course.objects.get(id=self.kwargs['course_id'])
+ u = []
+ for user in self.users:
+ user_courses = get_crfpa_courses(user)
+ for course in user_courses:
+ if course['course'] == self.course:
+ u.append(user)
+ self.users = u
+ else:
+ self.course = Course(id=0)
+
+ return self.users
def get_context_data(self, **kwargs):
context = super(UsersView, self).get_context_data(**kwargs)
+ users = self.object_list
+
+ context['training'] = self.training
+ context['iej'] = self.iej
+ context['course'] = self.course
+
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=12)
try:
page = int(self.request.GET.get('page', '1'))
return super(UserLoginView, self).dispatch(*args, **kwargs)
-class UsersTrainingView(UsersView):
-
- def get_queryset(self):
- self.training = Training.objects.filter(id=self.args[0])
- return User.objects.filter(student__trainings__in=self.training).order_by('last_name')
-
- def get_context_data(self, **kwargs):
- context = super(UsersTrainingView, self).get_context_data(**kwargs)
- context['training'] = Training.objects.get(id=self.args[0])
- return context
-
- @method_decorator(login_required)
- def dispatch(self, *args, **kwargs):
- return super(UsersTrainingView, self).dispatch(*args, **kwargs)
-
-class UsersIejView(UsersView):
-
- def get_queryset(self):
- self.iej = IEJ.objects.filter(id=self.args[0])
- return User.objects.filter(student__iej__in=self.iej).order_by('last_name')
-
- def get_context_data(self, **kwargs):
- context = super(UsersIejView, self).get_context_data(**kwargs)
- context['iej'] = IEJ.objects.get(id=self.args[0])
- return context
-
- @method_decorator(login_required)
- def dispatch(self, *args, **kwargs):
- return super(UsersIejView, self).dispatch(*args, **kwargs)
-
-class UsersCourseView(UsersView):
-
- def get_queryset(self):
- #TODO: optimize
- u = []
- self.course = Course.objects.get(id=self.args[0])
- users = User.objects.all()
- for user in users:
- user_courses = get_crfpa_courses(user)
- for course in user_courses:
- if course['course'] == self.course:
- u.append(user)
- return u
-
- def get_context_data(self, **kwargs):
- context = super(UsersCourseView, self).get_context_data(**kwargs)
- context['course'] = Course.objects.get(id=self.args[0])
- return context
-
- @method_decorator(login_required)
- def dispatch(self, *args, **kwargs):
- return super(UsersCourseView, self).dispatch(*args, **kwargs)
-
-def get_course_code(obj):
- if obj:
- return unicode(obj.code)
- else:
- return ''
-
-class UsersXLSExport(object):
+class UsersExportView(UsersView):
first_row = 2
row.write(1, user.first_name)
row.write(9, user.email)
row.write(2, unicode(student.iej))
- code = student.training.code
- if student.platform_only:
- code = 'I - ' + code
- row.write(3, unicode(code))
+
+ codes = []
+ for training in student.trainings.all():
+ if student.platform_only:
+ codes.append('I - ' + training.code)
+ else:
+ codes.append(training.code)
+ row.write(3, unicode(' '.join(codes)))
+
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))
return counter
@method_decorator(permission_required('is_staff'))
- def export(self, request):
- self.users = self.users.order_by('last_name')
+ def get(self, *args, **kwargs):
+ super(UsersExportView, self).get(*args, **kwargs)
+ self.users = self.users
self.book = Workbook()
self.sheet = self.book.add_sheet('Etudiants')
cols = [{'name':'NOM', 'width':5000},
{'name':'PRENOM', 'width':5000},
{'name':'IEJ', 'width':2500},
- {'name':'FORMATION', 'width':6000},
+ {'name':'FORMATIONS', 'width':6000},
{'name':'PROC', 'width':2500},
{'name':'Ecrit Spe', 'width':3000},
{'name':'Oral Spe', 'width':3000},
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)
-
class AnnalsView(ListView):