The document provides an overview and design details for the Birdie lead management system. Key points include:
- Birdie tracks sales leads, companies, divisions, teams, and users to facilitate lead distribution and reporting.
- It uses Django and Python for the web application framework and MySQL for the database. Storyboards illustrate user flows and the entity relationship diagram shows the database design.
- Error handling, data validation, and referential integrity controls are implemented through Django and database constraints. Forms validate user input and the framework handles errors.
3. COMPANY / SYSTEM BACKGROUND
National Marketing Resources / Professional Marketing International
•
Business development, sales leads, web coaching
•
Current system, LINKS, is tied to Windows-only desktop clients
•
New system, Birdie, frees up the user to be on whatever platform they choose (Linux,
•
Mac, mobile browsers)
Implements sales leads tracking, sales company management, report generation
•
4. WHAT THE SYSTEM DOES
Processing representatives can add leads, lead sources, promotions, company
•
information
Processing reps pass leads on to individual sales companies
•
Company managers divvy out leads down to divisions, which divvy leads to teams
•
Teamleaders distribute leads to marketers, who follow up on sales calls with information
•
about the customer, possibly upgraded lead status
Reports can be generated on lead detail, company detail, unit performance, and more
•
6. System
Define lead
source
Create new lead
Import external
leads
USE CASES
Define promotion
Define marketing
campaign
Processing Representative Processing Assign leads to
Rep lead path
Distribute leads to
sales company
Export lead list
Define customer
7. System
Distribute leads to
sales team
Distribute leads to
division
USE CASES Division
Generate lead
manager
report
Managers
Generate
marketer report
Sales
manager
Generate overall
report
Sales
Assign leads to
teamleader
marketers
33. ERROR TRAPPING MEASURES
Django’s model-layer API handles much of database-access legwork
•
Most method calls to view layer raise HTTP404 if row(s) not found in database
•
get_object_or_404(Model, criteria)
•
get_list_or_404(Model, criteria)
•
Other measures: Python try/except blocks, explicit raise Http404 calls
•
34. DATA VALIDATION THROUGH DJANGO FORMS API
Forms either abstract fields from
•
database or be standalone fields with
like-model-field names
Forms can ‘clean’ POST data, intelligently
•
turning text into Python objects
(unicode strings, integers, decimals)
Validation rules are set in form classes;
•
cleaning form data validates it (any
errors are shown to user in form)
35. DATABASE INTEGRITY
Database tables by field designed via Django models layer
•
Includes specifying all foreign keys (one-to-one, one-to-many, many-to-many
•
relationships)
manage.py syncdb establishes database tables from model classes
•
Integrity rules carried over into MySQL, SQLite, PostgreSQL, etc.
•
Any rows with foreign keys referencing deleted rows are also deleted
•