| #summary Url scheme in melange |
| #labels Contents-Skeleton |
| |
| = URLs in Melange = |
| |
| == What does a URL look like? ** |
| |
| Example: hostname/*gsoc*/*homepage*/*google*/*gsoc2013* |
| |
| * The first path component is considered the “module” (examples are /gsoc, /gci, /tasks) |
| * */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 be repeated. 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”, (sometimes omitted) (“edit”, “show”, “create”, “update”) |
| * Under what conditions does this appear? If it’s a document, “edit” and “show” will probably appear... but there’s not really consistent criteria |
| * Fourth path component is ID, keyname, or enough of the key name to unambiguously identify the viewed entity prefixed by /<sponsor>/<program>. |
| * Common patterns live in url_patterns.py |
| * 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. |
| * URLs are registered with DjangoUrlPatterns during frontend instantiation |
| * See each module’s callback.py module |
| * MapReduces live at some /_ah/mapreduce “special” url. |
| * AppEngine ensures that only app developers can reach those urls. |