一度,deta.shで完成しましたが、直後にdeta.spaceへと移管となり、動かなくなっていましたので、deta.spaceでやり直しました
本当に作ってみたらどうかなるか掘ってみた
設計の全体像
管理人無しで自主管理できる写真配布サイト 会員登録は必要だが、メールチェックまでは行わない 会員はだれでも写真をまとめるイベントを作成できる(例:山田中学校 秋の大運動会) イベントを作った人が主催者となる イベントは全体で10個まで作成できる 1イベントに10枚の写真が登録できる(実際やってみると5,6枚が限界、タイムアウトする) イベントは最長10日間公開できる(途中で消す方法は公開しない) 他人が作成したイベントの名前の一覧を見ることができる 他人が作成したイベントに参加希望を出せる 参加希望されたイベントの主催者が参加の許可、拒否を決めることができる 参加すると写真の参照、ダウンロード(右クリック)、登録ができる 自分で登録した写真は、削除することができる 期限が過ぎたイベントとその写真は自動で削除される(誰かのLOGOUTのタイミング) 管理人用のプログラムは作成しない(省略します) このプログラムは事前連絡なく削除される可能性があります 良俗に違反する写真は私が勝手に削除します サンプルです。本気で使わないでください
deta.space特有の注意点
データベースがNoSQLなので、リレーションが作れない(第3正規形を中途半端にする、リストデータを持つ) /tmpフォルダーしか使えないので写真などのjpgファイルはDriveというファイル管理に保管する。urlがない urlがないので <image src=で指定できない。そのためDriveから画像をbase64に変換して4096byteづつpythonで受信し <image src="data:image/jpeg;base64,---"で表示する Driveに保存して、そのファイル名がどのイベントに入っているかのデータベースを作って管理する 処理が非常に遅い。時々サーバーエラーが発生する 1リクエストに対して10秒のタイムアウトがあるので、大きな画像の転送はできない 画像を使うシステムとしては実用がむずかしい
作るべきクラス
product keyの管理 - base ユーザー登録用のクラス - user イベント管理用のクラス - event イベントの写真をデータベース管理するクラス - photoBase イベント参加依頼のクラス - paticip ファイルを管理するクラス - driveFile
作るべき画面
ログイン - login サインアップ済 - signup ヘルプ - help イベント、許可一覧 - index イベント写真(削除)一覧 - photos 写真追加 - photoadd イベント作成、修正 - event イベント参加要請 - request イベント参加許可 - patic
作るべきデータベース
users - key,id(login),password(hash data) events - key,comment,email,eventname,firstDay(作成日),id(作成者),limitdate,paticip(許可者list) photos - key,comments,datetime(撮影日),eventID,filename,fromid(投稿者) paticip - key,eventid,eventname,userid(依頼者),rmemo(依頼メモ)