Merge branch 'feature/#3_accounting_dialog' into develop
# Conflicts: # billard/models.py # billard/views.py
This commit is contained in:
		@@ -27,8 +27,8 @@ class LocationAdmin(admin.ModelAdmin):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@admin.register(Client)
 | 
					@admin.register(Client)
 | 
				
			||||||
class ClientAdmin(admin.ModelAdmin):
 | 
					class ClientAdmin(admin.ModelAdmin):
 | 
				
			||||||
    list_display = ('uuid', 'location')
 | 
					    list_display = ('uuid', 'location', 'report_user')
 | 
				
			||||||
    fields = ['location', 'uuid']
 | 
					    fields = ['location', 'uuid', 'report_user']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@admin.register(LocationData)
 | 
					@admin.register(LocationData)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										20
									
								
								billard/migrations/0017_accounting_reporter_uuid.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								billard/migrations/0017_accounting_reporter_uuid.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					# -*- coding: utf-8 -*-
 | 
				
			||||||
 | 
					# Generated by Django 1.10.5 on 2017-02-27 07:57
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.db import migrations, models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Migration(migrations.Migration):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dependencies = [
 | 
				
			||||||
 | 
					        ('billard', '0016_auto_20170225_1822'),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    operations = [
 | 
				
			||||||
 | 
					        migrations.AddField(
 | 
				
			||||||
 | 
					            model_name='accounting',
 | 
				
			||||||
 | 
					            name='reporter_uuid',
 | 
				
			||||||
 | 
					            field=models.UUIDField(blank=True, null=True, verbose_name='Reporter UUID'),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
							
								
								
									
										33
									
								
								billard/migrations/0018_auto_20170302_2058.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								billard/migrations/0018_auto_20170302_2058.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					# -*- coding: utf-8 -*-
 | 
				
			||||||
 | 
					# Generated by Django 1.10.5 on 2017-03-02 20:58
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.conf import settings
 | 
				
			||||||
 | 
					from django.db import migrations, models
 | 
				
			||||||
 | 
					import django.db.models.deletion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Migration(migrations.Migration):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dependencies = [
 | 
				
			||||||
 | 
					        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
 | 
				
			||||||
 | 
					        ('billard', '0017_accounting_reporter_uuid'),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    operations = [
 | 
				
			||||||
 | 
					        migrations.AddField(
 | 
				
			||||||
 | 
					            model_name='accounting',
 | 
				
			||||||
 | 
					            name='prize_hh',
 | 
				
			||||||
 | 
					            field=models.DecimalField(blank=True, decimal_places=2, max_digits=5, null=True, verbose_name='Preis Happy Hour'),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.AddField(
 | 
				
			||||||
 | 
					            model_name='accounting',
 | 
				
			||||||
 | 
					            name='prize_normal',
 | 
				
			||||||
 | 
					            field=models.DecimalField(blank=True, decimal_places=2, max_digits=5, null=True, verbose_name='Preis Normalzeit'),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.AddField(
 | 
				
			||||||
 | 
					            model_name='client',
 | 
				
			||||||
 | 
					            name='report_user',
 | 
				
			||||||
 | 
					            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='reporting_clients', to=settings.AUTH_USER_MODEL, verbose_name='Reporting Benutzer'),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
@@ -51,6 +51,7 @@ class Location(models.Model):
 | 
				
			|||||||
class Client(models.Model):
 | 
					class Client(models.Model):
 | 
				
			||||||
    uuid = models.UUIDField(unique=True, default=uuid.uuid4, verbose_name="Identifier")
 | 
					    uuid = models.UUIDField(unique=True, default=uuid.uuid4, verbose_name="Identifier")
 | 
				
			||||||
    location = models.ForeignKey(Location, verbose_name="Standort")
 | 
					    location = models.ForeignKey(Location, verbose_name="Standort")
 | 
				
			||||||
 | 
					    report_user = models.ForeignKey(User, blank=True, null=True, verbose_name="Reporting Benutzer", related_name='reporting_clients')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __str__(self):
 | 
					    def __str__(self):
 | 
				
			||||||
        return '{}, {}'.format(self.location.name, self.uuid)
 | 
					        return '{}, {}'.format(self.location.name, self.uuid)
 | 
				
			||||||
@@ -69,24 +70,6 @@ class Desk(models.Model):
 | 
				
			|||||||
    prize_hh = models.DecimalField(max_digits=5, decimal_places=2, blank=True, null=True,
 | 
					    prize_hh = models.DecimalField(max_digits=5, decimal_places=2, blank=True, null=True,
 | 
				
			||||||
                                   verbose_name="Preis Happy Hour")
 | 
					                                   verbose_name="Preis Happy Hour")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def accounting_for(self):
 | 
					 | 
				
			||||||
        t = Accounting.objects.filter(client=self.client, desk_no=self.desk_no)[:3][::-1]
 | 
					 | 
				
			||||||
        client = self.client
 | 
					 | 
				
			||||||
        location = client.location
 | 
					 | 
				
			||||||
        if t.__len__() > 0:
 | 
					 | 
				
			||||||
            a = t[t.__len__() - 1]
 | 
					 | 
				
			||||||
            if a.time_to is None:
 | 
					 | 
				
			||||||
                prize = utils.get_prize_for(
 | 
					 | 
				
			||||||
                    start=a.time_from,
 | 
					 | 
				
			||||||
                    end=datetime.now(timezone.utc),
 | 
					 | 
				
			||||||
                    pph=self.prize,
 | 
					 | 
				
			||||||
                    hh_start=location.happy_hour_start,
 | 
					 | 
				
			||||||
                    hh_end=location.happy_hour_end,
 | 
					 | 
				
			||||||
                    pphh=self.prize_hh,
 | 
					 | 
				
			||||||
                )
 | 
					 | 
				
			||||||
                if prize != a.prize:
 | 
					 | 
				
			||||||
                    a.prize = prize
 | 
					 | 
				
			||||||
        return t
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __str__(self):
 | 
					    def __str__(self):
 | 
				
			||||||
        return '{}, {}'.format(self.client.uuid, self.name)
 | 
					        return '{}, {}'.format(self.client.uuid, self.name)
 | 
				
			||||||
@@ -102,6 +85,9 @@ class Accounting(models.Model):
 | 
				
			|||||||
    time_to = models.DateTimeField(blank=True, null=True, verbose_name="Ende")
 | 
					    time_to = models.DateTimeField(blank=True, null=True, verbose_name="Ende")
 | 
				
			||||||
    prize = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True, verbose_name="Preis")
 | 
					    prize = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True, verbose_name="Preis")
 | 
				
			||||||
    billed = models.BooleanField(default=False, verbose_name="Abgerechnet")
 | 
					    billed = models.BooleanField(default=False, verbose_name="Abgerechnet")
 | 
				
			||||||
 | 
					    reporter_uuid = models.UUIDField(blank=True, null=True, verbose_name='Reporter UUID')
 | 
				
			||||||
 | 
					    prize_normal = models.DecimalField(max_digits=5, decimal_places=2, blank=True, null=True, verbose_name="Preis Normalzeit")
 | 
				
			||||||
 | 
					    prize_hh = models.DecimalField(max_digits=5, decimal_places=2, blank=True, null=True, verbose_name="Preis Happy Hour")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __str__(self):
 | 
					    def __str__(self):
 | 
				
			||||||
        return '{}: {} -> {}, {}, {}'.format(self.desk, self.time_from, self.time_to, self.prize, self.billed)
 | 
					        return '{}: {} -> {}, {}, {}'.format(self.desk, self.time_from, self.time_to, self.prize, self.billed)
 | 
				
			||||||
@@ -116,5 +102,3 @@ class Accounting(models.Model):
 | 
				
			|||||||
def test(sender, **kwargs):
 | 
					def test(sender, **kwargs):
 | 
				
			||||||
    from .tasks import process_location_data
 | 
					    from .tasks import process_location_data
 | 
				
			||||||
    process_location_data.delay()
 | 
					    process_location_data.delay()
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
from billard.models import *
 | 
					from billard.models import LocationData
 | 
				
			||||||
from rest_framework import serializers
 | 
					from rest_framework import serializers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										30
									
								
								billard/templates/billard/accountmodal.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								billard/templates/billard/accountmodal.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					{% if account %}
 | 
				
			||||||
 | 
					<div id="accountsmodal" class="modal" tabindex="-1" role="dialog">
 | 
				
			||||||
 | 
					  <div class="modal-dialog" role="document">
 | 
				
			||||||
 | 
					    <div class="modal-content">
 | 
				
			||||||
 | 
					      <div class="modal-header">
 | 
				
			||||||
 | 
					        <h4 class="modal-title">Abrechnung: ({{ account.desk.desk_no }}) {{ account.desk.name }} </h4>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					      <div class="modal-body">
 | 
				
			||||||
 | 
					        <table class="table">
 | 
				
			||||||
 | 
					          <tr>
 | 
				
			||||||
 | 
					            <td>Normalpreis:</td>
 | 
				
			||||||
 | 
					            <td>{{ account.prize_normal }}</td>
 | 
				
			||||||
 | 
					          </tr>
 | 
				
			||||||
 | 
					          <tr>
 | 
				
			||||||
 | 
					            <td>Preis Happy Hour:</td>
 | 
				
			||||||
 | 
					            <td>{{ account.prize_hh }}</td>
 | 
				
			||||||
 | 
					          </tr>
 | 
				
			||||||
 | 
					          <tr>
 | 
				
			||||||
 | 
					            <td>Gesamt:</td>
 | 
				
			||||||
 | 
					            <td>{{ account.prize }}</td>
 | 
				
			||||||
 | 
					          </tr>
 | 
				
			||||||
 | 
					        </table>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					      <div class="modal-footer">
 | 
				
			||||||
 | 
					        <a class="btn btn-default btn-primary" href="{% url 'accountmodalconfirm' account.pk %}">Schliessen</a>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </div><!-- /.modal-content -->
 | 
				
			||||||
 | 
					  </div><!-- /.modal-dialog -->
 | 
				
			||||||
 | 
					</div><!-- /.modal -->
 | 
				
			||||||
 | 
					{% endif %}
 | 
				
			||||||
@@ -19,16 +19,25 @@
 | 
				
			|||||||
    <div id="desk_data">
 | 
					    <div id="desk_data">
 | 
				
			||||||
{% include 'billard/index_ajax.html' %}
 | 
					{% include 'billard/index_ajax.html' %}
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
 | 
					    <div id="modal-wrapper">
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
{% endblock %}
 | 
					{% endblock %}
 | 
				
			||||||
{% block js %}
 | 
					{% block js %}
 | 
				
			||||||
    <script type="text/javascript">
 | 
					    <script type="text/javascript">
 | 
				
			||||||
 | 
					    var interval;
 | 
				
			||||||
$(document).ready(function() {
 | 
					$(document).ready(function() {
 | 
				
			||||||
    $.ajaxSetup({ cache: false });
 | 
					    $.ajaxSetup({ cache: false });
 | 
				
			||||||
    window.setInterval(refresh_page, 1000);
 | 
					    interval = window.setInterval(refresh_page, 1000);
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function refresh_page() {
 | 
					function refresh_page() {
 | 
				
			||||||
    $('#desk_data').load('#')
 | 
					    $('#desk_data').load('#');
 | 
				
			||||||
 | 
					    $('#modal-wrapper').load('{% url 'accountmodal' %}', function() {
 | 
				
			||||||
 | 
					        if ( $('#accountsmodal').length ) {
 | 
				
			||||||
 | 
					            window.clearInterval(interval);
 | 
				
			||||||
 | 
					            $('#accountsmodal').modal('show');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
{% endblock %}
 | 
					{% endblock %}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,7 @@ def display_client(client, desk_no):
 | 
				
			|||||||
        a = acc[-1]
 | 
					        a = acc[-1]
 | 
				
			||||||
        if a.time_to is None:
 | 
					        if a.time_to is None:
 | 
				
			||||||
            alert = 'alert-info'
 | 
					            alert = 'alert-info'
 | 
				
			||||||
            prize = utils.get_prize_for(
 | 
					            prize, u1, u2 = utils.get_prize_for(
 | 
				
			||||||
                start=a.time_from,
 | 
					                start=a.time_from,
 | 
				
			||||||
                end=datetime.now(),
 | 
					                end=datetime.now(),
 | 
				
			||||||
                pph=desk.prize,
 | 
					                pph=desk.prize,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,5 +9,7 @@ urlpatterns = [
 | 
				
			|||||||
    url(r'^$', views.index, name='carom_index'),
 | 
					    url(r'^$', views.index, name='carom_index'),
 | 
				
			||||||
    url(r'^(?P<pk>[0-9]+)/$', views.LocationDataDetailView.as_view(), name='detail'),
 | 
					    url(r'^(?P<pk>[0-9]+)/$', views.LocationDataDetailView.as_view(), name='detail'),
 | 
				
			||||||
    url(r'api/v1/', include(router.urls)),
 | 
					    url(r'api/v1/', include(router.urls)),
 | 
				
			||||||
    url(r'process_locationdata', views.process_locationdata, name='process_locationdata')
 | 
					    url(r'process_locationdata', views.process_locationdata, name='process_locationdata'),
 | 
				
			||||||
 | 
					    url(r'accountmodal$', views.accountmodalview, name='accountmodal'),
 | 
				
			||||||
 | 
					    url(r'accoutmodal/confirm/(?P<pk>[0-9]+)$', views.accountmodalconfirmview, name="accountmodalconfirm")
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,6 +16,8 @@ def get_prize_for(start, end, pph=0, hh_start=None, hh_end=None, pphh=0):
 | 
				
			|||||||
    if end <= start:
 | 
					    if end <= start:
 | 
				
			||||||
        raise ValueError('end date must be after start date')
 | 
					        raise ValueError('end date must be after start date')
 | 
				
			||||||
    prize = 0
 | 
					    prize = 0
 | 
				
			||||||
 | 
					    prize_normal = 0
 | 
				
			||||||
 | 
					    prize_hh = 0
 | 
				
			||||||
    if hh_start is not None and hh_end is not None and pphh is not None:
 | 
					    if hh_start is not None and hh_end is not None and pphh is not None:
 | 
				
			||||||
        d = start.date()
 | 
					        d = start.date()
 | 
				
			||||||
        t = start.time()
 | 
					        t = start.time()
 | 
				
			||||||
@@ -24,35 +26,46 @@ def get_prize_for(start, end, pph=0, hh_start=None, hh_end=None, pphh=0):
 | 
				
			|||||||
        while True:
 | 
					        while True:
 | 
				
			||||||
            if t < hh_start:
 | 
					            if t < hh_start:
 | 
				
			||||||
                if end_time < hh_start and d == end_date:
 | 
					                if end_time < hh_start and d == end_date:
 | 
				
			||||||
                    prize += calculate_prize_for(start=t, end=end_time, pph=pph)
 | 
					                    p = calculate_prize_for(start=t, end=end_time, pph=pph)
 | 
				
			||||||
 | 
					                    prize += p
 | 
				
			||||||
 | 
					                    prize_normal += p
 | 
				
			||||||
                    break
 | 
					                    break
 | 
				
			||||||
                else:
 | 
					                else:
 | 
				
			||||||
                    prize += calculate_prize_for(start=t, end=hh_start, pph=pph)
 | 
					                    p += calculate_prize_for(start=t, end=hh_start, pph=pph)
 | 
				
			||||||
 | 
					                    prize += p
 | 
				
			||||||
 | 
					                    prize_normal += p
 | 
				
			||||||
                    t = hh_start
 | 
					                    t = hh_start
 | 
				
			||||||
            elif hh_start <= t < hh_end:
 | 
					            elif hh_start <= t < hh_end:
 | 
				
			||||||
                if end_time < hh_end and d == end_date:
 | 
					                if end_time < hh_end and d == end_date:
 | 
				
			||||||
                    prize += calculate_prize_for(start=t, end=end_time, pph=pphh)
 | 
					                    p += calculate_prize_for(start=t, end=end_time, pph=pphh)
 | 
				
			||||||
 | 
					                    prize += p
 | 
				
			||||||
 | 
					                    prize_hh += p
 | 
				
			||||||
                    break
 | 
					                    break
 | 
				
			||||||
                else:
 | 
					                else:
 | 
				
			||||||
                    prize += calculate_prize_for(start=t, end=hh_end, pph=pphh)
 | 
					                    p += calculate_prize_for(start=t, end=hh_end, pph=pphh)
 | 
				
			||||||
 | 
					                    prize += p
 | 
				
			||||||
 | 
					                    prize_hh += p
 | 
				
			||||||
                    t = hh_end
 | 
					                    t = hh_end
 | 
				
			||||||
            else:
 | 
					            else:
 | 
				
			||||||
                if d == end_date:
 | 
					                if d == end_date:
 | 
				
			||||||
                    prize += calculate_prize_for(start=t, end=end_time, pph=pph)
 | 
					                    p += calculate_prize_for(start=t, end=end_time, pph=pph)
 | 
				
			||||||
 | 
					                    prize += p
 | 
				
			||||||
 | 
					                    prize_normal += p
 | 
				
			||||||
                    break
 | 
					                    break
 | 
				
			||||||
                else:
 | 
					                else:
 | 
				
			||||||
                    prize += calculate_prize_for(start=t, end=datetime.strptime('23:59:59', '%H:%M:%S').time(), pph=pph)
 | 
					                    p += calculate_prize_for(start=t, end=datetime.strptime('23:59:59', '%H:%M:%S').time(), pph=pph)
 | 
				
			||||||
 | 
					                    prize += p
 | 
				
			||||||
 | 
					                    prize_normal += p
 | 
				
			||||||
                    t = datetime.strptime('00:00:00', '%H:%M:%S').time()
 | 
					                    t = datetime.strptime('00:00:00', '%H:%M:%S').time()
 | 
				
			||||||
                    d = (datetime.combine(d, t) + timedelta(days=1)).date()
 | 
					                    d = (datetime.combine(d, t) + timedelta(days=1)).date()
 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
        prize = calculate_prize_for(start=start, end=end, pph=pph)
 | 
					        prize = calculate_prize_for(start=start, end=end, pph=pph)
 | 
				
			||||||
    return prize
 | 
					    return prize, prize_normal, prize_hh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def calculate_prize_for(start, end, pph=0):
 | 
					def calculate_prize_for(start, end, pph=0):
 | 
				
			||||||
    pps = pph / 3600
 | 
					    pps = pph / 3600
 | 
				
			||||||
    d = date.today()
 | 
					    d = date.today()
 | 
				
			||||||
    seconds = 0
 | 
					 | 
				
			||||||
    if isinstance(start, datetime):
 | 
					    if isinstance(start, datetime):
 | 
				
			||||||
        seconds = (end - start).seconds
 | 
					        seconds = (end - start).seconds
 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,6 +23,7 @@ class IndexView(generic.ListView):
 | 
				
			|||||||
            return ('billard/locationdata_list_ajax.html',)
 | 
					            return ('billard/locationdata_list_ajax.html',)
 | 
				
			||||||
        return super().get_template_names()
 | 
					        return super().get_template_names()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class LocationDataDetailView(DetailView):
 | 
					class LocationDataDetailView(DetailView):
 | 
				
			||||||
    model = LocationData
 | 
					    model = LocationData
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -32,6 +33,26 @@ class LocationDataDetailView(DetailView):
 | 
				
			|||||||
        return super().get_template_names()
 | 
					        return super().get_template_names()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@login_required
 | 
				
			||||||
 | 
					def accountmodalview(request):
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        account = Accounting.objects.filter(reporter_uuid=Client.objects.get(report_user=request.user).uuid).first
 | 
				
			||||||
 | 
					    except Client.DoesNotExist:
 | 
				
			||||||
 | 
					        account = None
 | 
				
			||||||
 | 
					    context = {
 | 
				
			||||||
 | 
					        'account': account
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return render(request, 'billard/accountmodal.html', context=context)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@login_required
 | 
				
			||||||
 | 
					def accountmodalconfirmview(request, pk):
 | 
				
			||||||
 | 
					    account = Accounting.objects.get(pk=pk)
 | 
				
			||||||
 | 
					    account.reporter_uuid = None
 | 
				
			||||||
 | 
					    account.save()
 | 
				
			||||||
 | 
					    return redirect('carom_index')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@login_required
 | 
					@login_required
 | 
				
			||||||
def index(request):
 | 
					def index(request):
 | 
				
			||||||
    if request.method == 'GET':
 | 
					    if request.method == 'GET':
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
celery==4.0.2
 | 
					celery==4.0.2
 | 
				
			||||||
Django==1.10.5
 | 
					Django==1.10.5
 | 
				
			||||||
django-crispy-forms==1.6.1
 | 
					django-crispy-forms==1.6.1
 | 
				
			||||||
django-extensions==1.7.6
 | 
					django-extensions==1.7.7
 | 
				
			||||||
djangorestframework==3.5.4
 | 
					djangorestframework==3.5.4
 | 
				
			||||||
requests==2.13.0
 | 
					requests==2.13.0
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user