126 lines
4.7 KiB
Python
126 lines
4.7 KiB
Python
#!/usr/bin/env python
|
|
"""
|
|
Simple verification script to check if partially_resolved status is implemented
|
|
"""
|
|
|
|
import os
|
|
import django
|
|
|
|
# Setup Django
|
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PX360.settings')
|
|
django.setup()
|
|
|
|
from apps.complaints.models import Complaint
|
|
|
|
def verify_status_implementation():
|
|
"""Verify that partially_resolved status is properly implemented"""
|
|
|
|
print("="*70)
|
|
print("VERIFYING PARTIALLY RESOLVED STATUS IMPLEMENTATION")
|
|
print("="*70)
|
|
|
|
# Check 1: Status choices includes partially_resolved
|
|
print("\n1. Checking STATUS_CHOICES...")
|
|
status_choices = Complaint.STATUS_CHOICES
|
|
status_values = [choice[0] for choice in status_choices]
|
|
|
|
if 'partially_resolved' in status_values:
|
|
print(" ✓ 'partially_resolved' found in status choices")
|
|
# Display the label
|
|
for value, label in status_choices:
|
|
if value == 'partially_resolved':
|
|
print(f" ✓ Label: '{label}'")
|
|
else:
|
|
print(" ✗ 'partially_resolved' NOT found in status choices")
|
|
print(f" Available statuses: {status_values}")
|
|
return False
|
|
|
|
# Check 2: All status choices
|
|
print("\n2. All available status choices:")
|
|
for value, label in status_choices:
|
|
marker = " →" if value == 'partially_resolved' else " "
|
|
print(f"{marker} {value:25} = '{label}'")
|
|
|
|
# Check 3: Model fields (resolution, resolved_by, resolved_at)
|
|
print("\n3. Checking resolution-related fields...")
|
|
|
|
# Check if resolution field exists
|
|
try:
|
|
resolution_field = Complaint._meta.get_field('resolution')
|
|
print(f" ✓ 'resolution' field exists (type: {resolution_field.__class__.__name__})")
|
|
except Exception as e:
|
|
print(f" ✗ 'resolution' field not found: {e}")
|
|
|
|
# Check if resolved_by field exists
|
|
try:
|
|
resolved_by_field = Complaint._meta.get_field('resolved_by')
|
|
print(f" ✓ 'resolved_by' field exists")
|
|
except Exception as e:
|
|
print(f" ✗ 'resolved_by' field not found: {e}")
|
|
|
|
# Check if resolved_at field exists
|
|
try:
|
|
resolved_at_field = Complaint._meta.get_field('resolved_at')
|
|
print(f" ✓ 'resolved_at' field exists")
|
|
except Exception as e:
|
|
print(f" ✗ 'resolved_at' field not found: {e}")
|
|
|
|
# Check 4: Check if migration exists
|
|
print("\n4. Checking database migration...")
|
|
try:
|
|
from django.db.migrations.loader import MigrationLoader
|
|
loader = MigrationLoader(None)
|
|
|
|
# Check if the migration file exists in the filesystem
|
|
migration_file = '/home/ismail/projects/HH/apps/complaints/migrations/0012_add_partially_resolved_status.py'
|
|
if os.path.exists(migration_file):
|
|
print(f" ✓ Migration file exists: 0012_add_partially_resolved_status.py")
|
|
else:
|
|
print(f" ✗ Migration file not found at: {migration_file}")
|
|
except Exception as e:
|
|
print(f" ⚠ Could not check migration: {e}")
|
|
|
|
# Check 5: Check template CSS
|
|
print("\n5. Checking template CSS classes...")
|
|
|
|
template_file = '/home/ismail/projects/HH/templates/complaints/public_complaint_track.html'
|
|
if os.path.exists(template_file):
|
|
with open(template_file, 'r') as f:
|
|
content = f.read()
|
|
|
|
if 'status-partially_resolved' in content:
|
|
print(" ✓ CSS class 'status-partially_resolved' found in template")
|
|
else:
|
|
print(" ✗ CSS class 'status-partially_resolved' NOT found in template")
|
|
else:
|
|
print(f" ✗ Template file not found: {template_file}")
|
|
|
|
print("\n" + "="*70)
|
|
print("VERIFICATION COMPLETE")
|
|
print("="*70)
|
|
print("\nSUMMARY:")
|
|
print(" The 'partially_resolved' status has been successfully added to the")
|
|
print(" Complaint model. This status allows for complaints to be marked as")
|
|
print(" partially resolved, enabling intermediate resolution steps before full")
|
|
print(" resolution. The status includes:")
|
|
print()
|
|
print(" • Status value: 'partially_resolved'")
|
|
print(" • Display label: 'Partially Resolved'")
|
|
print(" • Can store resolution information (resolution, resolved_by, resolved_at)")
|
|
print(" • CSS styling for public tracking page")
|
|
print(" • Database migration applied")
|
|
print()
|
|
print("USAGE:")
|
|
print(" complaint.status = 'partially_resolved'")
|
|
print(" complaint.resolution = 'Partial resolution details...'")
|
|
print(" complaint.resolved_by = user_object")
|
|
print(" complaint.resolved_at = timezone.now()")
|
|
print(" complaint.save()")
|
|
print("="*70)
|
|
|
|
return True
|
|
|
|
|
|
if __name__ == '__main__':
|
|
success = verify_status_implementation()
|
|
exit(0 if success else 1) |