Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from csv import DictReader
- from datetime import datetime
- from weasyprint import HTML
- # https://dokodu.it/zapisy/
- class PdfReport:
- def __init__(self):
- self.rows = []
- def add_row(self, employee: str, hours:int, minutes:int):
- self.rows.append(
- f'<tr><td>{employee}</td><td>{hours} godzin {minutes} minut</td></tr>'
- )
- def save(self, filename: str):
- content = f'''<table>
- <thead>
- <tr>
- <th>Pracownik</th>
- <th>Czas pracy</th>
- </tr>
- </thead>
- <tbody>
- {''.join(self.rows)}
- </tbody>
- </table>'''
- html = HTML(string=content)
- html.write_pdf(filename)
- def read_file(filename: str):
- employee_report = {}
- with open(filename, 'r', encoding='utf8') as file:
- reader = DictReader(file)
- for row in reader:
- start_date = datetime.strptime(row['Start Date'], '%Y-%m-%d %H:%M:%S')
- end_date = datetime.strptime(row['End Date'], '%Y-%m-%d %H:%M:%S')
- employee = row['Employee']
- customer = row['Client Name']
- time_delta = end_date - start_date
- if employee in employee_report:
- employee_report[employee] += time_delta
- else:
- employee_report[employee] = time_delta
- return employee_report
- report = read_file('logs.txt')
- for employee, duration in report.items():
- hours, remainder = divmod(duration.total_seconds(), 3600)
- minutes, _ = divmod(remainder, 60)
- # print('Czas pracy', employee, int(hours), 'godzin', int(minutes), 'minut')
- print(f'Pracownik: {employee}, Czas pracy: {hours} godzin i {minutes} minut.')
- # https://doc.courtbouillon.org/weasyprint/stable/first_steps.html
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement