blob: 279e26b23b3ac45f5605897acbc27d8ad4643f0c [file] [log] [blame] [view]
# 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 its a document, edit and show will probably appear... but theres 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 modules 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.