Browse Source

new action save as csv in admin

master
Benni Baermann 4 years ago
parent
commit
18669a4116
2 changed files with 40 additions and 1 deletions
  1. +14
    -1
      README.md
  2. +26
    -0
      input/admin.py

+ 14
- 1
README.md View File

@ -6,7 +6,7 @@ purpose: gather data from intern(WMDE) and extern(volunteers) forms to create a
ln -sr foerderbarometer/settings_development.py foerderbarometer/settings.py ln -sr foerderbarometer/settings_development.py foerderbarometer/settings.py
build database with
build the database with
python3 manage.py migrate python3 manage.py migrate
@ -18,12 +18,25 @@ run the development server with
python3 manage.py runserver python3 manage.py runserver
you can run some very basic tests with
python3 manage.py test
access via access via
http://localhost/ http://localhost/
http://localhost/intern/ (login required) http://localhost/intern/ (login required)
http://localhost/admin/ (login reqiured) http://localhost/admin/ (login reqiured)
## additional admin functionality
The admin page is the standard admin page delivered by django but with two additional functionalities:
- There is a new action "export to csv" with which you can export all Selected
entries to a csv file
- There is a new button in the bottom of every Project to "save as new"
## versions used in development ## versions used in development
python 3.8.2 python 3.8.2

+ 26
- 0
input/admin.py View File

@ -1,12 +1,38 @@
import csv
from django.contrib import admin from django.contrib import admin
from django.http import HttpResponse
from .models import Project, HonoraryCertificate, Library, IFG, Travel,\ from .models import Project, HonoraryCertificate, Library, IFG, Travel,\
Email, BusinessCard, List Email, BusinessCard, List
def export_as_csv(self, request, queryset):
meta = self.model._meta
field_names = [field.name for field in meta.fields]
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename={}.csv'.format(meta)
writer = csv.writer(response)
writer.writerow(field_names)
for obj in queryset:
row = writer.writerow([getattr(obj, field) for field in field_names])
return response
export_as_csv.short_description = "Export Selected"
admin.site.add_action(export_as_csv)
@admin.register(Project) @admin.register(Project)
class ProjectAdmin(admin.ModelAdmin): class ProjectAdmin(admin.ModelAdmin):
save_as = True save_as = True
readonly_fields = ('pid',) readonly_fields = ('pid',)
# action = ['export_as_csv']
admin.site.register([ admin.site.register([
HonoraryCertificate, HonoraryCertificate,

Loading…
Cancel
Save