@@ -82,75 +82,127 @@ def export_orders_csv(orders):
82
82
return rows
83
83
84
84
85
- def export_attendees_csv (attendees , custom_forms , attendee_form_dict ):
86
- return_dict_list = []
85
+ def get_order_ticket_data (order , ticket ):
86
+ """Get order ticket data"""
87
+ data = {}
88
+ if not order :
89
+ return {
90
+ 'Order#' : '' ,
91
+ 'Order Date' : '' ,
92
+ 'Status' : '' ,
93
+ 'Payment Type' : '' ,
94
+ 'Payment Mode' : '' ,
95
+ 'Ticket ID' : '' ,
96
+ 'Ticket Name' : '' ,
97
+ 'Ticket Price' : '0' ,
98
+ 'Ticket Type' : '' ,
99
+ 'Tax ID' : '' ,
100
+ 'Address' : '' ,
101
+ 'Company' : '' ,
102
+ 'Country' : '' ,
103
+ 'State' : '' ,
104
+ 'City' : '' ,
105
+ 'Zipcode' : '' ,
106
+ }
87
107
88
- for attendee in attendees :
89
- data = {
90
- 'Order#' : str (attendee .order .get_invoice_number ()) if attendee .order else '-' ,
91
- 'Order Date' : str (attendee .order .created_at .strftime ('%B %-d, %Y %H:%M %z' ))
92
- if attendee .order and attendee .order .created_at
93
- else '-' ,
94
- 'Status' : str (attendee .order .status )
95
- if attendee .order and attendee .order .status
96
- else '-' ,
97
- 'Payment Type' : str (attendee .order .paid_via )
98
- if attendee .order and attendee .order .paid_via
99
- else '' ,
100
- 'Payment Mode' : str (attendee .order .payment_mode )
101
- if attendee .order and attendee .order .payment_mode
102
- else '' ,
103
- 'Ticket Name' : str (attendee .ticket .name )
104
- if attendee .ticket and attendee .ticket .name
105
- else '' ,
106
- 'Ticket Price' : str (attendee .ticket .price )
107
- if attendee .ticket and attendee .ticket .price
108
- else '0' ,
109
- 'Ticket Type' : str (attendee .ticket .type )
110
- if attendee .ticket and attendee .ticket .type
111
- else '' ,
112
- 'Tax ID' : str (attendee .order .tax_business_info )
113
- if attendee .order .tax_business_info
114
- else '' ,
115
- 'Address' : str (attendee .order .address ) if attendee .order .address else '' ,
116
- 'Company' : str (attendee .order .company ) if attendee .order .company else '' ,
117
- 'Country' : str (attendee .order .country ) if attendee .order .country else '' ,
118
- 'State' : str (attendee .order .state ) if attendee .order .state else '' ,
119
- 'City' : str (attendee .order .city ) if attendee .order .city else '' ,
120
- 'Zipcode' : str (attendee .order .zipcode ) if attendee .order .zipcode else '' ,
121
- 'Email' : '' ,
108
+ data = {
109
+ 'Order#' : str (order .get_invoice_number ()),
110
+ 'Order Date' : str (order .created_at .strftime ('%B %-d, %Y %H:%M %z' ))
111
+ if order .created_at
112
+ else '-' ,
113
+ 'Status' : str (order .status ) if order .status else '-' ,
114
+ 'Payment Type' : str (order .paid_via ) if order .paid_via else '' ,
115
+ 'Payment Mode' : str (order .payment_mode ) if order .payment_mode else '' ,
116
+ 'Ticket ID' : str (order .identifier ) if order .identifier else '' ,
117
+ }
118
+
119
+ if ticket :
120
+ data .update (get_ticket_data (ticket ))
121
+
122
+ data .update (get_order_data (order ))
123
+
124
+ return data
125
+
126
+
127
+ def get_order_data (order ):
128
+ """Get order data from order object"""
129
+ if not order :
130
+ return {
131
+ 'Tax ID' : '' ,
132
+ 'Address' : '' ,
133
+ 'Company' : '' ,
134
+ 'Country' : '' ,
135
+ 'State' : '' ,
136
+ 'City' : '' ,
137
+ 'Zipcode' : '' ,
122
138
}
123
139
124
- for field in custom_forms :
125
- # keys don't match up, for keys like
126
- # acceptVideoRecording vs accept_video_recording ..
127
- key_mapping = {}
128
-
129
- for k in attendee_form_dict .keys ():
130
- key_mapping [k .replace ("_" , "" ).lower ()] = k
131
-
132
- field_raw = field .identifier .replace ("_" , "" ).lower ()
133
- key = key_mapping .get (field_raw )
134
- converted_header = attendee_form_dict .get (key )
135
- if field .is_complex :
136
- fields_dict = attendee .complex_field_values
137
- converted_header = field .name
138
- data [converted_header ] = (
139
- fields_dict .get (field .identifier , '' ) if fields_dict else ''
140
- )
141
- else :
142
- dict_value = getattr (attendee , field .identifier , '' )
143
- dict_value = (
144
- "Yes"
145
- if str (dict_value ) == "True"
146
- else "No"
147
- if str (dict_value ) == "False"
148
- else dict_value
149
- )
150
- converted_header = field .name
151
- data [converted_header ] = dict_value
152
- data ['virtual_event_checkin_times' ] = get_virtual_checkin_times (attendee .id )
153
- return_dict_list .append (data )
140
+ return {
141
+ 'Tax ID' : str (order .tax_business_info ) if order .tax_business_info else '' ,
142
+ 'Address' : str (order .address ) if order .address else '' ,
143
+ 'Company' : str (order .company ) if order .company else '' ,
144
+ 'Country' : str (order .country ) if order .country else '' ,
145
+ 'State' : str (order .state ) if order .state else '' ,
146
+ 'City' : str (order .city ) if order .city else '' ,
147
+ 'Zipcode' : str (order .zipcode ) if order .zipcode else '' ,
148
+ }
149
+
150
+
151
+ def get_ticket_data (ticket ):
152
+ """Get ticket data from ticket object"""
153
+ if not ticket :
154
+ return {'Ticket Name' : '' , 'Ticket Price' : '0' , 'Ticket Type' : '' }
155
+
156
+ return {
157
+ 'Ticket Name' : str (ticket .name ) if ticket .name else '' ,
158
+ 'Ticket Price' : str (ticket .price ) if ticket .price else '0' ,
159
+ 'Ticket Type' : str (ticket .type ) if ticket .type else '' ,
160
+ }
161
+
162
+
163
+ def get_attendee_data (attendee , custom_forms , attendee_form_dict ):
164
+ """Get attendee data from attendee object"""
165
+ order_ticket_data = get_order_ticket_data (attendee .order , attendee .ticket )
166
+ data = {
167
+ ** order_ticket_data ,
168
+ 'Email' : '' ,
169
+ }
170
+
171
+ for field in custom_forms :
172
+ key_mapping = {k .replace ("_" , "" ).lower (): k for k in attendee_form_dict .keys ()}
173
+ field_raw = field .identifier .replace ("_" , "" ).lower ()
174
+ key = key_mapping .get (field_raw )
175
+ converted_header = attendee_form_dict .get (key )
176
+
177
+ if field .is_complex :
178
+ fields_dict = attendee .complex_field_values
179
+ converted_header = field .name
180
+ data [converted_header ] = (
181
+ fields_dict .get (field .identifier , '' ) if fields_dict else ''
182
+ )
183
+ else :
184
+ dict_value = getattr (attendee , field .identifier , '' )
185
+ dict_value = (
186
+ "Yes"
187
+ if str (dict_value ) == "True"
188
+ else "No"
189
+ if str (dict_value ) == "False"
190
+ else dict_value
191
+ )
192
+ converted_header = field .name
193
+ data [converted_header ] = dict_value
194
+
195
+ data ['virtual_event_checkin_times' ] = get_virtual_checkin_times (attendee .id )
196
+ return data
197
+
198
+
199
+ def export_attendees_csv (attendees , custom_forms , attendee_form_dict ):
200
+ """Export attendees csv"""
201
+ return_dict_list = []
202
+ for attendee in attendees :
203
+ attendee_data = get_attendee_data (attendee , custom_forms , attendee_form_dict )
204
+ if attendee_data :
205
+ return_dict_list .append (attendee_data )
154
206
155
207
return return_dict_list
156
208
0 commit comments