Commit 2b1eaed2 by aagusti

google signin

1 parent a7d72c4a
# Basis Aplikasi openSIPKD
========================
Ini adalah basis dari seluruh aplikasi openSIPKD.
Pemasangan
----------
Pasang paket Debian yang dibutuhkan::
$ sudo apt-get install libxml2-dev libxslt1-dev libtiff5-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev
Buat Python Virtual Environment, biasanya pada home directory::
$ python3 -m venv ~/env
$ ~/env/bin/pip install --upgrade pip setuptools
Install Production
------------------
$ ~/env/bin/pip install git+https://git.opensipkd.com/aa.gusti/opensipkd-base.git
$ cp ~/env/etc/live_opensipkd.tpl ~/env/etc/live_opensipkd.ini
Install Development::
-------------------
$ source ~/env/bin/activate
$ mkdir apps
$ cd apps
$ git clone https://git.opensipkd.com/bekasi/base.git@ciamis
$ env/bin/pip install -e base[dev]
$ cp ~/env/etc/test_opensipkd.tpl ~/env/etc/test_opensipkd.ini
Sesuaikan konfigurasi ``test_opensipkd.ini`` atau ``live_opensipkd.ini``
pada baris berikut ini::
sqlalchemy.url = postgresql://user:password@localhost:5432/db
session.url = postgresql://user:password@localhost:5432/db
[alembic_ziggurat]
sqlalchemy.url = postgresql://user:password@localhost:5432/db
script_location = ziggurat_foundation:migration
[alembic_base]
sqlalchemy.url = postgresql://user:password@localhost:5432/db
script_location = opensipkd.base:alembic
Handling Log File:
==================
Logging dapat dilakukan console, file atau tabel
>> Module yang akan di logging
[loggers]
keys = root, opensipkd, sqlalchemy
>> output handler gunakan sesuai kebutuhan tidak perlu semuanya
[handlers]
keys = console, file, table
>> output handler gunakan INFO pada level kalau sedang testing
[logger_opensipkd]
level = WARN
handlers = file, table
qualname = opensipkd
[handler_table]
class = opensipkd.base.handlers.SQLAlchemyHandler
args = ()
level = NOTSET #Sebaiknya hanya gunakan NOTSET atau WARN
formatter = generic
[handler_file]
class = FileHandler
args = ('/full/path/file.log', 'a')
level = NOTSET #Sebaiknya hanya gunakan NOTSET atau WARN
formatter = generic
[alembic]
sqlalchemy.url = postgresql://user:password@localhost:5432/db
script_location = alembic
```
Buat tabelnya::
$ ~/env/bin/initialize_opensipkd_db ~/env/etc/test_opensipkd.ini
Jalankan::
$ ~/env/bin/pserve --reload test.ini
# Penggunaan Proxy
## Apache::
Tambahkan line berikut ini didalam ``<VirtualHost>``::
```
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://server:port/
ProxyPassReverse / http://server:port/
<Proxy *>
allow from all
</Proxy>
```
Contoh::
```
<VirtualHost ip:80>
SuexecUserGroup "#uid" "#gid"
ServerName antrian.opensipkd.com
ServerAlias www.antrian.opensipkd.com
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://localhost:6552/
ProxyPassReverse / http://localhost:6552/
<Proxy *>
allow from all
</Proxy>
</VirtualHost>
```
# Virtual Directory
## Setting Ini File
### Ubah `[app:ain]` jadi `[app:opensipkd]`
```
;[app:main]
[app:opensipkd_base]
trusted_proxy_headers = "forwarded x-forwarded-for x-forwarded-host x-forwarded-proto x-forwarded-port"
url_prefix='/virtualdir' ; nama cirtual direktory
```
Tambahkan blok berikut ini dibawah ini file
```
[filter:proxy-prefix]
use = egg:PasteDeploy#prefix
prefix = /virtualdir ; nama virtual directory
[pipeline:main]
pipeline =
proxy-prefix
opensipkd_base
```
## Nginx::
```
location /virtualdir{
return 302 /virtualdir/;
}
location /virtualdir/ {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Port $server_port;
proxy_pass http://127.0.0.1:6543/;
}
```
......@@ -14,11 +14,12 @@ Buat Python Virtual Environment, biasanya pada home directory::
$ python3 -m venv ~/env
$ ~/env/bin/pip install --upgrade pip setuptools
$ ~/env/bin/pip install wheel
Install Production
------------------
$ ~/env/bin/pip install git+https://github.com/aagusti/tandur.git
$ ~/env/bin/pip install git+https://git.opensipkd.com/aa.gusti/base.git@latest
$ cp ~/env/etc/live_opensipkd.tpl ~/env/etc/live_opensipkd.ini
Install Development::
......@@ -44,9 +45,6 @@ pada baris berikut ini::
sqlalchemy.url = postgresql://user:password@localhost:5432/db
script_location = opensipkd.base:alembic
[alembic_tandur]
sqlalchemy.url = postgresql://user:password@localhost:5432/db
script_location = tandur:alembic
Handling Log File:
==================
......@@ -128,7 +126,7 @@ Contoh::
# Virtual Directory
## Setting Ini File
### Ubah `[app:ain]` jadi `[app:opensipkd]`
### Ubah `[app:main]` jadi `[app:opensipkd]`
```
;[app:main]
[app:opensipkd_base]
......@@ -139,14 +137,14 @@ Contoh::
Tambahkan blok berikut ini dibawah ini file
```
[filter:proxy-prefix]
use = egg:PasteDeploy#prefix
prefix = /virtualdir ; nama virtual directory
[pipeline:main]
pipeline =
proxy-prefix
opensipkd_base
[filter:proxy-prefix]
use = egg:PasteDeploy#prefix
prefix = /virtualdir ; nama virtual directory
[pipeline:main]
pipeline =
proxy-prefix
opensipkd_base
```
......@@ -170,3 +168,20 @@ pipeline =
```
## Google Integrated
Aplikasi sudah bisa terintegrsi dengan google oauth2
# Setting Configurasi
```
allow_register = True
google-signin-client-id = id oauth2 client dari google
```
# RML Reporting
Untuk aktivasi harus terdapat konfigurasi berikut ini
# Setting Configurasi
```
report_img = "fisik path opensipkd_base:static/img"
```
......@@ -77,7 +77,8 @@ departemen_chg_id = 3
[server:main]
use = egg:waitress#main
host = 0.0.0.0
port = %(http_port)s
port = 6543
;port = %(http_port)s digunakan jika port akan menggunakan parameter
# Begin logging configuration
......@@ -109,7 +110,8 @@ qualname = sqlalchemy.engine
[handler_filelog]
class = FileHandler
args = ('%(logfile)s','a')
args = ('app.log','a')
;args = ('%(logfile)s','a') digunakan jika nama log file akan menggunakan parameter
level = INFO
formatter = generic
......
......@@ -51,13 +51,14 @@ from pkg_resources import resource_filename
import os
from .models.handlers import LogDBSession
log = logging.getLogger(__name__)
# version 2.0.0 digunakan untuk change default template
deform_templates = resource_filename('deform', 'templates')
path = os.path.dirname(__file__)
path = os.path.join(path, 'views', 'widgets')
search_path = (path, deform_templates) #,
search_path = (path, deform_templates) # ,
renderer = ZPTRendererFactory(search_path)
Form.set_zpt_renderer(search_path)
main_title = 'openSIPKD'
......@@ -134,7 +135,8 @@ def get_params(params, alternate=None):
def allow_register(request):
return get_params('allow_register', 'false') == 'true'
allow = get_params('allow_register', 'false')
return allow == 'true' or allow == "True" or allow == True
def disable_responsive(request):
......@@ -188,7 +190,7 @@ def is_devel(request):
def google_signin_client_ids(request):
ids = get_params('google-signin-client_id', '')
ids = get_params('google-signin-client-id', '')
if ids:
return ids.split(',')
else:
......@@ -323,9 +325,11 @@ def get_host(request):
host = f"{proto}://{request.host}"
return host
def get_home(request):
return request.route_url('home')
def set_routes(config, app_id=None):
q = DBSession.query(Route)
if not app_id:
......@@ -424,7 +428,7 @@ def main(global_config, **settings):
captcha_files = get_params('captcha_files', '/tmp/captcha')
if not os.path.exists(captcha_files):
os.makedirs(captcha_files)
config.add_static_view('captcha',captcha_files )
config.add_static_view('captcha', captcha_files)
# config.add_static_view('tts', path=get_params('tts_files'))
config.add_renderer('csv', 'opensipkd.tools.CSVRenderer')
......
g
248/04.06.2022 (DISC : 0 %)
E 6281 JL 0944061/R1/11400-14/PU/VI/22 SUMBER
SATAR 32092307077XXXXX/ P.U.
BLOK KLANGENAN RT 03 RW 02 DS KLANGENAN- [11]
KEC KLANGENAN CRBN-KLANGENAN 0 0 0
HONDA/E1F02N11M2 A/T 232.800 0 232.800
SEPEDA MOTOR BENSIN 35.000 0 35.000
2017/2017 HITAM 100.000 0 100.000
HITAM 1 : 1,75 60.000 0 60.000
125 CC 427.800 0 427.800
MH1JFU119HK892552
JFU1E1897403 R01183325 04 Jun 2022 REZA F., A.MD.A.PJ. GINA & EKO
N03125569 [12:51:31#04-06-2022#E 6281 JL #Rp. 427.800<GINA & EKO>DPD#BJB 000]
05 Jun 2023
KETERANGAN:
bea_bbnkb_pok = bea_bbnkb1_pok+bea_bbnkb1_tgk+bea_bbnkb2_pok+bea_bbnkb2_tgk
bea_pkb_pok = bea_pkb_pok+ bea_pkb_tgk1+ bea_pkb_tgk2+ bea_pkb_tgk3+ bea_pkb_tgk4
bea_swdkllj_pok = bea_swdkllj_pok+ bea_swdkllj_tgk1+ bea_swdkllj_tgk2+ bea_swdkllj_tgk3+ bea_swdkllj_tgk4
jumlah_pokok = bea_bbnkb_pok + bea_pkb_pok + bea_swdkllj_pok + bea_adm_stnk + bea_adm_tnkb
bea_bbnkb_den = bea_bbnkb1_den + bea_bbnkb2_den
bea_pkb_den = bea_pkb_den+ bea_pkb_den1 + bea_pkb_den2 + bea_pkb_den3 + bea_pkb_den4
bea_swdkllj_den = bea_swdkllj_den + bea_swdkllj_den1+ bea_swdkllj_den2+ bea_swdkllj_den3+ bea_swdkllj_den4
jumlah_den = bea_bbnkb_den + bea_pkb_den + bea_swdkllj_den
jumlah_bbnkb = bea_bbkb_pok + bea_bbnkb_den
jumlah_pkb = bea_pkb_pok + bea_pkb_den
jumlah_swdkllj = bea_swdkllj_pok + bea_swdkllj_den
jumlah_total = jumlah_pokok + jumlah_den
========================================================================================================================================
g
{no_urut_daf}/{tg_pros_daftar}(DISC : {no_kohir2} %)
{no_polisi} {no_kohir1} {nm_wil}
{nm_pemilik} {no_ktp}/{npwpd} {no_kohir1[4]}
{al_pemilik}- [{kd_fungsi}]
{al_pemilik2}-{nm_kecamatan} {bea_bbnkb_pok} {bea_bbnkb_den} {jumlah_bbnkb}
{nm_merek_kb}/{nm_model_kb} {bea_pkb_pok} {bea_pkb_den} {jumlah_pkb}
{nm_jenis_kb} {bbm} {bea_swdkllj_pok} {bea_swdkllj_den} {jumlah_swdkllj}
{th_buatan}/{th_rakitan} {warna_tnkb} {bea_adm_stnk} 0 {bea_adm_stnk}
{warna_kb} {milik_ke} : {tarif} {bea_adm_tnkb} 0 {bea_adm_tnkb}
{jumlah_cc} CC {jumlah_pokok} {jumlah_den} {jumlah_total}
{no_rangka}
{no_mesin} {kd_merek_kb} {tg_pros_tetap} {nm_operator} {nm_kasir}
{no_bpkb} [{jam_proses}#{tg_pros_bayar}#{no_polisi}#Rp. {jumlah_total}<{nm_kasir}>DPD#BJB {kd_bank}]
{tg_akhir_pajak}
import os
import sys
import csv
from collections import defaultdict
import transaction
import subprocess
from getpass import getpass
......@@ -264,7 +266,7 @@ def base_alembic_run(ini_file, name=None):
def main(argv=sys.argv):
if len(argv) != 2:
if len(argv) < 2:
usage(argv)
config_uri = argv[1]
......
......@@ -5,7 +5,7 @@ import colander
import transaction
from datatables import (ColumnDT, DataTables, )
from deform import (Form, widget, ValidationFailure, Button, )
from sqlalchemy.exc import IntegrityError
# from sqlalchemy.exc import IntegrityErrortpl
from opensipkd.tools import create_now
from opensipkd.tools.buttons import btn_cancel, btn_save, btn_close
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!