Example #1
0
 def update(self):
     self.memberservices = []
     self.dao = MemberServicesDataAccess(self.context)
     self.userid = self.request.get('userid', '')
     if self.userid:
         ids = practice_service_intids(self.context)
         dao = MemberServicesDataAccess(self.context)
         self.memberservices = dao.get_active_memberservices(self.userid)
Example #2
0
 def update(self):
     self.service_intids = practice_service_intids(self.context)
     pps = self.context.restrictedTraverse('@@plone_portal_state')
     memberid = pps.member().getId()
     self.dao = MemberServicesDataAccess(self.context)
     self.memberservices = []
     self.memberservices = \
         self.dao.get_active_memberservices(memberid)
Example #3
0
 def update(self):
     intids = practice_service_intids(self.context)
     pps = self.context.restrictedTraverse('@@plone_portal_state')
     memberid = pps.member().getId()
     dao = MemberServicesDataAccess(self.context)
     self.memberservices = dao.get_memberservices(intids, memberid)
     # grab any errors from the request, just in case we want to display
     # them later.
     self.errors = self.request.get('errors', [])
    def __init__(self, context, request):
        super(List_Services, self).__init__(context, request)
        self.pps = self.context.restrictedTraverse('@@plone_portal_state')
        self.portal = self.pps.portal()
        self.portal_url = self.pps.portal_url()
        self.member = self.pps.member()
        self.memberservices = []
        self.isMxit = self.context.restrictedTraverse('@@mobile_tool').isMXit()
        self.navroot = self.pps.navigation_root()
        self.subject = self.getSubject(self.navroot)
        self.services = self._getServices(self.portal, self.subject)
        self.dao = MemberServicesDataAccess(self.context)

        memberid = self.member.getId()
        if memberid:
            ids = practice_service_intids(self.context)
            self.memberservices = \
                self.dao.get_memberservices_by_subject(memberid, self.subject)
Example #5
0
    def update(self):
        pps = self.context.restrictedTraverse('@@plone_portal_state')
        self.products_and_services = pps.portal()._getOb('products_and_services')
        self.navroot = pps.navigation_root()
        self.base_url = 'http://billing.internal.mxit.com/Transaction/PaymentRequest'
        self.action = self.context.absolute_url() + '/@@mxitpaymentrequest'

        pmt = getToolByName(self.context, 'portal_membership')
        memberid = member_id(
            self.request.get(USER_ID_TOKEN.lower(),
                             self.request.get(USER_ID_TOKEN)
                            )
        )
        if not memberid:
            raise ValueError('No member id supplied.')
        member = pmt.getMemberById(memberid)
        if not member:
            password = password_hash(self.context, memberid)
            pmt.addMember(memberid, password, 'Member', '')
            member = pmt.getMemberById(memberid)
            # login as new member
            newSecurityManager(self.request, member)

        registry = queryUtility(IRegistry)
        self.emas_settings = registry.forInterface(IEmasSettings)
        self.transaction_reference = self.emas_settings.order_sequence_number +1
        self.emas_settings.order_sequence_number = self.transaction_reference
        self.transaction_reference = '%04d' % self.transaction_reference

        self.product_id = self.request.get('productId')
        try:
            self.product = self.products_and_services._getOb(self.product_id)
        except AttributeError:
            raise AttributeError(
                'Product with id %s not found' % self.product_id
                )
            
        self.product_name = self.product.title
        self.product_description = self.product.description
        
        # create an order for this member : product combination
        if self.product:
            portal = pps.portal()
            member_orders = portal['orders']

            props = {'id'            : self.transaction_reference, 
                     'title'         : self.transaction_reference,
                     'userid'        : memberid,
                     'payment_method': MOOLA,
                     }
            self.order= createContentInContainer(
                member_orders,
                'emas.app.order',
                False,
                **props
            )
            self.order = member_orders._getOb(self.transaction_reference)
            self.order.verification_code = generate_verification_code(self.order)
            self.order.manage_setLocalRoles(self.order.userid, ('Owner',))
                
            relation = create_relation(self.product.getPhysicalPath())
            item_id = self.order.generateUniqueId(type_name='orderitem')
            props = {'id'           : item_id,
                     'title'        : item_id,
                     'related_item' : relation,
                     'quantity'     : 1}
            order_item = createContentInContainer(
                self.order,
                'emas.app.orderitem',
                False,
                **props
            )
            order_item.manage_setLocalRoles(self.order.userid, ('Owner',))

            self.callback_url = \
                '%s/mxitpaymentresponse?productId=%s&order_number=%s&verification_code=%s' %(
                    self.context.absolute_url(),
                    self.product_id,
                    self.order.getId(),
                    self.order.verification_code
            )

        self.cost_settings = registry.forInterface(IEmasServiceCost)
        self.vendor_id = self.cost_settings.MXitVendorId
        self.moola_amount = self.product.amount_of_moola
        self.currency_amount = self.product.price
        url = '%s/%s' %(self.navroot.absolute_url(), self.product.access_path)
        
        # get all active services for this user
        service_intids = practice_service_intids(self.context)
        dao = MemberServicesDataAccess(self.context)
        memberservices = dao.get_memberservices(service_intids, memberid)
        active_services = [m.related_service(self.context) for m in memberservices]

        # check if the currently requested one is in the list
        if self.product in active_services:
            return self.request.response.redirect(url)
        else:
            return self.render()