From 173f476c48c807e5b5502aabb4513f3e6b6ef7e9 Mon Sep 17 00:00:00 2001 From: erickson Date: Mon, 13 Nov 2006 14:10:51 +0000 Subject: [PATCH] Adding basic django admin sight. An install process is needed. git-svn-id: svn://svn.open-ils.org/ILS/trunk@6582 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/admin/ils_admin/__init__.py | 0 Open-ILS/admin/ils_admin/manage.py | 11 ++ Open-ILS/admin/ils_admin/settings.py | 82 +++++++++++++++ Open-ILS/admin/ils_admin/setup/__init__.py | 0 Open-ILS/admin/ils_admin/setup/models.py | 116 +++++++++++++++++++++ Open-ILS/admin/ils_admin/setup/views.py | 1 + Open-ILS/admin/ils_admin/urls.py | 5 + 7 files changed, 215 insertions(+) create mode 100644 Open-ILS/admin/ils_admin/__init__.py create mode 100755 Open-ILS/admin/ils_admin/manage.py create mode 100644 Open-ILS/admin/ils_admin/settings.py create mode 100644 Open-ILS/admin/ils_admin/setup/__init__.py create mode 100644 Open-ILS/admin/ils_admin/setup/models.py create mode 100644 Open-ILS/admin/ils_admin/setup/views.py create mode 100644 Open-ILS/admin/ils_admin/urls.py diff --git a/Open-ILS/admin/ils_admin/__init__.py b/Open-ILS/admin/ils_admin/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Open-ILS/admin/ils_admin/manage.py b/Open-ILS/admin/ils_admin/manage.py new file mode 100755 index 0000000000..5e78ea979e --- /dev/null +++ b/Open-ILS/admin/ils_admin/manage.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python +from django.core.management import execute_manager +try: + import settings # Assumed to be in the same directory. +except ImportError: + import sys + sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__) + sys.exit(1) + +if __name__ == "__main__": + execute_manager(settings) diff --git a/Open-ILS/admin/ils_admin/settings.py b/Open-ILS/admin/ils_admin/settings.py new file mode 100644 index 0000000000..1cdbba4e92 --- /dev/null +++ b/Open-ILS/admin/ils_admin/settings.py @@ -0,0 +1,82 @@ +# Django settings for ils_admin project. + +DEBUG = True +TEMPLATE_DEBUG = DEBUG + +ADMINS = ( + # ('Your Name', 'your_email@domain.com'), +) + +MANAGERS = ADMINS + +DATABASE_ENGINE = 'postgresql' # 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'. +DATABASE_NAME = '' # Or path to database file if using sqlite3. +DATABASE_SCHEMAS = 'public, permission, actor' # Only used with postgresq to support multiple schemas +DATABASE_USER = '' # Not used with sqlite3. +DATABASE_PASSWORD = '' # Not used with sqlite3. +DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3. +DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3. + +# Local time zone for this installation. All choices can be found here: +# http://www.postgresql.org/docs/current/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE +TIME_ZONE = 'America/New_York' + +# Language code for this installation. All choices can be found here: +# http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes +# http://blogs.law.harvard.edu/tech/stories/storyReader$15 +LANGUAGE_CODE = 'en-us' + +SITE_ID = 1 + +# If you set this to False, Django will make some optimizations so as not +# to load the internationalization machinery. +USE_I18N = True + +# Absolute path to the directory that holds media. +# Example: "/home/media/media.lawrence.com/" +MEDIA_ROOT = '' + +# URL that handles the media served from MEDIA_ROOT. +# Example: "http://media.lawrence.com" +MEDIA_URL = '' + +# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a +# trailing slash. +# Examples: "http://foo.com/media/", "/media/". +ADMIN_MEDIA_PREFIX = '/media/' + +# Make this unique, and don't share it with anybody. +SECRET_KEY = 'rpbefxd0ahnu0pz1hyw6fo$_fj%%op!d9*7bqh0dw=&-^dz8%z' + +# List of callables that know how to import templates from various sources. +TEMPLATE_LOADERS = ( + 'django.template.loaders.filesystem.load_template_source', + 'django.template.loaders.app_directories.load_template_source', +# 'django.template.loaders.eggs.load_template_source', +) + +MIDDLEWARE_CLASSES = ( + 'django.middleware.common.CommonMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.middleware.doc.XViewMiddleware', +) + +ROOT_URLCONF = 'ils_admin.urls' + +TEMPLATE_DIRS = ( + # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". + # Always use forward slashes, even on Windows. + # Don't forget to use absolute paths, not relative paths. + '/openils/var/admin/ils_admin/templates/default' +) + +INSTALLED_APPS = ( + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.sites', + 'django.contrib.admin', + 'ils_admin.setup', +) + diff --git a/Open-ILS/admin/ils_admin/setup/__init__.py b/Open-ILS/admin/ils_admin/setup/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Open-ILS/admin/ils_admin/setup/models.py b/Open-ILS/admin/ils_admin/setup/models.py new file mode 100644 index 0000000000..76e4287ffa --- /dev/null +++ b/Open-ILS/admin/ils_admin/setup/models.py @@ -0,0 +1,116 @@ +from django.db import models + +# Create your models here. + +class GrpTree(models.Model): + name = models.CharField(maxlength=100) + parent_id = models.ForeignKey('self', null=True, related_name='children', db_column='parent') + description = models.CharField(blank=True, maxlength=200) + perm_interval = models.CharField(blank=True, maxlength=100) + application_perm = models.CharField(blank=True, maxlength=100) + usergroup = models.BooleanField() + class Admin: + list_display = ('name', 'description') + list_filter = ['parent_id'] + search_fields = ['name', 'description'] + class Meta: + db_table = 'grp_tree' + ordering = ['name'] + verbose_name = 'User Group' + def __str__(self): + return self.name + +class OrgUnitType(models.Model): + name = models.CharField(maxlength=100) + opac_label = models.CharField(maxlength=100) + depth = models.IntegerField() + parent_id = models.ForeignKey('self', null=True, related_name='children', db_column='parent') + can_have_vols = models.BooleanField() + can_have_users = models.BooleanField() + class Meta: + db_table = 'org_unit_type' + verbose_name = 'Library Type' + class Admin: + list_display = ('name', 'depth') + list_filter = ['parent_id'] + ordering = ['depth'] + def __str__(self): + return self.name + +class PermList(models.Model): + code = models.CharField(maxlength=100) + description = models.CharField(blank=True, maxlength=200) + class Admin: + list_display = ('code','description') + search_fields = ['code'] + class Meta: + db_table = 'perm_list' + ordering = ['code'] + verbose_name = 'Permission' + def __str__(self): + return self.code + +class GrpPermMap(models.Model): + grp_id = models.ForeignKey(GrpTree, db_column='grp') + perm_id = models.ForeignKey(PermList, db_column='perm') + depth_id = models.ForeignKey(OrgUnitType, to_field='depth', db_column='depth') + grantable = models.BooleanField() + class Admin: + list_filter = ['grp_id'] + search_fields = ['grp_id', 'perm_id'] + list_display = ('grp_id', 'perm_id') + class Meta: + db_table = 'grp_perm_map' + ordering = ['grp_id'] + verbose_name = 'Permission Setting' + def __str__(self): + return str(self.grp_id)+' -> '+str(self.perm_id) + + +class OrgAddress(models.Model): + valid = models.BooleanField() + org_unit_id = models.ForeignKey('OrgUnit', db_column='org_unit') + address_type = models.CharField(blank=False, maxlength=200, default='MAILING') + street1 = models.CharField(blank=False, maxlength=200) + street2 = models.CharField(maxlength=200) + city = models.CharField(blank=False, maxlength=200) + county = models.CharField(maxlength=200) + state = models.CharField(blank=False, maxlength=200) + country = models.CharField(blank=False, maxlength=200) + post_code = models.CharField(blank=False, maxlength=200) + class Admin: + search_fields = ['street1', 'city', 'post_code'] + list_filter = ['org_unit_id'] + list_display = ('street1', 'street2', 'city', 'county', 'state', 'post_code') + class Meta: + ordering = ['city'] + db_table = 'org_address' + verbose_name = 'Library Address' + def __str__(self): + return self.street1+' '+self.city+', '+self.state+' '+self.post_code + +class OrgUnit(models.Model): + parent_ou_id = models.ForeignKey('self', null=True, related_name='children', db_column='parent_ou') + ou_type_id = models.ForeignKey(OrgUnitType, db_column='ou_type') + shortname = models.CharField(maxlength=200) + name = models.CharField(maxlength=200) + email = models.EmailField(null=True, blank=True) + phone = models.CharField(maxlength=200, null=True, blank=True) + ill_address_id = models.ForeignKey(OrgAddress, db_column='ill_address', null=True, blank=True) + holds_address_id = models.ForeignKey(OrgAddress, db_column='holds_address', null=True, blank=True) + mailing_address_id = models.ForeignKey(OrgAddress, db_column='mailing_address', null=True, blank=True) + billing_address_id = models.ForeignKey(OrgAddress, db_column='billing_address', null=True, blank=True) + class Admin: + search_fields = ['name', 'shortname'] + #list_filter = ['parent_ou_id'] + list_display = ('shortname', 'name') + class Meta: + db_table = 'org_unit' + ordering = ['shortname'] + verbose_name = 'Library' + def __str__(self): + return self.shortname + + + + diff --git a/Open-ILS/admin/ils_admin/setup/views.py b/Open-ILS/admin/ils_admin/setup/views.py new file mode 100644 index 0000000000..60f00ef0ef --- /dev/null +++ b/Open-ILS/admin/ils_admin/setup/views.py @@ -0,0 +1 @@ +# Create your views here. diff --git a/Open-ILS/admin/ils_admin/urls.py b/Open-ILS/admin/ils_admin/urls.py new file mode 100644 index 0000000000..016834ddcb --- /dev/null +++ b/Open-ILS/admin/ils_admin/urls.py @@ -0,0 +1,5 @@ +from django.conf.urls.defaults import * + +urlpatterns = patterns('', + ('admin/', include('django.contrib.admin.urls')), +) -- 2.43.2