def new_f(self, member_id, idPayment, date, status): # @TODO request.params may contain multiple values per key... test & fix if not self.is_admin() and not member_id == self.session.get('username') or (member_id == self.session.get('username') and ParamChecker.checkInt('idPayment', param=True, optional=True)): print 'checkPayment err0r::', str(self.isAdmin()), str(member_id), str(self.session.get('username')), str(ParamChecker.checkInt('idPayment', param=True, optional=True)) raise HTTPError(403, 'Forbidden') else: formok = True errors = [] items = {} d = None try: ParamChecker.checkDate('date', param=True) d = parser.parse(date) d = datetime.date(d.year, d.month, 1) except Exception as e: print e formok = False errors.append(_('Invalid date')) try: ParamChecker.checkInt('status', param=True) items['status'] = int(status) except: formok = False errors.append(_('Invalid payment status')) try: ParamChecker.checkInt('idPayment', param=True) items['idPayment'] = int(idPayment) except: items['idPayment'] = 0 if not d is None and items['idPayment'] == 0: p_count = self.db.query(Payment).filter(Payment.uid == member_id).filter(Payment.date == d).count() if p_count > 0: formok = False errors.append(_('That month is already on records!')) if not formok: self.session['errors'] = errors self.session['reqparams'] = {} # @TODO request.params may contain multiple values per key... test & fix for k in self.request.params.iterkeys(): self.session['reqparams'][k] = self.request.params[k] self.session.save() raise HTTPRedirect('/payments/editPayment/?member_id={0}&idPayment={1}'.format(member_id, items['idPayment'])) else: items['date'] = d return f(self, member_id, items)
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, member_id, idPayment, date, status): # @TODO request.params may contain multiple values per key... test & fix if not self.is_admin() and not member_id == self.session.get( 'username') or (member_id == self.session.get('username') and ParamChecker.checkInt('idPayment', param=True, optional=True)): print 'checkPayment err0r::', str( self.isAdmin()), str(member_id), str( self.session.get('username')), str( ParamChecker.checkInt('idPayment', param=True, optional=True)) raise HTTPError(403, 'Forbidden') else: formok = True errors = [] items = {} d = None try: ParamChecker.checkDate('date', param=True) d = parser.parse(date) d = datetime.date(d.year, d.month, 1) except Exception as e: print e formok = False errors.append(_('Invalid date')) try: ParamChecker.checkInt('status', param=True) items['status'] = int(status) except: formok = False errors.append(_('Invalid payment status')) try: ParamChecker.checkInt('idPayment', param=True) items['idPayment'] = int(idPayment) except: items['idPayment'] = 0 if not d is None and items['idPayment'] == 0: p_count = self.db.query(Payment).filter( Payment.uid == member_id).filter( Payment.date == d).count() if p_count > 0: formok = False errors.append(_('That month is already on records!')) if not formok: self.session['errors'] = errors self.session['reqparams'] = {} # @TODO request.params may contain multiple values per key... test & fix for k in self.request.params.iterkeys(): self.session['reqparams'][k] = self.request.params[k] self.session.save() raise HTTPRedirect( '/payments/editPayment/?member_id={0}&idPayment={1}'. format(member_id, items['idPayment'])) else: items['date'] = d return f(self, member_id, items)