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週間毎に表示するようにすれば良かったかも・・・。