diff --git a/warpshop_server/warpshop_server/artikel/admin.py b/warpshop_server/warpshop_server/artikel/admin.py index 8ce9b720526916ed1148c234f886aa1862bdca19..87a851a2cd0fcec32d509f14cd44ebe3a6cb35da 100644 --- a/warpshop_server/warpshop_server/artikel/admin.py +++ b/warpshop_server/warpshop_server/artikel/admin.py @@ -1,6 +1,7 @@ from __future__ import absolute_import from django.contrib import admin + from .models import Artikel admin.site.register(Artikel) diff --git a/warpshop_server/warpshop_server/artikel/migrations/0001_initial.py b/warpshop_server/warpshop_server/artikel/migrations/0001_initial.py new file mode 100644 index 0000000000000000000000000000000000000000..8eeddb76d14a9e62c1165e1d21bf17968b301289 --- /dev/null +++ b/warpshop_server/warpshop_server/artikel/migrations/0001_initial.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Artikel', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('aktiv', models.BooleanField(default=True)), + ('barcode', models.CharField(max_length=200)), + ('name', models.CharField(max_length=200)), + ('ek', models.DecimalField(max_digits=8, decimal_places=2)), + ('vk', models.DecimalField(max_digits=8, decimal_places=2)), + ('bestand', models.IntegerField(default=0)), + ], + options={ + 'db_table': b'artikel', + 'verbose_name': b'Artikel', + 'verbose_name_plural': b'Artikel', + }, + bases=(models.Model,), + ), + ] diff --git a/warpshop_server/warpshop_server/artikel/models.py b/warpshop_server/warpshop_server/artikel/models.py index 25b4629534970b14b3800230571883ecfaa5b1d7..119cea5ae3f907ec38a65584080aeeba062990af 100644 --- a/warpshop_server/warpshop_server/artikel/models.py +++ b/warpshop_server/warpshop_server/artikel/models.py @@ -1,7 +1,9 @@ +from __future__ import absolute_import from django.db import models + class Artikel(models.Model): - aktiv = models.BooleanField() + aktiv = models.BooleanField(default=True) barcode = models.CharField(max_length=200) name = models.CharField(max_length=200) ek = models.DecimalField(max_digits=8, decimal_places=2) @@ -10,3 +12,11 @@ class Artikel(models.Model): def __str__(self): return '%s [%s]' % (self.name, self.barcode) + + def __unicode__(self): + return u'%s [%s]' % (self.name, self.barcode) + + class Meta: + db_table = "artikel" + verbose_name = "Artikel" + verbose_name_plural = "Artikel" diff --git a/warpshop_server/warpshop_server/artikel/templates/artikel/detail.html b/warpshop_server/warpshop_server/artikel/templates/artikel/detail.html new file mode 100644 index 0000000000000000000000000000000000000000..1774b59d3f6e5803793e476384444e2d99a6ba33 --- /dev/null +++ b/warpshop_server/warpshop_server/artikel/templates/artikel/detail.html @@ -0,0 +1 @@ +{{ artikel }} diff --git a/warpshop_server/warpshop_server/artikel/templates/artikel/index.html b/warpshop_server/warpshop_server/artikel/templates/artikel/index.html new file mode 100644 index 0000000000000000000000000000000000000000..a6827968365b9cb7608ca5af43a5b2ce6975e623 --- /dev/null +++ b/warpshop_server/warpshop_server/artikel/templates/artikel/index.html @@ -0,0 +1,9 @@ +{% if artikel_list %} + <ul> + {% for artikel in artikel_list %} + <li><a href="{% url 'artikel:detail' artikel.id %}">{{ artikel.name }} [{{ artikel.barcode }}]</a></li> + {% endfor %} + </ul> +{% else %} + <p>Keine Artikel vorhanden.</p> +{% endif %} diff --git a/warpshop_server/warpshop_server/artikel/urls.py b/warpshop_server/warpshop_server/artikel/urls.py new file mode 100644 index 0000000000000000000000000000000000000000..d64812ed096231f2273794f9b8eeb505ff83882c --- /dev/null +++ b/warpshop_server/warpshop_server/artikel/urls.py @@ -0,0 +1,12 @@ +from __future__ import absolute_import +from django.conf.urls import patterns, url + +from . import views + + +urlpatterns = patterns('', + url(r'^$', views.IndexView.as_view(), name='index'), + url(r'^(?P<pk>\d+)/$', views.DetailView.as_view(), name='detail'), + url(r'^(?P<pk>\d+)/results/$', views.ResultsView.as_view(), name='results'), + url(r'^barcode/(?P<barcode>\w+)/$', views.barcode, name='barcode'), +) diff --git a/warpshop_server/warpshop_server/artikel/views.py b/warpshop_server/warpshop_server/artikel/views.py index 91ea44a218fbd2f408430959283f0419c921093e..0c1014502d3fdea2d5bf610b687d6b867bba3fcf 100644 --- a/warpshop_server/warpshop_server/artikel/views.py +++ b/warpshop_server/warpshop_server/artikel/views.py @@ -1,3 +1,33 @@ -from django.shortcuts import render +from django.shortcuts import get_object_or_404, render +from django.http import HttpResponseRedirect, HttpResponse +from django.core.urlresolvers import reverse +from django.views import generic -# Create your views here. +from . models import Artikel + + +class IndexView(generic.ListView): + template_name = 'artikel/index.html' + context_object_name = 'artikel_list' + + def get_queryset(self): + return Artikel.objects.order_by('name') + + +class DetailView(generic.DetailView): + model = Artikel + template_name = 'artikel/detail.html' + + +class ResultsView(generic.DetailView): + model = Artikel + template_name = 'artikel/results.html' + + +def barcode(request, barcode): + try: + a = Artikel.objects.get(barcode=barcode) + except Artikel.DoesNotExist: + a = Artikel(aktiv=False, barcode=barcode, name=barcode, ek=0.0, vk=0.0) + a.save() + return HttpResponseRedirect(reverse('artikel:detail', args=(a.id,))) diff --git a/warpshop_server/warpshop_server/benutzer/migrations/0001_initial.py b/warpshop_server/warpshop_server/benutzer/migrations/0001_initial.py new file mode 100644 index 0000000000000000000000000000000000000000..425f8f70c1ebc3eebd1522eb6483c42e356d5f1d --- /dev/null +++ b/warpshop_server/warpshop_server/benutzer/migrations/0001_initial.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Benutzer', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('aktiv', models.BooleanField(default=True)), + ('barcode', models.CharField(max_length=200)), + ('name', models.CharField(max_length=200)), + ('saldo', models.DecimalField(max_digits=8, decimal_places=2)), + ], + options={ + 'db_table': b'benutzer', + 'verbose_name': b'Benutzer', + 'verbose_name_plural': b'Benutzer', + }, + bases=(models.Model,), + ), + ] diff --git a/warpshop_server/warpshop_server/benutzer/models.py b/warpshop_server/warpshop_server/benutzer/models.py index 2987fa7d6ea9a7fd3054af685ffa4b76068dd225..5dd54dd74619d2be3b21f90ba89197de8e5c3fd0 100644 --- a/warpshop_server/warpshop_server/benutzer/models.py +++ b/warpshop_server/warpshop_server/benutzer/models.py @@ -1,10 +1,17 @@ +from __future__ import absolute_import from django.db import models + class Benutzer(models.Model): - aktiv = models.BooleanField() + aktiv = models.BooleanField(default=True) barcode = models.CharField(max_length=200) name = models.CharField(max_length=200) saldo = models.DecimalField(max_digits=8, decimal_places=2) def __str__(self): return '%s [%s]' % (self.name, self.barcode) + + class Meta: + db_table = "benutzer" + verbose_name = "Benutzer" + verbose_name_plural = "Benutzer" diff --git a/warpshop_server/warpshop_server/benutzer/urls.py b/warpshop_server/warpshop_server/benutzer/urls.py new file mode 100644 index 0000000000000000000000000000000000000000..72e50247b8172f59424447b35765d4a13de549fa --- /dev/null +++ b/warpshop_server/warpshop_server/benutzer/urls.py @@ -0,0 +1,9 @@ +from __future__ import absolute_import +from django.conf.urls import url + +from . import views + + +urlpatterns = [ + url(r'^$', views.index, name='index'), +] diff --git a/warpshop_server/warpshop_server/benutzer/views.py b/warpshop_server/warpshop_server/benutzer/views.py index 91ea44a218fbd2f408430959283f0419c921093e..6bed9f35d6c21b1c760fea634acd7c7624b08ac3 100644 --- a/warpshop_server/warpshop_server/benutzer/views.py +++ b/warpshop_server/warpshop_server/benutzer/views.py @@ -1,3 +1,6 @@ from django.shortcuts import render +from django.http import HttpResponse -# Create your views here. + +def index(request): + return HttpResponse("Benutzer index.") diff --git a/warpshop_server/warpshop_server/transaktion/__init__.py b/warpshop_server/warpshop_server/transaktion/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/warpshop_server/warpshop_server/transaktion/admin.py b/warpshop_server/warpshop_server/transaktion/admin.py new file mode 100644 index 0000000000000000000000000000000000000000..8109771b703f1c8ce804a372fbebe0d29f9146ba --- /dev/null +++ b/warpshop_server/warpshop_server/transaktion/admin.py @@ -0,0 +1,20 @@ +from __future__ import absolute_import +from django.contrib import admin + +from .models import Transaktion, Position + + +class PositionInline(admin.StackedInline): + model = Position + extra = 3 + + +class TransaktionAdmin(admin.ModelAdmin): +# fieldsets = [ +# (None, {'fields': ['question_text']}), +# ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}), +# ] + inlines = [PositionInline] + +admin.site.register(Transaktion, TransaktionAdmin) +#admin.site.register(Position) diff --git a/warpshop_server/warpshop_server/transaktion/migrations/0001_initial.py b/warpshop_server/warpshop_server/transaktion/migrations/0001_initial.py new file mode 100644 index 0000000000000000000000000000000000000000..d4fb860ddce7fbdeb4259d1e005f3add2128dc43 --- /dev/null +++ b/warpshop_server/warpshop_server/transaktion/migrations/0001_initial.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('benutzer', '0001_initial'), + ('artikel', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='Position', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('anzahl', models.IntegerField(default=0)), + ('ek', models.DecimalField(max_digits=8, decimal_places=2)), + ('vk', models.DecimalField(max_digits=8, decimal_places=2)), + ('artikel', models.ForeignKey(to='artikel.Artikel')), + ], + options={ + 'db_table': b'position', + 'verbose_name': b'Position', + 'verbose_name_plural': b'Positionen', + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='Transaktion', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('timestamp', models.DateTimeField(auto_now_add=True)), + ('benutzer', models.ForeignKey(to='benutzer.Benutzer')), + ], + options={ + 'db_table': b'transaktion', + 'verbose_name': b'Transaktion', + 'verbose_name_plural': b'Transaktionen', + }, + bases=(models.Model,), + ), + migrations.AddField( + model_name='position', + name='transaktion', + field=models.ForeignKey(to='transaktion.Transaktion'), + preserve_default=True, + ), + ] diff --git a/warpshop_server/warpshop_server/transaktion/migrations/__init__.py b/warpshop_server/warpshop_server/transaktion/migrations/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/warpshop_server/warpshop_server/transaktion/models.py b/warpshop_server/warpshop_server/transaktion/models.py new file mode 100644 index 0000000000000000000000000000000000000000..0f59e27ef581488f4d101da54588a6cb69aecac7 --- /dev/null +++ b/warpshop_server/warpshop_server/transaktion/models.py @@ -0,0 +1,34 @@ +from __future__ import absolute_import +from django.db import models + +from artikel.models import Artikel +from benutzer.models import Benutzer + + +class Transaktion(models.Model): + timestamp = models.DateTimeField(auto_now_add=True) + benutzer = models.ForeignKey(Benutzer) + + def __str__(self): + return '%s [%s] [%s]' % (self.id, self.timestamp, self.benutzer) + + class Meta: + db_table = "transaktion" + verbose_name = "Transaktion" + verbose_name_plural = "Transaktionen" + + +class Position(models.Model): + transaktion = models.ForeignKey(Transaktion) + artikel = models.ForeignKey(Artikel) + anzahl = models.IntegerField(default=0) + ek = models.DecimalField(max_digits=8, decimal_places=2) + vk = models.DecimalField(max_digits=8, decimal_places=2) + + def __str__(self): + return '%d-%08d: %s * %s' % (self.transaktion.id, self.id, self.anzahl, self.artikel) + + class Meta: + db_table = "position" + verbose_name = "Position" + verbose_name_plural = "Positionen" diff --git a/warpshop_server/warpshop_server/transaktion/tests.py b/warpshop_server/warpshop_server/transaktion/tests.py new file mode 100644 index 0000000000000000000000000000000000000000..7ce503c2dd97ba78597f6ff6e4393132753573f6 --- /dev/null +++ b/warpshop_server/warpshop_server/transaktion/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/warpshop_server/warpshop_server/transaktion/urls.py b/warpshop_server/warpshop_server/transaktion/urls.py new file mode 100644 index 0000000000000000000000000000000000000000..72e50247b8172f59424447b35765d4a13de549fa --- /dev/null +++ b/warpshop_server/warpshop_server/transaktion/urls.py @@ -0,0 +1,9 @@ +from __future__ import absolute_import +from django.conf.urls import url + +from . import views + + +urlpatterns = [ + url(r'^$', views.index, name='index'), +] diff --git a/warpshop_server/warpshop_server/transaktion/views.py b/warpshop_server/warpshop_server/transaktion/views.py new file mode 100644 index 0000000000000000000000000000000000000000..6d332804332c6a9532a31e42cd12744d1e25124b --- /dev/null +++ b/warpshop_server/warpshop_server/transaktion/views.py @@ -0,0 +1,6 @@ +from django.shortcuts import render +from django.http import HttpResponse + + +def index(request): + return HttpResponse("Transaktion index.") diff --git a/warpshop_server/warpshop_server/warpshop_server/settings/base.py b/warpshop_server/warpshop_server/warpshop_server/settings/base.py index 27177d78462e4cce68792f1025af7b506a29c52f..d24fdcc4233d1372b5f5b48bf6587e42c0c40ab0 100644 --- a/warpshop_server/warpshop_server/warpshop_server/settings/base.py +++ b/warpshop_server/warpshop_server/warpshop_server/settings/base.py @@ -194,6 +194,9 @@ DJANGO_APPS = ( # Apps specific for this project go here. LOCAL_APPS = ( + 'artikel', + 'benutzer', + 'transaktion', ) # See: https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps diff --git a/warpshop_server/warpshop_server/warpshop_server/urls.py b/warpshop_server/warpshop_server/warpshop_server/urls.py index 4373c19aeecfc2a07553c1f9932e528935f4148a..d88758cc5fcdebcdb01e0c0d08a3c7ba4974dcfd 100644 --- a/warpshop_server/warpshop_server/warpshop_server/urls.py +++ b/warpshop_server/warpshop_server/warpshop_server/urls.py @@ -19,6 +19,10 @@ urlpatterns = patterns('', # Uncomment the next line to enable the admin: url(r'^admin/', include(admin.site.urls)), + + url(r'^artikel/', include('artikel.urls', namespace='artikel')), + url(r'^benutzer/', include('benutzer.urls', namespace='benutzer')), + url(r'^transaktion/', include('transaktion.urls', namespace='transaktion')), ) # Uncomment the next line to serve media files in dev.