Ejemplo n.º 1
0
    def practice_service_messages(self):
        grades = [10, 11, 12]
        messages = []

        expiring_services = self.expiring_services()
        # Format messages about expiring services.
        if expiring_services.values():
            msg = ''
            num_days = self.number_of_days_until(expiring_services)
            if num_days < 1:
                days = 'today.'
            else:
                days = num_days > 1 and 'in %s days.' or 'in %s day.'
                days = days % num_days
            template = 'Your access to %s practice will expire '+days

            service_grades = expiring_services.keys()
            service_grades.sort()
            if service_grades == grades:
                msg = template % self.subject.capitalize()
            else:
                services = ' and '.join(['Grade %s' %s for s in service_grades])
                msg = template % services
            messages.append(msg)
        else:
            # no services expiring? Then don't show any messages.
            return []
        
        # Now, we do the formatting of the active services.
        active_services = self.active_services()
        # Remove all the services that we already reported on above.
        for grade in expiring_services.keys():
            active_services.pop(grade, None)
        if active_services.values():
            # flatten the list of memberservice lists
            memberservices = ListType(chain.from_iterable(active_services.values()))
            # sort according to expiry_date
            memberservices.sort(key=lambda service: service.expiry_date)
            # use the first expiry date
            formatted_expiry_date = \
                self.format_date(memberservices[0].expiry_date)

            msg = ''
            template = 'You will still have access to %s practice until %s.'
            service_grades = active_services.keys()
            service_grades.sort()
            services = ' and '.join(['Grade %s' %s for s in service_grades])
            msg = template % (services, formatted_expiry_date) 
            messages.append(msg)
        
        # Lastly, add a link to the order form.
        if expiring_services:
            messages.append(
                '<a href="/order">To extend your subscription, click here.</a>')

        return messages
Ejemplo n.º 2
0
 def number_of_days_until(self, expiring_services):
     # flatten the list of memberservice lists
     memberservices = ListType(chain.from_iterable(expiring_services.values()))
     # sort according to expiry_date
     memberservices.sort(key=lambda service: service.expiry_date)
     # use the last expiry date
     expiry_date = memberservices[0].expiry_date
     now = datetime.now().date()
     delta = expiry_date - now
     return delta.days