Commit f616135a by taufikyu

penambahan eis, dan rpc

1 parent 0aca380e
import sys
import locale
from pyramid.config import Configurator
......@@ -13,12 +12,13 @@ from pyramid.httpexceptions import (
default_exceptionresponse_view,
HTTPFound, HTTPNotFound
)
from pyramid.renderers import JSON
from types import (
StringType,
UnicodeType,
)
from sqlalchemy import engine_from_config
import datetime, decimal, time
from .security import group_finder, get_user
from .models import (
DBSession,
......@@ -131,6 +131,27 @@ def main(global_config, **settings):
config.add_renderer('csv', '.tools.CSVRenderer')
############################################################################
# Custom JSON
############################################################################
json_renderer = JSON()
json_renderer.add_adapter(datetime.datetime, lambda v, request: dmy(v))
json_renderer.add_adapter(datetime.date, lambda v, request: dmy(v))
json_renderer.add_adapter(decimal.Decimal, lambda v, request: str(v))
config.add_renderer('json', json_renderer)
############################################################################
# JSON RPC
############################################################################
config.include('pyramid_rpc.jsonrpc')
format = '%Y-%m-%dT%H:%M:%S%z'
json_renderer = JSON()
json_renderer.add_adapter(datetime.datetime, lambda v, request: v.isoformat())
json_renderer.add_adapter(datetime.date, lambda v, request: v.isoformat())
json_renderer.add_adapter(decimal.Decimal, lambda v, request: str(v))
config.add_renderer('json_rpc', json_renderer)
config.add_jsonrpc_endpoint('api-webr', '/api/webr', default_renderer="json_rpc")
routes = DBSession.query(Route.kode, Route.path, Route.nama, Route.factory).all()
for route in routes:
if route.factory and route.factory != 'None':
......
......@@ -180,6 +180,7 @@ class UserResourcePermission(UserResourcePermissionMixin, Base):
class User(UserMixin, BaseModel, CommonModel, Base):
api_key = Column(String(256))
last_login_date = Column(DateTime(timezone=True), nullable=True)
registered_date = Column(DateTime(timezone=True),
nullable=False,
......
from sqlalchemy import (
Column,
Integer,
Text,
DateTime,
ForeignKey,
UniqueConstraint,
String,
SmallInteger,
BigInteger,
Float,
Date,
)
from sqlalchemy.orm.exc import NoResultFound
from sqlalchemy.orm import (
relationship,
backref
)
from ..models import(
DBSession,
DefaultModel,
KodeModel,
NamaModel,
Base,
CommonModel
)
from .isipkd import ARInvoice
class DepartemenRoute(KodeModel, Base):
__tablename__ = 'departemen_route'
status = Column(SmallInteger, nullable=False, default=0)
no_skrd = Column(String(64))
tgl_skrd = Column(Date)
ar_invoice_id = Column(Integer, ForeignKey(ARInvoice.id))
arinvoice = relationship(ARInvoice)
__table_args__ = {'extend_existing':True}
\ No newline at end of file
......@@ -229,3 +229,10 @@ id,kode,nama,path,factory,perm_name,disabled,created,updated,create_uid
244,"report","Laporan","/report",,"read",0,"2015-03-08 16:45:45",,1
245,"report-sspd","Laporan Penerimaan","/report/sspd",,"read",0,"2015-03-08 16:45:45",,1
246,"sptpd-wapu-posting","Posting SPTPD WAPU","/sptpd/wapu/posting",,"read",0,"2015-03-08 16:45:45",,1
247,"anggaran","Anggaran","/anggaran",,"read",0,"2015-03-08 16:45:45",,1
248,"anggaran-act","Baca Anggaran","/anggaran/{act}/act",,"read",0,"2015-03-08 16:45:45",,1
249,"anggaran-add","Tambah Anggaran","/anggaran/add",,"add",0,"2015-03-08 16:45:45",,1
250,"anggaran-edit","Edit Anggaran","/anggaran/{id}/edit",,"edit",0,"2015-03-08 16:45:45",,1
251,"anggaran-delete","Hapus Anggaran","/anggaran/{id}/delete",,"delete",0,"2015-03-08 16:45:45",,1
252,"anggaran-csv","CSV Anggaran","/anggaran/{csv}/csv",,"read",0,"2015-03-08 16:45:45",,1
253,"anggaran-pdf","PDF Anggaran","/anggaran/{pdf}/pdf",,"read",0,"2015-03-08 16:45:45",,1
\ No newline at end of file
This diff could not be displayed because it is too large.
......@@ -19,6 +19,7 @@ from types import (
from datetime import (
datetime,
timedelta,
date
)
from pyramid.threadlocal import get_current_registry
......
import pytz
import transaction
import colander
from datetime import datetime
from datetime import datetime, date
from email.utils import parseaddr
from pyramid.view import view_config
from pyramid.httpexceptions import (HTTPFound, HTTPForbidden, HTTPNotFound)
......@@ -9,6 +9,9 @@ from pyramid.security import (remember, forget, authenticated_userid,)
from deform import (Form, ValidationFailure, widget,)
from ..models import (DBSession, User,)
from ..models.isipkd import(
ARSspd, ARInvoice, Unit
)
from pyramid.view import notfound_view_config
......@@ -38,7 +41,65 @@ from pyramid.view import notfound_view_config
########
@view_config(route_name='home', renderer='templates/home.pt')
def view_home(request):
return dict(project='esipkd')
now = date.today()
dates = dict(
year = now.year,
month = now.month,
week = int(now.strftime('%W')),
day = now,
)
data_dashboard = dict(
tabular = dict(
tahun = dict(q=0,n=0),
bulan = dict(q=0,n=0),
minggu = dict(q=0,n=0),
hari = dict(q=0,n=0),
),
chart = dict(
q = [0,0,0,0,0,0,0,0,0,0,0,0],
n = [0,0,0,0,0,0,0,0,0,0,0,0],
),
opd= [],
sopd= [],
)
payments = DBSession.query(
ARSspd.tgl_bayar.label('tanggal'),
ARSspd.bayar.label('jumlah'),
Unit.kode.label('kode'),
Unit.nama.label('nama'),
).join(ARInvoice, ARInvoice.id == ARSspd.arinvoice_id).\
join(Unit, Unit.kode == ARInvoice.unit_kode).\
filter(ARSspd.tahun_id==dates['year']).order_by(ARInvoice.unit_kode).all()
prev_opd = ''
i = -1
for p in payments:
data_dashboard['tabular']['tahun']['q'] += 1
data_dashboard['tabular']['tahun']['n'] += int(p.jumlah)
if p.tanggal.month == dates['month']:
data_dashboard['tabular']['bulan']['q'] += 1
data_dashboard['tabular']['bulan']['n'] += int(p.jumlah)
if int(p.tanggal.strftime('%W')) == dates['week']:
data_dashboard['tabular']['minggu']['q'] += 1
data_dashboard['tabular']['minggu']['n'] += int(p.jumlah)
if p.tanggal.date() == dates['day']:
data_dashboard['tabular']['hari']['q'] += 1
data_dashboard['tabular']['hari']['n'] += int(p.jumlah)
for x in range(12):
if p.tanggal.month == x+1:
data_dashboard['chart']['q'][x] += int(1)
data_dashboard['chart']['n'][x] += int(p.jumlah)
if prev_opd != p.kode:
i += 1
data_dashboard['opd'].append(dict(kode=p.kode.strip(),unit=p.nama.strip(),jumlah=0))
data_dashboard['opd'][i]['jumlah']+=int(p.jumlah)
prev_opd = p.kode
sort_opd = sorted(data_dashboard['opd'], key = lambda i: (i['jumlah']), reverse=True)
i = 0
for sopd in sort_opd:
if i<10:
data_dashboard['sopd'].append(dict(peringkat=i+1, upd=sopd['unit'], nominal=sopd['jumlah']))
i+=1
return dict(project='esipkd', dates=dates, data = data_dashboard)
#########
......
......@@ -218,9 +218,11 @@ def save(request, values, row=None):
if not row:
row = ARInvoice()
row.create_date = datetime.now()
if hasattr(request.user,'id'):
row.create_uid = request.user.id
row.from_dict(values)
#row.update_date = datetime.now()
if hasattr(request.user,'id'):
row.update_uid = request.user.id
row.dasar = re.sub("[^0-9]", "", row.dasar)
row.tarif = re.sub("[^0-9]", "", row.tarif)
......@@ -237,8 +239,8 @@ def save(request, values, row=None):
row.unit_nm = unit.nama
ref = Unit.get_by_id(row.unit_id)
row.unit_kode = ref.kode
row.unit_nama = ref.nama
row.unit_kode = ref.kode.strip()
row.unit_nama = ref.nama.strip()
ref = SubjekPajak.get_by_id(row.subjek_pajak_id)
row.wp_kode = ref.kode
#row.wp_nama = ref.nama
......@@ -284,7 +286,7 @@ def save(request, values, row=None):
str(bulan).rjust(2,'0'),
str(tahun).rjust(2,'0'),
str(row.no_id).rjust(4,'0')])
if hasattr(request.user,'id'):
row.owner_id = request.user.id
DBSession.add(row)
DBSession.flush()
......
......@@ -12,9 +12,10 @@ requires=['pyramid>=1.5a2<=1.6a1',
'transaction',
'pyramid_tm',
'pyramid_debugtoolbar',
'zope.sqlalchemy',
'zope.sqlalchemy==1.0',
'waitress',
'ziggurat-foundations==0.5.6',
'cryptacular==1.4.1'
'colander',
'deform>=2.0a2',
'pyramid_chameleon',
......@@ -25,9 +26,11 @@ requires=['pyramid>=1.5a2<=1.6a1',
'sqlalchemy-datatables==0.1.6',
'recaptcha-client',
'pyJasper',
'informixdb',
'informixdb==2.5',
'z3c.rml',
'xlrd',
'pyramid_rpc',
'requests'
]
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!