def post(self): campaign_id = request.form.get('campaign_id') value = request.form.get('value') if not value: return redirect(url_for('quokka.core.list')) self.current_user = get_current_user() self.cart = Cart.get_cart() try: campaign = Campaign.objects.get(id=campaign_id) except Campaign.DoesNotExist: self.cart.addlog("Error getting campaign %s" % campaign_id) return render_template('fundraising/donation_error.html') donation = None if hasattr(self.cart, 'fundraising_donation_id'): try: donation = Donation.objects.get( id=self.cart.fundraising_donation_id ) except Donation.DoesNotExist: donation = None if not donation: donation = Donation( donor=self.current_user, cart=self.cart ) donation.save() self.cart.fundraising_donation_id = donation.id self.cart.addlog("Created a new Donation", save=True) donation.values.append( Values(campaign=campaign, value=float(value)) ) donation.save() self.cart.reference = donation cart_items = [] for item in donation.values: cart_items.append( Item( uid=item.campaign.get_uid(), product=item.campaign, reference=donation, title=item.campaign.get_title(), description=item.campaign.get_description(), unity_value=item.value ) ) self.cart.addlog( "Item added/updated %s" % item.campaign.get_title(), save=False ) self.cart.items = cart_items self.cart.requires_login = current_app.config.get( "FUNDRAISING_CART_REQUIRES_LOGIN", self.cart.requires_login ) self.cart.continue_shopping_url = current_app.config.get( "FUNDRAISING_CART_CONTINUE_SHOPPING_URL", self.cart.continue_shopping_url ) self.cart.pipeline = current_app.config.get( "FUNDRAISING_CART_PIPELINE", self.cart.pipeline ) self.cart.config = current_app.config.get( "FUNDRAISING_CART_CONFIG", self.cart.config ) self.cart.fundraising_donation_id = donation.id self.cart.addlog(u"%s items added" % len(cart_items), save=True) return redirect(url_for('quokka.modules.cart.cart'))
def post(self): course_id = request.form.get('course_id') classroom = request.form.get('classroom') phone = request.form.get('phone') name = request.form.get('name') email = request.form.get('email') variant = request.form.get('variant') self.current_user = get_current_user() self.cart = Cart.get_cart() try: course = Course.objects.get(id=course_id) except: self.cart.addlog("Error getting course %s" % course_id) return render_template('classes/subscription_error.html') student = self.get_student(email, name, phone) if not student: self.cart.addlog("Error getting student") return render_template('classes/subscription_error.html') if not variant in ['regular', None, False, '']: course_variant = course.variants.get(slug=variant) _variant = CourseVariant( title=course_variant.title + "<!-- {0} -->".format(str(random.getrandbits(8))), description=course_variant.description, unity_value=course_variant.unity_value, slug=course_variant.slug) else: _variant = None subscription = CourseSubscription( subscriber=self.get_subscriber(), # if none will set on pipeline student=student, course=course, classroom=classroom, variant=_variant, cart=self.cart) subscription.save() item = Item( uid=subscription.get_uid(), product=course, reference=subscription, title=subscription.get_title(), description=subscription.get_description(), unity_value=subscription.get_unity_value(), ) self.cart.items.append(item) # think on this # in sites with multiple e-commerce apps # if cart has items from multiple apps ex: # items: course, product, signature etc.. # which app has precedence in cart settings? self.cart.requires_login = current_app.config.get( "CLASSES_CART_REQUIRES_LOGIN", self.cart.requires_login) self.cart.continue_shopping_url = current_app.config.get( "CLASSES_CART_CONTINUE_SHOPPING_URL", self.cart.continue_shopping_url) self.cart.pipeline = current_app.config.get("CLASSES_CART_PIPELINE", self.cart.pipeline) self.cart.config = current_app.config.get("CLASSES_CART_CONFIG", self.cart.config) self.cart.course_subscription_id = subscription.id self.cart.addlog(u"Item added %s" % item.title, save=True) return redirect(url_for('cart.cart'))
def post(self): course_id = request.form.get('course_id') classroom = request.form.get('classroom') phone = request.form.get('phone') name = request.form.get('name') email = request.form.get('email') variant = request.form.get('variant') self.current_user = get_current_user() self.cart = Cart.get_cart() try: course = Course.objects.get(id=course_id) except: self.cart.addlog("Error getting course %s" % course_id) return render_template('classes/subscription_error.html') student = self.get_student(email, name, phone) if not student: self.cart.addlog("Error getting student") return render_template('classes/subscription_error.html') if not variant in ['regular', None, False, '']: course_variant = course.variants.get(slug=variant) _variant = CourseVariant( title=course_variant.title + "<!-- {0} -->".format( str(random.getrandbits(8)) ), description=course_variant.description, unity_value=course_variant.unity_value, slug=course_variant.slug ) else: _variant = None subscription = CourseSubscription( subscriber=self.get_subscriber(), # if none will set on pipeline student=student, course=course, classroom=classroom, variant=_variant, cart=self.cart ) subscription.save() item = Item( uid=subscription.get_uid(), product=course, reference=subscription, title=subscription.get_title(), description=subscription.get_description(), unity_value=subscription.get_unity_value(), ) self.cart.items.append(item) # think on this # in sites with multiple e-commerce apps # if cart has items from multiple apps ex: # items: course, product, signature etc.. # which app has precedence in cart settings? self.cart.requires_login = current_app.config.get( "CLASSES_CART_REQUIRES_LOGIN", self.cart.requires_login ) self.cart.continue_shopping_url = current_app.config.get( "CLASSES_CART_CONTINUE_SHOPPING_URL", self.cart.continue_shopping_url ) self.cart.pipeline = current_app.config.get( "CLASSES_CART_PIPELINE", self.cart.pipeline ) self.cart.config = current_app.config.get( "CLASSES_CART_CONFIG", self.cart.config ) self.cart.course_subscription_id = subscription.id self.cart.addlog(u"Item added %s" % item.title, save=True) return redirect(url_for('cart.cart'))