tangentlabs/django-oscar — pull request #197 by elbaschid (2012-05-29 07:54:04+00:00)
Title: Notifications for registered and anonymous users

**Disclaimer:** For now I would like to put this up for review and discussion rather then get it merged into Oscar right away. Currently only product notifications are handled in the frontend although there is backend functionality in place to make it extendibles.

I have almost finished implementing the notification with the following features:

* product notifications are visible *only* if a product is not in stock or does not have a stock record (a new product).

* an anonymous user can sign up for a notification of a product. They receive a confirmation link that they have to open to activate their sign up. An anonymous user does not have any means of managing their notifications in a list. The confirmation email contains a second link, however, with a *unsubscribe* link that allows for disabling of the notification.

* a registered user can sign up for notifications without having to confirm it. When a registered user signs up for a notification, the "Notify Me" button disappears from the product information and is replaced by a note stating that the user has already signed up.

* registered users can manage (activate/deactivate) their notifications in their account settings.

* an anonymous user that has signed up for notifications and creates an account will pull in their notifications and have them assigned to their account and are then no longer marked as anonymous

* the notifications app registers a receiver for the ``post_save`` signal of ``StockRecord``. Whenever a stock record is updated, the notifications are checked for this particular product and emails are sent out. These notifications are then disabled (not deleted) and marked with the date the email was sent. This hides the message from the registered users account. Notifications are still accessible, however, for staff members in the dashboard

* In the dashboard, the ``Customers`` navigation node is extended with a ``Notifications`` child that allows for editing, deleting and viewing all notifications. It also provides filtering capabilities for them based on status, customer name, customer email and/or product keyword.

This should describe the functionality at this stage. Please let me know how to improve the features, templates and code. Any feedback is appreciated.