Nettoyage, 1ère passe…
[auf_paf.git] / paf / admin.py
CommitLineData
0ba28d89 1from django.contrib import admin
2from paf.models import Student, LinguisticLevel, CurrentAcademic, University, Faculty, Level, DiplomaObtained, City, Country, Employment, Entreprise
3from django.http import HttpResponseRedirect
4from django.core.urlresolvers import reverse
5from django.core.exceptions import PermissionDenied
6from django.contrib.auth.models import User
7from django import forms
8
9
10class LinguisticLevelAdmin(admin.ModelAdmin):
11 fieldsets = (
12 ('Delf/Dalf', {
13 'fields': ('delf_dalf', 'year_delf_dalf')
14 }),
15 ('Autre', {
16 'fields': ('other', 'year_other')
17 }),
18 )
19
20
21class LinguisticLevelInline(admin.TabularInline):
22 model = LinguisticLevel
23
24 def get_readonly_fields(self, request, obj=None):
25 if request.user.username == 'enseignant':
26 return ('delf_dalf', 'year_delf_dalf', 'other', 'year_other')
27 return ()
28
29class CurrentAcademicInline(admin.TabularInline):
30 model = CurrentAcademic
31
32 def get_readonly_fields(self, request, obj=None):
33 if request.user.username == 'enseignant':
34 return ('university', 'faculty', 'level', 'specialty', 'city', 'entry_year', 'end_year', 'certified')
35 return ()
36
37class DiplomaObtainedInline(admin.TabularInline):
38 model = DiplomaObtained
39
40 def get_readonly_fields(self, request, obj=None):
41 if request.user.username == 'enseignant':
42 return ('university', 'entitle', 'level', 'year')
43 return ()
44
45class EmploymentInline(admin.StackedInline):
46 model = Employment
47
48 def get_readonly_fields(self, request, obj=None):
49 if request.user.username == 'enseignant':
50 return ('entreprise', 'activity_sector', 'country', 'website', 'position', 'detail_position', 'observation')
51 return ()
52
53class StudentForm(forms.ModelForm):
54 class Meta:
55 model = Student
56 widgets = {
57 'identifier': forms.TextInput(attrs={'readonly':'readonly'}),
58 }
59
60
61class StudentAdmin(admin.ModelAdmin):
62 form = StudentForm
63 list_display = ('firstname', 'lastname', 'tel', 'email')
64 search_fields = ('firstname', 'lastname')
65 list_filter = ('sex', 'linguisticlevel__delf_dalf', 'currentacademic__university__name',)
66 date_hierarchy = 'dob'
67 ordering = ('-lastname',)
68 inlines = [CurrentAcademicInline, LinguisticLevelInline, DiplomaObtainedInline, EmploymentInline]
69 readonly_fields = ('identifier',)
70 fields = ('identifier', 'firstname', 'lastname', 'nationality', 'sex', 'dob', 'email', 'tel', 'parent_tel', 'parent_address')
71
72
73 def get_readonly_fields(self, request, obj=None):
74 if request.user.username == 'enseignant':
75 return ('identifier', 'firstname', 'lastname', 'nationality', 'sex', 'dob', 'email', 'tel', 'parent_tel', 'parent_address')
76 return ()
77
78 def queryset(self, request):
79 qs = super(StudentAdmin, self).queryset(request)
80 if request.user.first_name == 'student':
81 return qs.filter(identifier=request.user.username)
82 else:
83 return qs
84
85 def change_view(self, request, object_id, form_url='', extra_context=None):
86 if request.user.first_name == 'student':
87 self.change_form_template = 'edit_info.html'
88 elif request.user.username == 'enseignant':
89 #self.readonly_fields = list(self.fields)
90 #for inline in self.get_inline_instances(request):
91 # inline.readonly_fields = list(inline.fields)
92 #self.readonly_fields = ('identifier', 'firstname', 'lastname', 'nationality', 'sex', 'dob', 'email', 'tel', 'parent_tel', 'parent_address')
93
94 self.change_form_template = 'student_info.html'
95 else:
96 self.change_form_template = None
97 return super(StudentAdmin, self).change_view(request, object_id, form_url, extra_context)
98
99 def changelist_view(self, request, extra_context=None):
100 if request.user.first_name == 'student':
101 student = Student.objects.get(identifier=request.user.username)
102 return HttpResponseRedirect(reverse('edit_info'))
103 elif request.user.username == 'enseignant':
104 self.change_list_template = 'student_list.html'
105 else:
106 self.change_list_template = None
107 return super(StudentAdmin, self).changelist_view(request, extra_context)
108
109 def delete_model(self, request, obj):
110 User.objects.filter(username=obj.identifier).delete()
111 obj.delete()
112
113class CurrentAcademicAdmin(admin.ModelAdmin):
114 pass
115
116class FacultyAdmin(admin.ModelAdmin):
117 pass
118
119class UniversityAdmin(admin.ModelAdmin):
120 pass
121
122class LevelAdmin(admin.ModelAdmin):
123 pass
124
125class CityAdmin(admin.ModelAdmin):
126 pass
127
128class EntrepriseAdmin(admin.ModelAdmin):
129 pass
130
131class CountryAdmin(admin.ModelAdmin):
132 pass
133
134class DiplomaObtainedAdmin(admin.ModelAdmin):
135 pass
136
137
138admin.site.register(Entreprise, CityAdmin)
139admin.site.register(Country, CityAdmin)
140admin.site.register(City, CityAdmin)
141admin.site.register(Student, StudentAdmin)
142admin.site.register(University, UniversityAdmin)
143admin.site.register(Faculty, FacultyAdmin)
144admin.site.register(Level, LevelAdmin)
145admin.site.register(DiplomaObtained, DiplomaObtainedAdmin)
146admin.site.register(CurrentAcademic, CurrentAcademicAdmin)