GAEO de お小遣い管理(4)
第1回 プロジェクト作成
第2回 共通部品とログイン画面
第3回 ユーザ登録画面
と来まして、第4回はメインのお小遣い情報管理画面「SmMain」を作ります。
お小遣い情報管理画面「SmMain」index.html
お小遣い情報の登録・一覧画面を作成します。
場所は「/application/templates/smmain/」の直下です。
入力欄と、登録分の一覧を表示します。
{% extends "../base.html" %}
{% block title %}おこづかい管理{% endblock %}
{% block content %}
<p>
<form action="/smmain/insert" method="post">
<fieldset>
<select name="item">
{% for it in itemList %}
<option value="{{ it.itemNm }}">{{ it.itemNm }}</option>
{% endfor %}
</select>
<input type="text" name="money" />円<br>
<label>メモ:</label>
<input type="text" name="memo" /><br>
<input type="radio" name="inout" value="0">IN
<input type="radio" name="inout" value="1" checked>OUT
<input type="hidden" name="allTotal" value="{{ allTotal }}">
<input type="submit" value="登録">
</fieldset>
</form>
</p>
<hr>
<p>
<a href="/items">項目編集</a>
<a href="/logout">logout</a>
<Table border="1" cellpadding="2" cellspacing="0">
<thead>
<tr>
<th>日付</th>
<th>項目</th>
<th>収入</th>
<th>支出</th>
<th>金額</th>
<th>メモ</th>
</tr>
</thead>
<tbody>
{% for li in lists %}
<tr>
<td>{{ li.updtime|date:"Y/m/d (D) H:i" }}</td>
<td>{{ li.item }}</td>
{% ifequal li.inout 0 %}
<td id="yen" name="yen">{{ li.yen }}</td>
<td> </td>
{% else %}
<td> </td>
<td id="yen" name="yen">{{ li.yen }}</td>
{% endifequal %}
<td id="yen" name="yen">{{ li.total }}</td>
<td>{{ li.memo }}</td>
</tr>
{% endfor %}
</tbody>
<tfoot>
<tr>
<th colspan="2"> </th>
<th colspan="2">合計</th>
<td id="yen" name="yen">{{ allTotal }}</td>
<td> </td>
</tr>
</tfoot>
</Table>
</p>
{% endblock %}
お小遣い情報管理画面「SmMain」smmain.py
一覧の表示処理と、登録処理を作ります。
場所は「/application/controller」の直下。
# -*- coding: utf-8 -*- import logging from google.appengine.ext import db from gaeo.controller import BaseController from model.items import Items from model.smmain import Smmain from const import CstUserCol class SmmainController(BaseController): # 表示処理 def index(self): # セッションチェック if self.session.has_key(CstUserCol.USER_ID) is False: self.redirect("/logout") elif len(str(self.session[CstUserCol.USER_ID])) == 0: self.redirect("/logout") # 項目名 self.itemList = db.GqlQuery("SELECT * FROM Items " \ " WHERE userID = :1" \ " ORDER BY orderNo", self.session[CstUserCol.USER_ID]) # 出納一覧 self.lists = db.GqlQuery("SELECT * FROM Smmain " \ " WHERE userID = :1" \ " ORDER BY updtime", self.session[CstUserCol.USER_ID]) # 合計金額取得 self.allTotal = 0 for li in self.lists : if li.inout == 0 : self.allTotal += li.yen else : self.allTotal -= li.yen # 登録処理 def insert(self): # セッションチェック if self.session.has_key(CstUserCol.USER_ID) is False: self.redirect("/logout") elif len(str(self.session[CstUserCol.USER_ID])) == 0: self.redirect("/logout") # 入力値取得 itemNM = self.params['item'] money = self.params['money'] text = self.params['memo'] inOrout = self.params['inout'] allTotal = self.params['allTotal'] if inOrout == "1" : total = int(allTotal) - int(money) else : total = int(allTotal) + int(money) # データ登録 Smmain(userID = int(self.session[cstUserCol.USER_ID]), item = itemNM, yen = int(money), memo = text, inout = int(inOrout), total = total ).put() self.redirect('/smmain')
これでお小遣い情報の登録は可能になりましたが、項目リストが空のままです。
なので、次は項目管理「Item」を作成します。
ちなみに、登録される時間はローカルの時間ではなく、GAE上での時間(アメリカ?)なので
変な時間で登録されても驚かないでくださいw
でも、せめて1ヶ月毎か1週間毎に表示するようにすれば良かったかも・・・。