Skip to content
Snippets Groups Projects
Commit 5f8a5108 authored by Frank Poetzsch-Heffter's avatar Frank Poetzsch-Heffter
Browse files

index template with form and list of bookings

parent 1b9f6e13
No related branches found
No related tags found
No related merge requests found
...@@ -5,41 +5,53 @@ from datetime import datetime ...@@ -5,41 +5,53 @@ from datetime import datetime
from material import Layout, Row, Fieldset from material import Layout, Row, Fieldset
from .models import Booking, CostCenter from .models import Booking, CostCenter
class AddCostCenterForm(forms.ModelForm): # class AddCostCenterForm(forms.ModelForm):
cost_center = forms.CharField(max_length=30, label='Kostenstelle') # cost_center = forms.CharField(max_length=30, label='Kostenstelle')
#
# class AcquisitionForm(forms.ModelForm):
# # Cost_center choices
# def getCostCenter():
# ''' Find all cost center'''
# cost_center = CostCenter.objects.values_list('name')
# return cost_center
# cost_center = forms.ModelChoiceField(getCostCenter())
# #invoice_date = models.DateField()
# #invoice_number = models.CharField(max_length=20)
# #firma = models.CharField(max_length=30)
# description = models.CharField(max_length=50)
# #amount = models.DecimalField(max_digits=10, decimal_places=2)
# planned_amount = models.IntegerField()
# #submission_date = models.DateField()
# #payout_number = models.IntegerField()
# #booking_date = models.DateField()
# #maturity = models.DateField()
# #account = models.ForeignKey(to=Account.number, on_delete=models.CASCADE)
# #budget = models.ForeignKey(to=Budget.name, on_delete=models.CASCADE)
# #upload = models.FileField(upload_to='uploads/fibu/%Y/')
#
#
# # layout = Layout(Fieldset('Von',
# # Row('from_date', 'from_lesson', 'from_time'),
# # ),
# # Fieldset('Bis',
# # Row('to_date', 'to_lesson', 'to_time'),
# # ),
# # Fieldset('Grund / Vorhaben',
# # 'description'),
# # )
#
# class Meta:
# model = Booking
# fields = ('cost_center', 'description', 'planned_amount')
class AcquisitionForm(forms.ModelForm):
# Cost_center choices
def getCostCenter():
''' Find all cost center'''
cost_center = CostCenter.objects.values_list('name')
return cost_center
cost_center = forms.ModelChoiceField(getCostCenter())
#invoice_date = models.DateField()
#invoice_number = models.CharField(max_length=20)
#firma = models.CharField(max_length=30)
description = models.CharField(max_length=50)
#amount = models.DecimalField(max_digits=10, decimal_places=2)
planned_amount = models.IntegerField()
#submission_date = models.DateField()
#payout_number = models.IntegerField()
#booking_date = models.DateField()
#maturity = models.DateField()
#account = models.ForeignKey(to=Account.number, on_delete=models.CASCADE)
#budget = models.ForeignKey(to=Budget.name, on_delete=models.CASCADE)
#upload = models.FileField(upload_to='uploads/fibu/%Y/')
class MakeBookingForm(forms.ModelForm):
description = forms.CharField(label='Was soll gekauft werden?')
planned_amount = forms.IntegerField(label='Welcher Betrag ist dafür erforderlich (Euro)?')
# layout = Layout(Fieldset('Von', layout = Layout(Row(Fieldset('Beschreibung', 'description'), Fieldset('Erwarteter Betrag', 'planned_amount')))
# Row('from_date', 'from_lesson', 'from_time'),
# ),
# Fieldset('Bis',
# Row('to_date', 'to_lesson', 'to_time'),
# ),
# Fieldset('Grund / Vorhaben',
# 'description'),
# )
class Meta: class Meta:
model = Booking model = Booking
fields = ('cost_center', 'description', 'planned_amount') fields = ('id', 'description', 'planned_amount')
\ No newline at end of file
from django.db import models from django.db import models
from django.contrib.auth.models import User
class Status:
def __init__(self, name, style_class):
self.name = name
self.style_class = style_class
def __str__(self):
return self.name
status_list = [
Status(name='beantragt', style_class='red'),
Status(name='bewilligt', style_class='orange'),
Status(name='bestellt', style_class='yellow'),
Status(name='bezahlt', style_class='green'),
]
status_choices = [(x, val.name) for x, val in enumerate(status_list)]
class CostCenter(models.Model): class CostCenter(models.Model):
name = models.CharField(max_length=20, primary_key=True, unique=True) name = models.CharField(max_length=20, primary_key=True, unique=True)
...@@ -22,20 +41,29 @@ class Budget(models.Model): ...@@ -22,20 +41,29 @@ class Budget(models.Model):
) )
class Booking(models.Model): class Booking(models.Model):
cost_center = models.ForeignKey(CostCenter, on_delete=models.CASCADE) # cost_center = models.ForeignKey(CostCenter, on_delete=models.CASCADE)
invoice_date = models.DateField() contact = models.ForeignKey(User, related_name='bookings', on_delete=models.SET_NULL
invoice_number = models.CharField(max_length=20) , verbose_name="Erstellt von", blank=True, null=True)
firma = models.CharField(max_length=30) # invoice_date = models.DateField()
# invoice_number = models.CharField(max_length=20)
# firma = models.CharField(max_length=30)
description = models.CharField(max_length=50) description = models.CharField(max_length=50)
amount = models.DecimalField(max_digits=10, decimal_places=2) # amount = models.DecimalField(max_digits=10, decimal_places=2)
planned_amount = models.IntegerField() planned_amount = models.IntegerField()
submission_date = models.DateField() # submission_date = models.DateField()
payout_number = models.IntegerField() # payout_number = models.IntegerField()
booking_date = models.DateField() # booking_date = models.DateField()
maturity = models.DateField() # maturity = models.DateField()
account = models.ForeignKey(Account, on_delete=models.CASCADE) # account = models.ForeignKey(Account, on_delete=models.CASCADE)
budget = models.ForeignKey(Budget, on_delete=models.CASCADE) # budget = models.ForeignKey(Budget, on_delete=models.CASCADE)
upload = models.FileField(upload_to='uploads/fibu/%Y/') # upload = models.FileField(upload_to='uploads/fibu/%Y/')
status = models.IntegerField(default=0, choices=status_choices, verbose_name="Status")
def getStatus(self):
print(self.status, self.contact, self.id)
return status_list[self.status]
class Meta: class Meta:
permissions = ( permissions = (
......
{% include 'partials/header.html' %}
{% load material_form %}
<main>
<h4>Beschaffung</h4>
<form method="POST">
{% csrf_token %}
{% form form=form %}
{% endform %}
<button type="submit" class="waves-effect waves-light btn green">
<i class="material-icons left">send</i> Antrag stellen
</button>
</form>
</main>
{% include 'partials/footer.html' %}
...@@ -2,64 +2,41 @@ ...@@ -2,64 +2,41 @@
{% load material_form %} {% load material_form %}
<main> <main>
Hallo
{% comment %} <a href="{% url 'aub_apply_for' %}" class="waves-effect waves-light btn green">Neuen Antrag stellen</a>
{% block content %} {# <a href="{% url 'fibu_make_booking' %}" class="waves-effect waves-light btn green">Neuen Antrag stellen</a>#}
<h4>Unterrichtsbefreiungen von <span class="item-text"><i class="material-icons">person</i>{{ user }}</span></h4> {% block content %}
<ul class="collection">
{% for aub in aubs %}
<li class="collection-item">
<div class="row"> <h4>Beantragungen von {{ user }}</h4>
<div class="col s12 m4"> <form method="POST" style="border-width: 5px;">
<p class="title"> {% csrf_token %}
<span class="item-text"> {% form form=form %}
<i class="material-icons">access_time</i> {% endform %}
{{ aub.from_date }}, {{ aub.from_time }} Uhr &mdash; {{ aub.to_date }}, {{ aub.to_time }} Uhr <button type="submit" class="waves-effect waves-light btn green">
</span> <i class="material-icons left">send</i> Antrag stellen
</p> </button>
<p><a href="{% url 'aub_details' aub.id %}">{{ aub.description }}</a></p> </form>
</div>
<div class="col s12 m2">
<p>
<span class="item-text">
<i class="material-icons">person</i>
{{ aub.created_by }}
</span>
</p>
</div>
<div class="col s12 m4">
<p>
{% if aub.status == 0 %}
<form action="{% url 'aub_edit' aub.id %}" class="right">
{% csrf_token %}
<button type="submit" name="edit" class="waves-effect waves-light btn-flat btn-flat-medium" title="Bearbeiten">
<i class="material-icons center green-text">create</i>
</button>
</form>
{% endif %}
{% if aub.status == 0 or aub.status == 1 %}
<form action="" method="POST" class="right">
{% csrf_token %}
<input type="hidden" value="{{ aub.id }}" name="aub-id">
<button type="submit" onclick="return confirm('Wollen Sie den Antrag wirklich löschen?')" name="cancel" class="waves-effect waves-light btn-flat btn-flat-medium" title="Löschen">
<i class="material-icons center red-text">cancel</i>
</button>
</form>
{% endif %}
</p>
</div> <h5>Laufende Anträge</h5>
<div class="col s12 m2"> <table class="highlight">
<p><span class="badge new {{ aub.getStatus.style_class }}">{{ aub.getStatus.name }}</span></p> <thead>
</div> <tr>
</div> <th>Beschreibung</th>
<th class="flushright">Erwarteter Betrag</th>
</li> <th>Status</th>
</tr>
</thead>
<tbody>
{% for item in bookings %}
<tr>
<td>{{ item.description }}</td>
<td class="flushright">{{ item.planned_amount }} €</td>
<td><span class="badge new {{ item.getStatus.style_class }}">{{ item.getStatus.name }}</span></td>
</tr>
{% endfor %} {% endfor %}
</ul> </tbody>
{% endblock %}{% endcomment %} </table>
<ul class="collection">
{% endblock %}
</main> </main>
{% include 'partials/footer.html' %} {% include 'partials/footer.html' %}
...@@ -3,6 +3,7 @@ from . import views ...@@ -3,6 +3,7 @@ from . import views
urlpatterns = [ urlpatterns = [
path('', views.index, name='booking_index'), path('', views.index, name='fibu_index'),
#path('edit/<int:id>', views.edit, name='booking_edit'), # path('make_booking', views.make_booking, name='fibu_make_booking'),
# path('edit/<int:id>', views.edit, name='booking_edit'),
] ]
from .models import Booking
from django.contrib.auth.decorators import login_required, permission_required from django.contrib.auth.decorators import login_required, permission_required
from django.shortcuts import render, redirect, get_object_or_404 from django.shortcuts import render, redirect, get_object_or_404
from .models import Booking
from .forms import MakeBookingForm
@login_required @login_required
#@permission_required('fibu.view_booking') #@permission_required('fibu.view_booking')
def index(request): def index(request):
#items = Booking.objects.filter() items = Booking.objects.filter()
items = [1,2]
print(items) print(items)
context = { # @login_required
'bookings': items, # @permission_required('fibu.make_booking')
} # def make_booking(request):
if request.method == 'POST':
if 'booking-id' in request.POST:
booking_id = request.POST['booking-id']
booking = Booking.objects.get(id=booking_id)
form = MakeBookingForm(instance=booking)
print('Edit-Form erstellt ############# form.is_valid:', form.is_valid())
else:
form = MakeBookingForm(request.POST or None)
else:
form = MakeBookingForm()
if form.is_valid():
description = form.cleaned_data['description']
planned_amount = form.cleaned_data['planned_amount']
booking = Booking(description=description, planned_amount=planned_amount, contact=request.user)
booking.save()
# a = Activity(user=request.user, title="Antrag auf Unterrichtsbefreiung gestellt",
# description="Sie haben einen Antrag auf Unterrichtsbefreiung " +
# "für den Zeitraum von {} bis {} gestellt.".format(
# aub.from_date, aub.to_date), app=AubConfig.verbose_name)
# a.save()
# return redirect('fibu_make_booking')
return redirect('fibu_index')
context = {'bookings': items, 'form': form}
return render(request, 'fibu/index.html', context) return render(request, 'fibu/index.html', context)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment