diff --git a/k4ever/__init__.py b/k4ever/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/k4ever/buyable/__init__.py b/k4ever/buyable/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/k4ever/buyable/admin.py b/k4ever/buyable/admin.py new file mode 100644 index 0000000..cf1af75 --- /dev/null +++ b/k4ever/buyable/admin.py @@ -0,0 +1,7 @@ +from models import Buyable, BuyableType, Purchase +from django.contrib import admin + +admin.site.register(Buyable) +admin.site.register(BuyableType) +admin.site.register(Purchase) + diff --git a/k4ever/buyable/models.py b/k4ever/buyable/models.py new file mode 100644 index 0000000..6f2f05e --- /dev/null +++ b/k4ever/buyable/models.py @@ -0,0 +1,31 @@ +from django.db import models +from django.contrib.auth.models import User + +# Create your models here. +class BuyableType(models.Model): + name = models.CharField(max_length=100) + + def __unicode__(self): + return self.name + + +class Buyable(models.Model): + name = models.CharField(max_length=100) + price = models.FloatField() + image = models.ImageField(upload_to='img/buyable/') + deposit = models.FloatField() + description = models.TextField() + buyableType = models.ManyToManyField(BuyableType) + + def __unicode__(self): + return "%s (%s EUR/%s Pfand)" % (self.name, self.price, self.deposit) + +class Purchase(models.Model): + user = models.ForeignKey(User) + dateTime = models.DateTimeField() + price = models.FloatField() + isDeposit = models.BooleanField() + buyable = models.ForeignKey(Buyable) + + def __unicode__(self): + return "%s%s, %s by %s" % (self.buyable.name, self.isDeposit and " (deposit)" or "", self.price, self.user) \ No newline at end of file diff --git a/k4ever/buyable/tests.py b/k4ever/buyable/tests.py new file mode 100644 index 0000000..2247054 --- /dev/null +++ b/k4ever/buyable/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/k4ever/buyable/views.py b/k4ever/buyable/views.py new file mode 100644 index 0000000..60f00ef --- /dev/null +++ b/k4ever/buyable/views.py @@ -0,0 +1 @@ +# Create your views here. diff --git a/k4ever/k4ever.db b/k4ever/k4ever.db new file mode 100644 index 0000000..052897f Binary files /dev/null and b/k4ever/k4ever.db differ diff --git a/k4ever/main/__init__.py b/k4ever/main/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/k4ever/main/models.py b/k4ever/main/models.py new file mode 100644 index 0000000..83ccfef --- /dev/null +++ b/k4ever/main/models.py @@ -0,0 +1,6 @@ +from django.db import models +from django.contrib.auth.models import User + +class UserProfile(models.Model): + user = models.ForeignKey(User, unique=True) + balance = models.FloatField() diff --git a/k4ever/main/tests.py b/k4ever/main/tests.py new file mode 100644 index 0000000..2247054 --- /dev/null +++ b/k4ever/main/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/k4ever/main/views.py b/k4ever/main/views.py new file mode 100644 index 0000000..60f00ef --- /dev/null +++ b/k4ever/main/views.py @@ -0,0 +1 @@ +# Create your views here. diff --git a/k4ever/manage.py b/k4ever/manage.py new file mode 100755 index 0000000..5e78ea9 --- /dev/null +++ b/k4ever/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/k4ever/media/css/style.css b/k4ever/media/css/style.css new file mode 100644 index 0000000..e69de29 diff --git a/k4ever/media/img/buyable/.dummy b/k4ever/media/img/buyable/.dummy new file mode 100644 index 0000000..e69de29 diff --git a/k4ever/media/js/.dummy b/k4ever/media/js/.dummy new file mode 100644 index 0000000..e69de29 diff --git a/k4ever/settings.py b/k4ever/settings.py new file mode 100644 index 0000000..065b14f --- /dev/null +++ b/k4ever/settings.py @@ -0,0 +1,101 @@ +# Django settings for k4ever project. + +DEBUG = True +TEMPLATE_DEBUG = DEBUG + +ADMINS = ( + # ('Your Name', 'your_email@domain.com'), +) + +MANAGERS = ADMINS + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. + 'NAME': 'k4ever.db', # 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 = 'Germany/Berlin' + +# Language code for this installation. All choices can be found here: +# http://www.i18nguy.com/unicode/language-identifiers.html +LANGUAGE_CODE = 'de-de' + +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 = '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 = '/media/admin/' + +# Make this unique, and don't share it with anybody. +SECRET_KEY = 'l(f*a$l)_n_n_5#lh@rvhv(na^!lj1u#bow=c!*90(1w$5%b^j' + +# User Profile +AUTH_PROFILE_MODULE = 'main.models.UserProfile' + +# 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.app_directories.load_template_source', +# '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 = 'k4ever.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.messages', + 'buyable', + 'transaction', + 'main', + # Uncomment the next line to enable the admin: + 'django.contrib.admin', +) diff --git a/k4ever/transaction/__init__.py b/k4ever/transaction/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/k4ever/transaction/admin.py b/k4ever/transaction/admin.py new file mode 100644 index 0000000..cb836ff --- /dev/null +++ b/k4ever/transaction/admin.py @@ -0,0 +1,5 @@ +from models import Transaction, TransactionType +from django.contrib import admin + +admin.site.register(Transaction) +admin.site.register(TransactionType) diff --git a/k4ever/transaction/models.py b/k4ever/transaction/models.py new file mode 100644 index 0000000..23c5874 --- /dev/null +++ b/k4ever/transaction/models.py @@ -0,0 +1,23 @@ +from django.db import models +from django.contrib.auth.models import User + + +class TransactionType(models.Model): + name = models.CharField(max_length=100) + needsCheck = models.BooleanField(default=True) + + def __unicode__(self): + return self.name + (self.needsCheck and " (needs Check)" or "") + +class Transaction(models.Model): + user = models.ForeignKey(User, unique=True) + transactionType = models.ForeignKey(TransactionType) + dateTime = models.DateTimeField() + amount = models.FloatField() + checked = models.BooleanField(default=False) + + def __unicode__(self): + return "%s for user %s (%s), %schecked" % (self.amount, self.user, self.transactionType, (self.checked and "" or "not ")) + + + diff --git a/k4ever/transaction/tests.py b/k4ever/transaction/tests.py new file mode 100644 index 0000000..2247054 --- /dev/null +++ b/k4ever/transaction/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/k4ever/transaction/views.py b/k4ever/transaction/views.py new file mode 100644 index 0000000..60f00ef --- /dev/null +++ b/k4ever/transaction/views.py @@ -0,0 +1 @@ +# Create your views here. diff --git a/k4ever/urls.py b/k4ever/urls.py new file mode 100644 index 0000000..284af01 --- /dev/null +++ b/k4ever/urls.py @@ -0,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'^k4ever/', include('k4ever.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/', include(admin.site.urls)), +)