Feat: 내보내기 파일명을 탭이름_미배치/배치결과.xlsx로 변경, 중복 시 (숫자) 증가
This commit is contained in:
19
app.py
19
app.py
@@ -805,8 +805,17 @@ def export():
|
||||
wb = openpyxl.Workbook()
|
||||
wp_lookup = {wp['id']: wp for wp in t['workplaces']}
|
||||
tab_name = t['name']
|
||||
fname = store.get('filename', 'export.xlsx')
|
||||
base, ext = os.path.splitext(fname)
|
||||
|
||||
suffix_map = {'unassigned': '미배치', 'assigned': '배치결과', 'all': '배치결과'}
|
||||
suffix = suffix_map.get(export_type, '배치결과')
|
||||
|
||||
def make_filename():
|
||||
base = f'{tab_name}_{suffix}'
|
||||
store.setdefault('export_seq', {})
|
||||
key = base
|
||||
seq = store['export_seq'].get(key, 0) + 1
|
||||
store['export_seq'][key] = seq
|
||||
return f'{base}.xlsx' if seq == 1 else f'{base} ({seq}).xlsx'
|
||||
|
||||
if export_type == 'unassigned':
|
||||
ws = wb.active
|
||||
@@ -815,7 +824,6 @@ def export():
|
||||
for w in t['workers']:
|
||||
if w['id'] not in t['assignments']:
|
||||
ws.append([w['name'], w['hope'], w['address'], w['dob'], w['phone']])
|
||||
dn = f'{base}_{tab_name}_미배치{ext}'
|
||||
|
||||
elif export_type == 'assigned':
|
||||
ws = wb.active
|
||||
@@ -842,9 +850,8 @@ def export():
|
||||
aw = [w['name'] for w in t['workers'] if t['assignments'].get(w['id']) in g['workplace_ids']]
|
||||
if aw:
|
||||
ws2.append([combined_name, addr, len(aw), ', '.join(aw)])
|
||||
dn = f'{base}_{tab_name}_배치결과{ext}'
|
||||
|
||||
else: # all (기존 동작)
|
||||
else: # all (전체)
|
||||
ws1 = wb.active
|
||||
ws1.title = '배치 현황'
|
||||
ws1.append(['이름', '연락처', '생년월일', '희망사항', '주소', '배치근무지', '근무지주소'])
|
||||
@@ -866,11 +873,11 @@ def export():
|
||||
combined_name = ', '.join(g['names'])
|
||||
aw = [w['name'] for w in t['workers'] if t['assignments'].get(w['id']) in g['workplace_ids']]
|
||||
ws2.append([combined_name, addr, len(aw), ', '.join(aw)])
|
||||
dn = f'{base}_{tab_name}_배치결과{ext}'
|
||||
|
||||
buf = io.BytesIO()
|
||||
wb.save(buf)
|
||||
buf.seek(0)
|
||||
dn = make_filename()
|
||||
return send_file(buf, as_attachment=True, download_name=dn,
|
||||
mimetype='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user