from ExamplePage import ExamplePage

class CustomError:
    """Custom classic class not based on Exception (for testing)."""

    def __init__(self, msg):
        self.msg = msg

    def __str__(self):
        return self.msg


class Error(ExamplePage):

    def title(self):
        return 'Error raising Example'

    def writeContent(self):
        error = self.request().field('error', None)
        if error:
            msg = 'You clicked that button!'
            if error.startswith('String'):
                error = msg
            elif error.startswith('Custom'):
                error = CustomError(msg)
            elif error.startswith('System'):
                error = SystemError(msg)
            else:
                error = StandardError(msg)
            self.writeln('<p>About to raise an error...</p>')
            raise error
        self.writeln('''<h1>Error Test</h1>
<form action="Error" method="post">
<p><select name="error" size="1">
<option selected>Standard Error</option>
<option>System Error</option>
<option>Custom Class (old)</option>
<option>String (deprecated)</option>
</select>
<input type="submit" value="Don't click this button!"></p>
</form>''')