forked from beba/foerderbarometer
				
			new action save as csv in admin
This commit is contained in:
		
							parent
							
								
									3132bc9647
								
							
						
					
					
						commit
						18669a4116
					
				
							
								
								
									
										15
									
								
								README.md
								
								
								
								
							
							
						
						
									
										15
									
								
								README.md
								
								
								
								
							| 
						 | 
					@ -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
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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…
	
		Reference in New Issue