blob: fcff0e000347f0c25f9bafc88bae2c77efa93ca5 [file] [log] [blame]
#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.