API fuer den store

This commit is contained in:
TKroenert 2011-03-05 04:55:16 +01:00
parent dddb18cd87
commit 886dc7eb45
6 changed files with 108 additions and 0 deletions

0
k4ever/api/__init__.py Normal file
View File

3
k4ever/api/models.py Normal file
View File

@ -0,0 +1,3 @@
from django.db import models
# Create your models here.

23
k4ever/api/tests.py Normal file
View 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
"""}

9
k4ever/api/urls.py Normal file
View File

@ -0,0 +1,9 @@
from django.conf.urls.defaults import *
#/api/
urlpatterns = patterns('',
(r'^store/$', 'api.views.showItems'),
(r'^store/show/(\d+)/$', 'api.views.showItem'),
(r'^store/buy/(\d+)/(|with/deposit|only/deposit)/?$', 'api.views.buyItem'),
(r'^store/history/?$', 'api.views.history'),
)

72
k4ever/api/views.py Normal file
View File

@ -0,0 +1,72 @@
# -*- coding: utf-8 -*-
from django.contrib.auth.decorators import login_required
from django.http import HttpResponse
import datetime
from buyable.models import Buyable, Purchase, Order
from django.core import serializers
@login_required
def showItems(request):
# FIXME: Implement pagination here
items = Buyable.objects.all()
#return json-container
container = serializers.serialize('json', items)
return HttpResponse(container,'application/javascript')
@login_required
def showItem(request, itemid):
try:
item = Buyable.objects.get(id=itemid)
except Buyable.DoesNotExist:
# baww, kein item mit der id :( (oder mutax trollt rum)
return HttpResponse(status=400)
#return json-container
container = serializers.serialize('json', item)
return HttpResponse(container,'application/javascript')
@login_required
def buyItem(request, itemid, buymode=""):
user = request.user
try:
item = Buyable.objects.get(id=itemid)
except Buyable.DoesNotExist:
# oh no! kein item mit der id :( mutax trollt rum)
return HttpResponseRedirect("/store/buy/")
""" tristate variable buymode:
"" only item
"with/deposit" item and deposit
"only/deposit" only deposit
"""
order = Order()
order.create(user)
order.save() # for the id!
if buymode == "" or buymode == "with/deposit":
p = Purchase.create(order, item, isDeposit=False)
p.order = order
p.save()
# TANNEK! if buymode == "with/dopsit" or buymode == "only/deposit":
if buymode == "with/deposit" or buymode == "only/deposit":
p = Purchase.create(order, item, isDeposit=True)
p.order = order
p.save()
order.updatePrice(commit=True)
order.save()
#return json-container
#container = serializers.serialize('json', items)
#return HttpResponse(container,'application/javascript')
return HttpResponse(status=200)
#return HttpResponseRedirect("/store/bought/%s/" % (order.id))
@login_required
def history(request):
hist = Order.objects.filter(user=request.user.id).order_by("-dateTime")
#return json-container
container = serializers.serialize('json', hist)
return HttpResponse(container,'application/javascript')

View File

@ -13,6 +13,7 @@ urlpatterns = patterns('',
# (r'^admin/doc/', include('django.contrib.admindocs.urls')), # (r'^admin/doc/', include('django.contrib.admindocs.urls')),
# user stuff? go to main # user stuff? go to main
(r'^$', 'main.views.startpage'), (r'^$', 'main.views.startpage'),
(r'^api/', include('api.urls')),
(r'^user/', include('main.urls')), (r'^user/', include('main.urls')),
(r'^transaction/', include('transaction.urls')), (r'^transaction/', include('transaction.urls')),
(r'^store/', include('buyable.urls')), (r'^store/', include('buyable.urls')),