diff --git a/example/__init__.py b/example/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/example/development.py b/example/development.py new file mode 100644 index 0000000..1d8c9c4 --- /dev/null +++ b/example/development.py @@ -0,0 +1,4 @@ + +from example.settings import * +DEBUG=True +TEMPLATE_DEBUG=DEBUG diff --git a/example/exampleapp/__init__.py b/example/exampleapp/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/example/exampleapp/admin.py b/example/exampleapp/admin.py new file mode 100644 index 0000000..d5a962e --- /dev/null +++ b/example/exampleapp/admin.py @@ -0,0 +1,7 @@ +from django.contrib import admin +from django.contrib.flatpages.models import FlatPage +from django.contrib.flatpages.admin import FlatPageAdmin +from authority.admin import PermissionInline + +admin.site.unregister(FlatPage) +admin.site.register(FlatPage, FlatPageAdmin, inlines=[PermissionInline]) diff --git a/example/exampleapp/models.py b/example/exampleapp/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/example/exampleapp/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/example/exampleapp/permissions.py b/example/exampleapp/permissions.py new file mode 100644 index 0000000..cd46269 --- /dev/null +++ b/example/exampleapp/permissions.py @@ -0,0 +1,6 @@ +from django.contrib.flatpages.models import FlatPage +from authority.permissions import BasePermission + +class FlatPagePermission(BasePermission): + model = FlatPage + label = 'flatpage_permission' diff --git a/example/exampleapp/tests.py b/example/exampleapp/tests.py new file mode 100644 index 0000000..2247054 --- /dev/null +++ b/example/exampleapp/tests.py @@ -0,0 +1,23 @@ +""" +This file demonstrates two different styles of tests (one doctest and one +unittest). These will both pass when you run "manage.py test". + +Replace these with more appropriate tests for your application. +""" + +from django.test import TestCase + +class SimpleTest(TestCase): + def test_basic_addition(self): + """ + Tests that 1 + 1 always equals 2. + """ + self.failUnlessEqual(1 + 1, 2) + +__test__ = {"doctest": """ +Another way to test that 1 + 1 is equal to 2. + +>>> 1 + 1 == 2 +True +"""} + diff --git a/example/production.py b/example/production.py new file mode 100644 index 0000000..7652ef0 --- /dev/null +++ b/example/production.py @@ -0,0 +1,2 @@ + +from example.settings import * diff --git a/example/settings.py b/example/settings.py new file mode 100644 index 0000000..801e6d8 --- /dev/null +++ b/example/settings.py @@ -0,0 +1,82 @@ +import os + +PROJECT_ROOT = os.path.realpath(os.path.dirname(__file__)) + +ADMINS = ( + # ('Your Name', 'your_email@domain.com'), +) + +MANAGERS = ADMINS + +DATABASE_ENGINE = 'sqlite3' +DATABASE_NAME = os.path.join(PROJECT_ROOT, 'example.db') +DATABASE_USER = '' +DATABASE_PASSWORD = '' +DATABASE_HOST = '' +DATABASE_PORT = '' + +TIME_ZONE = 'America/Chicago' + +LANGUAGE_CODE = 'en-us' + +# Absolute path to the directory that holds media. +# Example: "/home/media/media.lawrence.com/" +MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media') + +# URL that handles the media served from MEDIA_ROOT. Make sure to use a +# trailing slash if there is a path component (optional in other cases). +# Examples: "http://media.lawrence.com", "http://example.com/media/" +MEDIA_URL = '/media/' + +# 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 = '/admin_media/' + +# Don't share this with anybody. +SECRET_KEY = 'ljlv2lb2d&)#by6th=!v=03-c^(o4lop92i@z4b3f1&ve0yx6d' + +MIDDLEWARE_CLASSES = ( + 'django.middleware.common.CommonMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware', +) + +TEMPLATE_CONTEXT_PROCESSORS = ( + 'django.core.context_processors.auth', + 'django.core.context_processors.debug', + 'django.core.context_processors.i18n', + 'django.core.context_processors.media', + 'django.core.context_processors.request', +) + +ROOT_URLCONF = 'example.urls' + +SITE_ID = 1 + +INSTALLED_APPS = ( + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.sites', + 'django.contrib.flatpages', + 'django.contrib.admin', + 'authority', + 'example.exampleapp', +) + +TEMPLATE_LOADERS = ( + 'django.template.loaders.filesystem.load_template_source', + 'django.template.loaders.app_directories.load_template_source', +) + +TEMPLATE_DIRS = ( + os.path.join(PROJECT_ROOT, "templates"), +) + +# Use local_settings.py for things to override privately +try: + from local_settings import * +except ImportError: + pass diff --git a/example/templates/flatpages/default.html b/example/templates/flatpages/default.html new file mode 100644 index 0000000..ef01fe9 --- /dev/null +++ b/example/templates/flatpages/default.html @@ -0,0 +1,10 @@ +{% load permissions_tags %} +{{ flatpage.content }} + +{% permission_form flatpage "add_flatpage" %} + +{% get_permissions_for flatpage %} + +{% for perm in permissions %} +

{{ perm.user }}: {{ perm }} {% permission_delete_link perm %}

+{% endfor %} diff --git a/example/urls.py b/example/urls.py new file mode 100644 index 0000000..037b21c --- /dev/null +++ b/example/urls.py @@ -0,0 +1,21 @@ + +from django.conf.urls.defaults import patterns, include, handler500 +from django.conf import settings +from django.contrib import admin + +admin.autodiscover() + +handler500 # Pyflakes + +urlpatterns = patterns('', + (r'^admin/', include(admin.site.urls)), + (r'^perms/', include('authority.urls')), + (r'^accounts/login/$', 'django.contrib.auth.views.login'), +) + +if settings.DEBUG: + urlpatterns += patterns('', + (r'^media/(?P.*)$', 'django.views.static.serve', { + 'document_root': settings.MEDIA_ROOT, + }), + )