# -*- coding: utf-8 -*-
from teleforma.models import *
+from teleforma.views import *
from teleforma.exam.models import *
from django.contrib import admin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
from django.contrib.admin import SimpleListFilter
from django.utils.translation import ugettext_lazy as _
+from django.http import HttpResponse
+from django.core import serializers
class PeriodListFilter(SimpleListFilter):
model = Student
extra = 1
+
class StudentAdmin(admin.ModelAdmin):
+
model = Student
exclude = ['options']
filter_horizontal = ['trainings']
'procedure', 'written_speciality', 'oral_speciality',
'oral_1', 'oral_2']
list_display = ['student_name', 'total_payments', 'total_fees', 'balance']
+ actions = ['export_xls']
def student_name(self, instance):
return instance.user.last_name + ' ' + instance.user.first_name
# qs = qs.annotate(models.Count('warehouse__amount'))
# return qs
+ def export_json(self, request, queryset):
+ response = HttpResponse(content_type="application/json")
+ serializers.serialize("json", queryset, stream=response)
+ return response
+
+ def export_xls(self, request, queryset):
+ view = UsersExportView()
+ view.users = queryset
+ return view.get(request)
+
+ export_xls.short_description = "Export to XLS"
+
+
+
class ProfessorProfileInline(admin.StackedInline):
model = Professor
filter_horizontal = ['courses']
return super(UserLoginView, self).dispatch(*args, **kwargs)
-class UsersExportView(UsersView):
+class UserBook(object):
first_row = 2
+ def __init__(self, users):
+ self.book = Workbook()
+ self.users = users
+ self.sheet = self.book.add_sheet('Etudiants')
+
def export_user(self, counter, user):
student = Student.objects.filter(user=user)
if student:
else:
return counter
- @method_decorator(permission_required('is_staff'))
- 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')
-
+ def write(self):
row = self.sheet.row(0)
cols = [{'name':'NOM', 'width':5000},
{'name':'PRENOM', 'width':5000},
counter = 0
for user in self.users:
counter = self.export_user(counter, user)
+
+
+
+class UsersExportView(UsersView):
+
+ @method_decorator(permission_required('is_staff'))
+ def get(self, *args, **kwargs):
+ super(UsersExportView, self).get(*args, **kwargs)
+ book = UserBook(self.users)
+ book.write()
response = HttpResponse(mimetype="application/vnd.ms-excel")
response['Content-Disposition'] = 'attachment; filename=users.xls'
- self.book.save(response)
+ book.book.save(response)
return response