Пример #1
0
    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'))
Пример #2
0
    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'))
Пример #3
0
    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'))