767 leading = (rec.user.link_id,) |
767 leading = (rec.user.link_id,) |
768 records.append(leading + values) |
768 records.append(leading + values) |
769 return records |
769 return records |
770 |
770 |
771 |
771 |
772 def to_csv(survey): |
772 def to_csv(survey_view): |
773 """CSV exporter. |
773 """CSV exporter. |
774 """ |
774 |
775 |
775 Args: |
776 # get header and properties |
776 survey_view: instance of the SurveyView |
777 header = _get_csv_header(survey) |
777 """ |
778 leading = ['user', 'created', 'modified'] |
778 |
779 properties = leading + survey.survey_content.orderedProperties() |
779 def wrapper(survey): |
780 |
780 """Wrapper function. |
781 try: |
781 """ |
782 first = survey.getRecords().run().next() |
782 survey_logic = survey_view.getParams()['logic'] |
783 except StopIteration: |
783 record_logic = survey_logic.getRecordLogic() |
784 # bail out early if survey_records.run() is empty |
784 |
785 return header, survey.link_id |
785 # get header and properties |
786 |
786 header = _get_csv_header(survey) |
787 # generate results list |
787 leading = ['user', 'created', 'modified'] |
788 recs = survey.getRecords().run() |
788 properties = leading + survey.survey_content.orderedProperties() |
789 recs = _get_records(recs, properties) |
789 |
790 |
790 # retrieve the query of the data to export |
791 # write results to CSV |
791 fields = {'survey': survey} |
792 output = StringIO.StringIO() |
792 record_query = record_logic.getQueryForFields(fields) |
793 writer = csv.writer(output) |
793 |
794 writer.writerow(properties) |
794 try: |
795 writer.writerows(recs) |
795 first = record_query.run().next() |
796 |
796 except StopIteration: |
797 return header + output.getvalue(), survey.link_id |
797 # bail out early if survey_records.run() is empty |
|
798 return header, survey.link_id |
|
799 |
|
800 # generate results list |
|
801 recs = record_query.run() |
|
802 recs = _get_records(recs, properties) |
|
803 |
|
804 # write results to CSV |
|
805 output = StringIO.StringIO() |
|
806 writer = csv.writer(output) |
|
807 writer.writerow(properties) |
|
808 writer.writerows(recs) |
|
809 |
|
810 return header + output.getvalue(), survey.link_id |
|
811 return wrapper |