diff --git a/app/eve_api/templates/eve_api/corporation.html b/app/eve_api/templates/eve_api/corporation.html index 2080c6f..2f881cd 100644 --- a/app/eve_api/templates/eve_api/corporation.html +++ b/app/eve_api/templates/eve_api/corporation.html @@ -28,6 +28,8 @@ {% endfor %} {% paginate %} + +

Export as CSV

{% endif %} diff --git a/app/eve_api/urls.py b/app/eve_api/urls.py index b5b5915..ffeca20 100644 --- a/app/eve_api/urls.py +++ b/app/eve_api/urls.py @@ -14,5 +14,6 @@ urlpatterns = patterns('', url(r'^character/(?P\d+)/$', views.eveapi_character, name="eveapi-character"), url(r'^corporation/(?P\d+)/$', views.eveapi_corporation, name="eveapi-corporation"), + url(r'^corporation/(?P\d+)/export/$', views.eveapi_corporation_members_csv, name="eveapi-corporation-members-csv"), url(r'^alliance/(?P\d+)/$', views.eveapi_alliance, name="eveapi-alliance"), ) diff --git a/app/eve_api/views.py b/app/eve_api/views.py index 06a8cfc..734c325 100644 --- a/app/eve_api/views.py +++ b/app/eve_api/views.py @@ -1,3 +1,5 @@ +import csv + import celery from django.http import HttpResponse @@ -198,6 +200,27 @@ def eveapi_corporation(request, corporationid, template='eve_api/corporation.htm return render_to_response(template, context, context_instance=RequestContext(request)) +@login_required +def eveapi_corporation_members_csv(request, corporationid): + + corporation = get_object_or_404(EVEPlayerCorporation, id=corporationid) + + print corporation + + if not corporation.eveplayercharacter_set.filter(eveaccount__user=request.user, roles__name="roleDirector").count() and not request.user.is_superuser: + raise Http404 + + response = HttpResponse(mimetype='text/csv') + response['Content-Disposition'] = 'attachment; filename=%s-members_export.csv' % corporation.id + + writer = csv.writer(response) + writer.writerow(['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 + + @login_required def eveapi_alliance(request, allianceid, template='eve_api/alliance.html'):