Source code for bobtail.form

from abc import ABC, abstractmethod
from typing import Dict

from bobtail.wsgi_input import WSGIInput
from bobtail.exceptions import MultipartFormDataError, FormDataError


[docs] class AbstractForm(ABC): wsgi_input: WSGIInput def __init__(self, wsgi_input: WSGIInput): self.wsgi_input = wsgi_input @abstractmethod def get_field(self,field_name: str) -> str: pass
[docs] class Form(AbstractForm):
[docs] def get_field(self,field_name: str) -> str: """ :param field_name: :return str: """ try: data = self.wsgi_input.get_form_data() return data[field_name]["value"] except KeyError as exc: raise FormDataError( f"Error getting form value for {field_name} field" ) from exc
[docs] class MultipartForm(AbstractForm):
[docs] def get_field(self, field_name) -> str: """ :param field_name: :return: """ try: data = self.wsgi_input.get_multipart_data() return data[field_name]["value"] except KeyError as exc: raise MultipartFormDataError( f"Error getting form value for {field_name} field" ) from exc
[docs] def get_file(self,field_name: str) -> Dict: """ :param field_name: :return: """ try: data = self.wsgi_input.get_multipart_data() return { "filename": data[field_name]["value"]["filename"], "data": data[field_name]["value"]["file_data"], "mimetype": data[field_name]["value"]["mimetype"], } except KeyError as exc: raise MultipartFormDataError( f"Error getting form value for {field_name} file" ) from exc
[docs] def get_name(self,field_name: str) -> str: """ :param field_name: :return: """ try: data = self.wsgi_input.get_multipart_data() return data[field_name]["value"]["filename"] except KeyError as exc: raise MultipartFormDataError( f"Error getting filename for {field_name} file" ) from exc
[docs] def get_data(self,field_name: str) -> bytes: """ :param field_name: :return: """ try: data = self.wsgi_input.get_multipart_data() return data[field_name]["value"]["file_data"] except KeyError as exc: raise MultipartFormDataError( f"Error getting file data for {field_name} file" ) from exc
[docs] def get_mimetype(self,field_name: str) -> str: """ :param field_name: :return: """ try: data = self.wsgi_input.get_multipart_data() return data[field_name]["value"]["mimetype"] except KeyError as exc: raise MultipartFormDataError( f"Error getting file mimetype for {field_name} file" ) from exc