def create_csv_file(self, file_name, body_dict, spreadsheet_range_name):
        """
        Creates the csv file with the passed arguments, and then save it locally.

        Args:
            file_name: File string name.
            body_dict: Dict with the data to write the csv file.
            spreadsheet_range_name: Range name to update the spreadsheet file in A notation:
            https://developers.google.com/sheets/api/guides/concepts#a1_notation
        """
        file_path = '{parent_folder}/result/{file_name}.csv'.format(
            parent_folder=os.path.join(os.path.dirname(__file__), os.pardir),
            file_name=file_name,
        )

        try:
            headers = body_dict[0].keys()
        except IndexError:
            return None

        with open(file_path, mode='w', encoding='utf-8') as csv_file:
            writer = csv.DictWriter(csv_file, fieldnames=headers)

            writer.writeheader()

            for row in body_dict:
                writer.writerow(row)

        self.upload_file_to_storage(file_path, file_name)
        update_sheets_data(
            file_path,
            self.spreadsheet_data.get('enrollment_per_site', ''),
            spreadsheet_range_name,
        )
示例#2
0
    def create_csv_file(self, course, body_dict, spreadsheet_id):
        """
        Creates the csv file with the passed arguments, and then save it locally.
        """
        path_file = '{parent_folder}/result/{course}.csv'.format(
            parent_folder=os.path.join(os.path.dirname(__file__), os.pardir),
            course=course)
        if body_dict:
            with open(path_file, mode='w', encoding='utf-8') as csv_file:
                column_headers = body_dict[0].keys()
                writer = csv.DictWriter(csv_file, fieldnames=column_headers)

                writer.writeheader()
                static_headers = ['user_id', 'username', 'cohort', 'team']

                for row in body_dict:
                    for key, value in row.items():
                        if key not in static_headers:
                            if not value and isinstance(value, bool):
                                row[key] = ''
                            elif isinstance(value, bool):
                                row[key] = 'X'

                    writer.writerow(row)

            self.upload_file_to_storage(course, path_file)
            update_sheets_data(path_file, spreadsheet_id)
    def create_csv_file(self, file_name, body_dict, course_id):
        """
        Creates the csv file with the passed arguments, and then save it locally.

        Args:
            file_name: File string name.
            body_dict: Dict with the data to write the csv file.
            course_id: Course key value.
        """
        file_path = '{parent_folder}/result/{file_name}.csv'.format(
            parent_folder=os.path.join(os.path.dirname(__file__), os.pardir),
            file_name=file_name,
        )

        try:
            headers = body_dict[0].keys()
        except IndexError:
            return None

        with open(file_path, mode='w', encoding='utf-8') as csv_file:
            writer = csv.DictWriter(csv_file, fieldnames=headers)

            writer.writeheader()

            for row in body_dict:
                writer.writerow(row)

        self.upload_file_to_storage(course_id, file_path)
        update_sheets_data(
            file_path=file_path,
            spreadsheet_id=self.spreadsheet_data.get('last_login_report_{}'.format(course_id)),
            spreadsheet_range_name=self.spreadsheet_range,
        )
示例#4
0
    def create_csv_file(self, file_name, body_dict, course_id, headers, *args,
                        **kwargs):
        """
        Create the csv file with the passed arguments, and then save it locally.
        """
        path_file = '{parent_folder}/result/{file_name}.csv'.format(
            parent_folder=os.path.join(os.path.dirname(__file__), os.pardir),
            file_name=file_name,
        )

        with open(path_file, mode='w', encoding='utf-8') as csv_file:
            column_headers = headers
            writer = csv.DictWriter(csv_file, fieldnames=column_headers)

            writer.writeheader()

            for row in body_dict:
                writer.writerow(row)

        self.upload_file_to_storage(file_name, path_file)
        update_sheets_data(
            file_path=path_file,
            spreadsheet_id=self.spreadsheet_data.get(
                'activity_completion_report_{}'.format(course_id)),
            spreadsheet_range_name=self.spreadsheet_range,
        )
    def create_csv_file(self, file_name, body_dict, headers, spreadsheet_id):
        """
        Creates the csv file with the passed arguments, and then save it locally.
        """
        path_file = '{parent_folder}/result/{file_name}.csv'.format(
            parent_folder=os.path.join(os.path.dirname(__file__), os.pardir),
            file_name=file_name)

        with open(path_file, mode='w', encoding='utf-8') as csv_file:
            column_headers = headers
            writer = csv.DictWriter(csv_file, fieldnames=column_headers)

            writer.writeheader()
            for row in body_dict:
                writer.writerow(row)

        self.upload_file_to_storage(file_name, path_file)
        update_sheets_data(path_file, spreadsheet_id)