# Radioco - Broadcasting Radio Recording Scheduling system.
# Copyright (C) 2014 Iago Veloso Abalo
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import re
from django import forms
from django.conf.urls import url, patterns
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
from django.core import validators
from django.http import HttpResponseRedirect
from django.utils.translation import ugettext_lazy as _
from radioco.apps.users.models import UserProfile
try:
from django.utils.encoding import force_unicode
except ImportError:
from django.utils.encoding import force_text as force_unicode
# USER
[docs]class UserProfileInline(admin.StackedInline):
inline_classes = ('grp-collapse grp-open',)
extra = 1
model = UserProfile
can_delete = False
exclude = ('slug',)
[docs]class UserProfileAdmin(UserAdmin):
inlines = (UserProfileInline,)
list_filter = ('is_staff', 'is_superuser', 'is_active', 'groups', 'userprofile__display_personal_page')
# Re-register UserAdmin
admin.site.unregister(User)
admin.site.register(User, UserProfileAdmin)
# PROFILE
[docs]class SingletonProfileAdmin(admin.ModelAdmin):
form = NonStaffUserProfileForm
fields = ['username', 'first_name', 'last_name', 'email', 'bio', 'avatar', 'display_personal_page']
[docs] def save_model(self, request, obj, form, change):
if obj.pk:
user = obj.user
user.save()
obj.save()
[docs] def has_add_permission(self, request):
return False
[docs] def has_delete_permission(self, request, obj=None):
return False
[docs] def get_urls(self):
urls = super(SingletonProfileAdmin, self).get_urls()
url_name_prefix = '%(app_name)s_%(model_name)s' % {
'app_name': self.model._meta.app_label,
'model_name': self.model._meta.model_name,
}
custom_urls = patterns('',
url(r'^history/$',
self.admin_site.admin_view(self.history_view),
{'object_id': '-1'},
name='%s_history' % url_name_prefix
),
url(r'^$',
self.admin_site.admin_view(self.change_view),
{'object_id': '-1'},
name='%s_change' % url_name_prefix
),
)
# By inserting the custom URLs first, we overwrite the standard URLs.
return custom_urls + urls
[docs] def response_change(self, request, obj):
msg = _('%(obj)s was changed successfully.') % {'obj': force_unicode(obj)}
if '_continue' in request.POST:
# self.message_user(request, msg + ' ' + _('You may edit it again below.'))
return HttpResponseRedirect(request.path)
else:
self.message_user(request, msg)
return HttpResponseRedirect("../../")
[docs] def change_view(self, request, object_id, extra_context=None):
if object_id == '-1':
object_id = str(request.user.id)
return super(SingletonProfileAdmin, self).change_view(
request,
object_id,
extra_context=extra_context,
)
admin.site.register(UserProfile, SingletonProfileAdmin)