I would like to have an homogeneous website about portlets but the
EasyShop portlets can't be view outside the shop.
I try to change the getShop method in easyshop.shop
def getShop(self):
"""
"""
object = self.context
#try:
# while IShop.providedBy(object) == False:
# if object.meta_type == "Plone Factory Tool":
# object = object.aq_parent
# else:
# object = object.aq_inner.aq_parent
#except AttributeError:
# Next line is needed for the temporary products for payment and
# shipping. As they have real context above code seems not to
# work. But they have given the shop as context so we can give
# it back here. See also:
# - adapters/shop/payment/createTemporaryPaymentProduct
# -
adapters/shop/shipping/createTemporaryShippingProduct.
# I'm not sure whether this is clean, I assume it is not.
#try:
# if IShop.providedBy(object.context):
# return object.context
# else:
# return None
#except AttributeError:
# return None
while object.meta_type != "Plone Site":
try:
object = object.aq_inner.aq_parent
except AttributeError:
object = object.context
catalog = getToolByName(object, "portal_catalog")
for shop in catalog(portal_type = "EasyShop"):
if shop:
object = shop.getObject()
return object
And it works for me but I don't know if it's a good idea, because from
my point of view, I want one only instance of EasyShop and if there are
more, I think this method doesn't work...
Does anyone has a better solution (or a better code)?
Loc
Thanks Niall for answer.
> Can you have your modification pull the context from that hack in
> easyshop.core?
No.
Well, I'll try to find that code this week-end.
I saw that my code doesn't work for anonymous checkout.
I changed the getShop method to resolve this problem and check if there
are one instance or more of EasyShop,
but I'll look more closely at the code in easyshop.core and I'll tell
you after.
Loc
Le 03/06/2010 14:13, ned14 a �crit :
> There are several places throughout the Easyshop code where the
> problem of what context to use arises, and to my knowledge there is a
> temporary hack which simply forces it to the first shop added to the
> Plone site. There is a comment right next to the code in question, and
> I think it's in easyshop.core.
>
> Can you have your modification pull the context from that hack in
> easyshop.core? That way everything runs through the same hack so if
> someone wanted say the second shop in the Plone site it would be very
> easy to change.
>
> I can try to refind that code for you if you can't find it?
>
> Niall
>
>
Loc
Le 04/06/2010 17:26, L�c Cosnier a �crit :