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

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