diff options
Diffstat (limited to 'ishtar_common/admin.py')
| -rw-r--r-- | ishtar_common/admin.py | 100 | 
1 files changed, 55 insertions, 45 deletions
| diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py index adf006502..4af60fa90 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,26 @@ 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 TargetKeyAdmin(admin.ModelAdmin): @@ -284,32 +300,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 +330,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 +345,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 +353,4 @@ if settings.COUNTRY == 'fr':      basic_models += [models.Arrondissement, models.Canton]  for model in basic_models: -    admin.site.register(model) +    admin_site.register(model) | 
