view savane/svmain/admin.py @ 318:8d7c891dec61

Start adding some stats for the homepage
author Sylvain Beucler <beuc@beuc.net>
date Wed, 18 Aug 2010 23:35:26 +0200
parents df0e87b3b7b9
children
line wrap: on
line source

# User/group admin interface
# Copyright (C) 2009, 2010  Sylvain Beucler
#
# This file is part of Savane.
#
# Savane is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# Savane 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

from django.contrib import admin
from django.utils.translation import ugettext, ugettext_lazy as _
import models as svmain_models

class LicenseAdmin(admin.ModelAdmin):
    list_display  = ['slug', 'pk', 'name', 'url']
    search_fields = ['name']

class DevelopmentStatusAdmin(admin.ModelAdmin):
    list_display  = ['name', 'pk']
    search_fields = ['name']

class SshKeyInline(admin.TabularInline):
    model = svmain_models.SshKey
    extra = 2  # to add several keys in the ExtendedUser page

class SvUserInfoAdmin(admin.ModelAdmin):
    fieldsets = (
        (None, {'fields': ('user',)}),
        ('Savane',
         {'fields': ('status', 'spamscore',
                     'gpg_key', 'gpg_key_count',
                     'email_hide', 'timezone',)}),
        )
    list_display = ('user', 'status')
    list_filter = ('status',)
    search_fields = ('user',)
    ordering = ('user__username',)
    #filter_horizontal = ('m2m',)
    #inlines = [SshKeyInline]

class GroupConfigurationAdmin(admin.ModelAdmin):
    fieldsets = (
        (_('General Settings'), {'fields': ('name', 'base_host', 'description')}),
        (_('Project WWW Homepage'),
         {'fields': ('can_use_homepage', 'homepage_scm', 'dir_type_homepage',
                     'dir_homepage', 'url_homepage', 'url_cvs_viewcvs_homepage')}),
        (_('Source Code Manager: CVS'),
         {'fields': ('can_use_cvs', 'dir_type_cvs',
                     'dir_cvs', 'url_cvs_viewcvs')}),
        (_('Source Code Manager: GNU Arch'),
         {'fields': ('can_use_arch', 'dir_type_arch',
                     'dir_arch', 'url_arch_viewcvs')}),
        (_('Source Code Manager: Subversion'),
         {'fields': ('can_use_svn', 'dir_type_svn',
                     'dir_svn', 'url_svn_viewcvs')}),
        (_('Source Code Manager: Git'),
         {'fields': ('can_use_git', 'dir_type_git',
                     'dir_git', 'url_git_viewcvs')}),
        (_('Source Code Manager: Mercurial'),
         {'fields': ('can_use_hg', 'dir_type_hg',
                     'dir_hg', 'url_hg_viewcvs')}),
        (_('Source Code Manager: Bazaar'),
         {'fields': ('can_use_bzr', 'dir_type_bzr',
                     'dir_bzr', 'url_bzr_viewcvs')}),
        (_('Download area'),
         {'fields': ('can_use_download', 'dir_type_download',
                     'dir_download', 'url_download')}),
        (_('Licenses'), {'fields': ('can_use_license',)}),
        (_('Development Status'), {'fields': ('can_use_devel_status',)}),
        (_('Mailing List'),
         {'fields': ('can_use_mailing_list', 'mailing_list_virtual_host',
                     'mailing_list_address', 'mailing_list_format',
                     'url_mailing_list_listinfo', 'url_mailing_list_archives',
                     'url_mailing_list_archives_private', 'url_mailing_list_admin')}),
        # TODO: finish
        (_('News Manager'), {'fields': ('can_use_news',)}),
        (_('Project Menu Settings'),
         {'fields': ('is_menu_configurable_homepage',
                     'is_menu_configurable_extralink_documentation',
                     'is_menu_configurable_download',
                     'is_configurable_download_dir',
                     'is_menu_configurable_support',
                     # ...
                     )}),
        
        )

class SvGroupInfoAdmin(admin.ModelAdmin):
    # Copy/pasted from django.contrib.auth.admin; inheritance fails
    # when you attempt to display extended fields..
    search_fields = ('name',)
    ordering = ('group__name',)
    #filter_horizontal = ('permissions',)
    list_display  = ('pk', 'full_name', 'type', 'license',)
    list_filter = ('type', 'license', 'devel_status',)
    date_hierarchy = 'register_time'

class MailingListAdmin(admin.ModelAdmin):
    search_fields = ('list_name',)
    ordering = ('list_name',)
    list_display  = ('pk', 'list_name', 'status', 'is_public', 'description',)
    list_filter = ('status', 'is_public', )

admin.site.register(svmain_models.SvUserInfo, SvUserInfoAdmin)
admin.site.register(svmain_models.SvGroupInfo, SvGroupInfoAdmin)
admin.site.register(svmain_models.GroupConfiguration, GroupConfigurationAdmin)
admin.site.register(svmain_models.License, LicenseAdmin)
admin.site.register(svmain_models.DevelopmentStatus, DevelopmentStatusAdmin)
admin.site.register(svmain_models.MailingList, MailingListAdmin)