mirror of
https://github.com/nikdoof/test-auth.git
synced 2025-12-14 14:52:15 +00:00
Convert CSV download to CBV, cleaned up base.py
This commit is contained in:
@@ -10,13 +10,13 @@ urlpatterns = patterns('',
|
|||||||
url(r'^eveapi/delete/(?P<pk>\d+)/$', login_required(views.EVEAPIDeleteView.as_view()), name="eveapi-delete"),
|
url(r'^eveapi/delete/(?P<pk>\d+)/$', login_required(views.EVEAPIDeleteView.as_view()), name="eveapi-delete"),
|
||||||
url(r'^eveapi/refresh/(?P<pk>\d+)/$', login_required(views.EVEAPIRefreshView.as_view()), name="eveapi-refresh"),
|
url(r'^eveapi/refresh/(?P<pk>\d+)/$', login_required(views.EVEAPIRefreshView.as_view()), name="eveapi-refresh"),
|
||||||
url(r'^eveapi/log/(?P<userid>\d+)/$', login_required(views.EVEAPILogView.as_view()), name="eveapi-log"),
|
url(r'^eveapi/log/(?P<userid>\d+)/$', login_required(views.EVEAPILogView.as_view()), name="eveapi-log"),
|
||||||
url(r'^eveapi/access/(?P<slug>\d+)/$', login_required(views.EVEAPIAccessView.as_view()), name="eveapi-accessview"),
|
url(r'^eveapi/access/(?P<pk>\d+)/$', login_required(views.EVEAPIAccessView.as_view()), name="eveapi-accessview"),
|
||||||
|
|
||||||
url(r'^character/list/$', login_required(views.EVEAPICharacterListView.as_view()), name="eveapi-characters-list"),
|
url(r'^character/list/$', login_required(views.EVEAPICharacterListView.as_view()), name="eveapi-characters-list"),
|
||||||
url(r'^character/(?P<pk>\d+)/$', login_required(views.EVEAPICharacterDetailView.as_view()), name="eveapi-character"),
|
url(r'^character/(?P<pk>\d+)/$', login_required(views.EVEAPICharacterDetailView.as_view()), name="eveapi-character"),
|
||||||
|
|
||||||
url(r'^corporation/(?P<pk>\d+)/$', login_required(views.EVEAPICorporationView.as_view()), name="eveapi-corporation"),
|
url(r'^corporation/(?P<pk>\d+)/$', login_required(views.EVEAPICorporationView.as_view()), name="eveapi-corporation"),
|
||||||
url(r'^corporation/(?P<corporationid>\d+)/export/$', views.eveapi_corporation_members_csv, name="eveapi-corporation-members-csv"),
|
url(r'^corporation/(?P<pk>\d+)/export/$', login_required(views.EVEAPICorporationMembersCSV.as_view()), name="eveapi-corporation-members-csv"),
|
||||||
|
|
||||||
url(r'^alliance/(?P<pk>\d+)/$', login_required(views.EVEAPIAllianceView.as_view()), name="eveapi-alliance"),
|
url(r'^alliance/(?P<pk>\d+)/$', login_required(views.EVEAPIAllianceView.as_view()), name="eveapi-alliance"),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ from eve_api.forms import EVEAPIForm
|
|||||||
from eve_api.models import EVEAccount, EVEPlayerCharacter, EVEPlayerCorporation, EVEPlayerAlliance
|
from eve_api.models import EVEAccount, EVEPlayerCharacter, EVEPlayerCorporation, EVEPlayerAlliance
|
||||||
from eve_api.tasks import import_apikey_result
|
from eve_api.tasks import import_apikey_result
|
||||||
from eve_api.utils import basic_xml_parse_doc
|
from eve_api.utils import basic_xml_parse_doc
|
||||||
from eve_api.views.mixins import DetailPaginationMixin
|
from eve_api.views.mixins import DetailPaginationMixin, CSVResponseMixin
|
||||||
|
|
||||||
|
|
||||||
class EVEAPICreateView(CreateView):
|
class EVEAPICreateView(CreateView):
|
||||||
@@ -232,22 +232,27 @@ class EVEAPICorporationView(DetailPaginationMixin, DetailView):
|
|||||||
return ctx
|
return ctx
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
class EVEAPICorporationMembersCSV(SingleObjectMixin, CSVResponseMixin, View):
|
||||||
def eveapi_corporation_members_csv(request, corporationid):
|
|
||||||
|
|
||||||
corporation = get_object_or_404(EVEPlayerCorporation, id=corporationid)
|
model = EVEPlayerCorporation
|
||||||
if not corporation.eveplayercharacter_set.filter(eveaccount__user=request.user, roles__name="roleDirector").count() and not request.user.is_superuser:
|
|
||||||
return HttpResponseForbidden()
|
|
||||||
|
|
||||||
response = HttpResponse(mimetype='text/csv')
|
def get(self, request, *args, **kwargs):
|
||||||
response['Content-Disposition'] = 'attachment; filename=%s-members_export.csv' % corporation.id
|
self.object = self.get_object()
|
||||||
|
if not self.object.eveplayercharacter_set.filter(eveaccount__user=request.user, roles__name="roleDirector").count() and not request.user.is_superuser:
|
||||||
|
return HttpResponseForbidden()
|
||||||
|
return super(EVEAPICorporationMembersCSV, self).get(request, *args, **kwargs)
|
||||||
|
|
||||||
writer = csv.writer(response)
|
def get_csv_headers(self):
|
||||||
writer.writerow(['Name', 'Skillpoints', 'Join Date', 'Last Login', 'Director?', 'Roles?', 'API Key?'])
|
return ['Name', 'Skillpoints', 'Join Date', 'Last Login', 'Director?', 'Roles?', 'API Key?']
|
||||||
for char in corporation.eveplayercharacter_set.all():
|
|
||||||
writer.writerow([char.name, char.total_sp, char.corporation_date, char.last_login, char.director, char.roles.count(), char.eveaccount_set.all().count()])
|
|
||||||
|
|
||||||
return response
|
def get_csv_data(self):
|
||||||
|
data = []
|
||||||
|
for char in self.object.eveplayercharacter_set.all():
|
||||||
|
data.append([char.name, char.total_sp, char.corporation_date, char.last_login, char.director, char.roles.count(), char.eveaccount_set.all().count()])
|
||||||
|
return data
|
||||||
|
|
||||||
|
def get_filename(self):
|
||||||
|
return "%s-members_export.csv" % self.object.pk
|
||||||
|
|
||||||
|
|
||||||
class EVEAPIAllianceView(DetailPaginationMixin, DetailView):
|
class EVEAPIAllianceView(DetailPaginationMixin, DetailView):
|
||||||
@@ -273,7 +278,6 @@ class EVEAPIAccessView(DetailView):
|
|||||||
|
|
||||||
model = EVEAccount
|
model = EVEAccount
|
||||||
template_name = 'eve_api/accessview.html'
|
template_name = 'eve_api/accessview.html'
|
||||||
slug_field = 'api_user_id'
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def lowestSet(int_type):
|
def lowestSet(int_type):
|
||||||
|
|||||||
@@ -45,8 +45,8 @@ class CSVResponseMixin(object):
|
|||||||
w.writerow(headings)
|
w.writerow(headings)
|
||||||
|
|
||||||
# Rows
|
# Rows
|
||||||
for row in self.data:
|
for row in self.get_csv_data():
|
||||||
row = [unicode(c).encode(charset, 'replace') for c in row.values()]
|
row = [unicode(c).encode(charset, 'replace') for c in row]
|
||||||
w.writerow(row)
|
w.writerow(row)
|
||||||
|
|
||||||
# Done
|
# Done
|
||||||
|
|||||||
Reference in New Issue
Block a user