Commit ce0b07d1 by Owo Sugiana

Data bisa bersumber dari file CSV

1 parent 50c37130
RekeningData = {
'options': ['insert if not exists'],
'csv': 'rekening.csv',
}
UnitData = {
'options': ['insert if not exists'],
'csv': 'unit.csv',
}
import os
import csv
from types import DictType from types import DictType
from sqlalchemy import ( from sqlalchemy import (
Table, Table,
...@@ -6,6 +8,8 @@ from sqlalchemy import ( ...@@ -6,6 +8,8 @@ from sqlalchemy import (
from data.user import UserData from data.user import UserData
from data.routes import RouteData from data.routes import RouteData
from data.apps import AppsData from data.apps import AppsData
from data.unit import UnitData
from data.rekening import RekeningData
from DbTools import ( from DbTools import (
get_pkeys, get_pkeys,
execute, execute,
...@@ -24,7 +28,8 @@ from ..models import ( ...@@ -24,7 +28,8 @@ from ..models import (
fixtures = [ fixtures = [
('users', UserData), ('users', UserData),
('routes', RouteData), ('routes', RouteData),
#('admin.apps', AppsData), ('units', UnitData),
('rekenings', RekeningData),
] ]
def insert(): def insert():
...@@ -35,6 +40,8 @@ def insert_(fixtures): ...@@ -35,6 +40,8 @@ def insert_(fixtures):
metadata = MetaData(engine) metadata = MetaData(engine)
tablenames = [] tablenames = []
for tablename, data in fixtures: for tablename, data in fixtures:
if 'csv' in data:
data['data'] = csv2fixture(data['csv'])
if tablename == 'users': if tablename == 'users':
T = User T = User
table = T.__table__ table = T.__table__
...@@ -81,4 +88,14 @@ def update_sequence(tablenames): ...@@ -81,4 +88,14 @@ def update_sequence(tablenames):
schema, tablename = split_tablename(tablename) schema, tablename = split_tablename(tablename)
class T(Base): class T(Base):
__table__ = Table(tablename, metadata, autoload=True, schema=schema) __table__ = Table(tablename, metadata, autoload=True, schema=schema)
set_sequence(T) set_sequence(T)
# Fixture from CSV file
def csv2fixture(filename):
base_dir = os.path.split(__file__)[0]
filename = os.path.join(base_dir, 'data', filename)
csvfile = open(filename)
reader = csv.DictReader(csvfile)
data = list(reader)
csvfile.close()
return data
...@@ -22,7 +22,8 @@ requires=['pyramid>=1.5a2', ...@@ -22,7 +22,8 @@ requires=['pyramid>=1.5a2',
'alembic>=0.3.4', 'alembic>=0.3.4',
'pyramid_beaker', 'pyramid_beaker',
'pytz', 'pytz',
'sqlalchemy-datatables' 'sqlalchemy-datatables',
'recaptcha-client',
] ]
if sys.argv[1:] and sys.argv[1] == 'develop-use-pip': if sys.argv[1:] and sys.argv[1] == 'develop-use-pip':
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!