Skip to content
Snippets Groups Projects
Commit 5e240be8 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Merge branch '3-add-a-view-to-list-accounts' into 'master'

Resolve "Add  a view to list accounts"

Closes #3

See merge request !3
parents 194b2769 b38c65a7
No related branches found
No related tags found
1 merge request!3Resolve "Add a view to list accounts"
Pipeline #6188 passed
from django import forms
from .models import Account
class AccountForm(forms.ModelForm):
class Meta:
model = Account
fields = ["name", "year", "income", "budget"]
......@@ -4,7 +4,8 @@ MENUS = {
"NAV_MENU_CORE": [
{
"name": _("FiBu"),
"url": "empty",
"url": "#",
"icon": "euro_symbol",
"root": True,
"validators": [
"menu_generator.validators.is_authenticated",
......
# Generated by Django 3.1.5 on 2021-02-07 15:45
# Generated by Django 3.1.5 on 2021-02-20 07:29
import aleksis.apps.fibu.models
import django.contrib.sites.managers
......@@ -12,7 +12,7 @@ class Migration(migrations.Migration):
dependencies = [
('sites', '0002_alter_domain_unique'),
('core', '0010_auto_20210207_1506'),
('core', '0009_default_dashboard'),
]
operations = [
......
......@@ -6,9 +6,13 @@ from aleksis.core.mixins import ExtensibleModel
from aleksis.core.models import Person
def get_date():
return timezone.now().year
class Account(ExtensibleModel):
name = models.CharField(max_length=255, verbose_name=_("Booking account"))
year = models.IntegerField(default=lambda: timezone.now().year, verbose_name=_("Year"))
year = models.IntegerField(default=get_date, verbose_name=_("Year"))
income = models.BooleanField(default=False, verbose_name=_("Income account"))
budget = models.IntegerField(default=0, verbose_name=_("Budget"))
saldo = models.DecimalField(max_digits=9, decimal_places=2, default=0.00)
......
{% extends 'core/base.html' %}
{% load material_form i18n %}
{% block browser_title %}{% blocktrans %}Booking accounts{% endblocktrans %}{% endblock %}
{% block content %}
<a class="waves-effect waves-light btn green modal-trigger right" href="#new-modal">
<i class="material-icons left">add</i>{% blocktrans %}Create booking account{% endblocktrans %}
</a>
<h4>{% blocktrans %}Booking accounts{% endblocktrans %}</h4>
{% if form.errors %}
<script>
var onFinish = function () {
$("#new-modal").modal("open");
};
</script>
{% endif %}
<form method="post" action="{% url "create_account" %}">
<div id="new-modal" class="modal">
<div class="modal-content">
<h5>{% blocktrans %}Create new booking account{% endblocktrans %}</h5>
{% csrf_token %}
{% form form=form %}
{% endform %}
</div>
<div class="modal-footer">
<button type="submit" class="waves-effect waves-light btn green">
<i class="material-icons left">save</i>{% blocktrans %}Create booking account{% endblocktrans %}
</button>
</div>
</div>
</form>
<table>
<thead>
<tr>
<th>{% blocktrans %}Booking account{% endblocktrans %}</th>
<th class="right-align">{% blocktrans %}Expected earnings{% endblocktrans %}</th>
<th class="right-align">{% blocktrans %}Expected expenses{% endblocktrans %}</th>
<th>{% blocktrans %}Actions{% endblocktrans %}</th>
</tr>
</thead>
<tbody>
{% for account in account_list %}
<tr>
<td>{{ account.name }}</td>
{% if account.income %}
<td class="green-text right-align">{{ account.budget|floatformat:"2" }} €</td>
<td></td>
{% else %}
<td></td>
<td class="red-text right-align">{{ account.budget|floatformat:"2" }} €</td>
{% endif %}
<td class="right-align">
<a href="{% url 'edit_account' account.id %}"
class="waves-effect waves-light btn-flat btn-flat-medium left" title="{% trans "Edit" %}">
<i class="material-icons center green-text">create</i>
</a>
<a href="{% url 'delete_account' account.id %}"
class="waves-effect waves-light btn-flat btn-flat-medium left" title="{% trans "Delete" %}">
<i class="material-icons center red-text">cancel</i>
</a>
</td>
</tr>
{% empty %}
<tr>
<td colspan="4">{% blocktrans %}Sorry, there's no account available.{% endblocktrans %}</td></tr>
{% endfor %}
</tbody>
</table>
{% endblock %}
{% extends 'core/base.html' %}
{% load material_form i18n %}
{% block content %}
<h4>{% blocktrans %}Create booking account{% endblocktrans %}</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">save</i>{% blocktrans %}Save account{% endblocktrans %}
</button>
</form>
{% endblock %}
{% extends 'core/base.html' %}
{% load material_form i18n %}
{% block page_title %}{% blocktrans %}Delete booking account{% endblocktrans %}{% endblock %}
{% block browser_title %}{% blocktrans %}Delete booking account{% endblocktrans %}{% endblock %}
{% block content %}
<form method="post">
{% csrf_token %}
{% form form=form %}{% endform %}
<p>{% blocktrans %}Are you sure you want to delete "{{ object }}"?{% endblocktrans %}</p>
<button type="submit" class="waves-effect waves-light btn red">
<i class="material-icons left">delete</i>{% blocktrans %}Delete booking account{% endblocktrans %}
</button>
</form>
{% endblock %}
{% extends 'core/base.html' %}
{% load material_form i18n %}
{% block page_title %}
{% trans "Edit booking account" %}
{% endblock %}
{% block browser_title %}
{% trans "Edit booking account" %}
{% endblock %}
{% block content %}
<form method="post">
{% csrf_token %}
{% form form=form %}{% endform %}
<button type="submit" class="waves-effect waves-light btn green">
<i class="material-icons left">save</i>{% blocktrans %}Change booking account{% endblocktrans %}
</button>
</form>
{% endblock %}
from django.urls import path
from django.views.generic import TemplateView
from . import views
from .views import AccountCreateView, AccountDeleteView, AccountEditView, AccountListView
urlpatterns = [
path("empty", views.empty, name="empty"),
path("", TemplateView.as_view(template_name="fibu/index.html"), name="index"),
path("accounts/", AccountListView.as_view(), name="accounts",),
path("accounts/create/", AccountCreateView.as_view(), name="create_account",),
path("accounts/<int:pk>/delete/", AccountDeleteView.as_view(), name="delete_account",),
path("accounts/<int:pk>/edit/", AccountEditView.as_view(), name="edit_account",),
]
from django.contrib.auth.decorators import login_required
from django.http import HttpRequest, HttpResponse
from django.shortcuts import render
from django.db.models import QuerySet
from django.urls import reverse_lazy
from django.utils.translation import gettext as _
from django.views.generic import FormView
from django.views.generic.list import ListView
from aleksis.core.mixins import AdvancedCreateView, AdvancedDeleteView, AdvancedEditView
@login_required
def empty(request: HttpRequest) -> HttpResponse:
context = {}
from .forms import AccountForm
from .models import Account
return render(request, "fibu/empty.html", context)
class AccountListView(ListView, FormView):
template_name = "fibu/accounts/accounts.html"
model = Account
form_class = AccountForm
def get_queryset(self) -> QuerySet:
return Account.objects.all()
class AccountCreateView(AdvancedCreateView):
model = Account
success_url = reverse_lazy("accounts")
template_name = "fibu/accounts/create.html"
success_message = _("The account has been created.")
form_class = AccountForm
class AccountDeleteView(AdvancedDeleteView):
model = Account
success_url = "/app/fibu/accounts/"
template_name = "fibu/accounts/delete.html"
class AccountEditView(AdvancedEditView):
model = Account
success_url = "/app/fibu/accounts/"
template_name = "fibu/accounts/edit.html"
form_class = AccountForm
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