Author: poeml Date: Tue Dec 15 01:01:56 2009 New Revision: 53 URL: http://svn.mirrorbrain.org/viewvc/mod_stats?rev=53&view=rev Log: add a little Django app with a database scheme that tools/dlcount.py can save data to Added: trunk/downloadstats/ (with props) trunk/downloadstats/__init__.py trunk/downloadstats/manage.py (with props) trunk/downloadstats/settings.py trunk/downloadstats/stats/ trunk/downloadstats/stats/__init__.py trunk/downloadstats/stats/admin.py trunk/downloadstats/stats/models.py trunk/downloadstats/stats/views.py trunk/downloadstats/urls.py Added: trunk/downloadstats/__init__.py URL: http://svn.mirrorbrain.org/viewvc/mod_stats/trunk/downloadstats/__init__.py?rev=53&view=auto ============================================================================== (empty) Added: trunk/downloadstats/manage.py URL: http://svn.mirrorbrain.org/viewvc/mod_stats/trunk/downloadstats/manage.py?rev=53&view=auto ============================================================================== --- trunk/downloadstats/manage.py (added) +++ trunk/downloadstats/manage.py Tue Dec 15 01:01:56 2009 @@ -1,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) Added: trunk/downloadstats/settings.py URL: http://svn.mirrorbrain.org/viewvc/mod_stats/trunk/downloadstats/settings.py?rev=53&view=auto ============================================================================== --- trunk/downloadstats/settings.py (added) +++ trunk/downloadstats/settings.py Tue Dec 15 01:01:56 2009 @@ -1,0 +1,81 @@ +# Django settings for downloadstats project. + +DEBUG = True +TEMPLATE_DEBUG = DEBUG + +ADMINS = ( + # ('Your Name', 'your_email_at_domain.com'), +) + +MANAGERS = ADMINS + +DATABASE_ENGINE = 'sqlite3' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. +DATABASE_NAME = 'sqlite3.db' # Or path to database file if using sqlite3. +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. 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. +# 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 + +# 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 = 'fq!(-m$39vb(t_n=s!c-z1(m%^xf338kaj)02f&(ha&l950bx&' + +# 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', +) + +ROOT_URLCONF = 'downloadstats.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. +) + +INSTALLED_APPS = ( + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.sites', + 'django.contrib.admin', + 'downloadstats.stats', +) Added: trunk/downloadstats/stats/__init__.py URL: http://svn.mirrorbrain.org/viewvc/mod_stats/trunk/downloadstats/stats/__init__.py?rev=53&view=auto ============================================================================== (empty) Added: trunk/downloadstats/stats/admin.py URL: http://svn.mirrorbrain.org/viewvc/mod_stats/trunk/downloadstats/stats/admin.py?rev=53&view=auto ============================================================================== --- trunk/downloadstats/stats/admin.py (added) +++ trunk/downloadstats/stats/admin.py Tue Dec 15 01:01:56 2009 @@ -1,0 +1,15 @@ +from django.contrib import admin + +from downloadstats.stats.models import Counter + + +class CounterAdmin(admin.ModelAdmin): + + list_display = ('product', 'osname', 'version', 'lang', 'country', 'date', 'count') + ordering = ('product', 'osname', 'version', 'lang', 'country') + + search_fields = ('product', 'osname') + list_filter = ('date', 'product', 'osname', 'version', 'lang', 'country') + +admin.site.register(Counter, CounterAdmin) + Added: trunk/downloadstats/stats/models.py URL: http://svn.mirrorbrain.org/viewvc/mod_stats/trunk/downloadstats/stats/models.py?rev=53&view=auto ============================================================================== --- trunk/downloadstats/stats/models.py (added) +++ trunk/downloadstats/stats/models.py Tue Dec 15 01:01:56 2009 @@ -1,0 +1,28 @@ +from django.db import models + + +class Counter(models.Model): + + # I'm undecided whether to settle for a "normal" date field, or optimize as + # described in the proposal. + #year = models.PositiveSmallIntegerField() + #day = models.PositiveSmallIntegerField() + date = models.DateField() + + product = models.CharField(max_length=512) + + # all these should probably called attr1, attr2, attr3, ... + osname = models.CharField(max_length=512) + version = models.CharField(max_length=32) + lang = models.CharField(max_length=32) + country = models.CharField(max_length=2) + + count = models.IntegerField(default=1) + + def __unicode__(self): + return u'%s / %s / %s / %s / %s' % (self.product, + self.osname, + self.version, + self.lang, + self.country) + Added: trunk/downloadstats/stats/views.py URL: http://svn.mirrorbrain.org/viewvc/mod_stats/trunk/downloadstats/stats/views.py?rev=53&view=auto ============================================================================== --- trunk/downloadstats/stats/views.py (added) +++ trunk/downloadstats/stats/views.py Tue Dec 15 01:01:56 2009 @@ -1,0 +1,1 @@ +# Create your views here. Added: trunk/downloadstats/urls.py URL: http://svn.mirrorbrain.org/viewvc/mod_stats/trunk/downloadstats/urls.py?rev=53&view=auto ============================================================================== --- trunk/downloadstats/urls.py (added) +++ trunk/downloadstats/urls.py Tue Dec 15 01:01:56 2009 @@ -1,0 +1,17 @@ +from django.conf.urls.defaults import * + +# Uncomment the next two lines to enable the admin: +from django.contrib import admin +admin.autodiscover() + +urlpatterns = patterns('', + # Example: + # (r'^downloadstats/', include('downloadstats.foo.urls')), + + # Uncomment the admin/doc line below and add 'django.contrib.admindocs' + # to INSTALLED_APPS to enable admin documentation: + # (r'^admin/doc/', include('django.contrib.admindocs.urls')), + + # Uncomment the next line to enable the admin: + (r'^admin/(.*)', admin.site.root), +) _______________________________________________ mirrorbrain-commits mailing list Archive: http://mirrorbrain.org/archive/mirrorbrain-commits/ Note: To remove yourself from this list, send a mail with the content unsubscribe to the address mirrorbrain-commits-request_at_mirrorbrain.orgReceived on Tue Dec 15 2009 - 00:01:57 GMT
This archive was generated by hypermail 2.2.0 : Tue Dec 15 2009 - 15:20:04 GMT