diff --git a/srp/migrations/0002_srpuserrequest_srp_status_choices.py b/srp/migrations/0002_srpuserrequest_srp_status_choices.py new file mode 100644 index 00000000..d6e16371 --- /dev/null +++ b/srp/migrations/0002_srpuserrequest_srp_status_choices.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2017-01-18 20:21 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('srp', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='srpuserrequest', + name='srp_status', + field=models.CharField(choices=[('Pending', 'Pending'), ('Approved', 'Approved'), ('Rejected', 'Rejected')], default='Pending', max_length=8), + ), + ] diff --git a/srp/models.py b/srp/models.py index c57fa2ce..65b4836b 100755 --- a/srp/models.py +++ b/srp/models.py @@ -16,15 +16,29 @@ class SrpFleetMain(models.Model): fleet_srp_aar_link = models.CharField(max_length=254, default="") def __str__(self): - return self.fleet_name + " - SrpFleetMain" + return self.fleet_name + + @property + def total_cost(self): + return sum([int(r.srp_total_amount) for r in self.srpuserrequest_set.all()]) + + @property + def pending_requests(self): + return self.srpuserrequest_set.filter(srp_status='Pending').count() @python_2_unicode_compatible class SrpUserRequest(models.Model): + SRP_STATUS_CHOICES = ( + ('Pending', 'Pending'), + ('Approved', 'Approved'), + ('Rejected', 'Rejected'), + ) + killboard_link = models.CharField(max_length=254, default="") after_action_report_link = models.CharField(max_length=254, default="") additional_info = models.CharField(max_length=254, default="") - srp_status = models.CharField(max_length=254, default="") + srp_status = models.CharField(max_length=8, default="Pending", choices=SRP_STATUS_CHOICES) srp_total_amount = models.BigIntegerField(default=0) character = models.ForeignKey(EveCharacter) srp_fleet_main = models.ForeignKey(SrpFleetMain) @@ -33,4 +47,4 @@ class SrpUserRequest(models.Model): post_time = models.DateTimeField(default=timezone.now) def __str__(self): - return self.character.character_name + " - SrpUserRequest" + return self.character.character_name + ' SRP request for ' + self.srp_ship_name diff --git a/srp/views.py b/srp/views.py index adc4a4cc..2d286642 100755 --- a/srp/views.py +++ b/srp/views.py @@ -36,20 +36,9 @@ def random_string(string_length=10): @members_and_blues() def srp_management(request): logger.debug("srp_management called by user %s" % request.user) - totalcost = 0 - runningcost = 0 - price_pair = {} - for fleet_main in SrpFleetMain.objects.filter(fleet_srp_status="").iterator(): - for fleet_data in SrpUserRequest.objects.filter(srp_fleet_main=fleet_main).iterator(): - totalcost = totalcost + fleet_data.srp_total_amount - runningcost = runningcost + fleet_data.srp_total_amount - price_pair[fleet_main.id] = runningcost - logger.debug("Determined SRP fleet %s costs %s" % (fleet_main.id, runningcost)) - runningcost = 0 - logger.debug("Determined total outstanding SRP cost %s" % totalcost) - - context = {"srpfleets": SrpFleetMain.objects.filter(fleet_srp_status=""), "totalcost": totalcost, - "price_pair": price_pair} + fleets = SrpFleetMain.objects.filter(fleet_srp_status="") + totalcost = sum([int(fleet.total_cost) for fleet in fleets]) + context = {"srpfleets": fleets, "totalcost": totalcost} return render(request, 'registered/srpmanagement.html', context=context) @@ -57,19 +46,9 @@ def srp_management(request): @members_and_blues() def srp_management_all(request): logger.debug("srp_management_all called by user %s" % request.user) - totalcost = 0 - runningcost = 0 - price_pair = {} - for fleet_main in SrpFleetMain.objects.all().iterator(): - for fleet_data in SrpUserRequest.objects.filter(srp_fleet_main=fleet_main).iterator(): - totalcost = totalcost + fleet_data.srp_total_amount - runningcost = runningcost + fleet_data.srp_total_amount - price_pair[fleet_main.id] = runningcost - logger.debug("Determined SRP fleet %s costs %s" % (fleet_main.id, runningcost)) - runningcost = 0 - logger.debug("Determined all-time total SRP cost %s" % totalcost) - - context = {"srpfleets": SrpFleetMain.objects.all(), "totalcost": totalcost, "price_pair": price_pair} + fleets = SrpFleetMain.objects.all() + totalcost = sum([int(fleet.total_cost) for fleet in fleets]) + context = {"srpfleets": SrpFleetMain.objects.all(), "totalcost": totalcost} return render(request, 'registered/srpmanagement.html', context=context) @@ -79,14 +58,9 @@ def srp_fleet_view(request, fleet_id): logger.debug("srp_fleet_view called by user %s for fleet id %s" % (request.user, fleet_id)) if SrpFleetMain.objects.filter(id=fleet_id).exists(): fleet_main = SrpFleetMain.objects.get(id=fleet_id) - totalcost = 0 - for fleet_data in SrpUserRequest.objects.filter(srp_fleet_main=fleet_main).filter(srp_status="Approved"): - totalcost = totalcost + fleet_data.srp_total_amount - logger.debug("Determiend fleet id %s total cost %s" % (fleet_id, totalcost)) - context = {"fleet_id": fleet_id, "fleet_status": fleet_main.fleet_srp_status, - "srpfleetrequests": SrpUserRequest.objects.filter(srp_fleet_main=fleet_main), - "totalcost": totalcost} + "srpfleetrequests": fleet_main.srpuserrequest_set.all(), + "totalcost": fleet_main.total_cost} return render(request, 'registered/srpfleetdata.html', context=context) else: @@ -237,14 +211,12 @@ def srp_request_view(request, fleet_srp): character = EveManager.get_character_by_id(authinfo.main_char_id) srp_fleet_main = SrpFleetMain.objects.get(fleet_srp_code=fleet_srp) post_time = timezone.now() - srp_status = "Pending" srp_request = SrpUserRequest() srp_request.killboard_link = form.cleaned_data['killboard_link'] srp_request.additional_info = form.cleaned_data['additional_info'] srp_request.character = character srp_request.srp_fleet_main = srp_fleet_main - srp_request.srp_status = srp_status try: srp_kill_link = srpManager.get_kill_id(srp_request.killboard_link) diff --git a/stock/templates/registered/srpfleetdata.html b/stock/templates/registered/srpfleetdata.html index aa1ac88a..dfbb6a6a 100755 --- a/stock/templates/registered/srpfleetdata.html +++ b/stock/templates/registered/srpfleetdata.html @@ -51,14 +51,10 @@ {% for srpfleetrequest in srpfleetrequests %}