From a390abcdd6b90810759a5178b8eae05fca0d7a6f Mon Sep 17 00:00:00 2001 From: Weitian LI Date: Wed, 30 Apr 2014 19:42:24 +0800 Subject: * added 'UserProfileAdmin' with actions and list_display: o actions: - 'approve_users', - 'sponsor_users', - 'cancel_approve_users', - 'cancel_sponsor_users', - 'reset_approve_users', - 'reset_sponsor_users', o list_display: - 'user', - 'realname', - 'gender', - 'institute', - 'identify', - 'reason', - 'transcript_url', - 'supplement', - 'attachments', - 'is_approved', - 'is_sponsored', * updated zh_CN messages --- account/admin.py | 135 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 134 insertions(+), 1 deletion(-) (limited to 'account') diff --git a/account/admin.py b/account/admin.py index ee568fc..04ebf3b 100644 --- a/account/admin.py +++ b/account/admin.py @@ -1,11 +1,144 @@ # -*- coding: utf-8 -*- from django.contrib import admin +from django.utils.html import format_html +from django.utils.translation import ugettext_lazy as _ from account.models import UserProfile, UserFile +import os -admin.site.register(UserProfile) + +class UserProfileAdmin(admin.ModelAdmin): + """ + customize the admin interface for UserProfile + """ + actions = [ + 'approve_users', + 'sponsor_users', + 'cancel_approve_users', + 'cancel_sponsor_users', + 'reset_approve_users', + 'reset_sponsor_users', + ] + list_display = ( + 'user', + 'realname', + 'gender', + 'institute', + 'identify', + 'reason', + 'transcript_url', + 'supplement', + 'attachments', + 'is_approved', + 'is_sponsored', + ) + + ## custom admin actions + def approve_users(self, request, queryset): + """ + Approve the selected users. + """ + profiles_updated = queryset.update(is_approved='Y') + if profiles_updated == 1: + msg = _("1 user was successfully approved.") + else: + msg = _("%(num)s users were successfully approved." % {'num': profiles_updated}) + self.message_user(request, msg) + approve_users.short_description = _("Approve users") + + def sponsor_users(self, request, queryset): + """ + Sponsor the selected users. + """ + profiles_updated = queryset.update(is_sponsored='Y') + if profiles_updated == 1: + msg = _("1 user was successfully sponsored.") + else: + msg = _("%(num)s users were successfully sponsored." % {'num': profiles_updated}) + self.message_user(request, msg) + sponsor_users.short_description = _("Sponsor users") + + def cancel_approve_users(self, request, queryset): + """ + Cancel the approval of the selected users. + """ + profiles_updated = queryset.update(is_approved='N') + if profiles_updated == 1: + msg = _("1 user was successfully cancelled approval.") + else: + msg = _("%(num)s users were successfully cancelled approval." % {'num': profiles_updated}) + self.message_user(request, msg) + cancel_approve_users.short_description = _("Cancel approve users") + + def cancel_sponsor_users(self, request, queryset): + """ + Cancel the sponsor of the selected users. + """ + profiles_updated = queryset.update(is_sponsored='N') + if profiles_updated == 1: + msg = _("1 user was successfully cancelled sponsor.") + else: + msg = _("%(num)s users were successfully cancelled sponsor." % {'num': profiles_updated}) + self.message_user(request, msg) + cancel_sponsor_users.short_description = _("Cancel sponsor users") + + def reset_approve_users(self, request, queryset): + """ + Reset the approval of the selected users. + """ + profiles_updated = queryset.update(is_approved='C') + if profiles_updated == 1: + msg = _("1 user was successfully reset approval.") + else: + msg = _("%(num)s users were successfully reset approval." % {'num': profiles_updated}) + self.message_user(request, msg) + reset_approve_users.short_description = _("Reset approve users") + + def reset_sponsor_users(self, request, queryset): + """ + Reset the sponsor of the selected users. + """ + profiles_updated = queryset.update(is_sponsored='C') + if profiles_updated == 1: + msg = _("1 user was successfully reset sponsor.") + else: + msg = _("%(num)s users were successfully reset sponsor." % {'num': profiles_updated}) + self.message_user(request, msg) + reset_sponsor_users.short_description = _("Reset sponsor users") + + ## custom fields + def transcript_url(self, obj): + """ + return the html code of transcript with url link + """ + return format_html('%(name)s' % { + 'url': obj.transcript.url, + 'name': os.path.basename(obj.transcript.name), + }) + transcript_url.short_description = _("Transcript") + + def attachments(self, obj): + """ + return the html code of attachments with url + """ + user = obj.user + files = user.userfile_set.all() + if files: + attachments = ['%(name)s' % { + 'url': userfile.file.url, + 'name': os.path.basename(userfile.file.name), + } + for userfile in files + ] + html = '
'.join(attachments) + else: + html = _("Null") + return format_html(html) + + +admin.site.register(UserProfile, UserProfileAdmin) admin.site.register(UserFile) -- cgit v1.2.2