Presentation is loading. Please wait.

Presentation is loading. Please wait.

Web-Applications: TurboGears II BCHB524 2014 Lecture 26 12/03/2014BCHB524 - 2014 - Edwards.

Similar presentations


Presentation on theme: "Web-Applications: TurboGears II BCHB524 2014 Lecture 26 12/03/2014BCHB524 - 2014 - Edwards."— Presentation transcript:

1 Web-Applications: TurboGears II BCHB524 2014 Lecture 26 12/03/2014BCHB524 - 2014 - Edwards

2 12/03/2014BCHB524 - 2014 - Edwards2 Last time… We made the empty HoyaTaxa website and learned how to make minor changes, and send dynamic content to template. We added a “taxa” information page with: Clickable Parent link (Variable number of) clickable Children links

3 12/03/2014BCHB524 - 2014 - Edwards3 Start web-app and check Check that the web-application is working... In the class Command-Line shell: [student@localhost ~]$ cd HoyaTaxa [student@localhost HoyaTaxa]$ start-hoyataxa.py Start a web-browser and access by urls: http://localhost:8080/ http://localhost:8080/taxa/9606 http://localhost:8080/taxa?taxid=9606 http://localhost:8080/ http://localhost:8080/taxa/9606 http://localhost:8080/taxa?taxid=9606

4 12/03/2014BCHB524 - 2014 - Edwards4 Empty landing page

5 12/03/2014BCHB524 - 2014 - Edwards5 Taxonomy page

6 12/03/2014BCHB524 - 2014 - Edwards6 Tour the primary files The files we modified in the HoyaTaxa folder: Controller: hoyataxa/controllers.py Change the index method Add the taxa method to lookup and return Taxonomy given taxid (Data) Model: hoyataxa/model.py SQLObject classes devdata.sqlite download (or populate) the data in the sqlite database View / Template: hoyataxa/templates/welcome.html Remove all but the dynamic title hoyataxa/templates/master.html Change header and footer, remove menus hoyataxa/templates/taxa.html Set-up the taxa page layout

7 12/03/2014BCHB524 - 2014 - Edwards7 List all names

8 12/03/2014BCHB524 - 2014 - Edwards8 List all names

9 12/03/2014BCHB524 - 2014 - Edwards9 Remove the scientific name

10 12/03/2014BCHB524 - 2014 - Edwards10 Remove scientific name

11 12/03/2014BCHB524 - 2014 - Edwards11 Let's add the lineage

12 12/03/2014BCHB524 - 2014 - Edwards12 Let’s add the lineage

13 12/03/2014BCHB524 - 2014 - Edwards13 Let’s add the lineage

14 12/03/2014BCHB524 - 2014 - Edwards14 Empty landing page

15 12/03/2014BCHB524 - 2014 - Edwards15 Set up search form In controllers.py, define a class for the form from turbogears import validate, validators from turbogears import widgets, error_handler class SearchFields(widgets.WidgetsList): query = widgets.TextField(label="Search Term") mode = widgets.SingleSelectField(label="Search Mode", options=["Starts with", "Ends with", "Contains"], default="Contains") search_form = widgets.TableForm( fields = SearchFields(), action = "search", submit_text = "Search" ) class Root(controllers.RootController): @expose(template="hoyataxa.templates.welcome") def index(self): return dict(form=search_form, title="All your taxa are belong to us")

16 12/03/2014BCHB524 - 2014 - Edwards16 Set up search form Place the form in welcome.html

17 12/03/2014BCHB524 - 2014 - Edwards17 Set up search form

18 12/03/2014BCHB524 - 2014 - Edwards18 Handle the search request In controllers.py, we add the search method

19 12/03/2014BCHB524 - 2014 - Edwards19 Handle the search request Save taxa.html as search.html and modify

20 12/03/2014BCHB524 - 2014 - Edwards20 Handle the search request Save taxa.html as search.html and modify

21 Search for name: gorilla 12/03/2014BCHB524 - 2014 - Edwards21

22 12/03/2014BCHB524 - 2014 - Edwards22 But… There is a problem. What to do about bad input? Too short, spaces at beginning or end… TurboGears provides validators to check values in the fields to make sure they are OK Nice integration with form widgets Users get error messages so they can fix the error

23 12/03/2014BCHB524 - 2014 - Edwards23 Validation “Schema”

24 12/03/2014BCHB524 - 2014 - Edwards24 Handle errors in search parameters

25 12/03/2014BCHB524 - 2014 - Edwards25 Problem is communicated to user

26 12/03/2014BCHB524 - 2014 - Edwards26 Problem is communicated to user

27 12/03/2014BCHB524 - 2014 - Edwards27 Validators can be quite complicated

28 12/03/2014BCHB524 - 2014 - Edwards28 Problem is communicated to user

29 12/03/2014BCHB524 - 2014 - Edwards29 Setup for use by web-services Our web-site can now be accessed programatically… …as we did with urllib.urlopen in python Access: http://localhost:8080/taxa?taxid=9606 http://localhost:8080/search?query=hum&mode=Contains However, we usually don’t want to parse HTML. Programs want to parse “easy” no-frills formats.

30 12/03/2014BCHB524 - 2014 - Edwards30 Let’s provide XML output format We need a new output template for search: searchxml.html

31 12/03/2014BCHB524 - 2014 - Edwards31 XML output format Next we need to tell the search method when to use it…

32 12/03/2014BCHB524 - 2014 - Edwards32 XML Output Format To get XML format output, add “&tg_format=xml” to end of URL. Try it: http://localhost:8080/search?query=hum&mode=Contains http://localhost:8080/search?query=hum&mode=Contains&tg_format=xml http://localhost:8080/search?query=hum&mode=Contains http://localhost:8080/search?query=hum&mode=Contains&tg_format=xml

33 12/03/2014BCHB524 - 2014 - Edwards33 Similarly for the taxa page

34 12/03/2014BCHB524 - 2014 - Edwards34 Similarly for the taxa page

35 12/03/2014BCHB524 - 2014 - Edwards35 XML Output Format To get XML format output, add “tg_format=xml” to end of URL. Try it: http://localhost:8080/taxa?taxid=9606 http://localhost:8080/taxa?taxid=9606&tg_format=xml http://localhost:8080/taxa/9606 http://localhost:8080/taxa/9606?tg_format=xml http://localhost:8080/taxa?taxid=9606 http://localhost:8080/taxa?taxid=9606&tg_format=xml http://localhost:8080/taxa/9606 http://localhost:8080/taxa/9606?tg_format=xml

36 12/03/2014BCHB524 - 2014 - Edwards36 All done… We can now display a taxonomy record nicely if the user types a URL...and then navigate about its heirachy. Can search the names based on a user query. Search form, list of matching results, etc... XML output for web-services.

37 12/03/2014BCHB524 - 2014 - Edwards37 TODO… If only one matching search result – jump straight to taxa page… Even if only one taxa matches? Search/lookup by taxid too? Make pages and tables prettier Center and position tables on page Alternate row colors


Download ppt "Web-Applications: TurboGears II BCHB524 2014 Lecture 26 12/03/2014BCHB524 - 2014 - Edwards."

Similar presentations


Ads by Google