from django.contrib import admin
from polls.models import Poll, Choice
from django.contrib.sites.models import Site
from django.utils.safestring import mark_safe
import os
from django.core.urlresolvers import reverse
from polls.models import Participant, Question
from nested_inline.admin import NestedTabularInline, NestedModelAdmin
[docs]class ParticipantInline(NestedTabularInline):
model = Participant
exclude = ('user_information', )
fields = ('voted', )
ordering = ('user_information', )
list_dispay = ['userprofile']
[docs]class ChoiceInline(NestedTabularInline):
model = Choice
exclude = ('votes',)
extra = 1
[docs]class QuestionInline(NestedTabularInline):
model = Question
extra = 1
inlines = [ChoiceInline]
[docs]class QuestionAdmin(admin.ModelAdmin):
models = Question
inlines = [ChoiceInline]
[docs]class PollAdmin(NestedModelAdmin):
# link for generating pdf
pdf_button.short_description = 'Создание объявления'
# link for target audience display
audit_button.short_description = 'Целевая аудитория'
# link for mailing for those who can vote but hadn't done it yet
# number in [] shows number of mailings already mage for the poll
mailing_button.short_description = 'Уведомление о голосовании'
[docs] def save_model(self, request, obj, form, change):
obj.save()
if obj.poll_type == Poll.TARGET_LIST and not change:
obj.create_target_list_from_group_room_course(
group=obj.target_group,
room=obj.target_room,
course=obj.target_course,
only_staff=obj.only_for_staff
)
obj.save()
exclude = ('voted_users', 'times_mailed', 'last_mailing',)
inlines = [ParticipantInline, QuestionInline]
list_display=['name', 'pdf_button', 'audit_button', 'mailing_button',]
[docs]class ParticipantAdmin(NestedModelAdmin):
list_display = ["user_information", "poll", "voted"]
search_fields = ["user_information__fio"]
list_editable = ["voted"]
list_filter = ["voted", "poll"]
admin.site.register(Poll, PollAdmin)
admin.site.register(Participant, ParticipantAdmin)
admin.site.register(Question, QuestionAdmin)
admin.site.register(Choice)