blob: bcab9e79617d7485d3fe13f622976b3193ebf995 [file] [log] [blame]
#summary Url scheme in melange
#labels Contents-Skeleton
<wiki:toc max_depth="2" />
= 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:
# gsoc, Google Summer of Code programs
# gci, Google Code-In programs
# 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.