写真配布サイトを作ってみる

pythonanywhere - Mysqlや写真実ファイルを一通り使うサイトを作る(設計編)

一度,deta.spaceで完成しましたが、pythonanywhereでやり直しました

本当に作ってみたらどうかなるか掘ってみた

設計の全体像

管理人無しで自主管理できる写真配布サイト
会員登録は必要だが、メールチェックまでは行わない
会員はだれでも写真をまとめるイベントを作成できる(例:山田中学校 秋の大運動会)
イベントを作った人が主催者となる
イベントは全体で10個まで作成できる
1イベントに写真が登録できる
イベントは初期は10日間公開できる(途中でその日から1週間延期できる)
他人が作成したイベントの名前の一覧を見ることができる
他人が作成したイベントに参加希望を出せる
参加希望されたイベントの主催者が参加の許可、拒否を決めることができる
参加すると写真の参照、ダウンロード(右クリック)、登録ができる
自分で登録した写真は、削除することができる
期限が過ぎたイベントとその写真は自動で削除される(誰かのLOGOUTのタイミング)
管理人用のプログラムは作成しない(省略します)
このプログラムは事前連絡なく削除される可能性があります
良俗に違反する写真は私が勝手に削除します
サンプルです。本気で使わないでください

大きな写真に対するの注意点

処理はあまり速くありません。なのであまり大きな写真は使わないようにしましょう。
ファイルはそのままのサイズでuploadしますが、pythonの処理でPillowを使って圧縮を試みています。
ただし必ず成功するとは限らないので失敗したら圧縮なしとなります。

作るべきクラス

データベースの管理 - db
このシステム専用のデータベースの処理 - PADb
ユーザー登録用のクラス - user
イベント管理用のクラス - event
イベントの写真をデータベース管理するクラス - photoBase
イベント参加依頼のクラス - paticip

作るべき画面

ログイン - login 
サインアップ済 - signup
イベント、許可一覧 - index
イベント写真(削除)一覧 - photos
写真追加 - photoadd
イベント作成、修正 - event
イベント参加要請 - request
イベント参加許可 - paticip

作るべきデータベース

users - 
    create table if not exists users (ukey int not null auto_increment primary key,
        uid varchar(30) not null,
        pass varchar(255) not null)
events -
    create table if not exists events (ekey int not null auto_increment primary key,
        comment varchar(50),
        email varchar(255),
        eventname varchar(50),
        firstDay date,
        ownername varchar(30),
        limitdate date,
        paticip varchar(255))
photos -
    create table if not exists photos (pkey int not null auto_increment primary key,
        comment varchar(50),
        pdate datetime,
        eventID int,
        filename varchar(80),
        fromId varchar(30))
paticip -
    create table if not exists paticip (ckey int not null auto_increment primary key,
        eventID int,
        eventname varchar(50),
        userID varchar(30),
        rmemo varchar(100))