mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2026-02-12 01:56:25 +01:00
Restructure Alliance Auth package (#867)
* Refactor allianceauth into its own package * Add setup * Add missing default_app_config declarations * Fix timerboard namespacing * Remove obsolete future imports * Remove py2 mock support * Remove six * Add experimental 3.7 support and multiple Dj versions * Remove python_2_unicode_compatible * Add navhelper as local package * Update requirements
This commit is contained in:
2
allianceauth/srp/__init__.py
Executable file
2
allianceauth/srp/__init__.py
Executable file
@@ -0,0 +1,2 @@
|
||||
default_app_config = 'allianceauth.srp.apps.SRPConfig'
|
||||
|
||||
7
allianceauth/srp/admin.py
Executable file
7
allianceauth/srp/admin.py
Executable file
@@ -0,0 +1,7 @@
|
||||
from django.contrib import admin
|
||||
|
||||
from allianceauth.srp.models import SrpFleetMain
|
||||
from allianceauth.srp.models import SrpUserRequest
|
||||
|
||||
admin.site.register(SrpFleetMain)
|
||||
admin.site.register(SrpUserRequest)
|
||||
6
allianceauth/srp/apps.py
Normal file
6
allianceauth/srp/apps.py
Normal file
@@ -0,0 +1,6 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class SRPConfig(AppConfig):
|
||||
name = 'allianceauth.srp'
|
||||
label = 'srp'
|
||||
27
allianceauth/srp/auth_hooks.py
Normal file
27
allianceauth/srp/auth_hooks.py
Normal file
@@ -0,0 +1,27 @@
|
||||
from allianceauth.services.hooks import MenuItemHook, UrlHook
|
||||
|
||||
from allianceauth import hooks
|
||||
from . import urls
|
||||
|
||||
|
||||
class SrpMenu(MenuItemHook):
|
||||
def __init__(self):
|
||||
MenuItemHook.__init__(self, 'Ship Replacement',
|
||||
'fa fa-money fa-fw grayiconecolor',
|
||||
'srp:management',
|
||||
navactive=['srp:'])
|
||||
|
||||
def render(self, request):
|
||||
if request.user.has_perm('srp.access_srp'):
|
||||
return MenuItemHook.render(self, request)
|
||||
return ''
|
||||
|
||||
|
||||
@hooks.register('menu_item_hook')
|
||||
def register_menu():
|
||||
return SrpMenu()
|
||||
|
||||
|
||||
@hooks.register('url_hook')
|
||||
def register_url():
|
||||
return UrlHook(urls, 'srp', r'^srp/')
|
||||
28
allianceauth/srp/form.py
Executable file
28
allianceauth/srp/form.py
Executable file
@@ -0,0 +1,28 @@
|
||||
from django import forms
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
|
||||
class SrpFleetMainForm(forms.Form):
|
||||
fleet_name = forms.CharField(required=True, label=_("Fleet Name"))
|
||||
fleet_time = forms.DateTimeField(required=True, label=_("Fleet Time"))
|
||||
fleet_doctrine = forms.CharField(required=True, label=_("Fleet Doctrine"))
|
||||
|
||||
|
||||
class SrpFleetUserRequestForm(forms.Form):
|
||||
additional_info = forms.CharField(required=False, max_length=25, label=_("Additional Info"))
|
||||
killboard_link = forms.CharField(
|
||||
label=_("zKillboard Link"),
|
||||
max_length=255,
|
||||
required=True
|
||||
|
||||
)
|
||||
|
||||
def clean_killboard_link(self):
|
||||
data = self.cleaned_data['killboard_link']
|
||||
if "zkillboard.com" not in data:
|
||||
raise forms.ValidationError(_("Invalid Link. Please use zKillboard.com"))
|
||||
return data
|
||||
|
||||
|
||||
class SrpFleetMainUpdateForm(forms.Form):
|
||||
fleet_aar_link = forms.CharField(required=True, label=_("After Action Report Link"))
|
||||
36
allianceauth/srp/managers.py
Normal file
36
allianceauth/srp/managers.py
Normal file
@@ -0,0 +1,36 @@
|
||||
from django.conf import settings
|
||||
|
||||
import requests
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class SRPManager:
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@staticmethod
|
||||
def get_kill_id(killboard_link):
|
||||
num_set = '0123456789'
|
||||
kill_id = ''.join([c for c in killboard_link if c in num_set])
|
||||
return kill_id
|
||||
|
||||
@staticmethod
|
||||
def get_kill_data(kill_id):
|
||||
url = ("https://www.zkillboard.com/api/killID/%s/" % kill_id)
|
||||
headers = {
|
||||
'User-Agent': "%s Alliance Auth" % settings.DOMAIN,
|
||||
'Content-Type': 'application/json',
|
||||
}
|
||||
r = requests.get(url, headers=headers)
|
||||
result = r.json()[0]
|
||||
if result:
|
||||
ship_type = result['victim']['shipTypeID']
|
||||
logger.debug("Ship type for kill ID %s is determined to be %s" % (kill_id, ship_type))
|
||||
ship_value = result['zkb']['totalValue']
|
||||
logger.debug("total loss value for kill id %s is %s" % (kill_id, ship_value))
|
||||
victim_name = result['victim']['characterName']
|
||||
return ship_type, ship_value, victim_name
|
||||
else:
|
||||
raise ValueError("Invalid Kill ID")
|
||||
48
allianceauth/srp/migrations/0001_initial.py
Normal file
48
allianceauth/srp/migrations/0001_initial.py
Normal file
@@ -0,0 +1,48 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.10.1 on 2016-09-05 21:40
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('eveonline', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='SrpFleetMain',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('fleet_name', models.CharField(default=b'', max_length=254)),
|
||||
('fleet_doctrine', models.CharField(default=b'', max_length=254)),
|
||||
('fleet_time', models.DateTimeField()),
|
||||
('fleet_srp_code', models.CharField(default=b'', max_length=254)),
|
||||
('fleet_srp_status', models.CharField(default=b'', max_length=254)),
|
||||
('fleet_srp_aar_link', models.CharField(default=b'', max_length=254)),
|
||||
('fleet_commander', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='eveonline.EveCharacter')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='SrpUserRequest',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('killboard_link', models.CharField(default=b'', max_length=254)),
|
||||
('after_action_report_link', models.CharField(default=b'', max_length=254)),
|
||||
('additional_info', models.CharField(default=b'', max_length=254)),
|
||||
('srp_status', models.CharField(default=b'', max_length=254)),
|
||||
('srp_total_amount', models.BigIntegerField(default=0)),
|
||||
('kb_total_loss', models.BigIntegerField(default=0)),
|
||||
('srp_ship_name', models.CharField(default=b'', max_length=254)),
|
||||
('post_time', models.DateTimeField(default=django.utils.timezone.now)),
|
||||
('character', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='eveonline.EveCharacter')),
|
||||
('srp_fleet_main', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='srp.SrpFleetMain')),
|
||||
],
|
||||
),
|
||||
]
|
||||
@@ -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),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,64 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.10.5 on 2017-03-22 23:35
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('srp', '0002_srpuserrequest_srp_status_choices'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='srpfleetmain',
|
||||
options={'permissions': (('access_srp', 'Can access SRP module'),)},
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='srpfleetmain',
|
||||
name='fleet_doctrine',
|
||||
field=models.CharField(default='', max_length=254),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='srpfleetmain',
|
||||
name='fleet_name',
|
||||
field=models.CharField(default='', max_length=254),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='srpfleetmain',
|
||||
name='fleet_srp_aar_link',
|
||||
field=models.CharField(default='', max_length=254),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='srpfleetmain',
|
||||
name='fleet_srp_code',
|
||||
field=models.CharField(default='', max_length=254),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='srpfleetmain',
|
||||
name='fleet_srp_status',
|
||||
field=models.CharField(default='', max_length=254),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='srpuserrequest',
|
||||
name='additional_info',
|
||||
field=models.CharField(default='', max_length=254),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='srpuserrequest',
|
||||
name='after_action_report_link',
|
||||
field=models.CharField(default='', max_length=254),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='srpuserrequest',
|
||||
name='killboard_link',
|
||||
field=models.CharField(default='', max_length=254),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='srpuserrequest',
|
||||
name='srp_ship_name',
|
||||
field=models.CharField(default='', max_length=254),
|
||||
),
|
||||
]
|
||||
0
allianceauth/srp/migrations/__init__.py
Normal file
0
allianceauth/srp/migrations/__init__.py
Normal file
50
allianceauth/srp/models.py
Executable file
50
allianceauth/srp/models.py
Executable file
@@ -0,0 +1,50 @@
|
||||
from django.db import models
|
||||
from django.utils import timezone
|
||||
|
||||
from allianceauth.eveonline.models import EveCharacter
|
||||
|
||||
|
||||
class SrpFleetMain(models.Model):
|
||||
fleet_name = models.CharField(max_length=254, default="")
|
||||
fleet_doctrine = models.CharField(max_length=254, default="")
|
||||
fleet_time = models.DateTimeField()
|
||||
fleet_srp_code = models.CharField(max_length=254, default="")
|
||||
fleet_srp_status = models.CharField(max_length=254, default="")
|
||||
fleet_commander = models.ForeignKey(EveCharacter)
|
||||
fleet_srp_aar_link = models.CharField(max_length=254, default="")
|
||||
|
||||
def __str__(self):
|
||||
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()
|
||||
|
||||
class Meta:
|
||||
permissions = (('access_srp', 'Can access SRP module'),)
|
||||
|
||||
|
||||
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=8, default="Pending", choices=SRP_STATUS_CHOICES)
|
||||
srp_total_amount = models.BigIntegerField(default=0)
|
||||
character = models.ForeignKey(EveCharacter)
|
||||
srp_fleet_main = models.ForeignKey(SrpFleetMain)
|
||||
kb_total_loss = models.BigIntegerField(default=0)
|
||||
srp_ship_name = models.CharField(max_length=254, default="")
|
||||
post_time = models.DateTimeField(default=timezone.now)
|
||||
|
||||
def __str__(self):
|
||||
return self.character.character_name + ' SRP request for ' + self.srp_ship_name
|
||||
55
allianceauth/srp/templates/srp/add.html
Normal file
55
allianceauth/srp/templates/srp/add.html
Normal file
@@ -0,0 +1,55 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %}Alliance Auth - SRP Fleet Create{% endblock %}
|
||||
|
||||
{% block page_title %}{% trans "SRP Fleet Create" %}{% endblock page_title %}
|
||||
{% block extra_css %}
|
||||
{% include 'bundles/jquery-datetimepicker-css.html' %}
|
||||
{% endblock extra_css %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header text-center">{% trans "Create SRP Fleet" %}</h1>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="col-md-4 col-md-offset-4">
|
||||
<div class="row">
|
||||
{% if completed == False %}
|
||||
<form class="form-signin" role="form" action="" method="POST">
|
||||
{% csrf_token %}
|
||||
{{ form|bootstrap }}
|
||||
<br/>
|
||||
<button class="btn btn-lg btn-primary btn-block" type="submit">{% trans "Create SRP Fleet" %}</button>
|
||||
</form>
|
||||
{% else %}
|
||||
<div class="alert alert-info" role="alert">{% blocktrans %}Give this link to the line members{% endblocktrans %}.</div>
|
||||
<div class="alert alert-info" role="alert">
|
||||
http://{{ request.get_host }}{% url 'srp:request' completed_srp_code %}</div>
|
||||
<div class="text-center">
|
||||
<a href="{% url 'srp:management' %}" class="btn btn-primary btn-lg">{% trans "Continue" %}</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{% endblock content %}
|
||||
|
||||
{% block extra_javascript %}
|
||||
{% include 'bundles/jquery-datetimepicker-js.html' %}
|
||||
{% endblock %}
|
||||
|
||||
{% block extra_script %}
|
||||
|
||||
$('#id_fleet_time').datetimepicker({
|
||||
maskInput: true,
|
||||
format: 'Y-m-d H:i'
|
||||
});
|
||||
|
||||
{% endblock extra_script %}
|
||||
208
allianceauth/srp/templates/srp/data.html
Normal file
208
allianceauth/srp/templates/srp/data.html
Normal file
@@ -0,0 +1,208 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
||||
{% load humanize %}
|
||||
{% block title %}Alliance Auth{% endblock %}
|
||||
|
||||
{% block page_title %}Srp Fleet Data{% endblock page_title %}
|
||||
{% block extra_css %}
|
||||
{% include 'bundles/x-editable.css.html' %}
|
||||
<link href="{% static 'css/checkbox.css' %}" rel="stylesheet" type="text/css">
|
||||
<style>
|
||||
.radio label, .checkbox label {
|
||||
padding-left: 10px;
|
||||
}
|
||||
.editable {
|
||||
width:150px;
|
||||
text-align: center;
|
||||
}
|
||||
.editableform .form-control {
|
||||
width: 95%;
|
||||
text-align: center;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.editable-input {
|
||||
width: 95%;
|
||||
}
|
||||
.radio, .checkbox {
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
.editable-error-block {
|
||||
white-space: nowrap;
|
||||
}
|
||||
.editable-click, a.editable-click, a.editable-click:hover {
|
||||
border-bottom: none;
|
||||
}
|
||||
.tooltip-inner {
|
||||
white-space:pre;
|
||||
max-width: none;
|
||||
}
|
||||
</style>
|
||||
{% endblock extra_css %}
|
||||
|
||||
{% block content %}
|
||||
<div class="col-lg-12">
|
||||
<div class="row">
|
||||
<h1 class="page-header text-center">{% trans "SRP Fleet Data" %}
|
||||
<div class="text-right">
|
||||
{% if perms.auth.srp_management %}
|
||||
{% if fleet_status == "Completed" %}
|
||||
<a href="{% url 'srp:mark_uncompleted' fleet_id %}" class="btn btn-warning">
|
||||
{% trans "Mark Incomplete" %}
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="{% url 'srp:mark_completed' fleet_id %}" class="btn btn-success">
|
||||
{% trans "Mark Completed" %}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</h1>
|
||||
|
||||
{% if srpfleetrequests %}
|
||||
<form method="POST">
|
||||
{% csrf_token %}
|
||||
<div class="alert alert-info" role="alert">
|
||||
<div class="text-right">
|
||||
<b><span style="padding-right:2.5em">{% trans "Total Losses:" %} {{ srpfleetrequests.count }}</span></b>
|
||||
<b><span style="padding-right:2.5em">{% trans "Total ISK Cost:" %} {{ totalcost | intcomma }}</span></b>
|
||||
{% if perms.auth.srp_management %}
|
||||
<button type="submit" title="Approve" class="btn btn-success" formaction="{% url 'srp:request_approve' %}">
|
||||
<span class="glyphicon glyphicon-ok"></span>
|
||||
</button>
|
||||
<button type="submit" title="Reject" class="btn btn-warning" formaction="{% url 'srp:request_reject' %}">
|
||||
<span class="glyphicon glyphicon-remove"></span>
|
||||
</button>
|
||||
<button type="submit" title="Remove" onclick="return confirm('{% trans "Are you sure you want to delete SRP requests?" %}')" class="btn btn-danger" formaction="{% url 'srp:request_remove' %}">
|
||||
<span class="glyphicon glyphicon-trash"></span>
|
||||
</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class="table">
|
||||
<tr>
|
||||
<th class="text-center">{% trans "Pilot Name" %}</th>
|
||||
<th class="text-center">{% trans "Killboard Link" %}</th>
|
||||
<th class="text-center">{% trans "Additional Info" %}</th>
|
||||
<th class="text-center">{% trans "Ship Type" %}</th>
|
||||
<th class="text-center">{% trans "Killboard Loss Amt" %}</th>
|
||||
<th class="text-center">{% trans "SRP ISK Cost" %}
|
||||
{% blocktrans %}<i class="glyphicon glyphicon-question-sign" rel="tooltip" title="Click value to edit
|
||||
Enter to save&next
|
||||
ESC to cancel"
|
||||
id="blah"></i></th>{% endblocktrans %}
|
||||
<th class="text-center">{% trans "Post Time" %}</th>
|
||||
<th class="text-center">{% trans "Status" %}</th>
|
||||
{% if perms.auth.srp_management %}
|
||||
<th class="text-center">{% trans "Actions" %}</th>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% for srpfleetrequest in srpfleetrequests %}
|
||||
<tr>
|
||||
<td class="text-center">{{ srpfleetrequest.character.character_name }}</td>
|
||||
<td class="text-center">
|
||||
<a href="{{ srpfleetrequest.killboard_link }}"
|
||||
target="_blank" class="label label-warning">Link</a>
|
||||
</td>
|
||||
<td class="text-center">{{ srpfleetrequest.additional_info }}</td>
|
||||
<td class="text-center">{{ srpfleetrequest.srp_ship_name }}</td>
|
||||
<td class="text-center">{{ srpfleetrequest.kb_total_loss | intcomma }} ISK</td>
|
||||
<td class="srp" data-name="srp_total_amount" data-type="number" data-pk="{{srpfleetrequest.id}}" data-url="{% url 'srp:request_update_amount' srpfleetrequest.id %}" data-params="{csrfmiddlewaretoken:'{{csrf_token}}'}" class="text-center">{{ srpfleetrequest.srp_total_amount | intcomma }} ISK</td>
|
||||
<td class="text-center">{{ srpfleetrequest.post_time | date:"Y-m-d H:i" }}</td>
|
||||
<td class="text-center">
|
||||
{% if srpfleetrequest.srp_status == "Approved" %}
|
||||
<div class="label label-success">
|
||||
{% trans "Approved" %}
|
||||
</div>
|
||||
{% elif srpfleetrequest.srp_status == "Rejected" %}
|
||||
<div class="label label-danger">
|
||||
{% trans "Rejected" %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="label label-warning">
|
||||
{% trans "Pending" %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</td>
|
||||
{% if perms.auth.srp_management %}
|
||||
<td class="text-center">
|
||||
<div class="checkbox">
|
||||
<label style="font-size: 1.5em">
|
||||
<input type="checkbox" name="{{srpfleetrequest.id}}">
|
||||
<span class="cr"><i class="cr-icon fa fa-check"></i></span>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
<div class="alert alert-info" role="alert">
|
||||
<div class="text-right">
|
||||
<b><span style="padding-right:2.5em">{% trans "Total Losses:" %} {{ srpfleetrequests.count }}</span></b>
|
||||
<b><span style="padding-right:2.5em">{% trans "Total ISK Cost:" %} {{ totalcost | intcomma }}</span></b>
|
||||
{% if perms.auth.srp_management %}
|
||||
<button type="submit" title="Approve" class="btn btn-success" formaction="{% url 'srp:request_approve' %}">
|
||||
<span class="glyphicon glyphicon-ok"></span>
|
||||
</button>
|
||||
<button type="submit" title="Reject" class="btn btn-warning" formaction="{% url 'srp:request_reject' %}">
|
||||
<span class="glyphicon glyphicon-remove"></span>
|
||||
</button>
|
||||
<button type="submit" title="Remove" onclick="return confirm('{% trans "Are you sure you want to delete SRP requests?" %}')" class="btn btn-danger" formaction="{% url 'srp:request_remove' %}">
|
||||
<span class="glyphicon glyphicon-trash"></span>
|
||||
</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{% else %}
|
||||
<div class="alert alert-warning text-center">{% trans "No SRP requests for this fleet." %}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock content %}
|
||||
|
||||
{% block extra_javascript %}
|
||||
{% include 'bundles/x-editable-js.html' %}
|
||||
{% endblock %}
|
||||
|
||||
{% block extra_script %}
|
||||
$(document).ready(function() {
|
||||
$.fn.editable.defaults.mode = 'inline';
|
||||
$.fn.editable.defaults.showbuttons = false;
|
||||
$.fn.editable.defaults.highlight = "#AAFF80";
|
||||
|
||||
|
||||
$('.srp').editable({
|
||||
display: function(value, response) {
|
||||
return false;
|
||||
},
|
||||
success: function(response, newValue) {
|
||||
newValue = parseInt(newValue);
|
||||
newvalue = newValue.toLocaleString() + " ISK";
|
||||
$(this).html(newvalue.bold());
|
||||
},
|
||||
validate: function(value) {
|
||||
if (value === null || value === '') {
|
||||
return 'Empty values not allowed';
|
||||
}
|
||||
}
|
||||
});
|
||||
$('.srp').on('hidden', function(e, reason){
|
||||
if(reason === 'save' || reason === 'nochange') {
|
||||
var $next = $(this).closest('tr').next().find('.editable');
|
||||
setTimeout(function() {
|
||||
$next.editable('show');
|
||||
}, 400);
|
||||
}
|
||||
});
|
||||
});
|
||||
$(document).ready(function(){
|
||||
$("[rel=tooltip]").tooltip({ placement: 'top'});
|
||||
});
|
||||
{% endblock extra_script %}
|
||||
125
allianceauth/srp/templates/srp/management.html
Normal file
125
allianceauth/srp/templates/srp/management.html
Normal file
@@ -0,0 +1,125 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
||||
{% load humanize %}
|
||||
{% block title %}Alliance Auth{% endblock %}
|
||||
|
||||
{% block page_title %}{% trans "Srp Management" %}{% endblock page_title %}
|
||||
{% block extra_css %}{% endblock extra_css %}
|
||||
|
||||
{% block content %}
|
||||
<div class="col-lg-12">
|
||||
<div class="row">
|
||||
<h1 class="page-header text-center">{% trans "SRP Management" %}
|
||||
<div class="text-right">
|
||||
{% if perms.auth.srp_management %}
|
||||
<a href="{% url 'srp:all' %}" class="btn btn-primary">
|
||||
{% trans "View All" %}
|
||||
</a>
|
||||
<a href="{% url 'srp:add' %}" class="btn btn-success">
|
||||
{% trans "Add SRP Fleet" %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</h1>
|
||||
<div class="alert alert-info" role="alert">
|
||||
<div class="text-right">
|
||||
<b>{% trans "Total ISK Cost:" %} {{ totalcost | intcomma }}</b>
|
||||
</div>
|
||||
</div>
|
||||
{% if srpfleets %}
|
||||
<table class="table">
|
||||
<tr>
|
||||
<th class="text-center">{% trans "Fleet Name" %}</th>
|
||||
<th class="text-center">{% trans "Fleet Time" %}</th>
|
||||
<th class="text-center">{% trans "Fleet Doctrine" %}</th>
|
||||
<th class="text-center">{% trans "Fleet Commander" %}</th>
|
||||
<th class="text-center">{% trans "Fleet AAR" %}</th>
|
||||
<th class="text-center">{% trans "Fleet SRP Code" %}</th>
|
||||
<th class="text-center">{% trans "Fleet ISK Cost" %}</th>
|
||||
<th class="text-center">{% trans "SRP Status" %}</th>
|
||||
<th class="text-center">{% trans "Pending Requests" %}</th>
|
||||
<th width="100px" class="text-center">{% trans "Actions" %}</th>
|
||||
</tr>
|
||||
{% for srpfleet in srpfleets %}
|
||||
<tr>
|
||||
<td class="text-center">
|
||||
<div class="label label-info">
|
||||
{{ srpfleet.fleet_name }}
|
||||
</div>
|
||||
</td>
|
||||
<td class="text-center">{{ srpfleet.fleet_time | date:"Y-m-d H:i" }}</td>
|
||||
<td class="text-center">{{ srpfleet.fleet_doctrine }}</td>
|
||||
<td class="text-center">
|
||||
<div class="label label-success">
|
||||
{{ srpfleet.fleet_commander.character_name }}
|
||||
</div>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
{% if srpfleet.fleet_srp_aar_link %}
|
||||
<a href="{{ srpfleet.fleet_srp_aar_link }}" target="_blank" class="label label-primary">{% trans 'Link' %}</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
{% if srpfleet.fleet_srp_code %}
|
||||
<a class="label label-warning" href="{% url 'srp:request' srpfleet.fleet_srp_code %}">{{ srpfleet.fleet_srp_code }}</a>
|
||||
{% else %}
|
||||
<div class="label label-danger">
|
||||
{% trans "Disabled" %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="text-center">ISK: {{ srpfleet.total_cost | intcomma }}</td>
|
||||
|
||||
<td class="text-center">
|
||||
{% if srpfleet.fleet_srp_status == "" %}
|
||||
<div class="label label-warning">
|
||||
{% trans "Pending" %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="label label-success">
|
||||
{% trans "Completed" %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<div class="label label-warning">{{ srpfleet.pending_requests }}</div>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
|
||||
<a href="{% url 'srp:fleet' srpfleet.id %}" class="btn btn-primary" title="View">
|
||||
<span class="glyphicon glyphicon-eye-open"></span>
|
||||
</a>
|
||||
|
||||
{% if perms.auth.srp_management %}
|
||||
<a href="{% url 'srp:edit' srpfleet.id %}" class="btn btn-info" title="Edit">
|
||||
<span class="glyphicon glyphicon-pencil"></span>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'srp:remove' srpfleet.id %}" onclick="return confirm('{% trans "Are you sure you want to delete this SRP code and its contents?" %}')" class="btn btn-danger" title="Remove">
|
||||
<span class="glyphicon glyphicon-trash"></span>
|
||||
</a>
|
||||
{% if srpfleet.fleet_srp_code %}
|
||||
<a href="{% url 'srp:disable' srpfleet.id %}" class="btn btn-warning" title="Disable">
|
||||
<span class="glyphicon glyphicon-remove-sign"></span>
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="{% url 'srp:enable' srpfleet.id %}" class="btn btn-success" title="Enable">
|
||||
<span class="glyphicon glyphicon-ok-sign"></span>
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% else %}
|
||||
<div class="alert alert-warning text-center">{% trans "No SRP fleets created." %}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock content %}
|
||||
31
allianceauth/srp/templates/srp/request.html
Normal file
31
allianceauth/srp/templates/srp/request.html
Normal file
@@ -0,0 +1,31 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %}SRP Request{% endblock %}
|
||||
|
||||
{% block page_title %}{% trans "SRP Request" %}{% endblock page_title %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header text-center">{% trans "Create SRP Request" %}</h1>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="col-md-4 col-md-offset-4">
|
||||
<div class="row">
|
||||
<form class="form-signin" role="form" action="" method="POST">
|
||||
{% csrf_token %}
|
||||
{{ form|bootstrap }}
|
||||
<br/>
|
||||
<button class="btn btn-lg btn-primary btn-block" type="submit">{% trans "Create SRP Request" %}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{% endblock content %}
|
||||
35
allianceauth/srp/templates/srp/update.html
Normal file
35
allianceauth/srp/templates/srp/update.html
Normal file
@@ -0,0 +1,35 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %}Alliance Auth - Update AAR Link{% endblock %}
|
||||
|
||||
{% block page_title %}{% trans "Update AAR Link" %}{% endblock page_title %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header text-center">{% trans "Update AAR Link" %}</h1>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="col-md-4 col-md-offset-4">
|
||||
<div class="row">
|
||||
{% if no_fleet_id %}
|
||||
<div class="alert alert-danger" role="alert">{% trans "SRP Fleet Does Not Exist" %}</div>
|
||||
{% else %}
|
||||
<form class="form-signin" role="form" action="" method="POST">
|
||||
{% csrf_token %}
|
||||
{{ form|bootstrap }}
|
||||
<br/>
|
||||
<button class="btn btn-lg btn-primary btn-block" type="submit">{% trans "Update AAR Link" %}
|
||||
</button>
|
||||
</form>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{% endblock content %}
|
||||
1
allianceauth/srp/tests.py
Executable file
1
allianceauth/srp/tests.py
Executable file
@@ -0,0 +1 @@
|
||||
# Create your tests here.
|
||||
32
allianceauth/srp/urls.py
Normal file
32
allianceauth/srp/urls.py
Normal file
@@ -0,0 +1,32 @@
|
||||
from django.conf.urls import url
|
||||
|
||||
from . import views
|
||||
|
||||
app_name = 'srp'
|
||||
|
||||
urlpatterns = [
|
||||
# SRP URLS
|
||||
url(r'^$', views.srp_management, name='management'),
|
||||
url(r'^all/$', views.srp_management_all, name='all'),
|
||||
url(r'^(\w+)/view$', views.srp_fleet_view, name='fleet'),
|
||||
url(r'^add/$', views.srp_fleet_add_view, name='add'),
|
||||
url(r'^(\w+)/edit$', views.srp_fleet_edit_view, name='edit'),
|
||||
url(r'^(\w+)/request', views.srp_request_view, name='request'),
|
||||
|
||||
# SRP URLS
|
||||
url(r'^(\w+)/remove$', views.srp_fleet_remove, name='remove'),
|
||||
url(r'^(\w+)/disable$', views.srp_fleet_disable, name='disable'),
|
||||
url(r'^(\w+)/enable$', views.srp_fleet_enable, name='enable'),
|
||||
url(r'^(\w+)/complete$', views.srp_fleet_mark_completed,
|
||||
name='mark_completed'),
|
||||
url(r'^(\w+)/incomplete$', views.srp_fleet_mark_uncompleted,
|
||||
name='mark_uncompleted'),
|
||||
url(r'^request/remove/', views.srp_request_remove,
|
||||
name="request_remove"),
|
||||
url(r'request/approve/', views.srp_request_approve,
|
||||
name='request_approve'),
|
||||
url(r'request/reject/', views.srp_request_reject,
|
||||
name='request_reject'),
|
||||
url(r'^request/(\w+)/update', views.srp_request_update_amount,
|
||||
name="request_update_amount"),
|
||||
]
|
||||
364
allianceauth/srp/views.py
Executable file
364
allianceauth/srp/views.py
Executable file
@@ -0,0 +1,364 @@
|
||||
import logging
|
||||
import uuid
|
||||
|
||||
from django.contrib import messages
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.contrib.auth.decorators import permission_required
|
||||
from django.contrib.humanize.templatetags.humanize import intcomma
|
||||
from django.http import JsonResponse
|
||||
from django.shortcuts import render, redirect, get_object_or_404
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from allianceauth.eveonline.managers import EveManager
|
||||
from allianceauth.notifications import notify
|
||||
from .form import SrpFleetMainForm
|
||||
from .form import SrpFleetMainUpdateForm
|
||||
from .form import SrpFleetUserRequestForm
|
||||
from .models import SrpFleetMain
|
||||
from .models import SrpUserRequest
|
||||
from .managers import SRPManager
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def random_string(string_length=10):
|
||||
"""Returns a random string of length string_length."""
|
||||
random = str(uuid.uuid4()) # Convert UUID format to a Python string.
|
||||
random = random.upper() # Make all characters uppercase.
|
||||
random = random.replace("-", "") # Remove the UUID '-'.
|
||||
return random[0:string_length] # Return the random string.
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('srp.access_srp')
|
||||
def srp_management(request):
|
||||
logger.debug("srp_management called by user %s" % request.user)
|
||||
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, 'srp/management.html', context=context)
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('srp.access_srp')
|
||||
def srp_management_all(request):
|
||||
logger.debug("srp_management_all called by user %s" % request.user)
|
||||
fleets = SrpFleetMain.objects.all()
|
||||
totalcost = sum([int(fleet.total_cost) for fleet in fleets])
|
||||
context = {"srpfleets": SrpFleetMain.objects.all(), "totalcost": totalcost}
|
||||
return render(request, 'srp/management.html', context=context)
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('srp.access_srp')
|
||||
def srp_fleet_view(request, fleet_id):
|
||||
logger.debug("srp_fleet_view called by user %s for fleet id %s" % (request.user, fleet_id))
|
||||
fleet_main = get_object_or_404(SrpFleetMain, id=fleet_id)
|
||||
context = {"fleet_id": fleet_id, "fleet_status": fleet_main.fleet_srp_status,
|
||||
"srpfleetrequests": fleet_main.srpuserrequest_set.order_by('srp_ship_name'),
|
||||
"totalcost": fleet_main.total_cost}
|
||||
|
||||
return render(request, 'srp/data.html', context=context)
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('auth.srp_management')
|
||||
def srp_fleet_add_view(request):
|
||||
logger.debug("srp_fleet_add_view called by user %s" % request.user)
|
||||
completed = False
|
||||
completed_srp_code = ""
|
||||
|
||||
if request.method == 'POST':
|
||||
form = SrpFleetMainForm(request.POST)
|
||||
logger.debug("Request type POST contains form valid: %s" % form.is_valid())
|
||||
if form.is_valid():
|
||||
srp_fleet_main = SrpFleetMain()
|
||||
srp_fleet_main.fleet_name = form.cleaned_data['fleet_name']
|
||||
srp_fleet_main.fleet_doctrine = form.cleaned_data['fleet_doctrine']
|
||||
srp_fleet_main.fleet_time = form.cleaned_data['fleet_time']
|
||||
srp_fleet_main.fleet_srp_code = random_string(8)
|
||||
srp_fleet_main.fleet_commander = request.user.profile.main_character
|
||||
|
||||
srp_fleet_main.save()
|
||||
|
||||
completed = True
|
||||
completed_srp_code = srp_fleet_main.fleet_srp_code
|
||||
logger.info("Created SRP Fleet %s by user %s" % (srp_fleet_main.fleet_name, request.user))
|
||||
messages.success(request, _('Created SRP fleet %(fleetname)s.') % {"fleetname": srp_fleet_main.fleet_name})
|
||||
|
||||
else:
|
||||
logger.debug("Returning blank SrpFleetMainForm")
|
||||
form = SrpFleetMainForm()
|
||||
|
||||
render_items = {'form': form, "completed": completed, "completed_srp_code": completed_srp_code}
|
||||
|
||||
return render(request, 'srp/add.html', context=render_items)
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('auth.srp_management')
|
||||
def srp_fleet_remove(request, fleet_id):
|
||||
logger.debug("srp_fleet_remove called by user %s for fleet id %s" % (request.user, fleet_id))
|
||||
srpfleetmain = get_object_or_404(SrpFleetMain, id=fleet_id)
|
||||
srpfleetmain.delete()
|
||||
logger.info("SRP Fleet %s deleted by user %s" % (srpfleetmain.fleet_name, request.user))
|
||||
messages.success(request, _('Removed SRP fleet %(fleetname)s.') % {"fleetname": srpfleetmain.fleet_name})
|
||||
return redirect("srp:management")
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('auth.srp_management')
|
||||
def srp_fleet_disable(request, fleet_id):
|
||||
logger.debug("srp_fleet_disable called by user %s for fleet id %s" % (request.user, fleet_id))
|
||||
srpfleetmain = get_object_or_404(SrpFleetMain, id=fleet_id)
|
||||
srpfleetmain.fleet_srp_code = ""
|
||||
srpfleetmain.save()
|
||||
logger.info("SRP Fleet %s disabled by user %s" % (srpfleetmain.fleet_name, request.user))
|
||||
messages.success(request, _('Disabled SRP fleet %(fleetname)s.') % {"fleetname": srpfleetmain.fleet_name})
|
||||
return redirect("srp:management")
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('auth.srp_management')
|
||||
def srp_fleet_enable(request, fleet_id):
|
||||
logger.debug("srp_fleet_enable called by user %s for fleet id %s" % (request.user, fleet_id))
|
||||
srpfleetmain = get_object_or_404(SrpFleetMain, id=fleet_id)
|
||||
srpfleetmain.fleet_srp_code = random_string(8)
|
||||
srpfleetmain.save()
|
||||
logger.info("SRP Fleet %s enable by user %s" % (srpfleetmain.fleet_name, request.user))
|
||||
messages.success(request, _('Enabled SRP fleet %(fleetname)s.') % {"fleetname": srpfleetmain.fleet_name})
|
||||
return redirect("srp:management")
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('auth.srp_management')
|
||||
def srp_fleet_mark_completed(request, fleet_id):
|
||||
logger.debug("srp_fleet_mark_completed called by user %s for fleet id %s" % (request.user, fleet_id))
|
||||
srpfleetmain = get_object_or_404(SrpFleetMain, id=fleet_id)
|
||||
srpfleetmain.fleet_srp_status = "Completed"
|
||||
srpfleetmain.save()
|
||||
logger.info("Marked SRP Fleet %s as completed by user %s" % (srpfleetmain.fleet_name, request.user))
|
||||
messages.success(request,
|
||||
_('Marked SRP fleet %(fleetname)s as completed.') % {"fleetname": srpfleetmain.fleet_name})
|
||||
return redirect("srp:fleet", fleet_id)
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('auth.srp_management')
|
||||
def srp_fleet_mark_uncompleted(request, fleet_id):
|
||||
logger.debug("srp_fleet_mark_uncompleted called by user %s for fleet id %s" % (request.user, fleet_id))
|
||||
srpfleetmain = get_object_or_404(SrpFleetMain, id=fleet_id)
|
||||
srpfleetmain.fleet_srp_status = ""
|
||||
srpfleetmain.save()
|
||||
logger.info("Marked SRP Fleet %s as incomplete for user %s" % (fleet_id, request.user))
|
||||
messages.success(request,
|
||||
_('Marked SRP fleet %(fleetname)s as incomplete.') % {"fleetname": srpfleetmain.fleet_name})
|
||||
return redirect("srp:fleet", fleet_id)
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('srp.access_srp')
|
||||
def srp_request_view(request, fleet_srp):
|
||||
logger.debug("srp_request_view called by user %s for fleet srp code %s" % (request.user, fleet_srp))
|
||||
|
||||
if SrpFleetMain.objects.filter(fleet_srp_code=fleet_srp).exists() is False:
|
||||
logger.error("Unable to locate SRP Fleet using code %s for user %s" % (fleet_srp, request.user))
|
||||
messages.error(request,
|
||||
_('Unable to locate SRP code with ID %(srpfleetid)s') % {"srpfleetid": fleet_srp})
|
||||
return redirect("srp:management")
|
||||
|
||||
if request.method == 'POST':
|
||||
form = SrpFleetUserRequestForm(request.POST)
|
||||
logger.debug("Request type POST contains form valid: %s" % form.is_valid())
|
||||
|
||||
if form.is_valid():
|
||||
if SrpUserRequest.objects.filter(killboard_link=form.cleaned_data['killboard_link']).exists():
|
||||
messages.error(request,
|
||||
_("This Killboard link has already been posted."))
|
||||
return redirect("srp:management")
|
||||
|
||||
character = request.user.profile.main_character
|
||||
srp_fleet_main = SrpFleetMain.objects.get(fleet_srp_code=fleet_srp)
|
||||
post_time = timezone.now()
|
||||
|
||||
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
|
||||
|
||||
try:
|
||||
srp_kill_link = SRPManager.get_kill_id(srp_request.killboard_link)
|
||||
(ship_type_id, ship_value, victim_name) = SRPManager.get_kill_data(srp_kill_link)
|
||||
except ValueError:
|
||||
logger.debug("User %s Submitted Invalid Killmail Link %s or server could not be reached" % (
|
||||
request.user, srp_request.killboard_link))
|
||||
# THIS SHOULD BE IN FORM VALIDATION
|
||||
messages.error(request,
|
||||
_(
|
||||
"Your SRP request Killmail link is invalid. Please make sure you are using zKillboard."))
|
||||
return redirect("srp:management")
|
||||
|
||||
if request.user.character_ownerships.filter(character__character_name=victim_name).exists():
|
||||
srp_request.srp_ship_name = EveManager.get_itemtype(ship_type_id).name
|
||||
srp_request.kb_total_loss = ship_value
|
||||
srp_request.post_time = post_time
|
||||
srp_request.save()
|
||||
logger.info("Created SRP Request on behalf of user %s for fleet name %s" % (
|
||||
request.user, srp_fleet_main.fleet_name))
|
||||
messages.success(request,
|
||||
_('Submitted SRP request for your %(ship)s.') % {"ship": srp_request.srp_ship_name})
|
||||
return redirect("srp:management")
|
||||
else:
|
||||
messages.error(request,
|
||||
_(
|
||||
"%(charname)s does not belong to your Auth account. Please add the API key for this character and try again")
|
||||
% {"charname": victim_name})
|
||||
return redirect("srp:management")
|
||||
else:
|
||||
logger.debug("Returning blank SrpFleetUserRequestForm")
|
||||
form = SrpFleetUserRequestForm()
|
||||
|
||||
render_items = {'form': form}
|
||||
|
||||
return render(request, 'srp/request.html', context=render_items)
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('auth.srp_management')
|
||||
def srp_request_remove(request):
|
||||
numrequests = len(request.POST) - 1
|
||||
logger.debug("srp_request_remove called by user %s for %s srp request id's" % (request.user, numrequests))
|
||||
stored_fleet_view = None
|
||||
for srp_request_id in request.POST:
|
||||
if numrequests == 0:
|
||||
messages.warning(request, _("No SRP requests selected"))
|
||||
return redirect("srp:management")
|
||||
if srp_request_id == "csrfmiddlewaretoken":
|
||||
continue
|
||||
if SrpUserRequest.objects.filter(id=srp_request_id).exists():
|
||||
srpuserrequest = SrpUserRequest.objects.get(id=srp_request_id)
|
||||
stored_fleet_view = srpuserrequest.srp_fleet_main.id
|
||||
srpuserrequest.delete()
|
||||
logger.info("Deleted SRP request id %s for user %s" % (srp_request_id, request.user))
|
||||
if stored_fleet_view is None:
|
||||
logger.error("Unable to delete srp requests for user %s - request matching id not found." % (request.user))
|
||||
messages.error(request, _('Unable to locate selected SRP request.'))
|
||||
return redirect("srp:management")
|
||||
else:
|
||||
messages.success(request, _('Deleted %(numrequests)s SRP requests') % {"numrequests": numrequests})
|
||||
return redirect("srp:fleet", stored_fleet_view)
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('auth.srp_management')
|
||||
def srp_request_approve(request):
|
||||
numrequests = len(request.POST) - 1
|
||||
logger.debug("srp_request_approve called by user %s for %s srp request id's" % (request.user, numrequests))
|
||||
stored_fleet_view = None
|
||||
for srp_request_id in request.POST:
|
||||
if numrequests == 0:
|
||||
messages.warning(request, _("No SRP requests selected"))
|
||||
return redirect("srp:management")
|
||||
if srp_request_id == "csrfmiddlewaretoken":
|
||||
continue
|
||||
if SrpUserRequest.objects.filter(id=srp_request_id).exists():
|
||||
srpuserrequest = SrpUserRequest.objects.get(id=srp_request_id)
|
||||
stored_fleet_view = srpuserrequest.srp_fleet_main.id
|
||||
srpuserrequest.srp_status = "Approved"
|
||||
if srpuserrequest.srp_total_amount == 0:
|
||||
srpuserrequest.srp_total_amount = srpuserrequest.kb_total_loss
|
||||
srpuserrequest.save()
|
||||
logger.info("Approved SRP request id %s for character %s by user %s" % (
|
||||
srp_request_id, srpuserrequest.character, request.user))
|
||||
notify(
|
||||
srpuserrequest.character.character_ownership.user,
|
||||
'SRP Request Approved',
|
||||
level='success',
|
||||
message='Your SRP request for a %s lost during %s has been approved for %s ISK.' % (
|
||||
srpuserrequest.srp_ship_name, srpuserrequest.srp_fleet_main.fleet_name,
|
||||
intcomma(srpuserrequest.srp_total_amount))
|
||||
)
|
||||
if stored_fleet_view is None:
|
||||
logger.error("Unable to approve srp request on behalf of user %s - request matching id not found." % (request.user))
|
||||
messages.error(request, _('Unable to locate selected SRP request.'))
|
||||
return redirect("srp:management")
|
||||
else:
|
||||
messages.success(request, _('Approved %(numrequests)s SRP requests') % {"numrequests": numrequests})
|
||||
return redirect("srp:fleet", stored_fleet_view)
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('auth.srp_management')
|
||||
def srp_request_reject(request):
|
||||
numrequests = len(request.POST) - 1
|
||||
logger.debug("srp_request_reject called by user %s for %s srp request id's" % (request.user, numrequests))
|
||||
stored_fleet_view = None
|
||||
for srp_request_id in request.POST:
|
||||
if numrequests == 0:
|
||||
messages.warning(request, _("No SRP requests selected"))
|
||||
return redirect("srp:management")
|
||||
if srp_request_id == "csrfmiddlewaretoken":
|
||||
continue
|
||||
if SrpUserRequest.objects.filter(id=srp_request_id).exists():
|
||||
srpuserrequest = SrpUserRequest.objects.get(id=srp_request_id)
|
||||
stored_fleet_view = srpuserrequest.srp_fleet_main.id
|
||||
srpuserrequest.srp_status = "Rejected"
|
||||
srpuserrequest.save()
|
||||
logger.info("SRP request id %s for character %s rejected by %s" % (
|
||||
srp_request_id, srpuserrequest.character, request.user))
|
||||
notify(
|
||||
srpuserrequest.character.character_ownership.user,
|
||||
'SRP Request Rejected',
|
||||
level='danger',
|
||||
message='Your SRP request for a %s lost during %s has been rejected.' % (
|
||||
srpuserrequest.srp_ship_name, srpuserrequest.srp_fleet_main.fleet_name)
|
||||
)
|
||||
if stored_fleet_view is None:
|
||||
logger.error("Unable to reject SRP request on behalf of user %s - request matching id not found." % (request.user))
|
||||
messages.error(request, _('Unable to locate selected SRP request'))
|
||||
return redirect("srp:management")
|
||||
else:
|
||||
messages.success(request, _('Rejected %(numrequests)s SRP requests.') % {"numrequests": numrequests})
|
||||
return redirect("srp:fleet", stored_fleet_view)
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('auth.srp_management')
|
||||
def srp_request_update_amount(request, fleet_srp_request_id):
|
||||
logger.debug("srp_request_update_amount called by user %s for fleet srp request id %s" % (
|
||||
request.user, fleet_srp_request_id))
|
||||
|
||||
if SrpUserRequest.objects.filter(id=fleet_srp_request_id).exists() is False:
|
||||
logger.error("Unable to locate SRP request id %s for user %s" % (fleet_srp_request_id, request.user))
|
||||
messages.error(request,
|
||||
_('Unable to locate SRP request with ID %(requestid)s') % {"requestid": fleet_srp_request_id})
|
||||
return redirect("srp:management")
|
||||
|
||||
srp_request = SrpUserRequest.objects.get(id=fleet_srp_request_id)
|
||||
srp_request.srp_total_amount = request.POST['value']
|
||||
srp_request.save()
|
||||
logger.info("Updated srp request id %s total to %s by user %s" % (
|
||||
fleet_srp_request_id, request.POST['value'], request.user))
|
||||
return JsonResponse({"success": True, "pk": fleet_srp_request_id, "newValue": request.POST['value']})
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('auth.srp_management')
|
||||
def srp_fleet_edit_view(request, fleet_id):
|
||||
logger.debug("srp_fleet_edit_view called by user %s for fleet id %s" % (request.user, fleet_id))
|
||||
srpfleetmain = get_object_or_404(SrpFleetMain, id=fleet_id)
|
||||
if request.method == 'POST':
|
||||
form = SrpFleetMainUpdateForm(request.POST)
|
||||
logger.debug("Request type POST contains form valid: %s" % form.is_valid())
|
||||
if form.is_valid():
|
||||
srpfleetmain.fleet_srp_aar_link = form.cleaned_data['fleet_aar_link']
|
||||
srpfleetmain.save()
|
||||
logger.info("User %s edited SRP Fleet %s" % (request.user, srpfleetmain.fleet_name))
|
||||
messages.success(request,
|
||||
_('Saved changes to SRP fleet %(fleetname)s') % {"fleetname": srpfleetmain.fleet_name})
|
||||
return redirect("srp:management")
|
||||
else:
|
||||
logger.debug("Returning blank SrpFleetMainUpdateForm")
|
||||
form = SrpFleetMainUpdateForm()
|
||||
return render(request, 'srp/update.html', context={'form': form})
|
||||
Reference in New Issue
Block a user