I have updated page_processors.py and the error doesn't appear anymore. See the updated Gist <https://gist.github.com/henri-hulski/35554d2a6321547bc787>. I also see the "Donate now" form, but if I put an amount inside I get the error "Please correct the errors below", so he still cannot process the donation amount.
Thanks for your help, I think I'm getting closer, Henri Am Montag, 24. November 2014 11:01:30 UTC+1 schrieb henri: > > This is what I tried. > But I get the error: > TypeError: <class 'cartridge.shop.models.Product'> is not a valid argument > for page_processor, which should be a model subclass of Page in class or > string form (app.model), or a valid slug > > For now I have replaced the HTML form in a copy of > temlates/shop/product.html, but the goal is to have normal products and > products for donation beside each other as you described in your first post. > So how Cartridge knows which products are for donation? > > I have put the > donation_product/page_processors.py, donation_product/utils.py > and donation_product/temlates/shop/product.html in a gist > <https://gist.github.com/henri-hulski/35554d2a6321547bc787>. > > Henri > > Am Montag, 24. November 2014 08:35:05 UTC+1 schrieb Josh B: >> >> Create a page_processor for Product ( >> http://mezzanine.jupo.org/docs/content-architecture.html#page-processors >> ). >> >> On Saturday, November 22, 2014 3:42:09 PM UTC-7, henri wrote: >>> >>> Hallo Josh, >>> >>> Thanks a lot. >>> This is a good starting point. >>> >>> One more question. >>> Where do you put your form? >>> It seems to me, that it shut go in shop/product.html, but how to inject >>> it there? >>> >>> Henri >>> >>> >>> Am Freitag, 21. November 2014 22:35:00 UTC+1 schrieb Josh B: >>>> >>>> Sorry, was traveling and missed your message. What you will need to do >>>> is create either a view or a page processor ( >>>> http://mezzanine.jupo.org/docs/content-architecture.html#page-processors) >>>> to post your new form to. Code samples below. >>>> >>>> Here is my form: >>>> <form method="post" id="add-cart" action="{{ >>>> item.product.get_absolute_url }}"> >>>> {% csrf_token %} >>>> <input type="hidden" id="product_id" name="product_id" value="{{ >>>> item.product.id }}" /> >>>> <input type="hidden" name="quantity" id="id_quantity" value="1"> >>>> <input type="text" class="donation" id="donation_amount" >>>> name="donation_amount" /> >>>> <button type="submit" class="button small">Donate Now</button> >>>> </form> >>>> >>>> Form processing code: >>>> from .utils import Donation >>>> >>>> if request.method == "POST" and form.is_valid(): >>>> product = Product.objects.get(id=request.POST.get("product_id")) >>>> item = Donation(product, >>>> float(request.POST.get("donation_amount","0.0")) ) >>>> request.cart.add_item(item, 1) >>>> >>>> Utils >>>> class Donation(object): >>>> def __init__(self, product, unit_price, buyers_group): >>>> product_variation = product.variations.all() >>>> self.description = product.title >>>> self.unit_price = unit_price >>>> self.url = product.get_absolute_url() >>>> self.sku = product_variation[0].sku >>>> self.product = product >>>> self.image = product_variation[0].image >>>> self.buyers_group = buyers_group >>>> >>>> def price(self): >>>> return self.unit_price >>>> >>>> def __unicode__(self): >>>> return self.description >>>> >>>> On Friday, November 21, 2014 2:20:29 PM UTC-7, henri wrote: >>>>> >>>>> Hallo, >>>>> >>>>> I still don't know really how to start. >>>>> Is the implementation similar to what Josh Cartmell describes in his >>>>> Blog Collecting additional information on a per product basis in >>>>> Cartridge >>>>> <http://bitofpixels.com/blog/collecting-additional-information-on-a-per-product-basis-in-cartridge/> >>>>> ? >>>>> >>>>> Henri >>>>> >>>>> >>>>> Am Dienstag, 18. November 2014 19:22:01 UTC+1 schrieb henri: >>>>>> >>>>>> Hallo Josh, >>>>>> >>>>>> I also need the Donation option for real products, so I think your >>>>>> approach ist the right for my case. >>>>>> >>>>>> I must say, I'm not only new with Mezzanine/Cartrige but also with >>>>>> Django/Python. >>>>>> Before I was mainly coding in PHP. >>>>>> >>>>>> So I tried to understand your code and find a way to implement it, >>>>>> but I think I'm not able to. >>>>>> I think it is somehow connected with shop/views.py but I have no idea >>>>>> how. >>>>>> >>>>>> Maybe you can give me some hints, >>>>>> >>>>>> Henri >>>>>> >>>>>> >>>>>> >>>>>> Am Dienstag, 18. November 2014 00:03:54 UTC+1 schrieb Josh B: >>>>>>> >>>>>>> This approach has been solid for me and currently using it in a >>>>>>> production environment. For my use I needed real Donation products as >>>>>>> they >>>>>>> needed to expire or only sell a limited number. If you don't need that >>>>>>> functionality then you can use what Josh C posted. >>>>>>> >>>>>>> Josh >>>>>>> >>>>>>> On Monday, November 17, 2014 4:56:44 AM UTC-7, henri wrote: >>>>>>>> >>>>>>>> Hey Josh, >>>>>>>> >>>>>>>> I also would like to implement donation driven products. >>>>>>>> Do you still stay with this approach or have you found a better >>>>>>>> solution? >>>>>>>> >>>>>>>> Henri >>>>>>>> >>>>>>>> -- You received this message because you are subscribed to the Google Groups "Mezzanine Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
