mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-11-04 09:12:11 +01:00 
			
		
		
		
	Alpha version (without tests)
This commit is contained in:
		@@ -3,8 +3,11 @@
 | 
			
		||||
 | 
			
		||||
import django_tables2 as tables
 | 
			
		||||
from django.utils.translation import gettext_lazy as _
 | 
			
		||||
from note_kfet.middlewares import get_current_request
 | 
			
		||||
from note.templatetags.pretty_money import pretty_money
 | 
			
		||||
from permission.backends import PermissionBackend
 | 
			
		||||
 | 
			
		||||
from .models import Food
 | 
			
		||||
from .models import Food, Dish, Order
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class FoodTable(tables.Table):
 | 
			
		||||
@@ -35,3 +38,84 @@ class FoodTable(tables.Table):
 | 
			
		||||
            'data-href': lambda record: 'detail/' + str(record.pk),
 | 
			
		||||
            'style': 'cursor:pointer',
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DishTable(tables.Table):
 | 
			
		||||
    """
 | 
			
		||||
    List dishes
 | 
			
		||||
    """
 | 
			
		||||
    supplements = tables.Column(empty_values=(), verbose_name=_('Available supplements'), orderable=False)
 | 
			
		||||
 | 
			
		||||
    def render_supplements(self, record):
 | 
			
		||||
        return ", ".join(str(q.food) for q in record.supplements.all())
 | 
			
		||||
 | 
			
		||||
    def render_price(self, value):
 | 
			
		||||
        return pretty_money(value)
 | 
			
		||||
 | 
			
		||||
    class Meta:
 | 
			
		||||
        model = Dish
 | 
			
		||||
        template_name = 'django_tables2/bootstrap4.html'
 | 
			
		||||
        fields = ('main', 'supplements', 'price', 'available')
 | 
			
		||||
        row_attrs = {
 | 
			
		||||
            'class': 'table-row',
 | 
			
		||||
            'data-href': lambda record: str(record.pk),
 | 
			
		||||
            'style': 'cursor:pointer',
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
DELETE_TEMPLATE = """
 | 
			
		||||
<button id="{{ record.pk }}"
 | 
			
		||||
        class="btn btn-danger btn-sm"
 | 
			
		||||
        onclick="delete_button(this.id, 'orders_table_{{ table.prefix }}')">
 | 
			
		||||
    {{ delete_trans }}
 | 
			
		||||
</button>
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SERVE_TEMPLATE = """
 | 
			
		||||
<button id="{{ record.pk }}"
 | 
			
		||||
        class="btn btn-sm {% if record.served %}btn-secondary{% else %}btn-success{% endif %}"
 | 
			
		||||
        onclick="serve_button(this.id, 'orders_table_{{ table.prefix }}', {{ record.served|yesno:'true,false' }})">
 | 
			
		||||
    {% if record.served %}
 | 
			
		||||
        {{ record.served_at|date:"d/m/Y H:i" }}
 | 
			
		||||
    {% else %}""" + _('Serve') + """
 | 
			
		||||
    {% endif %}
 | 
			
		||||
</button>
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class OrderTable(tables.Table):
 | 
			
		||||
    """
 | 
			
		||||
    Lis all orders.
 | 
			
		||||
    """
 | 
			
		||||
    delete = tables.TemplateColumn(
 | 
			
		||||
        template_code=DELETE_TEMPLATE,
 | 
			
		||||
        extra_context={"delete_trans": _('Delete')},
 | 
			
		||||
        orderable=False,
 | 
			
		||||
        attrs={'td': {'class': lambda record: 'col-sm-1' + (
 | 
			
		||||
            ' d-none' if not PermissionBackend.check_perm(
 | 
			
		||||
                get_current_request(), "food.delete_order",
 | 
			
		||||
                record) else '')}}, verbose_name=_("Delete"), )
 | 
			
		||||
 | 
			
		||||
    serve = tables.TemplateColumn(
 | 
			
		||||
        template_code=SERVE_TEMPLATE,
 | 
			
		||||
        extra_context={"serve_trans": _('Serve')},
 | 
			
		||||
        orderable=False,
 | 
			
		||||
        attrs={'td': {'class': lambda record: 'col-sm-1' + (
 | 
			
		||||
            ' d-none' if not PermissionBackend.check_perm(
 | 
			
		||||
                get_current_request(), "food.change_order_saved",
 | 
			
		||||
                record) else '')}}, verbose_name=_("Serve"), )
 | 
			
		||||
 | 
			
		||||
    request = tables.Column(
 | 
			
		||||
        orderable=False
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    class Meta:
 | 
			
		||||
        model = Order
 | 
			
		||||
        template_name = 'django_tables2/bootstrap4.html'
 | 
			
		||||
        fields = ('ordered_at', 'user', 'dish', 'supplements', 'request', 'serve', 'delete')
 | 
			
		||||
        order_by = ('ordered_at', )
 | 
			
		||||
        row_attrs = {
 | 
			
		||||
            'class': 'table-row',
 | 
			
		||||
            'style': 'cursor:pointer',
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user