Commit 207c9e88 authored by vaisakh.nair's avatar vaisakh.nair 🎯

added - template and logo changes

parent 723a857c
template_file: /path/to/template.xlsx
logo_image: /path/to/logo.png
......@@ -4,14 +4,25 @@ from datetime import datetime, timedelta
import schedule
import time
import os
from openpyxl import load_workbook
from openpyxl.drawing.image import Image
import yaml
class DailyReportGenerator:
def __init__(self):
# Connect to MongoDB
client = MongoClient(os.environ["MONGO_CLIENT"])
db = client[os.environ["MONGO_DATABASE"]]
self.collection = db[os.environ["MONGO_COLLECTION"]]
# Load configuration from config.yml
with open('config.yml') as config_file:
config = yaml.safe_load(config_file)
self.template_file = config['template_file']
self.logo_image = config['logo_image']
def get_shift_name(self, timestamp):
hour = timestamp.hour
......@@ -22,7 +33,6 @@ class DailyReportGenerator:
else:
return 'Shift C'
def map_packer_name(self, camera_name):
packer_mapping = {
'camera_41': 'Packer 1',
......@@ -57,28 +67,53 @@ class DailyReportGenerator:
def create_excel_report(self):
data = []
report_file = 'daily_report.xlsx'
current_time = datetime.now()
start_time = datetime(current_time.year, current_time.month, current_time.day - 1, 6, 0, 0)
end_time = datetime(current_time.year, current_time.month, current_time.day, 6, 0, 0)
wb = load_workbook(self.template_file)
sheet = wb.active
# Add logos
logo_image = Image(self.logo_image)
sheet.add_image(logo_image, 'A1')
sheet.merge_cells('A1:C3')
# Add headings
sheet['D1'] = 'JK CEMENT WORKS, NIMBAHERA RAJASTHAN'
sheet['D1'].font = sheet['D1'].font.copy(bold=True)
sheet['D1'].alignment = sheet['D1'].alignment.copy(horizontal='center')
# Add column headers
sheet['A7'] = 'Date'
sheet['B7'] = 'Shift Name'
sheet['C7'] = 'Packer Name'
sheet['D7'] = 'Count'
# Start filling details from row 8
row = 8
for camera_name in ['camera_41', 'camera_42', 'camera_44', 'camera_45', 'camera_46', 'camera_47']:
shift_name = self.get_shift_name(start_time)
packer_name = self.map_packer_name(camera_name)
count = self.get_count(start_time, end_time, camera_name)
data.append({
'Date': start_time.date(),
'Shift Name': shift_name,
'Packer Name': packer_name,
'Count': count
})
# Fill in the data in respective cells
sheet[f'A{row}'] = start_time.date()
sheet[f'B{row}'] = shift_name
sheet[f'C{row}'] = packer_name
sheet[f'D{row}'] = count
row += 1
df = pd.DataFrame(data)
writer = pd.ExcelWriter('daily_report.xlsx', engine='openpyxl')
df.to_excel(writer, index=False, sheet_name='Report')
writer.save()
# Save the report file
wb.save(report_file)
# Return the absolute path of the generated report file
file_path = os.path.abspath(report_file)
return file_path
def schedule_report_generation(self):
schedule.every().day.at('08:00').do(self.create_excel_report)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment