def has_add_permission(self, request): return False def has_delete_permission(self, request, obj=None): return False def get_queryset(self, request): queryset = super(ProfileAdmin, self).get_queryset(request) queryset = queryset.select_related(u"user") return queryset class UserAdminMixin(admin.ModelAdmin): def __init__(self, *args, **kwargs): # We don't want to change predecessor internal objects self.fieldsets = deepcopy(self.fieldsets) self.fieldsets[0][1][u"fields"] = list(self.fieldsets[0][1][u"fields"]) + [u"profile_field"] self.readonly_fields = list(self.readonly_fields) + [u"profile_field"] super(UserAdminMixin, self).__init__(*args, **kwargs) @decorate(short_description=u"Profile") def profile_field(self, user): profile = user.profile return admin_obj_format(profile) admin.site.register(Profile, ProfileAdmin) extend_model_admin(User, UserAdminMixin)
def has_delete_permission(self, request, obj=None): return False def get_queryset(self, request): queryset = super(InvitationSupplyAdmin, self).get_queryset(request) queryset = queryset.select_related(u'user') return queryset class InvitationSupplyUserAdminMixin(admin.ModelAdmin): def __init__(self, *args, **kwargs): # We don't want to change predecessor internal objects self.fieldsets = deepcopy(self.fieldsets) self.fieldsets[0][1][u'fields'] = list(self.fieldsets[0][1][u'fields']) + [ u'invitationsupply_field', ] self.readonly_fields = list(self.readonly_fields) + [ u'invitationsupply_field', ] super(InvitationSupplyUserAdminMixin, self).__init__(*args, **kwargs) @decorate(short_description=u'Invitation supply') def invitationsupply_field(self, user): invitationsupply = user.invitationsupply return admin_obj_format(invitationsupply) admin.site.register(Invitation, InvitationAdmin) admin.site.register(InvitationSupply, InvitationSupplyAdmin) extend_model_admin(User, InvitationSupplyUserAdminMixin)
elif message.type == Message.TYPES.INBOUND and message.processed: query = dict(email=message.pk, type=InforequestEmail.TYPES.UNDECIDED) url = u'%s?%s' % (reverse(u'admin:inforequests_inforequestemail_add'), urlencode(query)) btn = format_html(u'<li><a href="{0}">{1}</a></li>', url, u'Assign to Inforequest') res = format_html(u'<ul class="object-tools">{0}</ul>', btn) return res else: return u'--' @decorate(short_description=u'Action') def action_field(self, message): action = try_except(lambda: message.action, None) return admin_obj_format(action) def has_delete_permission(self, request, obj=None): if obj: # Only messages that are not a part of an action may be deleted. action = try_except(lambda: obj.action, None) if action is not None: return False return super(MessageAdminMixin, self).has_delete_permission(request, obj) def get_queryset(self, request): queryset = super(MessageAdminMixin, self).get_queryset(request) queryset = queryset.select_related(u'action') queryset = queryset.prefetch_related(u'inforequest_set') return queryset extend_model_admin(User, UserAdminMixin) extend_model_admin(Message, MessageAdminMixin)
return False def get_queryset(self, request): queryset = super(ProfileAdmin, self).get_queryset(request) queryset = queryset.select_related(u'user') return queryset class UserAdminMixin(admin.ModelAdmin): def __init__(self, *args, **kwargs): # We don't want to change predecessor internal objects self.fieldsets = deepcopy(self.fieldsets) self.fieldsets[0][1][u'fields'] = list( self.fieldsets[0][1][u'fields']) + [ u'profile_field', ] self.readonly_fields = list(self.readonly_fields) + [ u'profile_field', ] super(UserAdminMixin, self).__init__(*args, **kwargs) @decorate(short_description=u'Profile') def profile_field(self, user): profile = user.profile return admin_obj_format(profile) admin.site.register(Profile, ProfileAdmin) extend_model_admin(User, UserAdminMixin)