Better description of the structure of the application
authorChristopher Allan Webber <cwebber@dustycloud.org>
Sun, 17 Mar 2013 19:16:19 +0000 (14:16 -0500)
committerChristopher Allan Webber <cwebber@dustycloud.org>
Sun, 17 Mar 2013 19:16:19 +0000 (14:16 -0500)
docs/source/devel/codebase.rst

index 73e938e791e770dbe641fe3043c67805def4a489..5e8cbcc600b5582ebcce2efbb9cdffbf59128864 100644 (file)
@@ -117,13 +117,27 @@ tree::
 
     mediagoblin/
     |- mediagoblin/              # source code
-    |  |- tests/
-    |  |- templates/
-    |  |- auth/
-    |  \- submit/
+    |  |- db/                    # database setup
+    |  |- tools/                 # various utilities
+    |  |- init/                  # "initialization" tools (arguably should be in tools/)
+    |  |- tests/                 # unit tests
+    |  |- templates/             # templates for this application
+    |  |- media_types/           # code for processing, displaying different media
+    |  |- storage/               # different storage backends
+    |  |- gmg_commands/          # command line tools (./bin/gmg)
+    |  |- themes/                # pre-bundled themes
+    |  |
+    |  |  # ... some submodules here as well for different sections
+    |  |  # of the application... here's just a few
+    |  |- auth/                  # authentication (login/registration) code
+    |  |- user_dev/              # user pages (under /u/), including media pages
+    |  \- submit/                # submitting media for processing
+    |
     |- docs/                     # documentation
     |- devtools/                 # some scripts for developer convenience
     |
+    |- user_dev/                 # local instance sessions, media, etc
+    |
     |  # the below directories are installed into your virtualenv checkout
     |
     |- bin/                      # scripts
@@ -131,8 +145,7 @@ tree::
     |- lib/                      # python libraries installed into your virtualenv
     |- include/
     |- mediagoblin.egg-info/
-    |- parts/
-    |- user_dev/                 # sessions, etc
+    \- parts/
 
 
 As you can see, all the code for GNU MediaGoblin is in the
@@ -142,8 +155,7 @@ Here are some interesting files and what they do:
 
 :routing.py: maps url paths to views
 :views.py:   views handle http requests
-:models.py:  holds the sqlalchemy schemas---these are the data structures
-             we're working with
+:forms.py:   wtforms stuff for this submodule
 
 You'll notice that there are several sub-directories: tests,
 templates, auth, submit, ...
@@ -154,5 +166,14 @@ templates, auth, submit, ...
 
 ``auth`` and ``submit`` are modules that enacpsulate authentication
 and media item submission.  If you look in these directories, you'll
-see they have their own ``routing.py``, ``view.py``, and
-``models.py`` in addition to some other code.
+see they have their own ``routing.py``, ``view.py``, and forms.py in
+addition to some other code.
+
+You'll also notice that mediagoblin/db/ contains quite a few things,
+including the following:
+
+:models.py:      This is where the database is set up
+:mixin.py:       Certain functions appended to models from here
+:migrations.py:  When creating a new migration (a change to the
+                 database structure), we put it here
+