[getpaid commit] r1174 - in trunk/products/PloneGetPaid: . Extensions

0 views
Skip to first unread message

codesite...@google.com

unread,
Jan 14, 2008, 8:39:28 PM1/14/08
to getpaid...@groups.google.com
Author: esartor
Date: Mon Jan 14 17:38:29 2008
New Revision: 1174

Modified:
trunk/products/PloneGetPaid/Extensions/install.py
trunk/products/PloneGetPaid/cart.py
trunk/products/PloneGetPaid/configure.zcml
trunk/products/PloneGetPaid/setuphandlers.py

Log:
The cart is persistent now.

Modified: trunk/products/PloneGetPaid/Extensions/install.py
==============================================================================
--- trunk/products/PloneGetPaid/Extensions/install.py (original)
+++ trunk/products/PloneGetPaid/Extensions/install.py Mon Jan 14
17:38:29 2008
@@ -14,8 +14,9 @@
from Products.PloneGetPaid import generations
from Products.PloneGetPaid.interfaces import IGetPaidManagementOptions
from Products.PloneGetPaid.config import PLONE3
+from Products.PloneGetPaid.cart import ShoppingCartUtility
from five.intid.site import add_intids
-from getpaid.core.interfaces import IOrderManager, IStore
+from getpaid.core.interfaces import IOrderManager, IStore, IShoppingCartUtility
from getpaid.core.order import OrderManager
from getpaid.core.payment import CREDIT_CARD_TYPES

@@ -153,6 +154,18 @@
"""
manage_options = IGetPaidManagementOptions(self)
manage_options.setProperty('credit_cards', CREDIT_CARD_TYPES)
+
+def register_shopping_cart_utility(self):
+ """ Register a local utility to make carts persists
+ """
+ portal = getToolByName(self, 'portal_url').getPortalObject()
+ sm = portal.getSiteManager()
+
+ if not sm.queryUtility(IShoppingCartUtility):
+ if PLONE3:
+ sm.registerUtility(ShoppingCartUtility(), IShoppingCartUtility)
+ else:
+ sm.registerUtility(IShoppingCartUtility, ShoppingCartUtility())

def install( self ):
out = StringIO()

Modified: trunk/products/PloneGetPaid/cart.py
==============================================================================
--- trunk/products/PloneGetPaid/cart.py (original)
+++ trunk/products/PloneGetPaid/cart.py Mon Jan 14 17:38:29 2008
@@ -1,49 +1,72 @@
"""
-
Session Based Cart Implementation

$Id$
"""
-
+from zope.component import getUtility
from zope.interface import implements

from getpaid.core.cart import ShoppingCart
from getpaid.core.interfaces import IShoppingCartUtility
from Products.CMFCore.utils import getToolByName
+from persistent import Persistent
+from BTrees.OOBTree import OOBTree
+from AccessControl import getSecurityManager
+
+class ShoppingCartUtility(Persistent):
+
+ implements(IShoppingCartUtility)
+
+ def __init__(self):
+ self._sessions = OOBTree()
+
+
+ def get(self, context, create=False):
+ """ Get the persistent cart. It does not persist for anonymous users.
+ """
+ uid = getSecurityManager().getUser().getId()
+
+ if not uid:
+ session_manager = getToolByName( context, 'session_data_manager')
+ if not session_manager.hasSessionData() and not create:
+ return None

-class ShoppingCartUtility( object ):
-
- implements( IShoppingCartUtility )
-
- def get( self, context, create=False ):
- session_manager = getToolByName( context, 'session_data_manager')
- if not session_manager.hasSessionData() and not create:
- return None
-
- session = session_manager.getSessionData()
- if not session.has_key('getpaid.cart'):
- if create:
- session['getpaid.cart'] = cart = ShoppingCart()
- member_tool = getToolByName( context, 'portal_membership')
- member = member_tool.getAuthenticatedMember()
- cart.member_id = member and member.getId() or "Anonymous"
- else:
+ session = session_manager.getSessionData()
+ if not session.has_key('getpaid.cart'):
+ if create:
+ session['getpaid.cart'] = cart = ShoppingCart()
+ else:
+ return None
+ return session['getpaid.cart']
+
+ cart = self._sessions.get(uid)
+ if cart or not create:
+ return cart
+
+ cart = ShoppingCart()
+ cart.member_id = uid
+ self._sessions[uid] = cart
+ return cart
+
+
+ def destroy(self, context):
+ """ Destroy the cart.
+ """
+ uid = getSecurityManager().getUser().getId()
+
+ if not uid:
+ # delete the current shopping cart
+ session_manager = getToolByName( context, 'session_data_manager')
+ if not session_manager.hasSessionData(): #nothing to destroy
return None
- return session['getpaid.cart']
-
- def destroy( self, context ):
- # delete the current shopping cart
- session_manager = getToolByName( context, 'session_data_manager')
- if not session_manager.hasSessionData(): #nothing to destroy
- return None
- session = session_manager.getSessionData()
- if not session.has_key('getpaid.cart'):
- return
- del session['getpaid.cart']
+ session = session_manager.getSessionData()
+ if not session.has_key('getpaid.cart'):
+ return
+ del session['getpaid.cart']

-
-
+ if self._sessions.has_key(uid):
+ del self._sessions[uid]

-

-
+ def manage_fixupOwnershipAfterAdd(self):
+ pass

Modified: trunk/products/PloneGetPaid/configure.zcml
==============================================================================
--- trunk/products/PloneGetPaid/configure.zcml (original)
+++ trunk/products/PloneGetPaid/configure.zcml Mon Jan 14 17:38:29 2008
@@ -151,10 +151,6 @@

<!-- Utilities -->
<utility
- provides="getpaid.core.interfaces.IShoppingCartUtility"
- factory=".cart.ShoppingCartUtility"/>
-
-<utility
provides=".interfaces.ICountriesStates"
factory=".vocabularies.CountriesStatesFromFile"/>


Modified: trunk/products/PloneGetPaid/setuphandlers.py
==============================================================================
--- trunk/products/PloneGetPaid/setuphandlers.py (original)
+++ trunk/products/PloneGetPaid/setuphandlers.py Mon Jan 14 17:38:29 2008
@@ -10,6 +10,7 @@
from Products.PloneGetPaid.Extensions.install import add_intids
from Products.PloneGetPaid.Extensions.install import install_plone3_portlets
from Products.PloneGetPaid.Extensions.install import setup_payment_options
+from Products.PloneGetPaid.Extensions.install import register_shopping_cart_utility
from Products.PloneGetPaid.config import PLONE3

def setupVarious(context):
@@ -56,6 +57,9 @@

print >> out, "Setting up update facility"
setup_software_generation( site )
+
+ print >> out, "Registering shopping cart utility"
+ register_shopping_cart_utility(site)

logger.info(out.getvalue())

Reply all
Reply to author
Forward
0 new messages