Files
@ 41dc93198d55
Branch filter:
Location: symposion_app/symposion/sponsorship/admin.py - annotation
41dc93198d55
2.3 KiB
text/x-python
Merge pull request #88 from miurahr/sponsorship-admin-contacts
admin contact
admin contact
46e38bc75841 3653cf3c69b5 3653cf3c69b5 3653cf3c69b5 46e38bc75841 36ab6d599ffc 36ab6d599ffc 46e38bc75841 46e38bc75841 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 36ab6d599ffc 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3653cf3c69b5 3653cf3c69b5 3653cf3c69b5 3653cf3c69b5 3653cf3c69b5 3653cf3c69b5 3653cf3c69b5 3653cf3c69b5 3653cf3c69b5 3653cf3c69b5 36ab6d599ffc 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 36ab6d599ffc 02a8e274f75d 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 36ab6d599ffc 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 3ffcc4da7c24 | from django.contrib import admin
from django.utils.html import escape
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
from symposion.sponsorship.models import SponsorLevel, Sponsor, Benefit, BenefitLevel, \
SponsorBenefit
class BenefitLevelInline(admin.TabularInline):
model = BenefitLevel
extra = 0
class SponsorBenefitInline(admin.StackedInline):
model = SponsorBenefit
extra = 0
fieldsets = [
(None, {
"fields": [
("benefit", "active"),
("max_words", "other_limits"),
"text",
"upload",
]
})
]
class SponsorAdmin(admin.ModelAdmin):
save_on_top = True
fieldsets = [
(None, {
"fields": [
("name", "applicant"),
("level", "active"),
"external_url",
"annotation",
("contact_name", "contact_email")
]
}),
("Metadata", {
"fields": ["added"],
"classes": ["collapse"]
})
]
inlines = [SponsorBenefitInline]
list_display = ["name", "external_url", "level", "active", "contact", "applicant_field"]
def contact(self, sponsor):
return mark_safe('<a href="mailto:%s">%s</a>' % (escape(sponsor.contact_email), escape(sponsor.contact_name)))
def applicant_field(self, sponsor):
name = sponsor.applicant.get_full_name()
email = sponsor.applicant.email
return mark_safe('<a href="mailto:%s">%s</a>' % (escape(email), escape(name)))
applicant_field.short_description = _(u"Applicant")
def get_form(self, *args, **kwargs):
# @@@ kinda ugly but using choices= on NullBooleanField is broken
form = super(SponsorAdmin, self).get_form(*args, **kwargs)
form.base_fields["active"].widget.choices = [
(u"1", "unreviewed"),
(u"2", "approved"),
(u"3", "rejected")
]
return form
class BenefitAdmin(admin.ModelAdmin):
list_display = ["name", "type", "description"]
inlines = [BenefitLevelInline]
class SponsorLevelAdmin(admin.ModelAdmin):
inlines = [BenefitLevelInline]
admin.site.register(SponsorLevel, SponsorLevelAdmin)
admin.site.register(Sponsor, SponsorAdmin)
admin.site.register(Benefit, BenefitAdmin)
|