|
3 | 3 | from roundup import hyperdb, token, date, password, rcsv |
4 | 4 | from roundup.i18n import _ |
5 | 5 | from roundup.cgi import templating |
6 | | -from roundup.cgi.exceptions import Redirect, Unauthorised |
| 6 | +from roundup.cgi.exceptions import Redirect, Unauthorised, SeriousError |
7 | 7 | from roundup.mailgw import uidFromAddress |
8 | 8 |
|
9 | 9 | __all__ = ['Action', 'ShowAction', 'RetireAction', 'SearchAction', |
@@ -66,7 +66,15 @@ def handle(self, typere=re.compile('[@:]type'), |
66 | 66 | elif numre.match(key): |
67 | 67 | n = self.form[key].value.strip() |
68 | 68 | if not t: |
69 | | - raise ValueError, 'Invalid %s number'%t |
| 69 | + raise ValueError, 'No type specified' |
| 70 | + if not n: |
| 71 | + raise SeriousError, _('No ID entered') |
| 72 | + try: |
| 73 | + int(n) |
| 74 | + except ValueError: |
| 75 | + d = {'input': n, 'classname': t} |
| 76 | + raise SeriousError, _( |
| 77 | + '"%(input)s" is not an ID (%(classname)s ID required)')%d |
70 | 78 | url = '%s%s%s'%(self.db.config.TRACKER_WEB, t, n) |
71 | 79 | raise Redirect, url |
72 | 80 |
|
@@ -593,7 +601,8 @@ def handle(self): |
593 | 601 |
|
594 | 602 | # generate the one-time-key and store the props for later |
595 | 603 | otk = ''.join([random.choice(chars) for x in range(32)]) |
596 | | - self.db.otks.set(otk, uid=uid, __time=time.time()) |
| 604 | + d = {'uid': uid, self.db.otks.timestamp: time.time()} |
| 605 | + self.db.otks.set(otk, **d) |
597 | 606 |
|
598 | 607 | # send the email |
599 | 608 | tracker_name = self.db.config.TRACKER_NAME |
@@ -658,7 +667,7 @@ def handle(self): |
658 | 667 |
|
659 | 668 | Return 1 on successful login. |
660 | 669 | """ |
661 | | - props = self.client.parsePropsFromForm(create=1)[0][('user', None)] |
| 670 | + props = self.client.parsePropsFromForm(create=True)[0][('user', None)] |
662 | 671 |
|
663 | 672 | # registration isn't allowed to supply roles |
664 | 673 | if props.has_key('roles'): |
@@ -686,7 +695,7 @@ def handle(self): |
686 | 695 | props[propname] = str(value) |
687 | 696 | elif isinstance(proptype, hyperdb.Password): |
688 | 697 | props[propname] = str(value) |
689 | | - props['__time'] = time.time() |
| 698 | + props[self.db.otks.timestamp] = time.time() |
690 | 699 | self.db.otks.set(otk, **props) |
691 | 700 |
|
692 | 701 | # send the email |
|
0 commit comments