\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}{7}{subsubsection*.16}
\contentsline {subsubsection}{Writing integration tests}{7}{subsubsection*.22}
\contentsline {section}{\numberline {2.4}Development mode}{8}{section.2.4}
\contentsline {subsection}{\numberline {2.4.1}Hot deploy}{9}{subsection.2.4.1}
\contentsline {subsection}{\numberline {2.4.2}API}{9}{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 {subsection}{\numberline {3.2.5}Redirect using request}{14}{subsection.3.2.5}
\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*.94}
\contentsline {subsection}{\numberline {3.4.6}Database session management}{26}{subsection.3.4.6}
\contentsline {section}{\numberline {3.5}SDK}{26}{section.3.5}
\contentsline {subsection}{\numberline {3.5.1}Intro}{26}{subsection.3.5.1}
\contentsline {subsection}{\numberline {3.5.2}Usage}{27}{subsection.3.5.2}
\contentsline {subsection}{\numberline {3.5.3}Supported commands}{27}{subsection.3.5.3}
\contentsline {subsubsection}{Activate extension command}{27}{subsubsection*.117}
\contentsline {subsubsection}{Fantastico command}{27}{subsubsection*.122}
\contentsline {subsubsection}{Syncdb command}{28}{subsubsection*.123}
\contentsline {subsubsection}{Version command}{28}{subsubsection*.128}
\contentsline {subsection}{\numberline {3.5.4}Technical summary}{29}{subsection.3.5.4}
\contentsline {section}{\numberline {3.6}Component model}{32}{section.3.6}
\contentsline {subsection}{\numberline {3.6.1}Static folder}{32}{subsection.3.6.1}
\contentsline {subsection}{\numberline {3.6.2}Sql folder}{32}{subsection.3.6.2}
\contentsline {subsubsection}{Sql folder example}{32}{subsubsection*.152}
\contentsline {section}{\numberline {3.7}Component reusage}{34}{section.3.7}
\contentsline {section}{\numberline {3.8}Built in components}{35}{section.3.8}
\contentsline {subsection}{\numberline {3.8.1}Dynamic menu}{35}{subsection.3.8.1}
\contentsline {subsubsection}{Integration}{35}{subsubsection*.156}
\contentsline {paragraph}{Component files activation deprecated}{35}{paragraph*.157}
\contentsline {paragraph}{Component files activation (SDK)}{36}{paragraph*.158}
\contentsline {paragraph}{Component sample + db data}{36}{paragraph*.159}
\contentsline {subsubsection}{Current limitations}{36}{subsubsection*.160}
\contentsline {subsubsection}{Technical summary}{36}{subsubsection*.161}
\contentsline {subsection}{\numberline {3.8.2}Dynamic pages}{37}{subsection.3.8.2}
\contentsline {subsubsection}{Integration}{37}{subsubsection*.166}
\contentsline {subsubsection}{Current limitations}{38}{subsubsection*.167}
\contentsline {subsubsection}{Technical summary}{38}{subsubsection*.168}
\contentsline {subsection}{\numberline {3.8.3}Tracking codes}{40}{subsection.3.8.3}
\contentsline {subsubsection}{Analytic solutions}{40}{subsubsection*.173}
\contentsline {subsubsection}{Integration}{41}{subsubsection*.174}
\contentsline {subsubsection}{Current limitations}{41}{subsubsection*.175}
\contentsline {subsubsection}{Technical summary}{41}{subsubsection*.176}
\contentsline {chapter}{\numberline {4}How to articles}{43}{chapter.4}
\contentsline {section}{\numberline {4.1}MVC How to}{43}{section.4.1}
\contentsline {subsection}{\numberline {4.1.1}Code the model}{43}{subsection.4.1.1}
\contentsline {subsection}{\numberline {4.1.2}Code the controller}{43}{subsection.4.1.2}
\contentsline {subsection}{\numberline {4.1.3}Code the view}{44}{subsection.4.1.3}
\contentsline {subsection}{\numberline {4.1.4}Test your application}{44}{subsection.4.1.4}
\contentsline {section}{\numberline {4.2}Deployment how to}{44}{section.4.2}
\contentsline {subsection}{\numberline {4.2.1}Low usage (simplest scenario)}{45}{subsection.4.2.1}
\contentsline {subsubsection}{Setup}{46}{subsubsection*.181}
\contentsline {subsection}{\numberline {4.2.2}Low usage AWS}{46}{subsection.4.2.2}
\contentsline {subsubsection}{Setup}{47}{subsubsection*.182}
\contentsline {subsubsection}{Optimization}{47}{subsubsection*.183}
\contentsline {subsubsection}{Setup with S3}{48}{subsubsection*.184}
\contentsline {section}{\numberline {4.3}Static assets}{48}{section.4.3}
\contentsline {subsection}{\numberline {4.3.1}Static assets on dev}{48}{subsection.4.3.1}
\contentsline {subsubsection}{Favicon}{49}{subsubsection*.185}
\contentsline {subsection}{\numberline {4.3.2}Static assets on prod}{49}{subsection.4.3.2}
\contentsline {section}{\numberline {4.4}Creating a new project}{49}{section.4.4}
\contentsline {subsection}{\numberline {4.4.1}Create first component}{49}{subsection.4.4.1}
\contentsline {subsection}{\numberline {4.4.2}Customize dev server}{50}{subsection.4.4.2}
\contentsline {subsection}{\numberline {4.4.3}Customize uwsgi prod server}{50}{subsection.4.4.3}
\contentsline {chapter}{\numberline {5}Changes}{51}{chapter.5}
\contentsline {section}{\numberline {5.1}Feedback}{51}{section.5.1}
\contentsline {section}{\numberline {5.2}Versions}{51}{section.5.2}
\contentsline {chapter}{\numberline {6}Provide feedback}{53}{chapter.6}
\contentsline {chapter}{\numberline {7}Build status}{55}{chapter.7}
\contentsline {chapter}{\numberline {8}License}{57}{chapter.8}
\contentsline {chapter}{Index}{59}{section*.186}
