Add detailed skip reasons showing why PDFs were skipped
This commit is contained in:
1 parent
198e57835d
commit
a5b26d1324
1 file changed
+26
-15
+26
-15
@@ -59,7 +59,20 @@ def extract_names_from_pdf(pdf_path):
|
||||
grade = fields.get('Student Grade', {}).get('/V', '').strip()
|
||||
school = fields.get('Student School', {}).get('/V', '').strip()
|
||||
|
||||
if last_name and first_name and grade and school:
|
||||
# Check for missing fields
|
||||
missing_fields = []
|
||||
if not last_name:
|
||||
missing_fields.append('Last Name')
|
||||
if not first_name:
|
||||
missing_fields.append('First Name')
|
||||
if not grade:
|
||||
missing_fields.append('Student Grade')
|
||||
if not school:
|
||||
missing_fields.append('Student School')
|
||||
|
||||
if missing_fields:
|
||||
return {'error': f'Missing or empty fields: {", ".join(missing_fields)}'}
|
||||
|
||||
return {
|
||||
'filename': f"{last_name}_{first_name}.pdf",
|
||||
'last_name': last_name,
|
||||
@@ -67,10 +80,8 @@ def extract_names_from_pdf(pdf_path):
|
||||
'grade': grade,
|
||||
'school': school
|
||||
}
|
||||
else:
|
||||
return None
|
||||
except Exception as e:
|
||||
return None
|
||||
return {'error': f'PDF read error: {str(e)}'}
|
||||
|
||||
def process_job(job_id, files):
|
||||
job_queue[job_id]['status'] = 'processing'
|
||||
@@ -125,7 +136,10 @@ def process_job(job_id, files):
|
||||
pdf_path = os.path.join(root, f)
|
||||
job_queue[job_id]['progress'] = f'Processing PDF: {f}'
|
||||
pdf_info = extract_names_from_pdf(pdf_path)
|
||||
if pdf_info:
|
||||
if 'error' in pdf_info:
|
||||
processed_files.append(('skipped', f, pdf_info['error']))
|
||||
job_queue[job_id]['progress'] = f'Skipped {f} - {pdf_info["error"]}'
|
||||
else:
|
||||
job_queue[job_id]['progress'] = f'Extracted data for {pdf_info["first_name"]} {pdf_info["last_name"]}'
|
||||
# Create folder structure: Episode/School/Grade/
|
||||
school_dir = os.path.join(episode_dir, pdf_info['school'])
|
||||
@@ -143,14 +157,14 @@ def process_job(job_id, files):
|
||||
processed_files.append(('success', os.path.relpath(new_path, episode_dir), new_path))
|
||||
processed_count += 1
|
||||
job_queue[job_id]['progress'] = f'Organized {processed_count}/{total_files} files'
|
||||
else:
|
||||
processed_files.append(('skipped', f, None))
|
||||
job_queue[job_id]['progress'] = f'Skipped {f} - missing required fields'
|
||||
else:
|
||||
# Single PDF
|
||||
job_queue[job_id]['progress'] = f'Processing PDF: {filename}'
|
||||
pdf_info = extract_names_from_pdf(filepath)
|
||||
if pdf_info:
|
||||
if 'error' in pdf_info:
|
||||
processed_files.append(('skipped', filename, pdf_info['error']))
|
||||
job_queue[job_id]['progress'] = f'Skipped {filename} - {pdf_info["error"]}'
|
||||
else:
|
||||
job_queue[job_id]['progress'] = f'Extracted data for {pdf_info["first_name"]} {pdf_info["last_name"]}'
|
||||
# Create folder structure: Episode/School/Grade/
|
||||
school_dir = os.path.join(episode_dir, pdf_info['school'])
|
||||
@@ -168,9 +182,6 @@ def process_job(job_id, files):
|
||||
processed_files.append(('success', os.path.relpath(new_filepath, episode_dir), new_filepath))
|
||||
processed_count += 1
|
||||
job_queue[job_id]['progress'] = f'Organized {processed_count}/{total_files} files'
|
||||
else:
|
||||
processed_files.append(('skipped', filename, None))
|
||||
job_queue[job_id]['progress'] = f'Skipped {filename} - missing required fields'
|
||||
|
||||
job_queue[job_id]['progress'] = 'Creating ZIP archive...'
|
||||
# Create ZIP of the entire Episode directory structure
|
||||
@@ -195,7 +206,7 @@ def process_job(job_id, files):
|
||||
|
||||
job_queue[job_id]['status'] = 'completed'
|
||||
job_queue[job_id]['processed_files'] = processed_files
|
||||
job_queue[job_id]['skipped'] = [p[1] for p in processed_files if p[0] == 'skipped']
|
||||
job_queue[job_id]['skipped'] = [(p[1], p[2]) for p in processed_files if p[0] == 'skipped']
|
||||
|
||||
@app.route('/login')
|
||||
def login():
|
||||
@@ -418,8 +429,8 @@ def jobs():
|
||||
{% if job.skipped %}
|
||||
<p><strong>Skipped Files:</strong></p>
|
||||
<ul>
|
||||
{% for file in job.skipped %}
|
||||
<li>{{ file }}</li>
|
||||
{% for skip_info in job.skipped %}
|
||||
<li><strong>{{ skip_info[0] }}</strong>: {{ skip_info[1] }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
|
||||
Reference in new issue
Block a user