def editAlias(self, alias=None, *args, **kwargs): c = TemplateContext() # vary form depending on mode (do that over ajax) if alias is None: action = 'Adding' c.mode = 'add' domains = self.mf.getDomains() c.select_domains = [] for d in domains: c.select_domains.append([d.dc, d.dc]) elif not alias == '': try: ParamChecker.checkEmail('alias') except: raise HTTPRedirect('/mails/index') action = 'Editing' c.alias = alias c.mode = 'edit' try: alias = self.mf.getAlias(alias) mail = '' for m in alias.mail: if not mail == '': mail += '\n' if not m == alias.dn_mail: mail += m c.mail = mail maildrop = '' for m in alias.maildrop: if not maildrop == '': maildrop += '\n' if not m == alias.dn_mail and not m in maildrop: maildrop += m c.maildrop = maildrop except LookupError: # @TODO implement better handler msg = _('No such alias!') return self.index(msg=msg) else: raise HTTPRedirect('/mails/index') c.heading = '{0} alias'.format(action) return self.render('/mails/editAlias.mako', template_context=c)
def editAlias(self, alias=None, *args, **kwargs): c = TemplateContext() # vary form depending on mode (do that over ajax) if alias is None: action = "Adding" c.mode = "add" domains = self.mf.getDomains() c.select_domains = [] for d in domains: c.select_domains.append([d.dc, d.dc]) elif not alias == "": try: ParamChecker.checkEmail("alias") except: raise HTTPRedirect("/mails/index") action = "Editing" c.alias = alias c.mode = "edit" try: alias = self.mf.getAlias(alias) mail = "" for m in alias.mail: if not mail == "": mail += "\n" if not m == alias.dn_mail: mail += m c.mail = mail maildrop = "" for m in alias.maildrop: if not maildrop == "": maildrop += "\n" if not m == alias.dn_mail and not m in maildrop: maildrop += m c.maildrop = maildrop except LookupError: # @TODO implement better handler msg = _("No such alias!") return self.index(msg=msg) else: raise HTTPRedirect("/mails/index") c.heading = "{0} alias".format(action) return self.render("/mails/editAlias.mako", template_context=c)
def deleteAlias(self, alias, *args, **kwargs): try: ParamChecker.checkEmail('alias', param=True) except: raise HTTPRedirect('/mails/index') try: result = self.mf.deleteAlias(alias) if result: msg = _('Alias successfully deleted') msg_class = 'success' else: msg = _('Failed to delete alias!') msg_class = 'error' except: import sys, traceback traceback.print_exc(file=sys.stdout) msg = _('Failed to delete alias!') msg_class = 'error' return self.index(msg=msg, msg_class=msg_class)
def deleteAlias(self, alias, *args, **kwargs): try: ParamChecker.checkEmail("alias", param=True) except: raise HTTPRedirect("/mails/index") try: result = self.mf.deleteAlias(alias) if result: msg = _("Alias successfully deleted") msg_class = "success" else: msg = _("Failed to delete alias!") msg_class = "error" except: import sys, traceback traceback.print_exc(file=sys.stdout) msg = _("Failed to delete alias!") msg_class = "error" return self.index(msg=msg, msg_class=msg_class)
def check(self): errors = [] checkOK = True try: ParamChecker.checkUsername(self.uid, param=False) except InvalidParameterFormat as ipf: checkOK = False errors.append(_('Invalid username')) try: ParamChecker.checkString(self.sn, min_len=0, max_len=20, param=False) except InvalidParameterFormat as ipf: checkOK = False errors.append(_('Invalid surname')) try: ParamChecker.checkString(self.givenName, min_len=0, max_len=20, param=False) except InvalidParameterFormat as ipf: checkOK = False errors.append(_('Invalid given name')) try: ParamChecker.checkString(self.homePostalAddress, min_len=0, max_len=255, param=False) except InvalidParameterFormat as ipf: checkOK = False errors.append(_('Invalid address')) '''optional''' try: ParamChecker.checkBool(self.isMinor, param=False, optional=True) except InvalidParameterFormat as ipf: checkOK = False errors.append(_('Invalid selection for "is minor"')) '''optional''' try: ParamChecker.checkPhone(self.homePhone, param=False, optional=True) except InvalidParameterFormat as ipf: checkOK = False errors.append(ipf.message) '''optional''' try: ParamChecker.checkPhone(self.mobile, param=False, optional=True) except InvalidParameterFormat as ipf: checkOK = False errors.append(_('Invalid mobile number')) try: ParamChecker.checkEmail(self.mail, param=False) except InvalidParameterFormat as ipf: checkOK = False errors.append(ipf.message) try: ParamChecker.checkString(self.loginShell, min_len=0, max_len=20, regex=regex.loginShell, param=False) except InvalidParameterFormat as ipf: checkOK = False errors.append(_('Invalid login shell')) try: ParamChecker.checkDate(self.arrivalDate, param=False) except InvalidParameterFormat as ipf: checkOK = False errors.append(_('Invalid "member since" date')) '''optional''' try: ParamChecker.checkDate(self.leavingDate, param=False, optional=True) except InvalidParameterFormat as ipf: checkOK = False errors.append(_('Invalid "membership canceled" date')) '''optional''' try: ParamChecker.checkString(self.sshPublicKey, min_len=0, max_len=1200, regex=regex.sshKey, param=False, optional=True) except InvalidParameterFormat as ipf: checkOK = False errors.append(_('Invalid SSH key')) '''optional''' try: ParamChecker.checkPGP(self.pgpKey, param=False, optional=True) except InvalidParameterFormat as ipf: checkOK = False errors.append(ipf.message) '''optional''' try: ParamChecker.checkiButtonUID(self.iButtonUID, param=False, optional=True) except InvalidParameterFormat as ipf: checkOK = False errors.append(ipf.message) try: ParamChecker.checkUsername(self.conventionSigner, param=False) except InvalidParameterFormat as ipf: checkOK = False errors.append(_('Invalid convention signer')) '''optional''' try: ParamChecker.checkEmail(self.xmppID, param=False, optional=True) except InvalidParameterFormat as ipf: checkOK = False errors.append(_('Invalid XMPP/Jabber/GTalk ID')) '''optional''' try: ParamChecker.checkBool(self.spaceKey, param=False, optional=True) except InvalidParameterFormat as ipf: checkOK = False errors.append(_('Invalid Space-Key value')) '''optional''' try: ParamChecker.checkBool(self.npoMember, param=False, optional=True) except InvalidParameterFormat as ipf: checkOK = False errors.append(_('Invalid NPO-Member value')) try: ParamChecker.checkCountryCode(self.nationality, param=False) except InvalidParameterFormat as ipf: checkOK = False errors.append(_('Invalid nationality')) if checkOK: return checkOK raise InvalidParameterFormat(errors)
def new_f(self, mode, alias, domain, mail=None, maildrop=None): formok = True errors = [] items = {} if not mode in ['add', 'edit']: raise HTTPRedirect('/mails/index') if mode == 'add': try: ParamChecker.checkDomain('domain') except InvalidParameterFormat as ipf: formok = False errors.append(ipf.message) alias += '@' + domain domain = alias.split('@')[1] try: ParamChecker.checkDomain(domain, param=False) except InvalidParameterFormat as ipf: formok = False errors.append(ipf.message) # @TODO improve check try: ParamChecker.checkString('maildrop', min_len=0, max_len=300) except InvalidParameterFormat as ipf: formok = False errors.append(_('Invalid mail destination!')) if mail and not mail == '': for k in mail.split('\n'): m = k.replace('\r', '').replace(' ', '') if m == '': continue try: ParamChecker.checkEmail(m, param=False) except: formok = False break m_domain = m.split('@')[1] if not m_domain == domain: formok = False errors.append(_('All aliases need to be within the same domain!')) break if len(mail) > 300: formok = False if not formok: errors.append(_('Invalid related aliases!')) if not formok: self.session['errors'] = errors self.session['reqparams'] = {} # @TODO request.params may contain multiple values per key... test & fix for k in cherrypy.request.params.iterkeys(): self.session['reqparams'][k] = cherrypy.request.params[k] self.session.save() if mode == 'edit': raise HTTPRedirect('/mails/editAlias/?alias={0}'.format(alias)) else: raise HTTPRedirect('/mails/editAlias') else: items['mode'] = mode items['alias'] = alias items['mail'] = [] items['maildrop'] = [] if mail and len(mail) > 0: for k in mail.split('\n'): m = k.replace('\r', '').replace(' ', '') if m == '': continue items['mail'].append(m) if maildrop and len(maildrop) > 0: for k in maildrop.split('\n'): m = k.replace('\r', '').replace(' ', '') if m == '': continue items['maildrop'].append(m) return f(self, items)
def new_f(self, mode, alias, domain, mail=None, maildrop=None): formok = True errors = [] items = {} if not mode in ["add", "edit"]: raise HTTPRedirect("/mails/index") if mode == "add": try: ParamChecker.checkDomain("domain") except InvalidParameterFormat as ipf: formok = False errors.append(ipf.message) alias += "@" + domain domain = alias.split("@")[1] try: ParamChecker.checkDomain(domain, param=False) except InvalidParameterFormat as ipf: formok = False errors.append(ipf.message) # @TODO improve check try: ParamChecker.checkString("maildrop", min_len=0, max_len=300) except InvalidParameterFormat as ipf: formok = False errors.append(_("Invalid mail destination!")) if mail and not mail == "": for k in mail.split("\n"): m = k.replace("\r", "").replace(" ", "") if m == "": continue try: ParamChecker.checkEmail(m, param=False) except: formok = False break m_domain = m.split("@")[1] if not m_domain == domain: formok = False errors.append(_("All aliases need to be within the same domain!")) break if len(mail) > 300: formok = False if not formok: errors.append(_("Invalid related aliases!")) if not formok: self.session["errors"] = errors self.session["reqparams"] = {} # @TODO request.params may contain multiple values per key... test & fix for k in cherrypy.request.params.iterkeys(): self.session["reqparams"][k] = cherrypy.request.params[k] self.session.save() if mode == "edit": raise HTTPRedirect("/mails/editAlias/?alias={0}".format(alias)) else: raise HTTPRedirect("/mails/editAlias") else: items["mode"] = mode items["alias"] = alias items["mail"] = [] items["maildrop"] = [] if mail and len(mail) > 0: for k in mail.split("\n"): m = k.replace("\r", "").replace(" ", "") if m == "": continue items["mail"].append(m) if maildrop and len(maildrop) > 0: for k in maildrop.split("\n"): m = k.replace("\r", "").replace(" ", "") if m == "": continue items["maildrop"].append(m) return f(self, items)