def generate_spreadsheet(account_id, useraccount_id, spreadsheet_id, downloaded_spreadsheet_id, file_type): # print "starting.." from spreadsheets.models import Spreadsheet, DownloadedSpreadsheet from spreadsheets.spreadsheet import SpreadsheetAbstraction from accounts.models import Account account = Account.objects.get(pk=account_id) spreadsheet = Spreadsheet.objects.get(pk=spreadsheet_id, account=account) f_write = cStringIO.StringIO() SpreadsheetAbstraction.create_spreadsheet(spreadsheet.members, spreadsheet.template_obj, file_type, file_handler=f_write) extension = SpreadsheetAbstraction.extension_from_file_type(file_type) downloaded_spreadsheet = DownloadedSpreadsheet.objects.get(pk=downloaded_spreadsheet_id) downloaded_spreadsheet.downloaded_file.save("%s.%s.%s" % (spreadsheet.full_name, downloaded_spreadsheet.pk, extension), ContentFile(f_write.getvalue()), save=False) downloaded_spreadsheet.generation_finished = True downloaded_spreadsheet.save() # print "done"
def create_and_save_200_person_spreadsheet(self, fields=["first_name","last_name","email","phone_number"], spreadsheet_filename=None): if not spreadsheet_filename: spreadsheet_filename = "test.xls" full_filename = os.path.join(settings.PROJECT_ROOT, TEST_SPREADSHEET_PATH, spreadsheet_filename) if not os.path.exists(full_filename): Person.objects_by_account(self.account).all().delete() [Factory.person(self.account) for f in range(0,200)] fh = open(full_filename, 'w') q = Person.objects_by_account(self.account).all() SpreadsheetAbstraction.create_spreadsheet(q, fields, EXCEL_TYPE, file_handler=fh) fh.flush() fh.close() Person.objects_by_account(self.account).all().delete() return spreadsheet_filename
def people_mailing_list_spreadsheet_file(cls, account, file_type=None, template=SPREADSHEET_TEMPLATE_CHOICES[0][0], **kwargs): f_write = cStringIO.StringIO() s = cls.spreadsheet(account, template, file_type) SpreadsheetAbstraction.create_spreadsheet(s.members, s.template_obj, s.default_filetype, file_handler=f_write, with_header=False) f_read = cStringIO.StringIO(f_write.getvalue()) return f_read