diff --git a/web/manage.py b/web/manage.py index 19941e1904e6d5c9c1bf658e65a779df31d34786..8529002c39ae44e2ba7701ed7b5feb36fa933671 100644 --- a/web/manage.py +++ b/web/manage.py @@ -3,7 +3,7 @@ import os import sys if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "warpauth.settings") + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "warpzone.settings") from django.core.management import execute_from_command_line diff --git a/web/warpauthWeb/templates/base.html b/web/templates/base.html similarity index 100% rename from web/warpauthWeb/templates/base.html rename to web/templates/base.html diff --git a/web/warpauthWeb/templates/licenses/bootstrap.txt b/web/templates/licenses/bootstrap.txt similarity index 100% rename from web/warpauthWeb/templates/licenses/bootstrap.txt rename to web/templates/licenses/bootstrap.txt diff --git a/web/warpauthWeb/templates/licenses/chart_js.txt b/web/templates/licenses/chart_js.txt similarity index 100% rename from web/warpauthWeb/templates/licenses/chart_js.txt rename to web/templates/licenses/chart_js.txt diff --git a/web/warpauthWeb/templates/licenses/django.txt b/web/templates/licenses/django.txt similarity index 100% rename from web/warpauthWeb/templates/licenses/django.txt rename to web/templates/licenses/django.txt diff --git a/web/warpauthWeb/templates/licenses/gplv2.txt b/web/templates/licenses/gplv2.txt similarity index 100% rename from web/warpauthWeb/templates/licenses/gplv2.txt rename to web/templates/licenses/gplv2.txt diff --git a/web/media/chart_js/.gitignore b/web/templates/media/chart_js/.gitignore similarity index 100% rename from web/media/chart_js/.gitignore rename to web/templates/media/chart_js/.gitignore diff --git a/web/media/chart_js/.travis.yml b/web/templates/media/chart_js/.travis.yml similarity index 100% rename from web/media/chart_js/.travis.yml rename to web/templates/media/chart_js/.travis.yml diff --git a/web/media/chart_js/LICENSE b/web/templates/media/chart_js/LICENSE similarity index 100% rename from web/media/chart_js/LICENSE rename to web/templates/media/chart_js/LICENSE diff --git a/web/media/chart_js/README.md b/web/templates/media/chart_js/README.md similarity index 100% rename from web/media/chart_js/README.md rename to web/templates/media/chart_js/README.md diff --git a/web/media/chart_js/css/demo.css b/web/templates/media/chart_js/css/demo.css similarity index 100% rename from web/media/chart_js/css/demo.css rename to web/templates/media/chart_js/css/demo.css diff --git a/web/media/chart_js/index.html b/web/templates/media/chart_js/index.html similarity index 100% rename from web/media/chart_js/index.html rename to web/templates/media/chart_js/index.html diff --git a/web/media/chart_js/src/demo.js b/web/templates/media/chart_js/src/demo.js similarity index 100% rename from web/media/chart_js/src/demo.js rename to web/templates/media/chart_js/src/demo.js diff --git a/web/media/chart_js/src/legend.js b/web/templates/media/chart_js/src/legend.js similarity index 100% rename from web/media/chart_js/src/legend.js rename to web/templates/media/chart_js/src/legend.js diff --git a/web/media/chart_js/src/legend.legacy.js b/web/templates/media/chart_js/src/legend.legacy.js similarity index 100% rename from web/media/chart_js/src/legend.legacy.js rename to web/templates/media/chart_js/src/legend.legacy.js diff --git a/web/media/chart_js/vendor/Chart.js b/web/templates/media/chart_js/vendor/Chart.js similarity index 100% rename from web/media/chart_js/vendor/Chart.js rename to web/templates/media/chart_js/vendor/Chart.js diff --git a/web/media/css/bootstrap-theme.css b/web/templates/media/css/bootstrap-theme.css similarity index 100% rename from web/media/css/bootstrap-theme.css rename to web/templates/media/css/bootstrap-theme.css diff --git a/web/media/css/bootstrap-theme.css.map b/web/templates/media/css/bootstrap-theme.css.map similarity index 100% rename from web/media/css/bootstrap-theme.css.map rename to web/templates/media/css/bootstrap-theme.css.map diff --git a/web/media/css/bootstrap-theme.min.css b/web/templates/media/css/bootstrap-theme.min.css similarity index 100% rename from web/media/css/bootstrap-theme.min.css rename to web/templates/media/css/bootstrap-theme.min.css diff --git a/web/media/css/bootstrap.css b/web/templates/media/css/bootstrap.css similarity index 100% rename from web/media/css/bootstrap.css rename to web/templates/media/css/bootstrap.css diff --git a/web/media/css/bootstrap.css.map b/web/templates/media/css/bootstrap.css.map similarity index 100% rename from web/media/css/bootstrap.css.map rename to web/templates/media/css/bootstrap.css.map diff --git a/web/media/css/bootstrap.min.css b/web/templates/media/css/bootstrap.min.css similarity index 100% rename from web/media/css/bootstrap.min.css rename to web/templates/media/css/bootstrap.min.css diff --git a/web/media/django_logo.gif b/web/templates/media/django_logo.gif similarity index 100% rename from web/media/django_logo.gif rename to web/templates/media/django_logo.gif diff --git a/web/media/fonts/glyphicons-halflings-regular.eot b/web/templates/media/fonts/glyphicons-halflings-regular.eot similarity index 100% rename from web/media/fonts/glyphicons-halflings-regular.eot rename to web/templates/media/fonts/glyphicons-halflings-regular.eot diff --git a/web/media/fonts/glyphicons-halflings-regular.svg b/web/templates/media/fonts/glyphicons-halflings-regular.svg similarity index 100% rename from web/media/fonts/glyphicons-halflings-regular.svg rename to web/templates/media/fonts/glyphicons-halflings-regular.svg diff --git a/web/media/fonts/glyphicons-halflings-regular.ttf b/web/templates/media/fonts/glyphicons-halflings-regular.ttf similarity index 100% rename from web/media/fonts/glyphicons-halflings-regular.ttf rename to web/templates/media/fonts/glyphicons-halflings-regular.ttf diff --git a/web/media/fonts/glyphicons-halflings-regular.woff b/web/templates/media/fonts/glyphicons-halflings-regular.woff similarity index 100% rename from web/media/fonts/glyphicons-halflings-regular.woff rename to web/templates/media/fonts/glyphicons-halflings-regular.woff diff --git a/web/media/fonts/glyphicons-halflings-regular.woff2 b/web/templates/media/fonts/glyphicons-halflings-regular.woff2 similarity index 100% rename from web/media/fonts/glyphicons-halflings-regular.woff2 rename to web/templates/media/fonts/glyphicons-halflings-regular.woff2 diff --git a/web/media/js/bootstrap.js b/web/templates/media/js/bootstrap.js similarity index 100% rename from web/media/js/bootstrap.js rename to web/templates/media/js/bootstrap.js diff --git a/web/media/js/bootstrap.min.js b/web/templates/media/js/bootstrap.min.js similarity index 100% rename from web/media/js/bootstrap.min.js rename to web/templates/media/js/bootstrap.min.js diff --git a/web/media/js/jquery.js b/web/templates/media/js/jquery.js similarity index 100% rename from web/media/js/jquery.js rename to web/templates/media/js/jquery.js diff --git a/web/media/js/npm.js b/web/templates/media/js/npm.js similarity index 100% rename from web/media/js/npm.js rename to web/templates/media/js/npm.js diff --git a/web/media/mongodb_logo.png b/web/templates/media/mongodb_logo.png similarity index 100% rename from web/media/mongodb_logo.png rename to web/templates/media/mongodb_logo.png diff --git a/web/media/warpzone_logo.png b/web/templates/media/warpzone_logo.png similarity index 100% rename from web/media/warpzone_logo.png rename to web/templates/media/warpzone_logo.png diff --git a/web/warpauth/admin.py b/web/warpauth/admin.py new file mode 100644 index 0000000000000000000000000000000000000000..ec50db8d804c505b73770de751daa99262235fbd --- /dev/null +++ b/web/warpauth/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin + +# Register your models here. + diff --git a/web/warpauthWeb/__init__.py b/web/warpauth/migrations/__init__.py similarity index 100% rename from web/warpauthWeb/__init__.py rename to web/warpauth/migrations/__init__.py diff --git a/web/warpauth/models.py b/web/warpauth/models.py new file mode 100644 index 0000000000000000000000000000000000000000..ae0b9bffb20196c6602f77ee97fe1ea9bb1c5954 --- /dev/null +++ b/web/warpauth/models.py @@ -0,0 +1,46 @@ +from django.db import models +from ldapdb.models.fields import CharField, IntegerField, ListField +import ldapdb.models +from django.forms import ModelForm, HiddenInput +from django import forms +from django.utils import timezone + +class PasswordResetToken(models.Model): + user = models.CharField(max_length=100) + email = models.CharField(max_length=100) + hash = models.CharField(max_length=100) + created = models.DateTimeField(auto_now_add=True) + +# LDAP + + +class LdapUser(ldapdb.models.Model): + base_dn = "ou=user,dc=warpzone,dc=ms" + object_classes = ['posixAccount', 'shadowAccount', 'uidObject', 'account'] + + uid = CharField(db_column='uid', unique=True, primary_key=True) + email = CharField(db_column='description', max_length=200) + password = CharField(db_column='Password') + + def __str__(self): + return self.uid + + def __unicode__(self): + return self.uid + + +class LdapGroup(ldapdb.models.Model): + base_dn = "ou=groups,dc=nodomain,dc=org" + object_classes = ['posixGroup'] + + gid = IntegerField(db_column='gidNumber', unique=True) + name = CharField(db_column='cn', max_length=200, primary_key=True) + members = ListField(db_column='memberUid') + + def __str__(self): + return self.name + + def __unicode__(self): + return self.name + + diff --git a/web/warpauthWeb/templates/about.html b/web/warpauth/templates/warpauth/about.html similarity index 100% rename from web/warpauthWeb/templates/about.html rename to web/warpauth/templates/warpauth/about.html diff --git a/web/warpauthWeb/templates/login.html b/web/warpauth/templates/warpauth/login.html similarity index 100% rename from web/warpauthWeb/templates/login.html rename to web/warpauth/templates/warpauth/login.html diff --git a/web/warpauthWeb/templates/reset_password/change_password.html b/web/warpauth/templates/warpauth/reset_password/change_password.html similarity index 100% rename from web/warpauthWeb/templates/reset_password/change_password.html rename to web/warpauth/templates/warpauth/reset_password/change_password.html diff --git a/web/warpauthWeb/templates/reset_password/token_gen.html b/web/warpauth/templates/warpauth/reset_password/token_gen.html similarity index 100% rename from web/warpauthWeb/templates/reset_password/token_gen.html rename to web/warpauth/templates/warpauth/reset_password/token_gen.html diff --git a/web/warpauthWeb/migrations/__init__.py b/web/warpauth/templatetags/__init__.py similarity index 100% rename from web/warpauthWeb/migrations/__init__.py rename to web/warpauth/templatetags/__init__.py diff --git a/web/warpauthWeb/tests.py b/web/warpauth/tests.py similarity index 100% rename from web/warpauthWeb/tests.py rename to web/warpauth/tests.py diff --git a/web/warpauth/urls.py b/web/warpauth/urls.py index 94c81ee6781dd4de84e628acab0d5dae70086e9b..425ac2048b4a97f232e88c79a82ba68f30d6a6be 100644 --- a/web/warpauth/urls.py +++ b/web/warpauth/urls.py @@ -1,9 +1,25 @@ -from django.conf.urls import include, url -from django.contrib import admin -from django.conf import settings +from django.conf.urls import url +from warpauth.views import main, login, reset_password, warp_food urlpatterns = [ - url(r'^admin/', include(admin.site.urls)), - url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT,}), - url(r'^', include('warpauthWeb.urls')), + # Authentication Pages + url(r'^login/$', login.login_view, name='index'), + url(r'^logout/$', login.logout_view, name='index'), + url(r'^reset_password/$', reset_password.gen_token, name='index'), + + url(r'^reset_password/(?P<reset_hash>\w+)/$', reset_password.change_password, name='index'), + # Main Page + + + url(r'^$', main.index, name='index'), + + ] + +""" +url(r'^pizza/$', warp_food.index, name='warp_foot'), +url(r'^pizza/view/(?P<sheet_id>\w+)/$', warp_food.view, name='warp_foot_view'), +url(r'^pizza/toggle_sheet/(?P<sheet_id>\w+)/$', warp_food.toggle_closed, name='warp_foot_toggle_closed'), +url(r'^pizza/toggle_paid/(?P<order_id>\w+)/$', warp_food.toggle_paid, name='warp_foot_toggle_paid'), +url(r'^pizza/export_sheet/(?P<sheet_id>\w+)/$', warp_food.export_sheet, name='warp_foot_export_sheet'), +""" \ No newline at end of file diff --git a/web/warpauthWeb/util.py b/web/warpauth/util.py similarity index 100% rename from web/warpauthWeb/util.py rename to web/warpauth/util.py diff --git a/web/warpauthWeb/views/__init__.py b/web/warpauth/views/__init__.py similarity index 100% rename from web/warpauthWeb/views/__init__.py rename to web/warpauth/views/__init__.py diff --git a/web/warpauthWeb/views/login.py b/web/warpauth/views/login.py similarity index 90% rename from web/warpauthWeb/views/login.py rename to web/warpauth/views/login.py index 72dc48f75c87014bd3a5e9c884d5e07ab39c5b72..215c3ff68c0c596c99fc8713b941a2491051a2e6 100644 --- a/web/warpauthWeb/views/login.py +++ b/web/warpauth/views/login.py @@ -4,7 +4,7 @@ from django.contrib.auth import authenticate, login, logout from django.shortcuts import redirect from django.contrib.auth.decorators import login_required -from warpauthWeb.util import * +from warpauth.util import * def login_view(request): pages['body'] = "login" @@ -23,7 +23,7 @@ def login_view(request): if username != "" and password != "": pages['fail'] = True - return HttpResponse(render(request, 'login.html', pages)) + return HttpResponse(render(request, 'warpauth/login.html', pages)) @login_required(login_url='/login/', redirect_field_name=None) def logout_view(request): diff --git a/web/warpauthWeb/views/main.py b/web/warpauth/views/main.py similarity index 78% rename from web/warpauthWeb/views/main.py rename to web/warpauth/views/main.py index d3c8ee67b905abec9ddbb01d606da2a420b8fe1b..94860af96548008daf6a3efb8b284c7937c03d5d 100644 --- a/web/warpauthWeb/views/main.py +++ b/web/warpauth/views/main.py @@ -2,11 +2,11 @@ from django.shortcuts import render from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseNotAllowed, HttpResponseNotFound from django.shortcuts import redirect from django.contrib.auth.decorators import login_required -from warpauthWeb.util import * +from warpauth.util import * @login_required(login_url='/login/', redirect_field_name=None) def index(request): print(request.user.ldap_user.group_names) - return HttpResponse(render(request, 'about.html', pages)) + return HttpResponse(render(request, 'warpauth/about.html', pages)) diff --git a/web/warpauthWeb/views/reset_password.py b/web/warpauth/views/reset_password.py similarity index 84% rename from web/warpauthWeb/views/reset_password.py rename to web/warpauth/views/reset_password.py index 7bdcdfa2cf8c81553ccd59d977c4f2fb31e2275e..67fc27c1dc1fa028f1f07757734e712bc1ad26ff 100644 --- a/web/warpauthWeb/views/reset_password.py +++ b/web/warpauth/views/reset_password.py @@ -5,13 +5,13 @@ from django.shortcuts import redirect from django.contrib.auth.decorators import login_required from django.views.decorators.cache import cache_page -from warpauthWeb.util import * -from warpauthWeb.models import PasswordResetToken, LdapUser +from warpauth.util import * +from warpauth.models import PasswordResetToken, LdapUser import hashlib import logging import os import datetime -from django.core.exceptions import ObjectDoesNotExist,ValidationError +from django.core.exceptions import ObjectDoesNotExist, ValidationError def gen_token(request): logger = logging.getLogger("reset_password") @@ -30,7 +30,7 @@ def gen_token(request): logger.error("Failed for %s with %s", request.POST["username"],e) else: pass - return HttpResponse(render(request, 'reset_password/token_gen.html', pages)) + return HttpResponse(render(request, 'warpauth/reset_password/token_gen.html', pages)) def change_password(request, reset_hash=None): @@ -60,4 +60,4 @@ def change_password(request, reset_hash=None): - return HttpResponse(render(request, 'reset_password/change_password.html', pages)) + return HttpResponse(render(request, 'warpauth/reset_password/change_password.html', pages)) diff --git a/web/warpauthWeb/templates/warp_food/main.html b/web/warpauthWeb/templates/warp_food/main.html deleted file mode 100644 index 2e1dabb08faa7db2ed71b787dfa7877cad50fa7b..0000000000000000000000000000000000000000 --- a/web/warpauthWeb/templates/warp_food/main.html +++ /dev/null @@ -1,31 +0,0 @@ -{% extends "base.html" %} - -{% load i18n %} - - {% load bootstrap %} - -{% block content %} - <div class="panel panel-default"> - <div class="panel-body"> - <form class="form-horizontal" method="POST" role="form"> - {{ create_food_sheet|bootstrap_horizontal }} - <div class="form-group"> - <div class="col-sm-offset-2 col-sm-10"> - {% csrf_token %} - <button style="float: left" type="submit" formmethod="post" class="btn btn-primary">{% trans "Create Food Sheet" %}</button> - </div> - </div> - </form> - </div> - </div> - <table class="table table-striped table-hover"> - <thead> - <tr><th>{% trans "Estimated Order Time" %}</th><th>{% trans "Pizza Service" %}</th></tr> - </thead> - <tbody> - {% for sheet in food_sheets %} - <tr data-link="/pizza/view/{{ sheet.id }}/"><td>{{ sheet.estimated_order_time }}</td><td>{{ sheet.pizza_service }}</td></tr> - {% endfor %} - </tbody> - </table> -{% endblock %} \ No newline at end of file diff --git a/web/warpauthWeb/urls.py b/web/warpauthWeb/urls.py deleted file mode 100644 index f4b8a953f91efd135f4ef843b9b7d4698455fa6b..0000000000000000000000000000000000000000 --- a/web/warpauthWeb/urls.py +++ /dev/null @@ -1,24 +0,0 @@ -from django.conf.urls import url -from warpauthWeb.views import main,login,reset_password, warp_food - -urlpatterns = [ - # Authentication Pages - url(r'^login/$', login.login_view, name='index'), - url(r'^logout/$', login.logout_view, name='index'), - url(r'^reset_password/$', reset_password.gen_token, name='index'), - - url(r'^reset_password/(?P<reset_hash>\w+)/$', reset_password.change_password, name='index'), - # Main Page - - url(r'^pizza/$', warp_food.index, name='warp_foot'), - url(r'^pizza/view/(?P<sheet_id>\w+)/$', warp_food.view, name='warp_foot_view'), - url(r'^pizza/toggle_sheet/(?P<sheet_id>\w+)/$', warp_food.toggle_closed, name='warp_foot_toggle_closed'), - url(r'^pizza/toggle_paid/(?P<order_id>\w+)/$', warp_food.toggle_paid, name='warp_foot_toggle_paid'), - url(r'^pizza/export_sheet/(?P<sheet_id>\w+)/$', warp_food.export_sheet, name='warp_foot_export_sheet'), - - - url(r'^$', main.index, name='index'), - - -] - diff --git a/web/warpauthWeb/templatetags/__init__.py b/web/warpfood/__init__.py similarity index 100% rename from web/warpauthWeb/templatetags/__init__.py rename to web/warpfood/__init__.py diff --git a/web/warpauthWeb/admin.py b/web/warpfood/admin.py similarity index 54% rename from web/warpauthWeb/admin.py rename to web/warpfood/admin.py index 9b159d4381415f959aa86c39932cc21212b55c2d..36c0fc6562d319b48e09b8103c6c320cbd723072 100644 --- a/web/warpauthWeb/admin.py +++ b/web/warpfood/admin.py @@ -1,8 +1,9 @@ from django.contrib import admin -from warpauthWeb.models import PizzaService +from warpfood.models import PizzaService + # Register your models here. @admin.register(PizzaService) -class PizzaService_admin(admin.ModelAdmin): +class PizzaServiceAdmin(admin.ModelAdmin): pass diff --git a/web/warpfood/migrations/__init__.py b/web/warpfood/migrations/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/web/warpauthWeb/models.py b/web/warpfood/models.py similarity index 54% rename from web/warpauthWeb/models.py rename to web/warpfood/models.py index 1cf42dbaeefa837ca85b6b3fef02688bcd930e45..957fdad1530758eccb30f8d0df1a7754dfb1c091 100644 --- a/web/warpauthWeb/models.py +++ b/web/warpfood/models.py @@ -1,16 +1,8 @@ from django.db import models -from ldapdb.models.fields import CharField, IntegerField, ListField -import ldapdb.models from django.forms import ModelForm, HiddenInput from django import forms from django.utils import timezone -class PasswordResetToken(models.Model): - user = models.CharField(max_length=100) - email = models.CharField(max_length=100) - hash = models.CharField(max_length=100) - created = models.DateTimeField(auto_now_add=True) - class PizzaService(models.Model): name = models.CharField(max_length=250) @@ -19,6 +11,7 @@ class PizzaService(models.Model): def __str__(self): return self.name + class FoodSheet(models.Model): date = models.DateTimeField(default=timezone.now) pizza_service = models.ForeignKey(PizzaService, on_delete=models.CASCADE) @@ -46,48 +39,21 @@ class FoodSheetForm(ModelForm): class FoodOrderForm(ModelForm): comment = forms.CharField(required=False) - paid = forms.CharField(required=False) class Meta: model = FoodOrder fields = ['sheet', 'user', 'article', 'size', 'comment', 'price', 'paid'] - widgets = {'sheet': HiddenInput(), 'user': HiddenInput()} + widgets = {'paid': HiddenInput(), 'sheet': HiddenInput(), 'user': HiddenInput()} + +class FoodOrderFormExt(ModelForm): + comment = forms.CharField(required=False) + + class Meta: + model = FoodOrder + fields = ['sheet', 'user', 'article', 'size', 'comment', 'price', 'paid'] + widgets = {'sheet': HiddenInput(), 'paid': HiddenInput()} class PizzaServiceForm(ModelForm): class Meta: model = PizzaService fields = ['name', 'phone'] - - -# LDAP - - -class LdapUser(ldapdb.models.Model): - base_dn = "ou=user,dc=warpzone,dc=ms" - object_classes = ['posixAccount', 'shadowAccount', 'uidObject', 'account'] - - uid = CharField(db_column='uid', unique=True, primary_key=True) - email = CharField(db_column='description', max_length=200) - password = CharField(db_column='Password') - - def __str__(self): - return self.uid - - def __unicode__(self): - return self.uid - -class LdapGroup(ldapdb.models.Model): - base_dn = "ou=groups,dc=nodomain,dc=org" - object_classes = ['posixGroup'] - - gid = IntegerField(db_column='gidNumber', unique=True) - name = CharField(db_column='cn', max_length=200, primary_key=True) - members = ListField(db_column='memberUid') - - def __str__(self): - return self.name - - def __unicode__(self): - return self.name - - diff --git a/web/warpfood/templates/warpfood/main.html b/web/warpfood/templates/warpfood/main.html new file mode 100644 index 0000000000000000000000000000000000000000..b878adc8372c8311de7e51924d344329334b3966 --- /dev/null +++ b/web/warpfood/templates/warpfood/main.html @@ -0,0 +1,33 @@ +{% extends "base.html" %} + +{% load i18n %} + + {% load bootstrap %} + +{% block content %} + {% if user.is_authenticated %} + <div class="panel panel-default"> + <div class="panel-body"> + <form class="form-horizontal" method="POST" role="form"> + {{ create_food_sheet|bootstrap_horizontal }} + <div class="form-group"> + <div class="col-sm-offset-2 col-sm-10"> + {% csrf_token %} + <button style="float: left" type="submit" formmethod="post" class="btn btn-primary">{% trans "Create Food Sheet" %}</button> + </div> + </div> + </form> + </div> + </div> + {% endif %} + <table class="table table-striped table-hover"> + <thead> + <tr><th>{% trans "Estimated Order Time" %}</th><th>{% trans "Pizza Service" %}</th></tr> + </thead> + <tbody> + {% for sheet in food_sheets %} + <tr data-link="/pizza/view/{{ sheet.id }}/"><td>{{ sheet.estimated_order_time }}</td><td>{{ sheet.pizza_service }}</td></tr> + {% endfor %} + </tbody> + </table> +{% endblock %} \ No newline at end of file diff --git a/web/warpauthWeb/templates/warp_food/view.html b/web/warpfood/templates/warpfood/view.html similarity index 55% rename from web/warpauthWeb/templates/warp_food/view.html rename to web/warpfood/templates/warpfood/view.html index a706d2bbb43699428735ab1a3bd029d4cd5c0078..2d60d091e07089909daa6c01f2b882c14375ec7e 100644 --- a/web/warpauthWeb/templates/warp_food/view.html +++ b/web/warpfood/templates/warpfood/view.html @@ -1,8 +1,7 @@ {% extends "base.html" %} {% load i18n %} - - {% load bootstrap %} +{% load bootstrap %} {% block content %} @@ -13,14 +12,16 @@ <h4>{{ sheet.pizza_service.name }}</h4> <small>{{ sheet.pizza_service.phone }}</small><br/><br/> <small>{{ sheet.estimated_order_time }}</small><br/><br/> - <a href="" class="btn btn-primary">Edit Sheet</a> - {% if not sheet.closed %} - <a href="/pizza/toggle_sheet/{{ sheet.id }}" class="btn btn-danger">Close Sheet</a> - {% else %} - <a href="/pizza/toggle_sheet/{{ sheet.id }}" class="btn btn-success">Open Sheet</a> - {% endif %} - {% if sheet.closed %} - <a href="/pizza/export_sheet/{{ sheet.id }}" class="btn btn-info">Print order</a> + {% if user.is_authenticated %} + <a href="" class="btn btn-primary">Edit Sheet</a> + {% if not sheet.closed %} + <a href="/pizza/toggle_sheet/{{ sheet.id }}" class="btn btn-danger">Close Sheet</a> + {% else %} + <a href="/pizza/toggle_sheet/{{ sheet.id }}" class="btn btn-success">Open Sheet</a> + {% endif %} + {% if sheet.closed %} + <a href="/pizza/export_sheet/{{ sheet.id }}" class="btn btn-info">Print order</a> + {% endif %} {% endif %} </div> <div class="col-md-4"> @@ -33,8 +34,11 @@ {% if not sheet.closed %} <div class="panel panel-default"> <div class="panel-body"> + {% if error %} + <div class="alert alert-danger"> {{ error }}</div> + {% endif %} <form class="form-horizontal" method="POST" role="form"> - {{ create_food_order|bootstrap_horizontal }} + {{ create_food_order|bootstrap_horizontal }} <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> {% csrf_token %} @@ -59,17 +63,28 @@ <tbody> {% for order in orders %} <tr> - <td>{{ order.user_name }}</td> + <td>{{ order.user }}</td> <td>{{ order.article }}</td> <td>{{ order.size }}</td> <td>{{ order.price }} €</td> <td>{{ order.comment }}</td> <td> - {% if order.paid %} - <a class="btn btn-xs btn-success" href="/pizza/toggle_paid/{{ order.id }}">{{ order.paid }}</a></td></tr> + {% if user.is_authenticated %} + {% if order.paid %} + <a class="btn btn-xs btn-success" href="/pizza/toggle_paid/{{ order.id }}">{{ order.paid }}</a> + {% else %} + <a class="btn btn-xs btn-danger" href="/pizza/toggle_paid/{{ order.id }}">{{ order.paid }}</a> + {% endif %} + {% else %} - <a class="btn btn-xs btn-danger" href="/pizza/toggle_paid/{{ order.id }}">{{ order.paid }}</a></td></tr> + {% if order.paid %} + <span class="btn btn-xs btn-success">{{ order.paid }}</span> + {% else %} + <span class="btn btn-xs btn-danger">{{ order.paid }}</span> + {% endif %} {% endif %} + </td> + </tr> {% endfor %} </tbody> </table> diff --git a/web/warpfood/tests.py b/web/warpfood/tests.py new file mode 100644 index 0000000000000000000000000000000000000000..7ce503c2dd97ba78597f6ff6e4393132753573f6 --- /dev/null +++ b/web/warpfood/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/web/warpfood/urls.py b/web/warpfood/urls.py new file mode 100644 index 0000000000000000000000000000000000000000..5eba10ff15db0513a88cb20ae466a64a61b98a0c --- /dev/null +++ b/web/warpfood/urls.py @@ -0,0 +1,14 @@ +from django.conf.urls import url +from warpfood.views import * + +urlpatterns = [ + + url(r'^pizza/$', index, name='warp_foot'), + url(r'^pizza/view/(?P<sheet_id>\w+)/$', view, name='warp_foot_view'), + url(r'^pizza/toggle_sheet/(?P<sheet_id>\w+)/$', toggle_closed, name='warp_foot_toggle_closed'), + url(r'^pizza/toggle_paid/(?P<order_id>\w+)/$', toggle_paid, name='warp_foot_toggle_paid'), + url(r'^pizza/export_sheet/(?P<sheet_id>\w+)/$', export_sheet, name='warp_foot_export_sheet'), + + +] + diff --git a/web/warpfood/util.py b/web/warpfood/util.py new file mode 100644 index 0000000000000000000000000000000000000000..e2e0407399e53c6f9dcf51085f5ebed0a0032324 --- /dev/null +++ b/web/warpfood/util.py @@ -0,0 +1,6 @@ +pages = {'pages': [ + {"link":"pizza", "name": "PizzaSheet"}, + {"link":"about", "name": "About"}, + {"link":"logout", "name": "Logout"}, + {"link":"admin", "name": "Admin"} +]} diff --git a/web/warpauthWeb/views/warp_food.py b/web/warpfood/views.py similarity index 84% rename from web/warpauthWeb/views/warp_food.py rename to web/warpfood/views.py index a91dc446e17fe59f164b6e3fea53f81a84e89e47..c99b32590701dbe00237b56589da90da004143f6 100644 --- a/web/warpauthWeb/views/warp_food.py +++ b/web/warpfood/views.py @@ -2,12 +2,12 @@ from django.shortcuts import render from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseNotAllowed, HttpResponseNotFound from django.shortcuts import redirect from django.contrib.auth.decorators import login_required -from warpauthWeb.util import * -from warpauthWeb.models import * +from warpfood.util import * +from warpfood.models import * from reportlab.pdfgen import canvas from django.http import HttpResponse from reportlab.platypus import SimpleDocTemplate -from reportlab.platypus.tables import Table, TableStyle,colors +from reportlab.platypus.tables import Table, TableStyle, colors def index(request): if request.method == 'POST': @@ -19,15 +19,13 @@ def index(request): pages['food_sheets'] = FoodSheet.objects.all() pages['pizza_services'] = PizzaService.objects.all() pages['create_food_sheet'] = FoodSheetForm() - return HttpResponse(render(request, 'warp_food/main.html', pages)) + return HttpResponse(render(request, 'warpfood/main.html', pages)) def view(request, sheet_id=0): if request.method == 'POST': form = FoodOrderForm(request.POST) if form.is_valid(): - print(form.data) form.save() - else: pages['error'] = form.errors print(pages['error']) @@ -40,9 +38,12 @@ def view(request, sheet_id=0): for order in pages['orders']: sum += order.price pages['order_sum'] = sum - pages['create_food_order'] = FoodOrderForm(initial={'sheet': sheet_id, 'user': request.user.id}) + if request.user.is_authenticated(): + pages['create_food_order'] = FoodOrderForm(initial={'sheet': sheet_id, 'user': request.user, 'paid': True}) + else: + pages['create_food_order'] = FoodOrderFormExt(initial={'sheet': sheet_id, 'paid': True}) - return HttpResponse(render(request, 'warp_food/view.html', pages)) + return HttpResponse(render(request, 'warpfood/view.html', pages)) @login_required(login_url='/login/', redirect_field_name=None) def toggle_closed(request, sheet_id=0): diff --git a/web/warpauth.db b/web/warpzone.db similarity index 52% rename from web/warpauth.db rename to web/warpzone.db index cd9f20d298ec57f329d3ae1edfe9afe31c7cde7f..b209dcbfbccb71f5b07682a2fc1f5b0a6e2b64cc 100644 Binary files a/web/warpauth.db and b/web/warpzone.db differ diff --git a/web/warpzone/__init__.py b/web/warpzone/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/web/warpauth/settings.py b/web/warpzone/settings.py similarity index 89% rename from web/warpauth/settings.py rename to web/warpzone/settings.py index ad3732b8f5aeaf6b450a4b54df48394e3211a3e4..dbd23b862b0425fe627fd1397d7eef3e05f8bc08 100644 --- a/web/warpauth/settings.py +++ b/web/warpzone/settings.py @@ -28,7 +28,7 @@ SECRET_KEY = '4m4c(_$ubwued9p-insp!950g&r0yu851bp287$2a3ydj^y=0=' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True -MEDIA_ROOT = 'media/' +MEDIA_ROOT = 'templates/media/' MEDIA_URL = '/media/' ALLOWED_HOSTS = [] @@ -44,7 +44,8 @@ INSTALLED_APPS = ( 'django.contrib.messages', 'django.contrib.staticfiles', 'bootstrapform', - 'warpauthWeb', + 'warpauth', + 'warpfood', ) MIDDLEWARE_CLASSES = ( @@ -58,12 +59,12 @@ MIDDLEWARE_CLASSES = ( 'django.middleware.security.SecurityMiddleware', ) -ROOT_URLCONF = 'warpauth.urls' +ROOT_URLCONF = 'warpzone.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [], + 'DIRS': ['templates'], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ @@ -76,7 +77,7 @@ TEMPLATES = [ }, ] -WSGI_APPLICATION = 'warpauth.wsgi.application' +WSGI_APPLICATION = 'warpzone.wsgi.application' # Database @@ -85,14 +86,14 @@ WSGI_APPLICATION = 'warpauth.wsgi.application' DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': 'warpauth.db' + 'NAME': 'warpzone.db' }, - 'ldap': { + 'ldap': { 'ENGINE': 'ldapdb.backends.ldap', 'NAME': 'ldap://s1.dyhost.de/', 'USER': 'cn=admin,dc=warpzone,dc=ms', 'PASSWORD': '12345', - } + } } DATABASE_ROUTERS = ['ldapdb.router.Router'] # Internationalization @@ -125,15 +126,15 @@ AUTH_LDAP_BIND_PASSWORD = "12345" AUTH_LDAP_SERVER_URI = "ldap://s1.dyhost.de" AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=User,dc=warpzone,dc=ms", - ldap.SCOPE_SUBTREE, "(uid=%(user)s)") + ldap.SCOPE_SUBTREE, "(uid=%(user)s)") -AUTH_LDAP_USER_ATTR_MAP = {"first_name": "givenName", "last_name": "sn","email":"description"} +AUTH_LDAP_USER_ATTR_MAP = {"first_name": "givenName", "last_name": "sn", "email": "description"} AUTH_LDAP_PROFILE_ATTR_MAP = {"home_directory": "homeDirectory"} AUTH_LDAP_GROUP_SEARCH = LDAPSearch("ou=Groups,dc=warpzone,dc=ms", - ldap.SCOPE_SUBTREE, "(objectClass=posixGroup)" -) + ldap.SCOPE_SUBTREE, "(objectClass=posixGroup)" + ) AUTH_LDAP_GROUP_TYPE = PosixGroupType() diff --git a/web/warpzone/urls.py b/web/warpzone/urls.py new file mode 100644 index 0000000000000000000000000000000000000000..9bbe71e607052b7838a7a6fd1fbcb2405aa41f4e --- /dev/null +++ b/web/warpzone/urls.py @@ -0,0 +1,11 @@ +from django.conf.urls import include, url +from django.contrib import admin +from django.conf import settings + + +urlpatterns = [ + url(r'^admin/', include(admin.site.urls)), + url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, }), + url(r'^', include('warpauth.urls')), + url(r'^', include('warpfood.urls')), +] diff --git a/web/warpauth/wsgi.py b/web/warpzone/wsgi.py similarity index 83% rename from web/warpauth/wsgi.py rename to web/warpzone/wsgi.py index a0d14d6a996795f317835f25ae532799550f19bf..4d32f44dc5e50fff0169d6af90af53e16f2c3292 100644 --- a/web/warpauth/wsgi.py +++ b/web/warpzone/wsgi.py @@ -11,6 +11,6 @@ import os from django.core.wsgi import get_wsgi_application -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "warpauth.settings") +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "warpzone.settings") application = get_wsgi_application()