Merge remote branch 'origin/mjb.web'
This commit is contained in:
		
						commit
						c9046ff587
					
				
							
								
								
									
										0
									
								
								botweb/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								botweb/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								botweb/karma/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								botweb/karma/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										47
									
								
								botweb/karma/models.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								botweb/karma/models.py
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
			
		||||
							
								
								
									
										23
									
								
								botweb/karma/tests.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								botweb/karma/tests.py
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
			
		||||
"""}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										7
									
								
								botweb/karma/urls.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										7
									
								
								botweb/karma/urls.py
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,7 @@
 | 
			
		||||
from django.conf.urls.defaults import *
 | 
			
		||||
 | 
			
		||||
urlpatterns = patterns('karma.views',
 | 
			
		||||
    (r'^$', 'index'),
 | 
			
		||||
    (r'^givers/$', 'givers'),
 | 
			
		||||
    (r'^stats/$', 'stats'),
 | 
			
		||||
)
 | 
			
		||||
							
								
								
									
										16
									
								
								botweb/karma/views.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								botweb/karma/views.py
									
									
									
									
									
										Normal file
									
								
							@ -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})
 | 
			
		||||
							
								
								
									
										11
									
								
								botweb/manage.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								botweb/manage.py
									
									
									
									
									
										Normal file
									
								
							@ -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)
 | 
			
		||||
							
								
								
									
										112
									
								
								botweb/settings.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								botweb/settings.py
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
			
		||||
							
								
								
									
										7
									
								
								botweb/templates/karma/givers.html
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										7
									
								
								botweb/templates/karma/givers.html
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,7 @@
 | 
			
		||||
<ul>
 | 
			
		||||
  {% for user in users %}
 | 
			
		||||
  <li>
 | 
			
		||||
  {{ user.who }} - {{ user.pos }} positive, {{ user.neg }} negative, {{ user.total }} total
 | 
			
		||||
  </li>
 | 
			
		||||
  {% endfor %}
 | 
			
		||||
</ul>
 | 
			
		||||
							
								
								
									
										4
									
								
								botweb/templates/karma/index.html
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										4
									
								
								botweb/templates/karma/index.html
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,4 @@
 | 
			
		||||
<ul>
 | 
			
		||||
  <li><a href="/karma/stats/">Karma Stats</a> ({{ value_count }} karma entries)</li>
 | 
			
		||||
  <li><a href="/karma/givers/">Karma Giver Stats</a> ({{ user_count }} karma givers)</li>
 | 
			
		||||
</ul>
 | 
			
		||||
							
								
								
									
										7
									
								
								botweb/templates/karma/stats.html
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										7
									
								
								botweb/templates/karma/stats.html
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,7 @@
 | 
			
		||||
<ol>
 | 
			
		||||
  {% for value in values %}
 | 
			
		||||
  <li>
 | 
			
		||||
  {{ value.key }} ({{ value.value }})
 | 
			
		||||
  </li>
 | 
			
		||||
  {% endfor %}
 | 
			
		||||
</ol>
 | 
			
		||||
							
								
								
									
										18
									
								
								botweb/urls.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								botweb/urls.py
									
									
									
									
									
										Normal file
									
								
							@ -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)),
 | 
			
		||||
)
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user