Client Categorization Feature - Visual Overview¶
Before This Feature¶
/clients/ page showed ALL clients:
┌─────────────────────────────────────┐
│ A partial list of valued clients │
├─────────────────────────────────────┤
│ │
│ • Client A │
│ • Client B │
│ • Client C │
│ • Internal Client (shouldn't show) │
│ • Test Client (shouldn't show) │
│ │
└─────────────────────────────────────┘
After This Feature¶
/clients/ page shows ONLY FEATURED clients GROUPED BY CATEGORY:
┌───────────────────────────────────────────────────────────────────┐
│ A partial list of valued clients │
├──────────────┬──────────────┬──────────────┬──────────────────────┤
│ GOVERNMENT │ NON-PROFIT │PRIVATE SECTOR│ EDUCATION │
├──────────────┼──────────────┼──────────────┼──────────────────────┤
│ │ │ │ │
│ • US Dept │ • Foundation │ • ACME Corp │ • University X │
│ of Example │ ABC │ • Tech Inc │ • College Y │
│ │ • Charity XYZ│ │ │
│ │ │ │ │
└──────────────┴──────────────┴──────────────┴──────────────────────┘
Note: Internal clients and test clients with featured=False do NOT appear
Admin Interface Enhancement¶
Django Admin - Clients List:
┌─────────────────────────────────────────────────────────────────────┐
│ Clients [+ Add] │
├─────────────────────────────────────────────────────────────────────┤
│ Filter: │
│ ☐ Featured: Yes Search: [____________] 🔍 │
│ ☐ Featured: No │
│ ☐ Government │
│ ☐ Non-Profit NAME COMPANY CATEGORY FEATURED │
│ ☐ Private Sector ────────────────────────────────────────── │
│ ☐ Education US Dept... GovCo Government ✓ │
│ ☐ Healthcare Foundation - Non-Profit ✓ │
│ ☐ Other ACME Corp ACME Inc Private ✓ │
│ Internal - Private ☐ │
│ Test Client - Other ☐ │
└─────────────────────────────────────────────────────────────────────┘
Client Edit Form¶
Edit Client:
┌─────────────────────────────────────────────────────────┐
│ Name: [_____________________________] │
│ │
│ URL: [_____________________________] │
│ │
│ Description: [_____________________________] │
│ [_____________________________] │
│ │
│ Company: [Select Company ▼] │
│ │
│ ☑ Featured Display on public clients page │
│ │
│ Category: [Government ▼] │
│ Options: │
│ - Government │
│ - Non-Profit │
│ - Private Sector │
│ - Education │
│ - Healthcare │
│ - Other │
│ │
│ [Save] [Cancel] │
└─────────────────────────────────────────────────────────┘
Database Schema¶
Client Model (db/models.py):
┌─────────────────────────────────────────────┐
│ Client │
├─────────────────────────────────────────────┤
│ id ObjectId (PK) │
│ created DateTime │
│ updated DateTime │
│ name CharField(300) │
│ description TextField │
│ address TextField │
│ url URLField(300) │
│ company_id ForeignKey(Company) │
│ featured BooleanField ⭐ NEW │
│ category CharField(50) ⭐ NEW │
│ Choices: │
│ - government │
│ - non-profit │
│ - private │
│ - education │
│ - healthcare │
│ - other │
└─────────────────────────────────────────────┘
Usage Flow¶
Administrator Workflow:
1. Login to Admin → /admin/
2. Navigate to Clients → /admin/db/client/
3. Edit/Create Client → Check "Featured" ✓
4. Select Category → "Government"
5. Save → Client now appears on public page
6. Public views page → /clients/ (client grouped under Government)
Public Visitor Workflow:
1. Visit website → https://aclark.net
2. Click Clients link → /clients/
3. See categorized list → Grouped by Government, Non-Profit, etc.
4. Click client URL → Opens client website in new tab
Code Flow¶
Request: GET /clients/
↓
cms/urls.py → ClientsView
↓
cms/views.py → get_context_data()
↓
Query: Client.objects.filter(featured=True)
↓
Group by: category
↓
Context: {'categories': {
'Government': [client1, client2],
'Non-Profit': [client3],
...
}}
↓
Template: cms/templates/clients.html
↓
Include: blocks/clients_block.html
↓
Render: Categorized client list
Example Data¶
Featured Government Client:
Client(
name="US Department of Example",
featured=True,
category="government",
url="https://example.gov"
)
Result: Appears on /clients/ under “Government”
Featured Non-Profit Client:
Client(
name="Example Foundation",
featured=True,
category="non-profit",
url="https://foundation.org"
)
Result: Appears on /clients/ under “Non-Profit”
Hidden Internal Client:
Client(
name="Internal Client",
featured=False,
category="private"
)
Result: Does NOT appear on /clients/ (featured=False)
Benefits¶
✅ Visibility Control: Choose which clients to display publicly
✅ Organization: Clients grouped by industry/sector
✅ Easy Management: Admin filters and search
✅ Professional Display: Organized, categorized presentation
✅ Flexibility: Can add/remove featured clients anytime
✅ Backward Compatible: Existing clients default to not featured