summaryrefslogtreecommitdiff
path: root/ishtar_common/admin.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/admin.py')
-rw-r--r--ishtar_common/admin.py107
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)