target.py 7.63 KB
import colander
from deform import widget
from tangsel.base.widgets import widget_os
from pyramid.view import view_config

from . import BaseView
from ..models import Targets


class ListSchema(colander.Schema):
    id = colander.SchemaNode(
        colander.Integer(),
        title="Action")
    tahun = colander.SchemaNode(
        colander.Integer(),
        oid="tahun", )
    kode = colander.SchemaNode(
        colander.String(),
        oid="kode",
        title="Kode", )
    nama = colander.SchemaNode(
        colander.String(),
        oid="nama",
        title="Nama", )
    m01 = colander.SchemaNode(
        colander.Integer(),
        missing=colander.drop,
        oid="m01",
        title="Januari",
    )
    m02 = colander.SchemaNode(
        colander.Integer(),
        missing=colander.drop,
        oid="m02",
        title="Februari",
    )
    m03 = colander.SchemaNode(
        colander.Integer(),
        missing=colander.drop,
        oid="m03",
        title="Maret",
    )
    m04 = colander.SchemaNode(
        colander.Integer(),
        missing=colander.drop,
        oid="m04",
        title="April",
    )
    m05 = colander.SchemaNode(
        colander.Integer(),
        missing=colander.drop,
        oid="m05",
        title="Mei",
    )
    m06 = colander.SchemaNode(
        colander.Integer(),
        missing=colander.drop,
        oid="m06",
        title="Juni",
    )
    m07 = colander.SchemaNode(
        colander.Integer(),
        missing=colander.drop,
        oid="m07",
        title="Juli",
    )
    m08 = colander.SchemaNode(
        colander.Integer(),
        missing=colander.drop,
        oid="m08",
        title="Agustus",
    )
    m09 = colander.SchemaNode(
        colander.Integer(),
        missing=colander.drop,
        oid="m09",
        title="September",
    )
    m10 = colander.SchemaNode(
        colander.Integer(),
        missing=colander.drop,
        oid="m10",
        title="Oktober",
    )
    m11 = colander.SchemaNode(
        colander.Integer(),
        missing=colander.drop,
        oid="m11",
        title="Nopember",
    )
    m12 = colander.SchemaNode(
        colander.Integer(),
        missing=colander.drop,
        oid="m12",
        title="Desember",
    )


class LeftSchema(colander.Schema):
    m01 = colander.SchemaNode(
        colander.Integer(),
        widget=widget_os.MoneyInputWidget(options={"precision": 0}),
        missing=colander.drop,
        oid="m01",
        default="0",
        title="Januari",
    )
    m02 = colander.SchemaNode(
        colander.Integer(),
        widget=widget_os.MoneyInputWidget(options={"precision": 0}),
        missing=colander.drop,
        oid="m02",
        default="0",
        title="Februari",
    )
    m03 = colander.SchemaNode(
        colander.Integer(),
        widget=widget_os.MoneyInputWidget(options={"precision": 0}),
        missing=colander.drop,
        oid="m03",
        default="0",
        title="Maret",
    )
    m04 = colander.SchemaNode(
        colander.Integer(),
        widget=widget_os.MoneyInputWidget(options={"precision": 0}),
        missing=colander.drop,
        oid="m04",
        default="0",
        title="April",
    )
    m05 = colander.SchemaNode(
        colander.Integer(),
        widget=widget_os.MoneyInputWidget(options={"precision": 0}),
        missing=colander.drop,
        oid="m05",
        default="0",
        title="Mei",
    )
    m06 = colander.SchemaNode(
        colander.Integer(),
        widget=widget_os.MoneyInputWidget(options={"precision": 0}),
        missing=colander.drop,
        oid="m06",
        default="0",
        title="Juni",
    )


class RightSchema(colander.Schema):
    m07 = colander.SchemaNode(
        colander.Integer(),
        widget=widget_os.MoneyInputWidget(options={"precision": 0}),
        missing=colander.drop,
        oid="m07",
        default="0",
        title="Juli",
    )
    m08 = colander.SchemaNode(
        colander.Integer(),
        widget=widget_os.MoneyInputWidget(options={"precision": 0}),
        missing=colander.drop,
        oid="m08",
        default="0",
        title="Agustus",
    )
    m09 = colander.SchemaNode(
        colander.Integer(),
        widget=widget_os.MoneyInputWidget(options={"precision": 0}),
        missing=colander.drop,
        oid="m09",
        default="0",
        title="September",
    )
    m10 = colander.SchemaNode(
        colander.Integer(),
        widget=widget_os.MoneyInputWidget(options={"precision": 0}),
        missing=colander.drop,
        oid="m10",
        default="0",
        title="Oktober",
    )
    m11 = colander.SchemaNode(
        colander.Integer(),
        widget=widget_os.MoneyInputWidget(options={"precision": 0}),
        missing=colander.drop,
        oid="m11",
        default="0",
        title="Nopember",
    )
    m12 = colander.SchemaNode(
        colander.Integer(),
        widget=widget_os.MoneyInputWidget(options={"precision": 0}),
        missing=colander.drop,
        oid="m12",
        default="0",
        title="Desember",
    )


class AddSchema(colander.Schema):
    tahun = colander.SchemaNode(
        colander.Integer(),
        oid="tahun", )
    kode = colander.SchemaNode(
        colander.String(),
        oid="kode",
        title="Kode", )

    jenis = colander.SchemaNode(
        colander.String(),
        oid="jenis",
        title="Jenis", )

    nama = colander.SchemaNode(
        colander.String(),
        oid="nama",
        title="Nama", )

    kiri = LeftSchema(title="Smester 1")
    kanan = RightSchema(title="Smester 2")


class EditSchema(AddSchema):
    id = colander.SchemaNode(colander.String(),
                             missing=colander.drop,
                             widget=widget.HiddenWidget(readonly=True))


class Views(BaseView):
    def __init__(self, request):
        super().__init__(request)
        self.list_schema = ListSchema
        self.add_schema = AddSchema
        self.edit_schema = EditSchema
        self.list_route = 'pbbm-target'
        self.table = Targets
        # self.db_session = PbbmDBSession

    @view_config(route_name='pbbm-target', renderer='templates/form.pt',
                 permission='pbbm-admin')
    def view_list(self):
        return super().view_list()

    @view_config(route_name='pbbm-target-act', renderer='json',
                 permission='pbbm-admin')
    def view_act(self):
        return super().view_act()

    @view_config(route_name='pbbm-target-view', renderer='templates/target.pt',
                 permission='pbbm-admin')
    def view_view(self):
        return super().view_view(is_object=True)

    def form_validator(self, form, value):
        value.update(value["kiri"])
        value.update(value["kanan"])

    @view_config(route_name='pbbm-target-add', renderer='templates/target.pt',
                 permission='pbbm-admin')
    def view_add(self):
        return super().view_add(is_object=True)

    def get_values(self, row, istime=False, null=False):
        d = super().get_values(row, istime, null)
        d["kiri"] = d
        d["kanan"] = d
        return d

    @view_config(route_name='pbbm-target-edit', renderer='templates/target.pt',
                 permission='pbbm-admin')
    def view_edit(self):
        return super().view_edit(is_object=True)

    @view_config(route_name='pbbm-target-delete', renderer='templates/target.pt',
                 permission='pbbm-admin')
    def view_delete(self):
        return super().view_delete(is_object=True)