Summary
Date
Spring 2007
Created For
Independent Study Course
Skills
OOP, Web Programming, Databases, Email
Technology
Python, XHTML, CSS, JavaScript, AJAX, SQL, Eclipse IDE
Source Code

pySubscriber
pySubscriber was built to be, more or less, a replacement for NP Subscriber Pro. It is
written completely in Python. It was created for an independent study course, but it will most likely continue to undergo development in my spare time. It will be posted on NPScripts.com once it has reached a slightly more finished state.
This project was essentially a personal exercise in the object-oriented concepts of abstraction and modularity. It was also a bit of a chance to further use AJAX in an environment where it is actually beneficial without being overbearing. It was written using the Eclipse IDE with the PyDev extension.
pySubscriber's main features are as follows:
Modular DB Support
- Built in support for MySQL and SQLite
- Abstracted interface to allow individual DB implementations
- Transparently accessed through generic DAOFactory and DBConnectionFactory
- New DB support can be added by implementing DAO methods on an as-needed basis
Modular Mailer Support
- Built in support for SMTP and Sendmail
- Abstracted interface so that underlying choice of mailer is transparent
- Transparently accessed through generic MailerFactory
- New mailer can be supported with implementation of one class method
Modular Administration Interface
- Admin script loads appropriate module and method based off of request (with verifications)
- Currently 2 levels of administration: list admin and system admin
Template System
- Allows following operations:
- Simple variable substitution
- List formatting (takes in an array, returns substituted text for each element)
- Error displaying
- Conditional text display
- Accessed through custom output classes, allowing for future support for internationalization
Overall this project was very beneficial and enjoyable and the bulk of its architecture was completed in just a few weeks. Using the built in modularity of Python I was able to create the desired level of abstraction and modularity. The ease with which new database systems and mailers can be supported is a credit to its design. In the course of completing this project, my love of Python grew by leaps and bounds (mostly)...
