diff --git a/.gitignore b/.gitignore
index 3224484..8fbdbfa 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
*.pyc
*.kpf
django_git.egg-info
+dist/
diff --git a/README.md b/README.md
index 818548f..ce31d8a 100644
--- a/README.md
+++ b/README.md
@@ -52,7 +52,7 @@ Requirements
* GitPython
* Django 1.3 (alpha or better)
-If you would like to get started with django-git [Hugh Brown](http://github.com/hughdbrown) has created [Django-git-tester](http://github.com/hughdbrown/Django-git-tester).
+If you would like to get started with django-git there is an basic project in example/ .
Thanks!
-------
diff --git a/django_git/templates/django_git/commit.html b/django_git/templates/django_git/commit.html
index 4615a2f..6c43a38 100644
--- a/django_git/templates/django_git/commit.html
+++ b/django_git/templates/django_git/commit.html
@@ -9,7 +9,7 @@
{% endblock %}
{% block title %}
- {{ repo.path|name }} : {{ commit|first_eight }}
+ {{ repo.working_dir|path_into_title }} : {{ commit|first_eight }}
{% endblock %}
{% block main_content %}
@@ -32,4 +32,4 @@
{% else %}
No diff information.
{% endif %}
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/django_git/templates/django_git/index.html b/django_git/templates/django_git/index.html
index 0c68c7f..57f4a9a 100644
--- a/django_git/templates/django_git/index.html
+++ b/django_git/templates/django_git/index.html
@@ -15,10 +15,10 @@
{% for repo in repos %}
- | {{ repo.path|name }} |
+ {{ repo.working_dir|path_into_title }} |
{{ repo.commits.0.message }} |
{{ repo.commits.0.author.name }} |
{% endfor %}
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/django_git/templates/django_git/repo.html b/django_git/templates/django_git/repo.html
index 535ad43..cce600e 100644
--- a/django_git/templates/django_git/repo.html
+++ b/django_git/templates/django_git/repo.html
@@ -3,7 +3,7 @@
{% load repositories %}
{% block title %}
- {{ repo.path|name }}
+ {{ repo.working_dir|path_into_title }}
{% endblock %}
{% block main_content %}
@@ -16,7 +16,7 @@
{% for commit in repo.commits %}
- | {{ commit|first_eight }} |
+ {{ commit|first_eight }} |
{{ commit.message }} |
{{ commit.committer.name }} |
{{ commit.committed_date|tuple_to_date|date:"m/d/Y" }} |
@@ -32,4 +32,4 @@ Heads
{% endfor %}
{% endif %}
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/django_git/templatetags/repositories.py b/django_git/templatetags/repositories.py
index 5b9ddb2..272cef6 100644
--- a/django_git/templatetags/repositories.py
+++ b/django_git/templatetags/repositories.py
@@ -1,12 +1,19 @@
from datetime import datetime
import os
+import os.path
from django import template
register = template.Library()
-@register.filter("name")
-def name(value):
- return value.split(os.sep)[-2]
+@register.filter("path_into_title")
+def path_into_title(value):
+ """Returns the title case of a path
+
+ >> path2title('/Users/mark/derp.git')
+ ... derp
+
+ """
+ return value.split(os.sep)[-1]
@register.filter("first_eight")
def first_eight(value):
@@ -14,4 +21,4 @@ def first_eight(value):
@register.filter("tuple_to_date")
def tuple_to_date(value):
- return datetime(value[0], value[1], value[2], value[3], value[4], value[5], value[6])
\ No newline at end of file
+ return datetime(value[0], value[1], value[2], value[3], value[4], value[5], value[6])
diff --git a/example/__init__.py b/example/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/example/manage.py b/example/manage.py
new file mode 100755
index 0000000..f9726f9
--- /dev/null
+++ b/example/manage.py
@@ -0,0 +1,10 @@
+#!/usr/bin/env python
+import os
+import sys
+
+if __name__ == "__main__":
+ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
+
+ from django.core.management import execute_from_command_line
+
+ execute_from_command_line(sys.argv)
diff --git a/example/settings.py b/example/settings.py
new file mode 100644
index 0000000..cab5ff2
--- /dev/null
+++ b/example/settings.py
@@ -0,0 +1,163 @@
+# Django settings for example project.
+import os.path
+
+DEBUG = True
+TEMPLATE_DEBUG = DEBUG
+
+PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
+
+ADMINS = (
+ # ('Your Name', 'your_email@example.com'),
+)
+
+MANAGERS = ADMINS
+
+DATABASES = {
+ 'default': {
+ 'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
+ 'NAME': '', # Or path to database file if using sqlite3.
+ 'USER': '', # Not used with sqlite3.
+ 'PASSWORD': '', # Not used with sqlite3.
+ 'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
+ 'PORT': '', # Set to empty string for default. Not used with sqlite3.
+ }
+}
+
+# Local time zone for this installation. Choices can be found here:
+# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
+# although not all choices may be available on all operating systems.
+# On Unix systems, a value of None will cause Django to use the same
+# timezone as the operating system.
+# If running in a Windows environment this must be set to the same as your
+# system time zone.
+TIME_ZONE = 'America/Chicago'
+
+# Language code for this installation. All choices can be found here:
+# http://www.i18nguy.com/unicode/language-identifiers.html
+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
+
+# If you set this to False, Django will not format dates, numbers and
+# calendars according to the current locale.
+USE_L10N = True
+
+# If you set this to False, Django will not use timezone-aware datetimes.
+USE_TZ = True
+
+# Absolute filesystem path to the directory that will hold user-uploaded files.
+# Example: "/home/media/media.lawrence.com/media/"
+MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media')
+
+# URL that handles the media served from MEDIA_ROOT. Make sure to use a
+# trailing slash.
+# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
+MEDIA_URL = '/media/'
+
+# Absolute path to the directory static files should be collected to.
+# Don't put anything in this directory yourself; store your static files
+# in apps' "static/" subdirectories and in STATICFILES_DIRS.
+# Example: "/home/media/media.lawrence.com/static/"
+STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
+
+# URL prefix for static files.
+# Example: "http://media.lawrence.com/static/"
+STATIC_URL = '/static/'
+
+# Additional locations of static files
+STATICFILES_DIRS = (
+ # Put strings here, like "/home/html/static" or "C:/www/django/static".
+ # Always use forward slashes, even on Windows.
+ # Don't forget to use absolute paths, not relative paths.
+)
+
+# List of finder classes that know how to find static files in
+# various locations.
+STATICFILES_FINDERS = (
+ 'django.contrib.staticfiles.finders.FileSystemFinder',
+ 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
+# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
+)
+
+# Make this unique, and don't share it with anybody.
+SECRET_KEY = '#uzwpnjyt9@a0=ghhqv_4m2bo_j_74-tprd67hkg3u))$=*j4i'
+
+# List of callables that know how to import templates from various sources.
+TEMPLATE_LOADERS = (
+ 'django.template.loaders.filesystem.Loader',
+ 'django.template.loaders.app_directories.Loader',
+# 'django.template.loaders.eggs.Loader',
+)
+
+MIDDLEWARE_CLASSES = (
+ 'django.middleware.common.CommonMiddleware',
+ 'django.contrib.sessions.middleware.SessionMiddleware',
+ 'django.middleware.csrf.CsrfViewMiddleware',
+ 'django.contrib.auth.middleware.AuthenticationMiddleware',
+ 'django.contrib.messages.middleware.MessageMiddleware',
+ # Uncomment the next line for simple clickjacking protection:
+ # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
+)
+
+ROOT_URLCONF = 'urls'
+
+# Python dotted path to the WSGI application used by Django's runserver.
+WSGI_APPLICATION = 'wsgi.application'
+
+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.
+ os.path.join(PROJECT_ROOT, 'templates'),
+)
+
+INSTALLED_APPS = (
+ 'django.contrib.auth',
+ 'django.contrib.contenttypes',
+ 'django.contrib.sessions',
+ 'django.contrib.sites',
+ 'django.contrib.messages',
+ 'django.contrib.staticfiles',
+ # Uncomment the next line to enable the admin:
+ # 'django.contrib.admin',
+ # Uncomment the next line to enable admin documentation:
+ # 'django.contrib.admindocs',
+
+ 'django_git',
+)
+
+# A sample logging configuration. The only tangible logging
+# performed by this configuration is to send an email to
+# the site admins on every HTTP 500 error when DEBUG=False.
+# See http://docs.djangoproject.com/en/dev/topics/logging for
+# more details on how to customize your logging configuration.
+LOGGING = {
+ 'version': 1,
+ 'disable_existing_loggers': False,
+ 'filters': {
+ 'require_debug_false': {
+ '()': 'django.utils.log.RequireDebugFalse'
+ }
+ },
+ 'handlers': {
+ 'mail_admins': {
+ 'level': 'ERROR',
+ 'filters': ['require_debug_false'],
+ 'class': 'django.utils.log.AdminEmailHandler'
+ }
+ },
+ 'loggers': {
+ 'django.request': {
+ 'handlers': ['mail_admins'],
+ 'level': 'ERROR',
+ 'propagate': True,
+ },
+ }
+}
+
+## DJANGO-GIT SETTINGS
+REPOS_ROOT = os.path.expanduser('~/Projects/')
diff --git a/example/templates/base.html b/example/templates/base.html
new file mode 100644
index 0000000..336ea44
--- /dev/null
+++ b/example/templates/base.html
@@ -0,0 +1,10 @@
+
+
+
+ Django Git Tester|{% block title %}{% endblock title %}
+ {% block extra_head %}{% endblock extra_head %}
+
+
+ {% block main_content %}{% endblock main_content %}
+
+
diff --git a/example/urls.py b/example/urls.py
new file mode 100644
index 0000000..0be5c45
--- /dev/null
+++ b/example/urls.py
@@ -0,0 +1,20 @@
+from django.conf.urls import patterns, include, url
+
+# Uncomment the next two lines to enable the admin:
+# from django.contrib import admin
+# admin.autodiscover()
+
+urlpatterns = patterns('',
+ # Examples:
+ # url(r'^$', 'example.views.home', name='home'),
+ # url(r'^example/', include('example.foo.urls')),
+
+ # Uncomment the admin/doc line below to enable admin documentation:
+ # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
+
+ # Uncomment the next line to enable the admin:
+ # url(r'^admin/', include(admin.site.urls)),
+
+ url(r'^git/', include('django_git.urls')),
+)
+
diff --git a/example/wsgi.py b/example/wsgi.py
new file mode 100644
index 0000000..e3cde02
--- /dev/null
+++ b/example/wsgi.py
@@ -0,0 +1,28 @@
+"""
+WSGI config for example project.
+
+This module contains the WSGI application used by Django's development server
+and any production WSGI deployments. It should expose a module-level variable
+named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover
+this application via the ``WSGI_APPLICATION`` setting.
+
+Usually you will have the standard Django WSGI application here, but it also
+might make sense to replace the whole Django WSGI application with a custom one
+that later delegates to the Django one. For example, you could introduce WSGI
+middleware here, or combine a Django application with an application of another
+framework.
+
+"""
+import os
+
+os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
+
+# This application object is used by any WSGI server configured to use this
+# file. This includes Django's development server, if the WSGI_APPLICATION
+# setting points here.
+from django.core.wsgi import get_wsgi_application
+application = get_wsgi_application()
+
+# Apply WSGI middleware here.
+# from helloworld.wsgi import HelloWorldApplication
+# application = HelloWorldApplication(application)
diff --git a/requirements.txt b/requirements.txt
index 5104aad..ccf0794 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,2 +1,2 @@
--e git+git://github.com/defunkt/pygments.git#egg=pygments
--e git+git://github.com/mm/gitpython.git#egg=gitpython
+Pygments
+gitpython
diff --git a/setup.py b/setup.py
index 945ee49..0075e6c 100644
--- a/setup.py
+++ b/setup.py
@@ -19,5 +19,5 @@
packages=['django_git', 'django_git.templatetags'],
package_data={ 'django_git' : ['templates/django_git/*.html', 'media/js/*.js']},
zip_safe=False,
- install_requires=['GitPython >=0.1.4', 'Pygments >=0.11'],
+ install_requires=['GitPython >=0.3', 'Pygments >=0.11'],
)