Permalink
Browse files

Merge branch 'master' of github.com:cghackspace/destelado

  • Loading branch information...
2 parents dfb4116 + f13bf0b commit 0578b035567eaedb6fb6f26543c65a481fd2ced7 Anderson Ledo committed Dec 8, 2011
Showing with 99 additions and 23 deletions.
  1. +54 −6 model/api.py
  2. +6 −0 model/fakeapi.py
  3. +32 −15 model/tests.py
  4. +7 −2 web/controller.py
View
@@ -1,4 +1,4 @@
-from entities import Assiduidade, Deputado, Gasto
+from entities import Assiduidade, Deputado, Gasto, Base
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
@@ -7,13 +7,22 @@ class DataAPI(object):
def __init__(self, db_url="sqlite:///test.db"):
self.__engine__ = create_engine(db_url)
+ Base.metadata.create_all(self.__engine__)
self.__session__ = sessionmaker(bind = self.__engine__)()
def __validar_deputado__(self, deputado):
if not deputado.nome : raise "Nome invalido"
if not deputado.estado : raise "Nome invalido"
if not deputado.partido : raise "Nome invalido"
+
+ def __validar_gasto__(self, gasto):
+ if not gasto.id_deputado : raise "Gasto nao associado a um deputado"
+ if not gasto.data : raise "Data invalida"
+ if not gasto.valor : raise "Valor invalido"
+ if not gasto.descricao : raise "Descricao invalido"
+ if not gasto.categoria : raise "Categoria invalida"
+
def get_deputados(self):
return self.__session__.query(Deputado).all()
@@ -37,6 +46,16 @@ def get_deputado(self, id):
return deputado
+ def get_deputado_por_nome(self, nome):
+ deputado = self.__session__.query(Deputado)\
+ .filter(Deputado.nome == nome).all()
+
+ return deputado
+
+ def remover_deputado(self, deputado):
+ self.__session__.delete(deputado)
+ self.__session__.commit()
+
def inserir_deputado(self, deputado):
self.__validar_deputado__(deputado)
@@ -53,10 +72,39 @@ def atualizar_deputado(self, deputado):
return deputado
-if __name__ == '__main__':
- api = DataAPI()
+ def inserir_gasto(self, gasto):
+ self.__validar_gasto__(gasto)
+
+ self.__session__.add(gasto)
+ self.__session__.commit()
+
+ return gasto
+
+ def remover_gasto(self, gasto):
+ self.__session__.delete(gasto)
+
+ self.__session__.commit()
+
+ def atualizar_gasto(self, gasto):
+ self.__validar_gasto__(gasto)
+
+ self.__session__.merge(gasto)
+ self.__session__.commit()
+
+ return gasto
+
+ def inserir_assiduidade(self, assiduidade):
+ self.__session__.add(assiduidade)
+ self.__session__.commit()
+
+ return assiduidade
- print api.get_deputados()
- print api.get_deputado(5).total_presencas
- print api.get_deputado(5).total_faltas
+ def remover_assiduidade(self, assiduidade):
+ self.__session__.delete(assiduidade)
+ self.__session__.commit()
+
+ return assiduidade
+
+if __name__ == '__main__':
+ print "Nothing to do..."
View
@@ -4,14 +4,20 @@ def get_deputados():
deputados = []
d = Deputado(nome='Teste 1', estado='PB', partido='PT')
d.id = 1
+ d.total_presencas = 10
+ d.total_faltas = 2
deputados.append( d )
d = Deputado(nome='Teste 2', estado='PB', partido='PMDB')
d.id = 2
+ d.total_presencas = 9
+ d.total_faltas = 3
deputados.append( d )
d = Deputado(nome='Teste 3', estado='PB', partido='PSOL')
d.id = 3
+ d.total_presencas = 12
+ d.total_faltas = 0
deputados.append( d )
return deputados
View
@@ -1,20 +1,23 @@
import datetime
import unittest
+import api
-from entities import Base, Assiduidade, Deputado
+from entities import Base, Assiduidade, Deputado, Gasto
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
-class TestDeputado(unittest.TestCase):
-
+class GenericTest(unittest.TestCase):
def setUp(self):
self.engine = create_engine('sqlite:///test.db')
Base.metadata.create_all(self.engine)
+ self.api = api.DataAPI()
def tearDown(self):
Base.metadata.drop_all(self.engine)
+class TestDeputado(GenericTest):
+
def test_dummy(self):
# create a configured "Session" class
Session = sessionmaker(bind=self.engine)
@@ -25,17 +28,31 @@ def test_dummy(self):
# work with sess
dep = Deputado('a', 'b', 'c')
- assiduidade = Assiduidade(0, datetime.date(2011, 1, 1), 10, 20)
-
- session.add(dep)
- session.commit()
-
- assiduidade.id_deputado = dep.id
- session.add(assiduidade)
- session.commit()
-
- print session.query(Deputado).all()
- print session.query(Assiduidade).all()
-
+ assiduidades = [Assiduidade(0, datetime.date(2011, 1, 1), 10, 20),
+ Assiduidade(0, datetime.date(2011, 2, 1), 10, 25),
+ Assiduidade(0, datetime.date(2011, 3, 1), 10, 30),
+ Assiduidade(0, datetime.date(2011, 4, 1), 10, 35),
+ Assiduidade(0, datetime.date(2011, 5, 1), 10, 40)]
+
+ self.api.inserir_deputado(dep)
+
+ for assiduidade in assiduidades:
+ assiduidade.id_deputado = dep.id
+ self.api.inserir_assiduidade(assiduidade)
+
+
+ gastos = [Gasto(0, datetime.date(2011, 1, 1), 'Passeio com a familia', 'Viagem', 1500.45),
+ Gasto(0, datetime.date(2011, 3, 1), 'Caixa 2', 'Roubos', 150220.45),
+ Gasto(0, datetime.date(2011, 5, 1), 'Verba para infra-estrutura', 'Verbas', 300.42)]
+
+ for gasto in gastos:
+ gasto.id_deputado = dep.id
+ self.api.inserir_gasto(gasto)
+
+ print api.DataAPI().get_deputados()
+ print api.DataAPI().get_deputado(1)
+ print api.DataAPI().get_deputado(1).assiduidades
+ print api.DataAPI().get_deputado(1).gastos
+
if __name__ == '__main__':
unittest.main()
View
@@ -13,9 +13,14 @@ def list_deputados():
deputados = fakeapi.get_deputados()
return render_template('deputado/list.html', deputados=deputados)
-@app.route("/deputados/<id>")
+@app.route("/deputados/<int:dep_id>")
def get_deputado(dep_id):
- pass
+ deputado = fakeapi.get_deputado(dep_id)
+ if deputado:
+ return render_template('deputado/show.html', deputado=deputado)
+ else:
+ #TODO check if this is correct
+ abort(404)
if __name__ == "__main__":
app.run( debug = True )

0 comments on commit 0578b03

Please sign in to comment.