Commit f616135a by taufikyu

penambahan eis, dan rpc

1 parent 0aca380e
import sys import sys
import locale import locale
from pyramid.config import Configurator from pyramid.config import Configurator
...@@ -13,12 +12,13 @@ from pyramid.httpexceptions import ( ...@@ -13,12 +12,13 @@ from pyramid.httpexceptions import (
default_exceptionresponse_view, default_exceptionresponse_view,
HTTPFound, HTTPNotFound HTTPFound, HTTPNotFound
) )
from pyramid.renderers import JSON
from types import ( from types import (
StringType, StringType,
UnicodeType, UnicodeType,
) )
from sqlalchemy import engine_from_config from sqlalchemy import engine_from_config
import datetime, decimal, time
from .security import group_finder, get_user from .security import group_finder, get_user
from .models import ( from .models import (
DBSession, DBSession,
...@@ -131,6 +131,27 @@ def main(global_config, **settings): ...@@ -131,6 +131,27 @@ def main(global_config, **settings):
config.add_renderer('csv', '.tools.CSVRenderer') 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() routes = DBSession.query(Route.kode, Route.path, Route.nama, Route.factory).all()
for route in routes: for route in routes:
if route.factory and route.factory != 'None': if route.factory and route.factory != 'None':
......
...@@ -180,6 +180,7 @@ class UserResourcePermission(UserResourcePermissionMixin, Base): ...@@ -180,6 +180,7 @@ class UserResourcePermission(UserResourcePermissionMixin, Base):
class User(UserMixin, BaseModel, CommonModel, Base): class User(UserMixin, BaseModel, CommonModel, Base):
api_key = Column(String(256))
last_login_date = Column(DateTime(timezone=True), nullable=True) last_login_date = Column(DateTime(timezone=True), nullable=True)
registered_date = Column(DateTime(timezone=True), registered_date = Column(DateTime(timezone=True),
nullable=False, 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 \ No newline at end of file
...@@ -228,4 +228,11 @@ id,kode,nama,path,factory,perm_name,disabled,created,updated,create_uid ...@@ -228,4 +228,11 @@ id,kode,nama,path,factory,perm_name,disabled,created,updated,create_uid
243,"arinvoicewp-pdf","PDF Reg. Bayar WP","/arinvoicewp/{pdf}/pdf",,"read",0,"2015-03-08 16:45:45",,1 243,"arinvoicewp-pdf","PDF Reg. Bayar WP","/arinvoicewp/{pdf}/pdf",,"read",0,"2015-03-08 16:45:45",,1
244,"report","Laporan","/report",,"read",0,"2015-03-08 16:45:45",,1 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 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
\ No newline at end of file \ No newline at end of file
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 \ No newline at end of file
This diff could not be displayed because it is too large.
...@@ -19,6 +19,7 @@ from types import ( ...@@ -19,6 +19,7 @@ from types import (
from datetime import ( from datetime import (
datetime, datetime,
timedelta, timedelta,
date
) )
from pyramid.threadlocal import get_current_registry from pyramid.threadlocal import get_current_registry
......
import pytz import pytz
import transaction import transaction
import colander import colander
from datetime import datetime from datetime import datetime, date
from email.utils import parseaddr from email.utils import parseaddr
from pyramid.view import view_config from pyramid.view import view_config
from pyramid.httpexceptions import (HTTPFound, HTTPForbidden, HTTPNotFound) from pyramid.httpexceptions import (HTTPFound, HTTPForbidden, HTTPNotFound)
...@@ -9,6 +9,9 @@ from pyramid.security import (remember, forget, authenticated_userid,) ...@@ -9,6 +9,9 @@ from pyramid.security import (remember, forget, authenticated_userid,)
from deform import (Form, ValidationFailure, widget,) from deform import (Form, ValidationFailure, widget,)
from ..models import (DBSession, User,) from ..models import (DBSession, User,)
from ..models.isipkd import(
ARSspd, ARInvoice, Unit
)
from pyramid.view import notfound_view_config from pyramid.view import notfound_view_config
...@@ -38,7 +41,65 @@ 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') @view_config(route_name='home', renderer='templates/home.pt')
def view_home(request): 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,10 +218,12 @@ def save(request, values, row=None): ...@@ -218,10 +218,12 @@ def save(request, values, row=None):
if not row: if not row:
row = ARInvoice() row = ARInvoice()
row.create_date = datetime.now() row.create_date = datetime.now()
row.create_uid = request.user.id if hasattr(request.user,'id'):
row.create_uid = request.user.id
row.from_dict(values) row.from_dict(values)
#row.update_date = datetime.now() #row.update_date = datetime.now()
row.update_uid = request.user.id if hasattr(request.user,'id'):
row.update_uid = request.user.id
row.dasar = re.sub("[^0-9]", "", row.dasar) row.dasar = re.sub("[^0-9]", "", row.dasar)
row.tarif = re.sub("[^0-9]", "", row.tarif) row.tarif = re.sub("[^0-9]", "", row.tarif)
row.pokok = re.sub("[^0-9]", "", row.pokok) row.pokok = re.sub("[^0-9]", "", row.pokok)
...@@ -237,8 +239,8 @@ def save(request, values, row=None): ...@@ -237,8 +239,8 @@ def save(request, values, row=None):
row.unit_nm = unit.nama row.unit_nm = unit.nama
ref = Unit.get_by_id(row.unit_id) ref = Unit.get_by_id(row.unit_id)
row.unit_kode = ref.kode row.unit_kode = ref.kode.strip()
row.unit_nama = ref.nama row.unit_nama = ref.nama.strip()
ref = SubjekPajak.get_by_id(row.subjek_pajak_id) ref = SubjekPajak.get_by_id(row.subjek_pajak_id)
row.wp_kode = ref.kode row.wp_kode = ref.kode
#row.wp_nama = ref.nama #row.wp_nama = ref.nama
...@@ -284,8 +286,8 @@ def save(request, values, row=None): ...@@ -284,8 +286,8 @@ def save(request, values, row=None):
str(bulan).rjust(2,'0'), str(bulan).rjust(2,'0'),
str(tahun).rjust(2,'0'), str(tahun).rjust(2,'0'),
str(row.no_id).rjust(4,'0')]) str(row.no_id).rjust(4,'0')])
if hasattr(request.user,'id'):
row.owner_id = request.user.id row.owner_id = request.user.id
DBSession.add(row) DBSession.add(row)
DBSession.flush() DBSession.flush()
return row return row
......
...@@ -12,9 +12,10 @@ requires=['pyramid>=1.5a2<=1.6a1', ...@@ -12,9 +12,10 @@ requires=['pyramid>=1.5a2<=1.6a1',
'transaction', 'transaction',
'pyramid_tm', 'pyramid_tm',
'pyramid_debugtoolbar', 'pyramid_debugtoolbar',
'zope.sqlalchemy', 'zope.sqlalchemy==1.0',
'waitress', 'waitress',
'ziggurat-foundations==0.5.6', 'ziggurat-foundations==0.5.6',
'cryptacular==1.4.1'
'colander', 'colander',
'deform>=2.0a2', 'deform>=2.0a2',
'pyramid_chameleon', 'pyramid_chameleon',
...@@ -25,9 +26,11 @@ requires=['pyramid>=1.5a2<=1.6a1', ...@@ -25,9 +26,11 @@ requires=['pyramid>=1.5a2<=1.6a1',
'sqlalchemy-datatables==0.1.6', 'sqlalchemy-datatables==0.1.6',
'recaptcha-client', 'recaptcha-client',
'pyJasper', 'pyJasper',
'informixdb', 'informixdb==2.5',
'z3c.rml', 'z3c.rml',
'xlrd', 'xlrd',
'pyramid_rpc',
'requests'
] ]
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!