Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions RELEASE-NOTES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
### v0.10.1

##### Bugfixes

- Bugfix illigal characters from description ([#548](https://github.com/Code-Poets/sheetstorm/pull/548))



### v0.10.0

##### Features
Expand Down
7 changes: 6 additions & 1 deletion employees/common/exports.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import re
from typing import Dict
from typing import List
from typing import Optional
Expand Down Expand Up @@ -128,12 +129,13 @@ def _fill_report_for_single_user(self, employee_name: str, reports: ReportQueryS

def _fill_single_report(self, report: Report) -> None:
report_date = self._get_report_date(report)
report_description = self.delete_illigal_characters(report.description)
storage_data = {
constants.DATE_HEADER_STR.value: report_date,
constants.PROJECT_HEADER_STR.value: report.project.name,
constants.TASK_ACTIVITY_HEADER_STR.value: report.task_activities.name,
constants.HOURS_HEADER_STR.value: report.work_hours_str,
constants.DESCRIPTION_HEADER_STR.value: report.description,
constants.DESCRIPTION_HEADER_STR.value: report_description,
}
self._fill_current_report_data(storage_data)
self._set_row_height(str(storage_data[constants.DESCRIPTION_HEADER_STR.value]))
Expand Down Expand Up @@ -257,6 +259,9 @@ def _set_printing_settings_for_current_sheet(self) -> None:
self._active_worksheet.sheet_properties.pageSetUpPr.fitToPage = True
self._active_worksheet.page_setup.fitToHeight = False

def delete_illigal_characters(self, description: str) -> str: # pylint: disable=no-self-use
return re.sub(r"[\000-\010]|[\013-\014]|[\016-\037]", "", description)


def save_work_book_as_csv(writer: _writer, work_book: Workbook, hours_column_setting: ColumnSettings) -> None:
sheet = work_book.active
Expand Down
16 changes: 16 additions & 0 deletions employees/tests/test_unit_export_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ class DataSetUpToTests(TestCase):
def setUp(self):
super().setUp()
self.user = AdminUserFactory()
self.new_user = AdminUserFactory()
self.other_project = ProjectFactory()
self.project_start_date = timezone.now() + timezone.timedelta(days=-1)
self.project = ProjectFactory(
name="aaa", start_date=self.project_start_date, stop_date=timezone.now() + timezone.timedelta(days=6)
Expand Down Expand Up @@ -211,6 +213,20 @@ def test_description_should_be_the_same_in_excel(self):
).value,
)

def test_description_should_be_exported_without_illegal_characters(self):
# description text copied from sentry report which raised exception
ReportFactory(
author=self.new_user,
project=self.other_project,
description="1h error: core.Service is not suitable for converting to 'apps/v1' 1h Cannot determine the "
"module for class AccountSettingsComponent in "
"/build/chematica-front-end-app/src/app/account-settings/account-settings.component.ts! "
"Add AccountSettingsComponent to the NgModule to fix it. 1h various deployments 1h deployment "
"error: checking out frontend to 0.5.0 not working (frontend tag was not ready)",
)
self.other_project.members.add(self.new_user)
generate_xlsx_for_project(self.other_project)

@staticmethod
def _hours_date_time_to_excel_time_field(hours_delta):
sum_from_reports_as_string = f"{int(hours_delta.total_seconds() / 3600)}:00:00"
Expand Down