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
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
def __init__(self, size_or_iterable, itemClass=None): """ size: Array size itemClass: Item class to check in setter """ MethodDisabler.__init__(self) self.__itemClass = itemClass if isinstance(size_or_iterable, (types.IntType, types.LongType)): ListType.extend(self, [None]*size_or_iterable) else: ListType.extend(self, list(size_or_iterable))
def __setitem__(self, i, item): if self.__itemClass is None or item is None or isinstance(item, self.__itemClass): ListType.__setitem__(self, i, item) else: raise TypeError, "List assignment item type missmatch, expected %s, got %s" % ( self.__itemClass, item.__class__,)
def __setslice__(self, i, j, y): if j-i == len(y): ListType.__setslice__(self, i, j, y) else: raise IndexError, "Length change requested in list slice assignment: %d-%d != %d" % (j, i, len(y))
def __init__(self, line_type): ListType.__init__(self) self.line_type = line_type
print "Please specify the id of your plone site as the first argument " print "to this script." print "Usage: <instancehome>/bin/instance run %s <id>" % sys.argv[0] sys.exit(1) portal = app[portal_id] setSite(portal) # we assume there is an admin user app = makerequest.makerequest(app) user = app.acl_users.getUser('admin') newSecurityManager(None, user.__of__(app.acl_users)) newsletters = portal._getOb('newsletters') newsletter = newsletters._getOb('everything-news') receivers = ListType(newsletter.ploneReceiverMembers) skipped = [] count = 0 prop_name = 'subscribe_to_newsletter' all_members = portal.portal_membership.listMembers() non_mxit_members = [] for member in all_members: if member.getId().endswith('mxit.com'): continue non_mxit_members.append(member) for member in non_mxit_members: count += 1