Refactor API views and models for improved structure; add pagination support and…

… enhance error handling
1 parent e182a3f7
......@@ -5,18 +5,18 @@ import importlib
import csv
import re
import datetime
import deform
import decimal
from opensipkd.tools import get_settings, DefaultTimeZone, dmy, dmyhms, get_ext
import deform
from pkg_resources import resource_filename
from pyramid.renderers import JSON
from pyramid_beaker import session_factory_from_settings
from pyramid.config import Configurator
from pyramid.events import NewRequest, BeforeRender, subscriber
from pyramid_mailer import mailer_factory_from_settings
from sqlalchemy import engine_from_config
from opensipkd.tools import get_settings, DefaultTimeZone, dmy, dmyhms, get_ext
from .security import MySecurityPolicy, get_user
from sqlalchemy import engine_from_config
from .models.base import DBSession
from .models.handlers import LogDBSession
from .models.meta import Base
......@@ -427,7 +427,7 @@ def _add_view_config(config, paket, route):
except Exception as e:
_logging.error("Add View Config :{code} Kode {error}"
.format(code=route["kode"], error=str(e)))
_logging.debug(f"Route: {route.get('kode')} {route.get('path')}")
# _logging.debug(f"Route: {route.get('kode')} {route.get('path')}")
class BaseApp():
......
......@@ -82,6 +82,11 @@ class CommonModel(object):
class DefaultModel(CommonModel):
id = Column(Integer, primary_key=True)
db_session = DBSession
def __init__(self):
super().__init__()
self.db_session = DBSession
@classmethod
def save(cls, values, row=None, **kwargs):
if not row:
......@@ -91,7 +96,7 @@ class DefaultModel(CommonModel):
@classmethod
def count(cls, db_session=DBSession):
return db_session.query(func.count('id')).scalar()
return self.db_session.query(func.count('id')).scalar()
@classmethod
def query(cls, db_session=DBSession, filters=None):
......
from http.client import NOT_FOUND
SUCCESS = {
"error": {
"code": "0000",
......@@ -18,3 +21,10 @@ PAYMENTMISMATCH = {
"msg": "Jumlah pembayaran tidak sesuai"
}
}
NOT_FOUND = {
"error": {
"code": "404",
"msg": "Data Tidak Ditemukan"
}
}
# from pyramid_restful.pagination.base import BasePagination
# from .pagenumber import PageNumberPagination
# from pyramid_restful.pagination.linkheader import LinkHeaderPagination
......@@ -25,6 +25,7 @@ dependencies = [
"pyramid_mailer",
'pyramid_chameleon',
'pyramid_rpc',
"pyramid-restful-framework"
'pytz',
'psycopg2-binary',
'requests',
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!