def getMemberTopics(self, member): if not oldm.isMember(self,member): raise Errors.MMAlreadyAMember, member database = self._dbconnect() store = Store(database) missing = [] try: result = store.find(StormMembers,StormMembers.address == unicode(member,"utf-8"),StormMembers.listname == unicode(self.list,"utf-8")) except: result = store.find(StormMembers,StormMembers.address == member , StormMembers.listname == unicode(self.list,"utf-8")) if result is not missing: for members in result: topics = members.topics_userinterest return topics
def getDeliveryStatusChangeTime(self, member): if not oldm.isMember(self,member): raise Errors.MMAlreadyAMember, member database = self._dbconnect() store = Store(database) missing = [] delivery_status_changetime = 0 try: result = store.find(StormMembers,StormMembers.address == unicode(member,"utf-8"),StormMembers.listname == unicode(self.list,"utf-8")) except: result = store.find(StormMembers,StormMembers.address == member , StormMembers.listname == unicode(self.list,"utf-8")) if result is not missing: for members in result: delivery_status_changetime = members.delivery_status_timestamp return delivery_status_changetime
def getMemberLanguage(self, member): if not oldm.isMember(self,member): raise Errors.MMAlreadyAMember, member database = self._dbconnect() store = Store(database) missing = [] try: result = store.find(StormMembers,StormMembers.address == unicode(member,"utf-8"),StormMembers.listname == unicode(self.list,"utf-8")) except: result = store.find(StormMembers,StormMembers.address == member , StormMembers.listname == unicode(self.list,"utf-8")) if result is not missing: for members in result: language = members.lang if language in self.__mlist.GetAvailableLanguages(): return language return self.__mlist.preferred_language
def addNewMember(self, member, **kws): """Add new member to the database""" if oldm.isMember(self,member): raise Errors.MMAlreadyAMember, member database = self._dbconnect() store = Store(database) newMember = StormMembers() # Parse the keywords digest = 0 password = Utils.MakeRandomPassword() language = self.__mlist.preferred_language realname = None if kws.has_key('digest'): digest = kws['digest'] del kws['digest'] if kws.has_key('password'): password = kws['password'] del kws['password'] if kws.has_key('language'): language = kws['language'] del kws['language'] if kws.has_key('realname'): realname = kws['realname'] del kws['realname'] # Assert that no other keywords are present if kws: raise ValueError, kws.keys() newMember.delivery_status = MemberAdaptor.ENABLED try: newMember.listname = unicode(self.list,"utf-8") except: newMember.listname = self.list try: newMember.password = unicode(password,"utf-8") except: newMember.password = password try: newMember.lang = unicode(language,"utf-8") except: newMember.lang = language try: newMember.address = unicode(member,"utf-8") except: newMember.address = member if realname: try: newMember.name = unicode(realname,"utf-8") except: newMember.name = realname # Set the member's default set of options if self.__mlist.new_member_options: newMember.user_options = self.__mlist.new_member_options # If the localpart has uppercase letters in it, then the value in the # members (or digest_members) dict is the case preserved address. # Otherwise the value is 0. Note that the case of the domain part is # of course ignored. #if Utils.LCDomain(member) == member.lower(): # value = 0 #else: # value = member if digest: newMember.digest = u"Y" else: newMember.digest = u"N" store.add(newMember) store.commit() oldm.addNewMember(self,member,**kws)