Pinax0.7.3のclone_project(雛形)一覧について

Djangoフレームワークを元に、様々なプログラムをプラグインの形で詰め込んだPinaxは、
実によく作られています。

初期に入っている雛形のセットについて一覧を見てみましょう。

Pinax0.7.3にはあらかじめ、以下の雛形のセットが用意されています。

第1部 Pinaxプロジェクトの一覧

  1. cms_project_company
  2. basic_project
  3. intranet_project
  4. private_beta_project
  5. code_project
  6. social_project
  7. cms_project_holidayhouse
  8. sample_group_project

コマンド確認

以下のコマンドで、雛形のセットが確認できます。

% pinax-admin clone_project -l
Available Projects
------------------
cms_project_company:
    A very simple CMS that lets you set up templates and then edit content,
    including images, right in the frontend of the site.

    The sample media, templates and content including in the project demonstrate
    a basic company website.

basic_project:
    This project comes with the bare minimum set of applications and templates
    to get you started. It includes no extra tabs, only the profile and notices
    tabs are included by default. From here you can add any extra functionality
    and applications that you would like.

intranet_project:
    This project demonstrates a closed site requiring an invitation to join and
    not exposing any information publicly. It provides a top-level task tracking
    system, wiki and bookmarks. It is intended to be the starting point of sites
    like intranets.

private_beta_project:
    This project demonstrates the use of a waiting list and signup codes for
    sites in private beta. Otherwise it is the same as basic_project.

code_project:
    This project demonstrates group functionality and the tasks, wiki and topics
    apps. It is intended to be the starting point for things like code project
    management where each code project gets its own wiki, task tracking system
    and threaded discussions.

social_project:
    This project demonstrates a social networking site. It provides profiles,
    friends, photos, blogs, tribes, wikis, tweets, bookmarks, swaps,
    locations and user-to-user messaging.

    In 0.5 this was called "complete_project".

cms_project_holidayhouse:
    A very simple CMS that lets you set up templates and then edit content,
    including images, right in the frontend of the site.

    The sample media, templates and content including in the project demonstrate
    a basic site for holiday house rentals.

sample_group_project:
    This project demonstrates group functionality with a barebones group
    containing no extra content apps as well as two additional group types,
    tribes and projects, which show different membership approaches and
    content apps.

続いて、それぞれのプロジェクトに含まれるプログラムを見ていきます。



第2部:Pinaxの各プロジェクトの考察

各プロジェクトのurls.pyのurlpatternsと、
settings.pyのINSTALLED_APPSを見ていきましょう。

1.cms_project_company

cms_project_companyのurls.py
urlpatterns = patterns('',
    # some simple pages
    url(r'^$', direct_to_template, {"template": "homepage.html"}, name="home"),
    url(r'^products/$', direct_to_template, {"template": "products.html"}, name="products"),
    url(r'^support/$', direct_to_template, {"template": "support.html"}, name="support"),
    url(r'^about_us/$', direct_to_template, {"template": "about_us.html"}, name="about_us"),

    # 3rd party
    (r'^frontendadmin/', include('frontendadmin.urls')),
    (r'^attachments/', include('attachments.urls')),

    # pinax provided
    (r'^account/', include('account.urls')),
    (r'^openid/(.*)', PinaxConsumer()),
    (r'^admin/(.*)', admin.site.root),
)
cms_project_companyのsettings.py
INSTALLED_APPS = (
    # included
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.humanize',
    'pinax.templatetags',

    # external
    'notification', # must be first
    'django_openid',
    'emailconfirmation',
    'mailer',
    'pagination',
    'timezones',
    'ajax_validation',
    'uni_form',
    'dbtemplates',
    'staticfiles',

    # internal (for now)
    'basic_profiles',
    'account',
    'django.contrib.admin',

    # project specific
    'sorl.thumbnail',
    'frontendadmin',
    'attachments',
    'django_generic_flatblocks',
    'django_generic_flatblocks.contrib.gblocks',
    'django.contrib.markup',

)

2.basic_project

basic_projectのurls.py
urlpatterns = patterns('',
    url(r'^$', direct_to_template, {
        "template": "homepage.html",
    }, name="home"),

    url(r'^admin/invite_user/$', 'signup_codes.views.admin_invite_user', name="admin_invite_user"),
    url(r'^account/signup/$', signup_view, name="acct_signup"),

    (r'^about/', include('about.urls')),
    (r'^account/', include('account.urls')),
    (r'^openid/(.*)', PinaxConsumer()),
    (r'^profiles/', include('basic_profiles.urls')),
    (r'^notices/', include('notification.urls')),
    (r'^announcements/', include('announcements.urls')),

    (r'^admin/(.*)', admin.site.root),
)
basic_projectのsettings.py
INSTALLED_APPS = (
    # included
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.humanize',
    'pinax.templatetags',

    # external
    'notification', # must be first
    'django_openid',
    'emailconfirmation',
    'mailer',
    'announcements',
    'pagination',
    'timezones',
    'ajax_validation',
    'uni_form',
    'staticfiles',

    # internal (for now)
    'basic_profiles',
    'account',
    'signup_codes',
    'about',
    'django.contrib.admin',

)
|

3.intranet_project

intranet_projectのurls.py
urlpatterns = patterns('',
    url(r'^$', direct_to_template, {
        "template": "homepage.html",
    }, name="home"),

    url(r'^admin/invite_user/$', 'signup_codes.views.admin_invite_user', name="admin_invite_user"),
    url(r'^account/signup/$', "signup_codes.views.signup", name="acct_signup"),

    (r'^account/', include('account.urls')),
    (r'^openid/(.*)', PinaxConsumer()),
    (r'^profiles/', include('basic_profiles.urls')),
    (r'^notices/', include('notification.urls')),
    (r'^announcements/', include('announcements.urls')),
    (r'^tagging_utils/', include('tagging_utils.urls')),
    (r'^attachments/', include('attachments.urls')),
    (r'^bookmarks/', include('bookmarks.urls')),
    (r'^tasks/', include('tasks.urls')),
    (r'^topics/', include('topics.urls')),
    (r'^comments/', include('threadedcomments.urls')),
    (r'^wiki/', include('wiki.urls')),

    (r'^admin/(.*)', admin.site.root),
)

intranet_projectのsettings.py
INSTALLED_APPS = (
    # included
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.humanize',
    'django.contrib.markup',
    'pinax.templatetags',

    # external
    'notification', # must be first
    'django_openid',
    'emailconfirmation',
    'mailer',
    'announcements',
    'pagination',
    'timezones',
    'ajax_validation',
    'bookmarks',
    'avatar',
    'tagging',
    'threadedcomments',
    'wiki',
    'uni_form',
    'django_markup',
    'attachments',
    'django_filters',
    'staticfiles',

    # internal (for now)
    'basic_profiles',
    'account',
    'signup_codes',
    'groups',
    'topics',
    'tagging_utils',
    'threadedcomments_extras',
    'tasks',

    'tag_app',

    'django.contrib.admin',

)

4.private_beta_project

private_beta_projectのurls.py
urlpatterns = patterns('',
    url(r'^$', homepage, name="home"),
    url(r'^success/$', direct_to_template, {"template": "waitinglist/success.html"}, name="waitinglist_sucess"),

    url(r'^admin/invite_user/$', 'signup_codes.views.admin_invite_user', name="admin_invite_user"),
    url(r'^account/signup/$', signup_view, name="acct_signup"),

    (r'^about/', include('about.urls')),
    (r'^account/', include('account.urls')),
    (r'^openid/(.*)', PinaxConsumer()),
    (r'^profiles/', include('basic_profiles.urls')),
    (r'^notices/', include('notification.urls')),
    (r'^announcements/', include('announcements.urls')),

    (r'^admin/(.*)', admin.site.root),
)
private_beta_projectのsettings.py
INSTALLED_APPS = (
    # included
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.humanize',
    'pinax.templatetags',

    # external
    'notification', # must be first
    'django_openid',
    'emailconfirmation',
    'mailer',
    'announcements',
    'pagination',
    'timezones',
    'ajax_validation',
    'uni_form',
    'staticfiles',

    # internal (for now)
    'basic_profiles',
    'account',
    'waitinglist',
    'signup_codes',

    'about',

    'django.contrib.admin',

)

5.code_project

code_projectのurls.py
urlpatterns = patterns('',
    url(r'^$', direct_to_template, {
        "template": "homepage.html",
    }, name="home"),

    url(r'^admin/invite_user/$', 'signup_codes.views.admin_invite_user', name="admin_invite_user"),
    url(r'^account/signup/$', signup_view, name="acct_signup"),

    (r'^about/', include('about.urls')),
    (r'^account/', include('account.urls')),
    (r'^openid/(.*)', PinaxConsumer()),
    (r'^profiles/', include('basic_profiles.urls')),
    (r'^notices/', include('notification.urls')),
    (r'^avatar/', include('avatar.urls')),
    (r'^comments/', include('threadedcomments.urls')),
    (r'^announcements/', include('announcements.urls')),
    (r'^tagging_utils/', include('tagging_utils.urls')),
    (r'^attachments/', include('attachments.urls')),
    (r'^projects/', include('projects.urls')),

    (r'^admin/(.*)', admin.site.root),
)
code_projectのsettings.py
INSTALLED_APPS = (
    # included
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.humanize',
    'django.contrib.markup',
    'django.contrib.admin',
    'pinax.templatetags',

    # external
    'notification', # must be first
    'django_openid',
    'emailconfirmation',
    'mailer',
    'announcements',
    'pagination',
    'timezones',
    'avatar',
    'threadedcomments',
    'ajax_validation',
    'tagging',
    'uni_form',
    'wiki',
    'django_sorting',
    'attachments',
    'django_markup',
    'django_filters',
    'staticfiles',

    # internal (for now)
    'basic_profiles',
    'account',
    'signup_codes',
    'about',
    'tag_app',
    'tagging_utils',
    'threadedcomments_extras',
    'groups',
    'projects',
    'tasks',
    'topics',

)

6.social_project

social_projectのurls.py
urlpatterns = patterns('',
    url(r'^$', direct_to_template, {
        "template": "homepage.html",
    }, name="home"),

    url(r'^admin/invite_user/$', 'signup_codes.views.admin_invite_user', name="admin_invite_user"),
    url(r'^account/signup/$', signup_view, name="acct_signup"),

    (r'^about/', include('about.urls')),
    (r'^account/', include('account.urls')),
    (r'^openid/(.*)', PinaxConsumer()),
    (r'^bbauth/', include('bbauth.urls')),
    (r'^authsub/', include('authsub.urls')),
    (r'^profiles/', include('profiles.urls')),
    (r'^blog/', include('blog.urls')),
    (r'^tags/', include('tag_app.urls')),
    (r'^invitations/', include('friends_app.urls')),
    (r'^notices/', include('notification.urls')),
    (r'^messages/', include('messages.urls')),
    (r'^announcements/', include('announcements.urls')),
    (r'^tweets/', include('microblogging.urls')),
    (r'^tribes/', include('tribes.urls')),
    (r'^comments/', include('threadedcomments.urls')),
    (r'^robots.txt$', include('robots.urls')),
    (r'^i18n/', include('django.conf.urls.i18n')),
    (r'^bookmarks/', include('bookmarks.urls')),
    (r'^admin/(.*)', admin.site.root),
    (r'^photos/', include('photos.urls')),
    (r'^avatar/', include('avatar.urls')),
    (r'^swaps/', include('swaps.urls')),
    (r'^flag/', include('flag.urls')),
    (r'^locations/', include('locations.urls')),

    (r'^feeds/tweets/(.*)/$', 'django.contrib.syndication.views.feed', tweets_feed_dict),
    (r'^feeds/posts/(.*)/$', 'django.contrib.syndication.views.feed', blogs_feed_dict),
    (r'^feeds/bookmarks/(.*)/?$', 'django.contrib.syndication.views.feed', bookmarks_feed_dict),
)
social_projectのsettings.py
INSTALLED_APPS = (
    # included
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.humanize',
    'django.contrib.markup',
    'pinax.templatetags',

    # external
    'notification', # must be first
    'django_openid',
    'emailconfirmation',
    'django_extensions',
    'robots',
    'friends',
    'mailer',
    'messages',
    'announcements',
    'oembed',
    'djangodblog',
    'pagination',
#    'gravatar',
    'threadedcomments',
    'threadedcomments_extras',
    'wiki',
    'swaps',
    'timezones',
    'voting',
    'voting_extras',
    'tagging',
    'bookmarks',
    'blog',
    'ajax_validation',
    'photologue',
    'avatar',
    'flag',
    'microblogging',
    'locations',
    'uni_form',
    'django_sorting',
    'django_markup',
    'staticfiles',
   # internal (for now)
    'analytics',
    'profiles',
    'account',
    'signup_codes',
    'tribes',
    'photos',
    'tag_app',
    'topics',
    'groups',

    'django.contrib.admin',

)

7.cms_project_holidayhouse

cms_project_holidayhouseのurls.py
urlpatterns = patterns('',
    # some simple pages
    url(r'^$', direct_to_template, {"template": "homepage.html"}, name="home"),
    url(r'^rooms/$', direct_to_template, {"template": "rooms.html"}, name="rooms"),
    url(r'^prices/$', direct_to_template, {"template": "prices.html"}, name="prices"),
    url(r'^contact/$', direct_to_template, {"template": "contact.html"}, name="contact"),

    # 3rd party
    (r'^frontendadmin/', include('frontendadmin.urls')),
    (r'^attachments/', include('attachments.urls')),

    # pinax provided
    (r'^account/', include('account.urls')),
    (r'^openid/(.*)', PinaxConsumer()),
    (r'^admin/(.*)', admin.site.root),
)
cms_project_holidayhouseのsettings.py
INSTALLED_APPS = (
    # included
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.humanize',
    'pinax.templatetags',

    # external
    'notification', # must be first
    'django_openid',
    'emailconfirmation',
    'mailer',
    'pagination',
    'timezones',
    'ajax_validation',
    'uni_form',
    'dbtemplates',
    'staticfiles',

    # internal (for now)
    'basic_profiles',
    'account',
    'django.contrib.admin',

    # project specific
    'sorl.thumbnail',
    'frontendadmin',
    'attachments',
    'django_generic_flatblocks',
    'django_generic_flatblocks.contrib.gblocks',
    'django.contrib.markup',

)

8.sample_group_project

sample_group_projectのurls.py
urlpatterns = patterns('',
    url(r'^$', direct_to_template, {
        "template": "homepage.html",
    }, name="home"),

    url(r'^admin/invite_user/$', 'signup_codes.views.admin_invite_user', name="admin_invite_user"),
    url(r'^account/signup/$', signup_view, name="acct_signup"),

    (r'^about/', include('about.urls')),
    (r'^account/', include('account.urls')),
    (r'^openid/(.*)', PinaxConsumer()),
    (r'^profiles/', include('basic_profiles.urls')),
    (r'^notices/', include('notification.urls')),
    (r'^announcements/', include('announcements.urls')),
    (r'^tagging_utils/', include('tagging_utils.urls')),
    (r'^comments/', include('threadedcomments.urls')),
    (r'^attachments/', include('attachments.urls')),

    (r'^groups/', include('basic_groups.urls')),
    (r'^tribes/', include('tribes.urls')),
    (r'^projects/', include('projects.urls')),

    (r'^admin/(.*)', admin.site.root),
)
sample_group_projectのsettings.py
INSTALLED_APPS = (
    # included
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.humanize',
    'pinax.templatetags',

    # external
    'notification', # must be first
    'django_openid',
    'emailconfirmation',
    'mailer',
    'announcements',
    'pagination',
    'timezones',
    'ajax_validation',
    'tagging',
    'uni_form',
    'wiki',
    'avatar',
    'threadedcomments',
    'tribes',
    'projects',
    'gravatar',
    'django_sorting',
    'photologue',
    'attachments',
    'django_markup',
    'django_filters',
    'staticfiles',

    # internal (for now)
    'basic_profiles',
    'account',
    'signup_codes',
    'tag_app',
    'tagging_utils',
    'threadedcomments_extras',
    'groups',

    'topics',
    'tasks',
    'photos',

    'basic_groups',

    'about',

    'django.contrib.admin',
)

以上です。urls.pyのurlpatternsでどのようなサービスを提供しているか、
settingsのINSTALLED_APPSでどのようなモジュールが読み込まれているかわかります。