diff --git a/botweb/__init__.py b/botweb/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/botweb/karma/__init__.py b/botweb/karma/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/botweb/karma/models.py b/botweb/karma/models.py new file mode 100644 index 0000000..7e8850a --- /dev/null +++ b/botweb/karma/models.py @@ -0,0 +1,47 @@ +from django.db import models + +class LogEntry(models.Model): + id = models.IntegerField(primary_key=True) + key = models.CharField(max_length=255) + delta = models.IntegerField(choices=((1, u'++'), (-1, u'--'))) + who = models.CharField(max_length=30) + userhost = models.CharField(max_length=512) + timestamp = models.DateTimeField(db_column='karmatime') + + def __unicode__(self): + return "%s given %s by %s on %s" % (self.key, self.delta, + self.who, self.timestamp) + + class Meta: + db_table = 'karma_log' + ordering = ['timestamp'] + managed = False + +class User(models.Model): + who = models.CharField(max_length=30, primary_key=True) + pos = models.IntegerField() + neg = models.IntegerField() + + def _get_total(self): + return self.pos + self.neg + total = property(_get_total) + + def __unicode__(self): + return "Karma User %s (%s/%s)" % (self.who, self,pos, self.neg) + + class Meta: + db_table = 'karma_users' + ordering = ['who'] + managed = False + +class Value(models.Model): + key = models.CharField(max_length=255, primary_key=True) + value = models.IntegerField() + + def __unicode__(self): + return "Karma Value %s (%s)" % (self.key, self.value) + + class Meta: + db_table = 'karma_values' + ordering = ['value'] + managed = False diff --git a/botweb/karma/tests.py b/botweb/karma/tests.py new file mode 100644 index 0000000..2247054 --- /dev/null +++ b/botweb/karma/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/botweb/karma/urls.py b/botweb/karma/urls.py new file mode 100755 index 0000000..3525c1e --- /dev/null +++ b/botweb/karma/urls.py @@ -0,0 +1,7 @@ +from django.conf.urls.defaults import * + +urlpatterns = patterns('karma.views', + (r'^$', 'index'), + (r'^givers/$', 'givers'), + (r'^stats/$', 'stats'), +) diff --git a/botweb/karma/views.py b/botweb/karma/views.py new file mode 100644 index 0000000..c689fea --- /dev/null +++ b/botweb/karma/views.py @@ -0,0 +1,16 @@ +from django.shortcuts import render_to_response +from karma.models import Value, User + +def index(request): + karma_values = len(Value.objects.all()) + karma_users = len(User.objects.all()) + return render_to_response('karma/index.html', {'value_count': karma_values, + 'user_count': karma_users}) + +def stats(request): + values = Value.objects.all().order_by('-value') + return render_to_response('karma/stats.html', {'values': values}) + +def givers(request): + users = User.objects.all().order_by('who') + return render_to_response('karma/givers.html', {'users': users}) diff --git a/botweb/manage.py b/botweb/manage.py new file mode 100644 index 0000000..5e78ea9 --- /dev/null +++ b/botweb/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/botweb/settings.py b/botweb/settings.py new file mode 100644 index 0000000..ea7a70f --- /dev/null +++ b/botweb/settings.py @@ -0,0 +1,112 @@ +# Django settings for botweb project. + +import os.path + +DEBUG = True +TEMPLATE_DEBUG = DEBUG + +ADMINS = ( + ('Mike Bloy', 'mike@bloy.org'), +) + +MANAGERS = ADMINS + +DB_LOCATION = os.path.normpath( + os.path.join(os.path.abspath(os.path.dirname(__file__)), + '..', 'dr.botzo.data')) + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. + 'NAME': DB_LOCATION, # 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 + +# 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. 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 = '' + +# 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 = 'x(mks19qjlqj=l)werudifqhhr_3b6v($kwihs+=p^ldqcc4$q' + +# 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', +) + +ROOT_URLCONF = 'botweb.urls' + +TEMPLATE_BASE_LOC = os.path.normpath( + os.path.join(os.path.abspath(os.path.dirname(__file__)), + 'templates')) + +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. + TEMPLATE_BASE_LOC, +) + +INSTALLED_APPS = ( + #'django.contrib.auth', + #'django.contrib.contenttypes', + #'django.contrib.sessions', + #'django.contrib.sites', + #'django.contrib.messages', + # Uncomment the next line to enable the admin: + #'django.contrib.admin', + # Uncomment the next line to enable admin documentation: + # 'django.contrib.admindocs', + 'karma', +) + +if __name__ == "__main__": + print DB_LOCATION + print TEMPLATE_DIRS diff --git a/botweb/templates/karma/givers.html b/botweb/templates/karma/givers.html new file mode 100755 index 0000000..3854f59 --- /dev/null +++ b/botweb/templates/karma/givers.html @@ -0,0 +1,7 @@ + diff --git a/botweb/templates/karma/index.html b/botweb/templates/karma/index.html new file mode 100755 index 0000000..ad47470 --- /dev/null +++ b/botweb/templates/karma/index.html @@ -0,0 +1,4 @@ + diff --git a/botweb/templates/karma/stats.html b/botweb/templates/karma/stats.html new file mode 100755 index 0000000..4507414 --- /dev/null +++ b/botweb/templates/karma/stats.html @@ -0,0 +1,7 @@ +
    + {% for value in values %} +
  1. + {{ value.key }} ({{ value.value }}) +
  2. + {% endfor %} +
diff --git a/botweb/urls.py b/botweb/urls.py new file mode 100644 index 0000000..066d59e --- /dev/null +++ b/botweb/urls.py @@ -0,0 +1,18 @@ +from django.conf.urls.defaults import * + +# Uncomment the next two lines to enable the admin: +# from django.contrib import admin +# admin.autodiscover() + +urlpatterns = patterns( + '', + (r'^karma/', include('karma.urls')), + # Example: + # (r'^botweb/', include('botweb.foo.urls')), + + # Uncomment the admin/doc line below to enable admin documentation: + # (r'^admin/doc/', include('django.contrib.admindocs.urls')), + + # Uncomment the next line to enable the admin: + # (r'^admin/', include(admin.site.urls)), +)