diff options
Diffstat (limited to 'ishtar_common/admin.py')
-rw-r--r-- | ishtar_common/admin.py | 107 |
1 files changed, 62 insertions, 45 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py index adf006502..a5d9624ee 100644 --- a/ishtar_common/admin.py +++ b/ishtar_common/admin.py @@ -17,24 +17,24 @@ # See the file COPYING for details. -""" -Admin description -""" import csv +from ajax_select import make_ajax_form + from django.conf import settings from django.contrib import admin -from django.contrib.auth.admin import GroupAdmin -from django.contrib.auth.models import Group +from django.contrib.auth.admin import GroupAdmin, UserAdmin +from django.contrib.auth.models import Group, User +from django.contrib.gis.forms import PointField, OSMWidget from django.http import HttpResponseRedirect, HttpResponse -from django.shortcuts import render_to_response -from django.template import RequestContext +from django.shortcuts import render from django.template.defaultfilters import slugify -from django.utils.translation import ugettext_lazy as _, ugettext +from django.utils.translation import ugettext_lazy as _ from django import forms -import models +from ishtar_common.apps import admin_site +from ishtar_common import models class ImportGenericForm(forms.Form): @@ -69,9 +69,7 @@ def gen_import_generic(self, request, queryset): form = ImportGenericForm( initial={'_selected_action': request.POST.getlist(admin.ACTION_CHECKBOX_NAME)}) - return render_to_response( - 'admin/import_from_csv.html', {'csv_form': form}, - context_instance=RequestContext(request)) + return render(request, 'admin/import_from_csv.html', {'csv_form': form}) gen_import_generic.short_description = "Import from a CSV file" @@ -97,7 +95,7 @@ def export_as_csv_action(description=_(u"Export selected as CSV file"), excludeset = set(exclude) field_names = field_names - excludeset - response = HttpResponse(mimetype='text/csv') + response = HttpResponse(content_type='text/csv') response['Content-Disposition'] = 'attachment; filename=%s.csv' % \ unicode(opts).replace('.', '_') @@ -114,7 +112,7 @@ def export_as_csv_action(description=_(u"Export selected as CSV file"), class HistorizedObjectAdmin(admin.ModelAdmin): - readonly_fields = ('history_modifier',) + readonly_fields = ['history_creator', 'history_modifier',] def save_model(self, request, obj, form, change): obj.history_modifier = request.user @@ -127,8 +125,8 @@ class MyGroupAdmin(GroupAdmin): "all": ("media/admin.css",) } -admin.site.unregister(Group) -admin.site.register(Group, MyGroupAdmin) +admin_site.register(User, UserAdmin) +admin_site.register(Group, MyGroupAdmin) class IshtarSiteProfileAdmin(admin.ModelAdmin): @@ -136,14 +134,14 @@ class IshtarSiteProfileAdmin(admin.ModelAdmin): 'find', 'warehouse') model = models.IshtarSiteProfile -admin.site.register(models.IshtarSiteProfile, IshtarSiteProfileAdmin) +admin_site.register(models.IshtarSiteProfile, IshtarSiteProfileAdmin) class DepartmentAdmin(admin.ModelAdmin): list_display = ('number', 'label',) model = models.Department -admin.site.register(models.Department, DepartmentAdmin) +admin_site.register(models.Department, DepartmentAdmin) class OrganizationAdmin(HistorizedObjectAdmin): @@ -151,9 +149,10 @@ class OrganizationAdmin(HistorizedObjectAdmin): list_filter = ("organization_type",) search_fields = ('name',) exclude = ('merge_key', 'merge_exclusion', 'merge_candidate', ) + readonly_fields = HistorizedObjectAdmin.readonly_fields + ['imports'] model = models.Organization -admin.site.register(models.Organization, OrganizationAdmin) +admin_site.register(models.Organization, OrganizationAdmin) class PersonAdmin(HistorizedObjectAdmin): @@ -161,9 +160,19 @@ class PersonAdmin(HistorizedObjectAdmin): list_filter = ("person_types",) search_fields = ('name', 'surname', 'email', 'raw_name') exclude = ('merge_key', 'merge_exclusion', 'merge_candidate', ) + readonly_fields = HistorizedObjectAdmin.readonly_fields + ['imports'] + form = make_ajax_form(models.Person, {'attached_to': 'organization'}) model = models.Person -admin.site.register(models.Person, PersonAdmin) +admin_site.register(models.Person, PersonAdmin) + + +class AdminTownForm(forms.ModelForm): + class Meta: + model = models.Town + exclude = [] + center = PointField(label=_(u"center"), required=False, + widget=OSMWidget) class TownAdmin(admin.ModelAdmin): @@ -173,17 +182,22 @@ class TownAdmin(admin.ModelAdmin): list_display += ['numero_insee', 'departement', ] search_fields += ['numero_insee', 'departement__label', ] list_filter = ("departement",) + readonly_fields = ['imports'] model = models.Town + form = AdminTownForm -admin.site.register(models.Town, TownAdmin) +admin_site.register(models.Town, TownAdmin) class AuthorAdmin(admin.ModelAdmin): list_display = ['person', 'author_type'] list_filter = ("author_type",) + search_fields = ('person__name', 'person__surname', + 'person__attached_to__name') model = models.Author + form = make_ajax_form(models.Author, {'person': 'person'}) -admin.site.register(models.Author, AuthorAdmin) +admin_site.register(models.Author, AuthorAdmin) class PersonTypeAdmin(admin.ModelAdmin): @@ -191,18 +205,19 @@ class PersonTypeAdmin(admin.ModelAdmin): model = models.PersonType filter_vertical = ('groups',) -admin.site.register(models.PersonType, PersonTypeAdmin) +admin_site.register(models.PersonType, PersonTypeAdmin) class GlobalVarAdmin(admin.ModelAdmin): list_display = ['slug', 'description', 'value'] -admin.site.register(models.GlobalVar, GlobalVarAdmin) +admin_site.register(models.GlobalVar, GlobalVarAdmin) class GeneralTypeAdmin(admin.ModelAdmin): list_display = ['label', 'txt_idx', 'available', 'comment'] search_fields = ('label', 'txt_idx', 'comment',) actions = ['import_generic', export_as_csv_action()] + prepopulated_fields = {"txt_idx": ("label",)} import_generic = gen_import_generic @@ -210,7 +225,7 @@ general_models = [models.OrganizationType, models.SourceType, models.AuthorType, models.TitleType, models.Format, models.SupportType] for model in general_models: - admin.site.register(model, GeneralTypeAdmin) + admin_site.register(model, GeneralTypeAdmin) class ImporterDefaultValuesInline(admin.TabularInline): @@ -221,17 +236,17 @@ class ImporterDefaultAdmin(admin.ModelAdmin): list_display = ('importer_type', 'target') model = models.ImporterDefault inlines = (ImporterDefaultValuesInline,) -admin.site.register(models.ImporterDefault, ImporterDefaultAdmin) +admin_site.register(models.ImporterDefault, ImporterDefaultAdmin) class ImporterTypeAdmin(admin.ModelAdmin): list_display = ('name', 'associated_models', 'is_template') -admin.site.register(models.ImporterType, ImporterTypeAdmin) +admin_site.register(models.ImporterType, ImporterTypeAdmin) class RegexpAdmin(admin.ModelAdmin): list_display = ('name', 'description', "regexp") -admin.site.register(models.Regexp, RegexpAdmin) +admin_site.register(models.Regexp, RegexpAdmin) class ImporterDuplicateFieldInline(admin.TabularInline): @@ -258,25 +273,33 @@ class ImporterColumnAdmin(admin.ModelAdmin): 'targets_lbl', 'duplicate_fields_lbl', 'required') list_filter = ('importer_type',) inlines = (ImportTargetInline, ImporterDuplicateFieldInline) -admin.site.register(models.ImporterColumn, ImporterColumnAdmin) +admin_site.register(models.ImporterColumn, ImporterColumnAdmin) class ImporterModelAdmin(admin.ModelAdmin): list_display = ('name', 'klass') model = models.ImporterModel -admin.site.register(models.ImporterModel, ImporterModelAdmin) +admin_site.register(models.ImporterModel, ImporterModelAdmin) class FormaterTypeAdmin(admin.ModelAdmin): list_display = ('formater_type', 'options') -admin.site.register(models.FormaterType, FormaterTypeAdmin) +admin_site.register(models.FormaterType, FormaterTypeAdmin) class ImportAdmin(admin.ModelAdmin): list_display = ('name', 'importer_type', 'imported_file', 'user', 'state', 'creation_date') -admin.site.register(models.Import, ImportAdmin) + form = make_ajax_form(models.Import, {'user': 'ishtaruser'}) +admin_site.register(models.Import, ImportAdmin) + + +class TargetKeyGroupAdmin(admin.ModelAdmin): + list_display = ('name', 'all_user_can_use', 'all_user_can_modify', + 'available') + search_fields = ('name',) +admin_site.register(models.TargetKeyGroup, TargetKeyGroupAdmin) class TargetKeyAdmin(admin.ModelAdmin): @@ -284,32 +307,26 @@ class TargetKeyAdmin(admin.ModelAdmin): 'value', 'is_set') list_filter = ("is_set", "target__column__importer_type") search_fields = ('target__target', 'value', 'key') -admin.site.register(models.TargetKey, TargetKeyAdmin) +admin_site.register(models.TargetKey, TargetKeyAdmin) class OperationTypeAdmin(GeneralTypeAdmin): list_display = GeneralTypeAdmin.list_display + ['order', 'preventive'] model = models.OperationType -admin.site.register(models.OperationType, OperationTypeAdmin) +admin_site.register(models.OperationType, OperationTypeAdmin) class SpatialReferenceSystemAdmin(GeneralTypeAdmin): list_display = GeneralTypeAdmin.list_display + ['order', 'srid'] model = models.SpatialReferenceSystem -admin.site.register(models.SpatialReferenceSystem, SpatialReferenceSystemAdmin) - - -class IshtarUserAdmin(admin.ModelAdmin): - readonly_fields = ('password',) - -admin.site.register(models.IshtarUser, IshtarUserAdmin) +admin_site.register(models.SpatialReferenceSystem, SpatialReferenceSystemAdmin) class ItemKeyAdmin(admin.ModelAdmin): list_display = ('content_type', 'key', 'content_object', 'importer') search_fields = ('key', ) -admin.site.register(models.ItemKey, ItemKeyAdmin) +admin_site.register(models.ItemKey, ItemKeyAdmin) class AdministrationScriptAdmin(admin.ModelAdmin): @@ -320,7 +337,7 @@ class AdministrationScriptAdmin(admin.ModelAdmin): return ('path',) return [] -admin.site.register(models.AdministrationScript, AdministrationScriptAdmin) +admin_site.register(models.AdministrationScript, AdministrationScriptAdmin) class AdministrationTaskAdmin(admin.ModelAdmin): @@ -335,7 +352,7 @@ class AdministrationTaskAdmin(admin.ModelAdmin): return ("script", ) + self.readonly_fields return self.readonly_fields -admin.site.register(models.AdministrationTask, AdministrationTaskAdmin) +admin_site.register(models.AdministrationTask, AdministrationTaskAdmin) basic_models = [models.DocumentTemplate] @@ -343,4 +360,4 @@ if settings.COUNTRY == 'fr': basic_models += [models.Arrondissement, models.Canton] for model in basic_models: - admin.site.register(model) + admin_site.register(model) |