def paynow_cybersource(self, request, tl, one, two, module, extra, prog):
        if self.have_paid():
            raise ESPError(
                False
            ), "You've already paid for this program; you can't pay again!"

        # Force users to pay for non-optional stuffs
        user = ESPUser(request.user)

        #   Default line item types
        li_types = self.program.getLineItemTypes(user)

        invoice = Document.get_invoice(user,
                                       self.program_anchor_cached(parent=True),
                                       li_types,
                                       dont_duplicate=True)
        context = {}
        context['module'] = self
        context['one'] = one
        context['two'] = two
        context['tl'] = tl
        context['user'] = user
        context['itemizedcosts'] = invoice.get_items()

        try:
            context['itemizedcosttotal'] = invoice.cost()
        except EmptyTransactionException:
            context['itemizedcosttotal'] = 0

        context['financial_aid'] = user.hasFinancialAid(prog.anchor)
        context['invoice'] = invoice

        return render_to_response(self.baseDir() + 'cardpay.html', request,
                                  (prog, tl), context)
    def payonline(self, request, tl, one, two, module, extra, prog):
        if self.have_paid():
            raise ESPError(
                False
            ), "You've already paid for this program; you can't pay again!"

        # Force users to pay for non-optional stuffs
        user = ESPUser(request.user)

        #   Default line item types
        li_types = self.program.getLineItemTypes(user)

        # Get settings
        invoice = Document.get_invoice(user,
                                       self.program_anchor_cached(parent=True),
                                       li_types,
                                       dont_duplicate=True)
        context = {}
        context['module'] = self
        context['one'] = one
        context['two'] = two
        context['tl'] = tl
        context['user'] = user
        context['itemizedcosts'] = invoice.get_items()
        context['program'] = self.program
        if 'HTTP_HOST' in request.META:
            context['hostname'] = request.META['HTTP_HOST']
        else:
            context['hostname'] = Site.objects.get_current().domain
        context['institution'] = settings.INSTITUTION_NAME
        context['storename'] = self.store_id
        context['support_email'] = settings.DEFAULT_EMAIL_ADDRESSES['support']
        try:
            context['itemizedcosttotal'] = invoice.cost()
        except EmptyTransactionException:
            context['itemizedcosttotal'] = 0

        context['financial_aid'] = user.hasFinancialAid(prog.anchor)
        context['invoice'] = invoice

        return render_to_response(self.baseDir() + 'cardpay.html', request,
                                  (prog, tl), context)
示例#3
0
    def confirmreg_forreal(self, request, tl, one, two, module, extra, prog,
                           new_reg):
        """ The page that is shown once the user saves their student reg,
            giving them the option of printing a confirmation            """
        self.request = request

        from esp.program.modules.module_ext import DBReceipt

        iac = IndividualAccountingController(prog, request.user)

        context = {}
        context['one'] = one
        context['two'] = two

        context['itemizedcosts'] = iac.get_transfers()

        user = ESPUser(request.user)
        context['finaid'] = user.hasFinancialAid(prog)
        if user.appliedFinancialAid(prog):
            context['finaid_app'] = user.financialaidrequest_set.filter(
                program=prog).order_by('-id')[0]
        else:
            context['finaid_app'] = None
        context['balance'] = iac.amount_due()

        context['owe_money'] = (context['balance'] != Decimal("0.0"))

        if prog.isFull() and not user.canRegToFullProgram(
                prog) and not self.program.isConfirmed(user):
            raise ESPError(
                log=False
            ), "This program has filled!  It can't accept any more students.  Please try again next session."

        modules = prog.getModules(request.user, tl)
        completedAll = True
        for module in modules:
            if hasattr(module, 'onConfirm'):
                module.onConfirm(request)
            if not module.isCompleted() and module.required:
                completedAll = False
            context = module.prepare(context)

        if completedAll:
            if new_reg:
                rec = Record.objects.create(user=user,
                                            event="reg_confirmed",
                                            program=prog)
        else:
            raise ESPError(
                False
            ), "You must finish all the necessary steps first, then click on the Save button to finish registration."

        cfe = ConfirmationEmailController()
        cfe.send_confirmation_email(request.user, self.program)

        try:
            receipt_text = DBReceipt.objects.get(program=self.program,
                                                 action='confirm').receipt
            context["request"] = request
            context["program"] = prog
            return HttpResponse(
                Template(receipt_text).render(
                    Context(context, autoescape=False)))
        except DBReceipt.DoesNotExist:
            try:
                receipt = 'program/receipts/' + str(
                    prog.id) + '_custom_receipt.html'
                return render_to_response(receipt, request, context)
            except:
                receipt = 'program/receipts/default.html'
                return render_to_response(receipt, request, context)
示例#4
0
    def confirmreg_forreal(self, request, tl, one, two, module, extra, prog, new_reg):
        """ The page that is shown once the user saves their student reg,
            giving them the option of printing a confirmation            """
        self.request = request

        from esp.program.modules.module_ext import DBReceipt

        try:
            invoice = Document.get_invoice(request.user, prog.anchor, LineItemType.objects.filter(anchor=GetNode(prog.anchor.get_uri()+'/LineItemTypes/Required')), dont_duplicate=True, get_complete=True)
        except:
            invoice = Document.get_invoice(request.user, prog.anchor, LineItemType.objects.filter(anchor=GetNode(prog.anchor.get_uri()+'/LineItemTypes/Required')), dont_duplicate=True)

        #   Why is get_complete false?
        receipt = Document.get_receipt(request.user, prog.anchor, [], get_complete=False)

        context = {}
        context['one'] = one
        context['two'] = two

        context['itemizedcosts'] = invoice.get_items()

        user = ESPUser(request.user)
        context['finaid'] = user.hasFinancialAid(prog.anchor)
        if user.appliedFinancialAid(prog):
            context['finaid_app'] = user.financialaidrequest_set.filter(program=prog).order_by('-id')[0]
        else:
            context['finaid_app'] = None

        try:
            context['balance'] = Decimal("%0.2f" % invoice.cost())
        except EmptyTransactionException:
            context['balance'] = Decimal("0.0")
            
        context['owe_money'] = ( context['balance'] != Decimal("0.0") )

        if prog.isFull() and not user.canRegToFullProgram(prog) and not self.program.isConfirmed(user):
            raise ESPError(log = False), "This program has filled!  It can't accept any more students.  Please try again next session."

        modules = prog.getModules(request.user, tl)
        completedAll = True
        for module in modules:
            if hasattr(module, 'onConfirm'):
                module.onConfirm(request) 
            if not module.isCompleted() and module.required:
                completedAll = False
            context = module.prepare(context)
        
        if completedAll:
            if new_reg:
                bit = UserBit.objects.create(user=user, verb=GetNode("V/Flags/Public"), qsc=GetNode("/".join(prog.anchor.tree_encode()) + "/Confirmation"))
        else:
            raise ESPError(False), "You must finish all the necessary steps first, then click on the Save button to finish registration."

        cfe = ConfirmationEmailController()
        cfe.send_confirmation_email(request.user, self.program)

        try:
            receipt_text = DBReceipt.objects.get(program=self.program, action='confirm').receipt
            context["request"] = request
            context["program"] = prog
            return HttpResponse( Template(receipt_text).render( Context(context, autoescape=False) ) )
        except DBReceipt.DoesNotExist:
            try:
                receipt = 'program/receipts/'+str(prog.id)+'_custom_receipt.html'
                return render_to_response(receipt, request, (prog, tl), context)
            except:
                receipt = 'program/receipts/default.html'
                return render_to_response(receipt, request, (prog, tl), context)