21
21
From ,
22
22
Mail ,
23
23
)
24
- from sqlalchemy import asc , desc , func
25
24
26
25
from app .api .chat .rocket_chat import rename_rocketchat_room
27
26
from app .api .exports import event_export_task_base
28
- from app .api .helpers .csv_jobs_util import export_attendees_csv
29
27
from app .api .helpers .db import safe_query , save_to_db
30
28
from app .api .helpers .files import (
31
29
create_save_image_sizes ,
41
39
from app .api .imports import import_event_task_base
42
40
from app .instance import create_app
43
41
from app .models import db
44
- from app .models .custom_form import ATTENDEE_CUSTOM_FORM , CustomForms
42
+ from app .models .custom_form import CustomForms , ATTENDEE_CUSTOM_FORM
45
43
from app .models .discount_code import DiscountCode
46
44
from app .models .event import Event
47
45
from app .models .exhibitor import Exhibitor
54
52
from app .models .user import User
55
53
from app .models .user_follow_group import UserFollowGroup
56
54
from app .settings import get_settings
57
-
58
55
from .import_helpers import update_import_job
56
+ from app .api .helpers .csv_jobs_util import export_attendees_csv
59
57
60
58
"""
61
59
Define all API v2 celery tasks here
@@ -539,15 +537,9 @@ def export_order_pdf_task(self, event_id):
539
537
540
538
@celery .task (base = RequestContextTask , name = 'export.attendees.csv' , bind = True )
541
539
def export_attendees_csv_task (self , event_id ):
542
- attendees = (
543
- db .session .query (TicketHolder )
544
- .filter_by (event_id = event_id )
545
- .order_by (desc (func .date (TicketHolder .created_at )))
546
- )
547
- custom_forms = (
548
- db .session .query (CustomForms )
549
- .filter_by (event_id = event_id , form = CustomForms .TYPE .ATTENDEE , is_included = True )
550
- .order_by (asc ("position" ))
540
+ attendees = db .session .query (TicketHolder ).filter_by (event_id = event_id )
541
+ custom_forms = db .session .query (CustomForms ).filter_by (
542
+ event_id = event_id , form = CustomForms .TYPE .ATTENDEE , is_included = True
551
543
)
552
544
553
545
field_headers = list (ATTENDEE_CUSTOM_FORM .keys ())
@@ -556,14 +548,14 @@ def custom_form_validation(cf_orm, field_headers):
556
548
# set() is O(1) in membership testing
557
549
field_headers_set = set (field_headers )
558
550
forms_result = [None ] * len (field_headers_set )
559
- index_append = 0
560
551
561
552
for row in cf_orm :
562
553
if row .field_identifier in field_headers_set :
554
+
563
555
field_headers_set .discard (row .field_identifier )
556
+ index_append = field_headers .index (row .field_identifier )
564
557
# forms_result.append(row)
565
- forms_result .insert (index_append , row )
566
- index_append += 1
558
+ forms_result .insert (index_append , row )
567
559
568
560
forms_result = [e for e in forms_result if e is not None ]
569
561
return forms_result
@@ -577,11 +569,7 @@ def custom_form_validation(cf_orm, field_headers):
577
569
file_path = os .path .join (filedir , filename )
578
570
579
571
dict_list = export_attendees_csv (attendees , custom_forms , ATTENDEE_CUSTOM_FORM )
580
- csv_headers = []
581
- for row in dict_list :
582
- for key in row .keys ():
583
- if key is not None and key not in csv_headers :
584
- csv_headers .append (key )
572
+ csv_headers = list (dict_list [0 ].keys ())
585
573
586
574
with open (file_path , "w" ) as temp_file :
587
575
writer = csv .DictWriter (temp_file , fieldnames = csv_headers )
0 commit comments