rebuild location index and detail view
This commit is contained in:
		
							
								
								
									
										21
									
								
								billard/migrations/0022_auto_20170427_0835.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								billard/migrations/0022_auto_20170427_0835.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
# -*- coding: utf-8 -*-
 | 
			
		||||
# Generated by Django 1.11 on 2017-04-27 08:35
 | 
			
		||||
from __future__ import unicode_literals
 | 
			
		||||
 | 
			
		||||
from django.db import migrations, models
 | 
			
		||||
import django.db.models.deletion
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Migration(migrations.Migration):
 | 
			
		||||
 | 
			
		||||
    dependencies = [
 | 
			
		||||
        ('billard', '0021_accounting_account_user'),
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    operations = [
 | 
			
		||||
        migrations.AlterField(
 | 
			
		||||
            model_name='client',
 | 
			
		||||
            name='location',
 | 
			
		||||
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='clients', to='billard.Location', verbose_name='Standort'),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
@@ -48,7 +48,7 @@ class Location(models.Model):
 | 
			
		||||
 | 
			
		||||
class Client(models.Model):
 | 
			
		||||
    uuid = models.UUIDField(unique=True, default=uuid.uuid4, verbose_name="Identifier")
 | 
			
		||||
    location = models.ForeignKey(Location, verbose_name="Standort")
 | 
			
		||||
    location = models.ForeignKey(Location, related_name="clients", verbose_name="Standort")
 | 
			
		||||
    report_user = models.ForeignKey(User, blank=True, null=True, verbose_name="Reporting Benutzer", related_name='reporting_clients')
 | 
			
		||||
 | 
			
		||||
    def __str__(self):
 | 
			
		||||
 
 | 
			
		||||
@@ -28,9 +28,9 @@
 | 
			
		||||
            </div>
 | 
			
		||||
            <div id="navbar" class="collapse navbar-collapse">
 | 
			
		||||
                <ul class="nav navbar-nav">
 | 
			
		||||
                    <li class="{% ifequal request.path '/billard/' %}active{% endifequal %}"><a href="{% url "billard:location_list" %}">Standorte</a></li>
 | 
			
		||||
                    <li class="{% ifequal request.path '/billard/' %}active{% endifequal %}"><a href="{% url "billard:location_index" %}">Standorte</a></li>
 | 
			
		||||
{% if perms.billard.change_accounting %}
 | 
			
		||||
                    <li class="{% ifequal request.path '/billard/accounting' %}active{% endifequal %}"><a href="{% url "billard:location_list" %}">Abrechnung</a></li>
 | 
			
		||||
                    <li class="{% ifequal request.path '/billard/accounting' %}active{% endifequal %}"><a href="{% url "billard:location_index" %}">Abrechnung</a></li>
 | 
			
		||||
{% endif %}
 | 
			
		||||
{% if user.is_superuser %}
 | 
			
		||||
                    <li class="{% ifequal request.path '/logout/' %}active{% endifequal %}"><a href="/admin/">Administration</a></li>
 | 
			
		||||
 
 | 
			
		||||
@@ -16,12 +16,17 @@
 | 
			
		||||
        </div>
 | 
			
		||||
    </form>
 | 
			
		||||
{% endif %}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    <div id="desk_data">
 | 
			
		||||
{% include 'billard/index_ajax.html' %}
 | 
			
		||||
    </div>
 | 
			
		||||
    <div id="modal-wrapper">
 | 
			
		||||
    </div>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block js %}
 | 
			
		||||
    <script type="text/javascript">
 | 
			
		||||
    var interval;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										25
									
								
								billard/templates/billard/location_detail.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								billard/templates/billard/location_detail.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
			
		||||
{% extends 'billard/base.html' %}
 | 
			
		||||
 | 
			
		||||
{% block title %}Standort{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block content %}
 | 
			
		||||
    <div id="desk_data">
 | 
			
		||||
{% include 'billard/location_detail_ajax.html' %}
 | 
			
		||||
    </div>
 | 
			
		||||
    <div id="modal-wrapper">
 | 
			
		||||
    </div>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block js %}
 | 
			
		||||
    <script type="text/javascript">
 | 
			
		||||
    var interval;
 | 
			
		||||
$(document).ready(function() {
 | 
			
		||||
    $.ajaxSetup({ cache: false });
 | 
			
		||||
    interval = window.setInterval(refresh_page, 1000);
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
function refresh_page() {
 | 
			
		||||
    $('#desk_data').load('#');
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
							
								
								
									
										12
									
								
								billard/templates/billard/location_detail_ajax.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								billard/templates/billard/location_detail_ajax.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
{% load display_client %}
 | 
			
		||||
{% if location.clients.all %}
 | 
			
		||||
{% for cli in location.clients.all %}
 | 
			
		||||
{% for i in "12345678" %}
 | 
			
		||||
    {{ cli|display_client:i }}
 | 
			
		||||
{% endfor %}
 | 
			
		||||
{% endfor %}
 | 
			
		||||
{% else %}
 | 
			
		||||
<div class="col-md-12">
 | 
			
		||||
    <div class="col-md-12 alert alert-danger">Keine Tische angelegt!</div>
 | 
			
		||||
</div>
 | 
			
		||||
{% endif %}
 | 
			
		||||
@@ -1,10 +1,11 @@
 | 
			
		||||
{% extends 'billard/base.html' %}
 | 
			
		||||
 | 
			
		||||
{% block title %}Location List{% endblock %}
 | 
			
		||||
{% block title %}Standortliste{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block content %}
 | 
			
		||||
 | 
			
		||||
{% if location_list %}
 | 
			
		||||
    <h2>Bitte Standort auswählen:</h2>
 | 
			
		||||
    <table class="table table-hover">
 | 
			
		||||
        <tr>
 | 
			
		||||
            <th>Code</th>
 | 
			
		||||
@@ -15,11 +16,11 @@
 | 
			
		||||
        </tr>
 | 
			
		||||
{% for loc in location_list %}
 | 
			
		||||
        <tr>
 | 
			
		||||
            <td><a href="{% url 'billard:location_detail' loc.id %}">{{ loc.code }}</a></td>
 | 
			
		||||
            <td><a href="{% url 'billard:location_detail' loc.id %}">{{ loc.name }}</a></td>
 | 
			
		||||
            <td><a href="{% url 'billard:location_detail' loc.id %}">{{ loc.street }}</a></td>
 | 
			
		||||
            <td><a href="{% url 'billard:location_detail' loc.id %}">{{ loc.plz }}</a></td>
 | 
			
		||||
            <td><a href="{% url 'billard:location_detail' loc.id %}">{{ loc.city }}</a></td>
 | 
			
		||||
            <td><a href="{% url 'billard:location_detail' loc.id %}">{{ loc.code|default_if_none:"" }}</a></td>
 | 
			
		||||
            <td><a href="{% url 'billard:location_detail' loc.id %}">{{ loc.name|default_if_none:"" }}</a></td>
 | 
			
		||||
            <td><a href="{% url 'billard:location_detail' loc.id %}">{{ loc.street|default_if_none:"" }}</a></td>
 | 
			
		||||
            <td><a href="{% url 'billard:location_detail' loc.id %}">{{ loc.plz|default_if_none:"" }}</a></td>
 | 
			
		||||
            <td><a href="{% url 'billard:location_detail' loc.id %}">{{ loc.city|default_if_none:"" }}</a></td>
 | 
			
		||||
        </tr>
 | 
			
		||||
{% endfor %}
 | 
			
		||||
    </table>
 | 
			
		||||
@@ -9,7 +9,7 @@ router.register(r'location_data', views.LocationDataViewSet)
 | 
			
		||||
app_name = 'billard'
 | 
			
		||||
urlpatterns = [
 | 
			
		||||
    # ex. /billard/
 | 
			
		||||
    url(r'^$', login_required(views.LocationListView.as_view()), name='location_list'),
 | 
			
		||||
    url(r'^$', login_required(views.LocationIndexView.as_view()), name='location_index'),
 | 
			
		||||
    # ex. /billard/1/
 | 
			
		||||
    url(r'^(?P<pk>[0-9]+)/$', login_required(views.LocationDetailView.as_view()), name='location_detail'),
 | 
			
		||||
    # ex. /billard/1/accounting/
 | 
			
		||||
@@ -21,7 +21,7 @@ urlpatterns = [
 | 
			
		||||
    #url(r'api/v1/', include(router.urls)),
 | 
			
		||||
    #url(r'process_locationdata', views.process_locationdata, name='process_locationdata'),
 | 
			
		||||
    #url(r'^accounting/$', views.AccountingView.as_view(), name='accounting'),
 | 
			
		||||
    #url(r'accountmodal$', views.accountmodalview, name='accountmodal'),
 | 
			
		||||
    #url(r'accoutmodal/confirm/(?P<pk>[0-9]+)$', views.accountmodalconfirmview, name="accountmodalconfirm")
 | 
			
		||||
    url(r'^accountmodal$', views.accountmodalview, name='accountmodal'),
 | 
			
		||||
    url(r'^accoutmodal/confirm/(?P<pk>[0-9]+)$', views.accountmodalconfirmview, name="accountmodalconfirm")
 | 
			
		||||
    # (?P<pk>[0-9]+)
 | 
			
		||||
]
 | 
			
		||||
 
 | 
			
		||||
@@ -8,10 +8,11 @@ from django.views.generic.detail import DetailView
 | 
			
		||||
from django.contrib.auth.decorators import login_required, permission_required
 | 
			
		||||
from django.db.models import Min, Sum
 | 
			
		||||
from django.http import HttpResponse
 | 
			
		||||
from django.utils.decorators import method_decorator
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class LocationListView(generic.ListView):
 | 
			
		||||
    template_name = 'billard/location_list.html'
 | 
			
		||||
class LocationIndexView(generic.ListView):
 | 
			
		||||
    template_name = 'billard/location_index.html'
 | 
			
		||||
    context_object_name = 'location_list'
 | 
			
		||||
 | 
			
		||||
    def get_queryset(self):
 | 
			
		||||
@@ -19,13 +20,26 @@ class LocationListView(generic.ListView):
 | 
			
		||||
        return Location.objects.filter(users__id=self.request.user.id).order_by('code')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class LocationDetailView(generic.ListView):
 | 
			
		||||
    template_name = 'billard/location_list.html'
 | 
			
		||||
    context_object_name = 'location_list'
 | 
			
		||||
class LocationDetailView(generic.DetailView):
 | 
			
		||||
    model = Location
 | 
			
		||||
    template_name = 'billard/location_detail.html'
 | 
			
		||||
 | 
			
		||||
    def dispatch(self, request, *args, **kwargs):
 | 
			
		||||
        if request.is_ajax():
 | 
			
		||||
            context = {
 | 
			
		||||
                'location': self.get_object(),
 | 
			
		||||
            }
 | 
			
		||||
            return render(request, template_name='billard/location_detail_ajax.html', context=context)
 | 
			
		||||
        return super(LocationDetailView, self).dispatch(request, *args, **kwargs)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@method_decorator(login_required, name='dispatch')
 | 
			
		||||
class AccountingView(generic.ListView):
 | 
			
		||||
    template_name = 'billard/accounting.html'
 | 
			
		||||
    context_object_name = 'accounting'
 | 
			
		||||
 | 
			
		||||
    def get_queryset(self):
 | 
			
		||||
        """Return the last five published questions."""
 | 
			
		||||
        return Location.objects.filter(users__id=self.request.user.id).order_by('code')
 | 
			
		||||
        return Accounting.objects.filter(billed=False).exclude(time_to__isnull=True)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# TODO OLD CODE, CLEAN UP
 | 
			
		||||
@@ -59,7 +73,7 @@ def accountmodalview(request):
 | 
			
		||||
    try:
 | 
			
		||||
        uuids = Client.objects.filter(report_user=request.user).values_list('uuid')
 | 
			
		||||
        account = Accounting.objects.filter(reporter_uuid__in=uuids).first
 | 
			
		||||
        #TODO: support multiple account objects
 | 
			
		||||
        # TODO: support multiple account objects
 | 
			
		||||
    except Client.DoesNotExist:
 | 
			
		||||
        account = None
 | 
			
		||||
    context = {
 | 
			
		||||
@@ -96,7 +110,7 @@ def accounting(request):
 | 
			
		||||
        if loc is None:
 | 
			
		||||
            loc = min_loc
 | 
			
		||||
        locations = Location.objects.filter(users__id=request.user.id).order_by('code')
 | 
			
		||||
        acc = Accounting.objects.filter(billed=False).exclude(time_to__isnull=True).\
 | 
			
		||||
        acc = Accounting.objects.filter(billed=False).exclude(time_to__isnull=True). \
 | 
			
		||||
            filter(desk__client__location_id=loc).order_by('-time_from')
 | 
			
		||||
        acc_sum = acc.aggregate(Sum('prize'))
 | 
			
		||||
        acc_ids = list()
 | 
			
		||||
@@ -164,18 +178,6 @@ def index(request):
 | 
			
		||||
        return resp
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#@login_required
 | 
			
		||||
#@permission_required('billard.change_accounting')
 | 
			
		||||
class AccountingView(generic.ListView):
 | 
			
		||||
    template_name = 'billard/accounting.html'
 | 
			
		||||
    context_object_name = 'accounting'
 | 
			
		||||
 | 
			
		||||
    def get_queryset(self):
 | 
			
		||||
        return Accounting.objects.filter(billed=False).exclude(time_to__isnull=True)\
 | 
			
		||||
            #.\
 | 
			
		||||
            #filter(desk__client__location_id=loc).order_by('-time_from')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def process_locationdata(request):
 | 
			
		||||
    process_location_data()
 | 
			
		||||
    return HttpResponse('DONE')
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user