\select@language {english}
\contentsline {chapter}{\numberline {1}Introduction}{1}{chapter.1}
\contentsline {section}{\numberline {1.1}Why another python framework?}{1}{section.1.1}
\contentsline {subsection}{\numberline {1.1.1}What do you want to teach who?}{1}{subsection.1.1.1}
\contentsline {section}{\numberline {1.2}Fantastico's initial ideas}{1}{section.1.2}
\contentsline {chapter}{\numberline {2}Getting started}{3}{chapter.2}
\contentsline {section}{\numberline {2.1}Installation manual}{3}{section.2.1}
\contentsline {subsection}{\numberline {2.1.1}Developing a new fantastico project}{3}{subsection.2.1.1}
\contentsline {subsection}{\numberline {2.1.2}Contributing to fantastico framework}{3}{subsection.2.1.2}
\contentsline {section}{\numberline {2.2}Fantastico settings}{4}{section.2.2}
\contentsline {subsection}{\numberline {2.2.1}Settings API}{4}{subsection.2.2.1}
\contentsline {subsection}{\numberline {2.2.2}Create Dev configuration}{5}{subsection.2.2.2}
\contentsline {subsection}{\numberline {2.2.3}Using a specifc configuration}{5}{subsection.2.2.3}
\contentsline {section}{\numberline {2.3}Contribute}{6}{section.2.3}
\contentsline {subsection}{\numberline {2.3.1}Code contribution}{6}{subsection.2.3.1}
\contentsline {subsubsection}{Writing unit tests}{6}{subsubsection*.15}
\contentsline {subsubsection}{Writing integration tests}{7}{subsubsection*.20}
\contentsline {section}{\numberline {2.4}Development mode}{8}{section.2.4}
\contentsline {subsection}{\numberline {2.4.1}Hot deploy}{8}{subsection.2.4.1}
\contentsline {subsection}{\numberline {2.4.2}API}{8}{subsection.2.4.2}
\contentsline {subsection}{\numberline {2.4.3}Database config}{9}{subsection.2.4.3}
\contentsline {chapter}{\numberline {3}Fantastico features}{11}{chapter.3}
\contentsline {section}{\numberline {3.1}Exceptions hierarchy}{11}{section.3.1}
\contentsline {section}{\numberline {3.2}Request lifecycle}{12}{section.3.2}
\contentsline {subsection}{\numberline {3.2.1}Request middleware}{13}{subsection.3.2.1}
\contentsline {subsection}{\numberline {3.2.2}Request context}{13}{subsection.3.2.2}
\contentsline {subsection}{\numberline {3.2.3}Obtain request language}{14}{subsection.3.2.3}
\contentsline {subsection}{\numberline {3.2.4}Obtain settings using request}{14}{subsection.3.2.4}
\contentsline {section}{\numberline {3.3}Routing engine}{15}{section.3.3}
\contentsline {subsection}{\numberline {3.3.1}Routes loaders}{16}{subsection.3.3.1}
\contentsline {subsection}{\numberline {3.3.2}How to write a new route loader}{16}{subsection.3.3.2}
\contentsline {subsection}{\numberline {3.3.3}Configuring available loaders}{16}{subsection.3.3.3}
\contentsline {subsection}{\numberline {3.3.4}DummyRouteLoader}{17}{subsection.3.3.4}
\contentsline {subsection}{\numberline {3.3.5}Routing middleware}{17}{subsection.3.3.5}
\contentsline {section}{\numberline {3.4}Model View Controller}{17}{section.3.4}
\contentsline {subsection}{\numberline {3.4.1}Classic approach}{17}{subsection.3.4.1}
\contentsline {subsection}{\numberline {3.4.2}Fantastico approach}{18}{subsection.3.4.2}
\contentsline {subsection}{\numberline {3.4.3}Model}{19}{subsection.3.4.3}
\contentsline {subsection}{\numberline {3.4.4}View}{23}{subsection.3.4.4}
\contentsline {subsection}{\numberline {3.4.5}Controller}{23}{subsection.3.4.5}
\contentsline {subsubsection}{Available filters}{24}{subsubsection*.86}
\contentsline {subsection}{\numberline {3.4.6}Database session management}{25}{subsection.3.4.6}
\contentsline {section}{\numberline {3.5}Component model}{26}{section.3.5}
\contentsline {subsection}{\numberline {3.5.1}Static folder}{26}{subsection.3.5.1}
\contentsline {subsection}{\numberline {3.5.2}Sql folder}{26}{subsection.3.5.2}
\contentsline {subsubsection}{Sql folder example}{26}{subsubsection*.106}
\contentsline {chapter}{\numberline {4}How to articles}{29}{chapter.4}
\contentsline {section}{\numberline {4.1}MVC How to}{29}{section.4.1}
\contentsline {subsection}{\numberline {4.1.1}Code the model}{29}{subsection.4.1.1}
\contentsline {subsection}{\numberline {4.1.2}Code the controller}{29}{subsection.4.1.2}
\contentsline {subsection}{\numberline {4.1.3}Code the view}{30}{subsection.4.1.3}
\contentsline {subsection}{\numberline {4.1.4}Test your application}{30}{subsection.4.1.4}
\contentsline {section}{\numberline {4.2}Deployment how to}{30}{section.4.2}
\contentsline {subsection}{\numberline {4.2.1}Low usage (simplest scenario)}{31}{subsection.4.2.1}
\contentsline {subsubsection}{Setup}{32}{subsubsection*.107}
\contentsline {subsection}{\numberline {4.2.2}Low usage AWS}{32}{subsection.4.2.2}
\contentsline {subsubsection}{Setup}{33}{subsubsection*.108}
\contentsline {subsubsection}{Optimization}{33}{subsubsection*.109}
\contentsline {subsubsection}{Setup with S3}{34}{subsubsection*.110}
\contentsline {section}{\numberline {4.3}Static assets}{34}{section.4.3}
\contentsline {subsection}{\numberline {4.3.1}Static assets on dev}{34}{subsection.4.3.1}
\contentsline {section}{\numberline {4.4}Creating a new project}{35}{section.4.4}
\contentsline {subsection}{\numberline {4.4.1}Create first component}{35}{subsection.4.4.1}
\contentsline {subsection}{\numberline {4.4.2}Customize dev server}{36}{subsection.4.4.2}
\contentsline {subsection}{\numberline {4.4.3}Customize uwsgi prod server}{36}{subsection.4.4.3}
\contentsline {chapter}{\numberline {5}Changes}{37}{chapter.5}
\contentsline {chapter}{\numberline {6}Build status}{39}{chapter.6}
\contentsline {chapter}{\numberline {7}License}{41}{chapter.7}
\contentsline {chapter}{Index}{43}{section*.111}
