Add report for reviewing speakers/talks across all tracks
This commit is contained in:
		
							parent
							
								
									c56b15f279
								
							
						
					
					
						commit
						1fccc11354
					
				
					 2 changed files with 34 additions and 2 deletions
				
			
		
							
								
								
									
										4
									
								
								vendor/symposion/symposion/speakers/urls.py
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/symposion/symposion/speakers/urls.py
									
										
									
									
										vendored
									
									
								
							|  | @ -5,7 +5,8 @@ from .views import ( | |||
|     speaker_create_token, | ||||
|     speaker_edit, | ||||
|     speaker_profile, | ||||
|     speaker_create_staff | ||||
|     speaker_create_staff, | ||||
|     speaker_track_report, | ||||
| ) | ||||
| 
 | ||||
| urlpatterns = [ | ||||
|  | @ -14,4 +15,5 @@ urlpatterns = [ | |||
|     url(r"^edit/(?:(?P<pk>\d+)/)?$", speaker_edit, name="speaker_edit"), | ||||
|     url(r"^profile/(?P<pk>\d+)/$", speaker_profile, name="speaker_profile"), | ||||
|     url(r"^staff/create/(\d+)/$", speaker_create_staff, name="speaker_create_staff"), | ||||
|     url(r"^track-report/$", speaker_track_report, name="speaker_track_report"), | ||||
| ] | ||||
|  |  | |||
							
								
								
									
										32
									
								
								vendor/symposion/symposion/speakers/views.py
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										32
									
								
								vendor/symposion/symposion/speakers/views.py
									
										
									
									
										vendored
									
									
								
							|  | @ -1,5 +1,10 @@ | |||
| import csv | ||||
| import datetime | ||||
| 
 | ||||
| from django.contrib.auth.decorators import user_passes_test | ||||
| from django.core.exceptions import ObjectDoesNotExist | ||||
| from django.http import Http404 | ||||
| from django.db import connection | ||||
| from django.http import Http404, HttpResponse | ||||
| from django.shortcuts import render, redirect, get_object_or_404 | ||||
| from django.views.decorators.clickjacking import xframe_options_exempt | ||||
| 
 | ||||
|  | @ -135,3 +140,28 @@ def speaker_profile(request, pk): | |||
|         "speaker": speaker, | ||||
|         "presentations": presentations, | ||||
|     }) | ||||
| 
 | ||||
| 
 | ||||
| @login_required | ||||
| @user_passes_test(lambda u: u.is_staff) | ||||
| def speaker_track_report(request): | ||||
|     query = """ | ||||
|         SELECT speaker.name speaker, email, telephone, kind.name track, title | ||||
|         FROM symposion_proposals_proposalbase | ||||
|         INNER JOIN symposion_speakers_speaker speaker ON speaker_id = speaker.id | ||||
|         INNER JOIN symposion_proposals_proposalkind kind ON kind_id = kind.id | ||||
|         INNER JOIN auth_user ON user_id = auth_user.id | ||||
|         ORDER BY speaker.name, title, track | ||||
|     """ | ||||
|     response = HttpResponse(content_type='text/csv') | ||||
|     filename = 'speaker_track_report-{}.csv'.format( | ||||
|         datetime.datetime.now().strftime('%Y-%m-%d'), | ||||
|     ) | ||||
|     response['Content-Disposition'] = f'attachment; filename={filename}' | ||||
|     writer = csv.writer(response) | ||||
|     with connection.cursor() as cursor: | ||||
|         cursor.execute(query) | ||||
|         writer.writerow([i[0] for i in cursor.description]) | ||||
|         for row in cursor.fetchall(): | ||||
|             writer.writerow(row) | ||||
|     return response | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue