| 1 |
import validations |
|---|
| 2 |
|
|---|
| 3 |
from Form import * |
|---|
| 4 |
from Table import * |
|---|
| 5 |
from Module import * |
|---|
| 6 |
from consts import * |
|---|
| 7 |
|
|---|
| 8 |
DATA_VALIDATION = [ |
|---|
| 9 |
("new_error_url", validations.is_url_or_path) |
|---|
| 10 |
] |
|---|
| 11 |
|
|---|
| 12 |
|
|---|
| 13 |
class ModuleErrorRedir (Module, FormHelper): |
|---|
| 14 |
PROPERTIES = [x[0] for x in ERROR_CODES] |
|---|
| 15 |
|
|---|
| 16 |
def __init__ (self, cfg, prefix, submit_url): |
|---|
| 17 |
FormHelper.__init__ (self, 'error_redir', cfg) |
|---|
| 18 |
Module.__init__ (self, 'error_redir', cfg, prefix, submit_url) |
|---|
| 19 |
|
|---|
| 20 |
def _op_render (self): |
|---|
| 21 |
txt = '' |
|---|
| 22 |
|
|---|
| 23 |
# Render error list |
|---|
| 24 |
errors = self._cfg[self._prefix] |
|---|
| 25 |
if errors and errors.has_child(): |
|---|
| 26 |
txt += '<h3>Configured error codes</h3>' |
|---|
| 27 |
table = Table(3,1) |
|---|
| 28 |
table += ('Error Code', 'URL', '') |
|---|
| 29 |
for error in errors: |
|---|
| 30 |
js = "post_del_key('/ajax/update', '%s!%s');" % (self._prefix, error) |
|---|
| 31 |
link_del = self.InstanceImage ("bin.png", "Delete", border="0", onClick=js) |
|---|
| 32 |
table += (error, self._cfg.get_val('%s!%s'%(self._prefix,error)), link_del) |
|---|
| 33 |
txt += str(table) |
|---|
| 34 |
|
|---|
| 35 |
# New error |
|---|
| 36 |
txt += '<h3>Add error codes</h3>' |
|---|
| 37 |
table = Table(3,1) |
|---|
| 38 |
table += ('Error', 'URL', '') |
|---|
| 39 |
|
|---|
| 40 |
options = EntryOptions ('new_error_code', ERROR_CODES, noautosubmit=True) |
|---|
| 41 |
entry = self.InstanceEntry('new_error_url', 'text', size=30) |
|---|
| 42 |
table += (options, entry, SUBMIT_ADD) |
|---|
| 43 |
|
|---|
| 44 |
txt += str(table) |
|---|
| 45 |
return txt |
|---|
| 46 |
|
|---|
| 47 |
def _op_apply_changes (self, uri, post): |
|---|
| 48 |
self.ValidateChange_SingleKey ('new_error_url', post, DATA_VALIDATION) |
|---|
| 49 |
if self.has_errors(): |
|---|
| 50 |
return |
|---|
| 51 |
|
|---|
| 52 |
new_error = post.pop('new_error_code') |
|---|
| 53 |
new_url = post.pop('new_error_url') |
|---|
| 54 |
|
|---|
| 55 |
if new_error and new_url: |
|---|
| 56 |
self._cfg['%s!%s'%(self._prefix, new_error)] = new_url |
|---|