とりあえず admin は動いた

のですがこれからどうしよう。とりあえず晩メシの買い出しに行って帰宅。
ええと、DB 見てみる。

$ sqlite3 rss.db '.tables'
auth_group                  django_site
auth_group_permissions      feedjack_feed
auth_message                feedjack_link
auth_permission             feedjack_post
auth_user                   feedjack_post_tags
auth_user_groups            feedjack_site
auth_user_user_permissions  feedjack_site_links
django_admin_log            feedjack_subscriber
django_content_type         feedjack_tag
django_session
$

feedjack_* な定義は控えとこ。

$ sqlite3 rss.db '.schema feedjack_feed'
CREATE TABLE "feedjack_feed" (
    "id" integer NOT NULL PRIMARY KEY,
    "feed_url" varchar(200) NOT NULL UNIQUE,
    "name" varchar(100) NOT NULL,
    "shortname" varchar(50) NOT NULL,
    "is_active" bool NOT NULL,
    "title" varchar(200) NOT NULL,
    "tagline" text NOT NULL,
    "link" varchar(200) NOT NULL,
    "etag" varchar(50) NOT NULL,
    "last_modified" datetime NULL,
    "last_checked" datetime NULL
);
$ sqlite3 rss.db '.schema feedjack_link'
CREATE TABLE "feedjack_link" (
    "id" integer NOT NULL PRIMARY KEY,
    "name" varchar(100) NOT NULL UNIQUE,
    "link" varchar(200) NOT NULL
);
$ sqlite3 rss.db '.schema feedjack_post'
CREATE TABLE "feedjack_post" (
    "id" integer NOT NULL PRIMARY KEY,
    "feed_id" integer NOT NULL REFERENCES "feedjack_feed" ("id"),
    "title" varchar(255) NOT NULL,
    "link" varchar(200) NOT NULL,
    "content" text NOT NULL,
    "date_modified" datetime NULL,
    "guid" varchar(200) NOT NULL,
    "author" varchar(50) NOT NULL,
    "author_email" varchar(75) NOT NULL,
    "comments" varchar(200) NOT NULL,
    "date_created" date NOT NULL,
    UNIQUE ("feed_id", "guid")
);
CREATE INDEX "feedjack_post_feed_id" ON "feedjack_post" ("feed_id");
CREATE INDEX "feedjack_post_guid" ON "feedjack_post" ("guid");
$ sqlite3 rss.db '.schema feedjack_post_tags'
CREATE TABLE "feedjack_post_tags" (
    "id" integer NOT NULL PRIMARY KEY,
    "post_id" integer NOT NULL REFERENCES "feedjack_post" ("id"),
    "tag_id" integer NOT NULL REFERENCES "feedjack_tag" ("id"),
    UNIQUE ("post_id", "tag_id")
);
$ sqlite3 rss.db '.schema feedjack_site'     
CREATE TABLE "feedjack_site" (
    "id" integer NOT NULL PRIMARY KEY,
    "name" varchar(100) NOT NULL,
    "url" varchar(100) NOT NULL UNIQUE,
    "title" varchar(200) NOT NULL,
    "description" text NOT NULL,
    "welcome" text NULL,
    "greets" text NULL,
    "default_site" bool NOT NULL,
    "posts_per_page" integer NOT NULL,
    "order_posts_by" integer NOT NULL,
    "tagcloud_levels" integer NOT NULL,
    "show_tagcloud" bool NOT NULL,
    "use_internal_cache" bool NOT NULL,
    "cache_duration" integer NOT NULL,
    "template" varchar(100) NULL
);
$ sqlite3 rss.db '.schema feedjack_site_links'
CREATE TABLE "feedjack_site_links" (
    "id" integer NOT NULL PRIMARY KEY,
    "site_id" integer NOT NULL REFERENCES "feedjack_site" ("id"),
    "link_id" integer NOT NULL REFERENCES "feedjack_link" ("id"),
    UNIQUE ("site_id", "link_id")
);
$ sqlite3 rss.db '.schema feedjack_subscriber'
CREATE TABLE "feedjack_subscriber" (
    "id" integer NOT NULL PRIMARY KEY,
    "site_id" integer NOT NULL REFERENCES "feedjack_site" ("id"),
    "feed_id" integer NOT NULL REFERENCES "feedjack_feed" ("id"),
    "name" varchar(100) NULL,
    "shortname" varchar(50) NULL,
    "is_active" bool NOT NULL,
    UNIQUE ("site_id", "feed_id")
);
CREATE INDEX "feedjack_subscriber_feed_id" ON "feedjack_subscriber" ("feed_id");
CREATE INDEX "feedjack_subscriber_site_id" ON "feedjack_subscriber" ("site_id");
$ sqlite3 rss.db '.schema feedjack_tag'       
CREATE TABLE "feedjack_tag" (
    "id" integer NOT NULL PRIMARY KEY,
    "name" varchar(50) NOT NULL UNIQUE
);
$

つい、scheme って打ってしまう。しかしこの id 式って関係が一目瞭然で良い。とりあえず列挙しておく事に。

  • post と feed は 1:n
  • post と tag は n:n
  • site と link は n:n
  • subscriber と site は 1:n
  • subscriber と feed が 1:n

よく分かんねい、と言いつつ feedjack なドキュメント見てみたら urls.py を以下にしてみれ、とある。

    # Uncomment this for admin:
     (r'^admin/', include('django.contrib.admin.urls')),  (r'', include('feedjack.urls')),

で、http://localhost:8000/ にアクセスしたら CSS スルーな微妙コンテンツが出力。スタイルの指定は以下なカンジ

	<link rel="stylesheet" type="text/css" href="/feedjack/default/style.css" />

これが MEDIA_URL 云々ッスか。こんな感じで良いのかな

MEDIA_URL = '/usr/lib/python2.4/site-packages/Feedjack-0.9.12-py2.4.egg/feedjack/static/'

違う。こうか。

MEDIA_ROOT = '/usr/lib/python2.4/site-packages/Feedjack-0.9.12-py2.4.egg/'

# URL that handles the media served from MEDIA_ROOT.
# Example: "http://media.lawrence.com"
MEDIA_URL = 'feedjack/static/'

NG。ログによると以下

[10/May/2008 17:34:51] "GET / HTTP/1.1" 200 2418
[10/May/2008 17:34:52] "GET /feedjack/static//feedjack/default/style.css HTTP/1.1" 404 3179
[10/May/2008 17:34:52] "GET /feedjack/static//feedjack/default/img/button-rss.png HTTP/1.1" 404 3206
[10/May/2008 17:34:52] "GET /feedjack/static//feedjack/default/img/button-hacker.png HTTP/1.1" 404 3215
[10/May/2008 17:34:52] "GET /feedjack/static//feedjack/default/img/button-atom.png HTTP/1.1" 404 3209
[10/May/2008 17:34:52] "GET /feedjack/static//feedjack/default/img/button-opml.png HTTP/1.1" 404 3209
[10/May/2008 17:34:52] "GET /feedjack/static//feedjack/default/img/button-foaf.png HTTP/1.1" 404 3209

うう。色々ヤッてるんですが駄目ですねぇ。で、setting.py なドキュメント見てみるに確かにこれでは駄目ですわ。
ええと、とりあえず apache から可視範囲にないと駄目なのか??
って、よく考えたら apache 経由じゃないし (駄目

メシ食った

面倒臭いので apache + mod_python で起動するナニにする事に。ええと、mod_python で Django を動かすによれば設定なナニのサンプルが以下

<Location "/mysite/">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    PythonDebug On
</Location>

との事なんですが、DJANGO_SETTINGS_MODULE に指定するナニが微妙。あと settings.py も試行錯誤が必要そげ。こんな感じで動くの?
考えてても仕方が無いので /etc/apache2/conf.d/rssreader として

<Location "/mysite/">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    PythonPath "['/home/guest/rssreader'] + sys.path"
    SetEnv DJANGO_SETTINGS_MODULE rssreader.settings
    PythonDebug On
</Location>

を追加。これで apache2 起動して http://localhost/mysite/ にアクセスしたらどうなるんだろうか。