summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/admin.py66
-rw-r--r--ishtar_common/forms.py5
2 files changed, 70 insertions, 1 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py
index c3ad21710..8045bff13 100644
--- a/ishtar_common/admin.py
+++ b/ishtar_common/admin.py
@@ -31,6 +31,7 @@ from django.contrib.contenttypes.models import ContentType
from django.contrib.sites.admin import SiteAdmin
from django.contrib.sites.models import Site
from django.contrib.gis.forms import PointField, OSMWidget, MultiPolygonField
+from django.core.cache import cache
from django.http import HttpResponseRedirect, HttpResponse
from django.shortcuts import render
from django.template.defaultfilters import slugify
@@ -38,8 +39,22 @@ from django.utils.translation import ugettext_lazy as _
from django import forms
-from ishtar_common.apps import admin_site
from ishtar_common import models
+from ishtar_common.apps import admin_site
+from ishtar_common.utils import get_cache
+
+from ishtar_common import forms as common_forms
+from archaeological_files import forms as file_forms
+from archaeological_operations import forms as operation_forms
+from archaeological_context_records import forms as context_record_forms
+from archaeological_finds import forms as find_forms, \
+ forms_treatments as treatment_forms
+from archaeological_warehouse import forms as warehouse_forms
+
+
+ISHTAR_FORMS = [common_forms, file_forms, operation_forms,
+ context_record_forms, find_forms, treatment_forms,
+ warehouse_forms]
class ImportGenericForm(forms.Form):
@@ -319,11 +334,14 @@ class ImporterModelAdmin(admin.ModelAdmin):
list_display = ('name', 'klass')
model = models.ImporterModel
+
admin_site.register(models.ImporterModel, ImporterModelAdmin)
class FormaterTypeAdmin(admin.ModelAdmin):
list_display = ('formater_type', 'options')
+
+
admin_site.register(models.FormaterType, FormaterTypeAdmin)
@@ -331,6 +349,8 @@ class ImportAdmin(admin.ModelAdmin):
list_display = ('name', 'importer_type', 'imported_file', 'user', 'state',
'creation_date')
form = make_ajax_form(models.Import, {'user': 'ishtaruser'})
+
+
admin_site.register(models.Import, ImportAdmin)
@@ -338,6 +358,8 @@ 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)
@@ -346,6 +368,8 @@ 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)
@@ -353,12 +377,15 @@ class OperationTypeAdmin(GeneralTypeAdmin):
list_display = GeneralTypeAdmin.list_display + ['order', 'preventive']
model = models.OperationType
+
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)
@@ -418,6 +445,43 @@ class JsonDataFieldAdmin(admin.ModelAdmin):
admin_site.register(models.JsonDataField, JsonDataFieldAdmin)
+def get_choices_form():
+ cache_key, value = get_cache(models.CustomForm, ['associated-forms'])
+ if value:
+ return value
+ forms = set()
+ for app_form in ISHTAR_FORMS:
+ for form in dir(app_form):
+ if 'Form' not in form:
+ # not very clean... but do not treat inappropriate items
+ continue
+ form = getattr(app_form, form)
+ if not issubclass(form, common_forms.CustomForm)\
+ or not getattr(form, 'form_slug', None):
+ continue
+ forms.add((form.form_slug, form.form_admin_name))
+ forms = list(forms)
+ cache.set(cache_key, forms, settings.CACHE_TIMEOUT)
+ return forms
+
+
+class CustomFormForm(forms.ModelForm):
+ class Meta:
+ model = models.CustomForm
+ exclude = []
+ form = forms.ChoiceField(label=_(u"Form"), choices=get_choices_form)
+ users = AutoCompleteSelectMultipleField('ishtaruser', required=False,
+ label=_(u"Users"))
+
+
+class CustomFormAdmin(admin.ModelAdmin):
+ list_display = ['name', 'form', 'available']
+ form = CustomFormForm
+
+
+admin_site.register(models.CustomForm, CustomFormAdmin)
+
+
class AdministrationScriptAdmin(admin.ModelAdmin):
list_display = ['name', 'path']
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py
index 5c3de7b77..d0c2bb035 100644
--- a/ishtar_common/forms.py
+++ b/ishtar_common/forms.py
@@ -298,6 +298,11 @@ class ManageOldType(object):
self.fields[field_name].help_text = model.get_help()
+class CustomForm(object):
+ form_admin_name = ""
+ form_slug = ""
+
+
class DocumentGenerationForm(forms.Form):
"""
Form to generate document by choosing the template