| |
| |
| # What does a URL look like? |
| |
| > Example: /**gsoc**/**org**/**home**/**google**/**gsoc2013**/**melange** |
| |
| * The first path component is considered the “module”, some examples. |
| * **/gsoc** are the Google Summer of Code related urls |
| * **/gci** are the Google Code-in related urls |
| * **/tasks** are all the Google Appengine TaskQueue related URLs, these are followed by another component to indicate which module they belong to. All urls starting with /tasks can only be hit by a AppEngine developer or an internal AppEngine generated request. |
| * Second is “component”, this indicates the different items and concepts in Melange. This component might consist out of multiple parts. Examples are: |
| * **/dashboard** the dashboard for users |
| * **/home** the homepage of the program |
| * **/document** any documents in the program |
| * **/admin** the administration pages for Hosts |
| * **/org/application** organization applications |
| * Third is “function” or “action”, such as |
| * **/edit** |
| * **/show** |
| * **/create** |
| * **/update** |
| * Fourth path component is ID, keyname, or enough of the key name to unambiguously identify the viewed entity. E.g. |
| * **/google/gsoc2013/melange** |
| |
| ## Module Component |
| Melange knows three module components: |
| 1. gsoc, Google Summer of Code programs |
| 1. gci, Google Code-In programs |
| 1. core, general site-wide configuration and pages are handled here. Core pages do not have a module component in the url. |
| |
| |
| ## Components component |
| |
| ## Action component |
| * Under what conditions does function/action appear? If it’s a document, “edit” and “show” will probably appear... but there’s not really consistent criteria |
| |
| ## Identifier component |
| |
| # How to define a URL in the code? |
| * Common patterns live in url\_patterns.py |
| * URLs are registered with DjangoUrlPatterns during frontend instantiation |
| * See each module’s callback.py module |
| |
| # Conventions around GET parameters |
| * Get parameters are used for things like telling the user that their form was saved correctly |
| * GCI uses Get parameters to determine action in task view. |