Commit 66157a19 by iqbal

Merge branch 'beta-4.2-training' of https://git.opensipkd.com/aa.gusti/opensipkd…

…-base into beta-4.2-training
2 parents c67ff093 505224d7
...@@ -74,14 +74,14 @@ ...@@ -74,14 +74,14 @@
<title> <title>
<band height="80" splitType="Stretch"> <band height="80" splitType="Stretch">
<staticText> <staticText>
<reportElement x="200" y="40" width="170" height="30" uuid="122a31d3-cbc0-4539-ba7a-bec462d685dd"/> <reportElement x="110" y="40" width="340" height="30" uuid="122a31d3-cbc0-4539-ba7a-bec462d685dd"/>
<textElement> <textElement textAlignment="Center">
<font size="18" isBold="true"/> <font size="18" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[DAFTAR JABATAN]]></text> <text><![CDATA[TABEL JABATAN]]></text>
</staticText> </staticText>
<image> <image>
<reportElement x="20" y="10" width="50" height="50" uuid="d4cf7e5c-80f0-4e1c-a1f2-7cc22c941d37"/> <reportElement x="20" y="30" width="50" height="50" uuid="d4cf7e5c-80f0-4e1c-a1f2-7cc22c941d37"/>
<imageExpression><![CDATA[$P{logo}]]></imageExpression> <imageExpression><![CDATA[$P{logo}]]></imageExpression>
</image> </image>
<textField> <textField>
...@@ -157,6 +157,7 @@ ...@@ -157,6 +157,7 @@
<textField> <textField>
<reportElement x="82" y="-2" width="390" height="20" uuid="68de37cd-fa70-4448-955c-e52de45144d7"> <reportElement x="82" y="-2" width="390" height="20" uuid="68de37cd-fa70-4448-955c-e52de45144d7">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="e64266da-7968-4bb9-a147-bea8396eb4ae"/> <property name="com.jaspersoft.studio.spreadsheet.connectionID" value="e64266da-7968-4bb9-a147-bea8396eb4ae"/>
<property name="com.jaspersoft.studio.unit.leftIndent" value="px"/>
</reportElement> </reportElement>
<box> <box>
<topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
...@@ -164,7 +165,9 @@ ...@@ -164,7 +165,9 @@
<bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
<rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
</box> </box>
<textElement textAlignment="Center" verticalAlignment="Middle"/> <textElement textAlignment="Left" verticalAlignment="Middle" markup="html">
<paragraph leftIndent="10"/>
</textElement>
<textFieldExpression><![CDATA[$F{nama}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{nama}]]></textFieldExpression>
</textField> </textField>
<textField> <textField>
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
<title> <title>
<band height="82" splitType="Stretch"> <band height="82" splitType="Stretch">
<image> <image>
<reportElement x="60" y="20" width="50" height="50" uuid="79e3cd6b-e20e-4a47-a571-2d804e9c42fa"/> <reportElement x="60" y="30" width="50" height="50" uuid="79e3cd6b-e20e-4a47-a571-2d804e9c42fa"/>
<imageExpression><![CDATA[$P{logo}]]></imageExpression> <imageExpression><![CDATA[$P{logo}]]></imageExpression>
</image> </image>
<textField> <textField>
...@@ -99,6 +99,7 @@ ...@@ -99,6 +99,7 @@
<textField> <textField>
<reportElement x="160" y="0" width="280" height="30" uuid="7028174c-0be6-444c-88f6-02e5a911fac8"> <reportElement x="160" y="0" width="280" height="30" uuid="7028174c-0be6-444c-88f6-02e5a911fac8">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="3f32c7c3-97bf-484e-a5a8-1ae260292beb"/> <property name="com.jaspersoft.studio.spreadsheet.connectionID" value="3f32c7c3-97bf-484e-a5a8-1ae260292beb"/>
<property name="com.jaspersoft.studio.unit.leftIndent" value="px"/>
</reportElement> </reportElement>
<box> <box>
<topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
...@@ -106,8 +107,10 @@ ...@@ -106,8 +107,10 @@
<bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
<rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
</box> </box>
<textElement textAlignment="Center" verticalAlignment="Middle"/> <textElement textAlignment="Left" verticalAlignment="Middle">
<textFieldExpression><![CDATA[$F{nama}]]></textFieldExpression> <paragraph leftIndent="10"/>
</textElement>
<textFieldExpression><![CDATA[ $F{nama}]]></textFieldExpression>
</textField> </textField>
<textField> <textField>
<reportElement x="60" y="0" width="100" height="30" uuid="832bd6a6-99a3-4ec7-8e5f-88b93fd55475"> <reportElement x="60" y="0" width="100" height="30" uuid="832bd6a6-99a3-4ec7-8e5f-88b93fd55475">
......
...@@ -6,69 +6,29 @@ ...@@ -6,69 +6,29 @@
<parameter name="judul" class="java.lang.String"/> <parameter name="judul" class="java.lang.String"/>
<parameter name="logo" class="java.lang.String"/> <parameter name="logo" class="java.lang.String"/>
<queryString> <queryString>
<![CDATA[select * from users full outer join departemen on users.id = departemen.id;]]> <![CDATA[select * from departemen_user join departemen on departemen_user.departemen_id = departemen.id join users on departemen_user.user_id =users.id;]]>
</queryString> </queryString>
<field name="last_login_date" class="java.sql.Timestamp"> <field name="user_id" class="java.lang.Integer">
<property name="com.jaspersoft.studio.field.name" value="last_login_date"/> <property name="com.jaspersoft.studio.field.name" value="user_id"/>
<property name="com.jaspersoft.studio.field.label" value="last_login_date"/> <property name="com.jaspersoft.studio.field.label" value="user_id"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/> <property name="com.jaspersoft.studio.field.tree.path" value="departemen_user"/>
</field>
<field name="registered_date" class="java.sql.Timestamp">
<property name="com.jaspersoft.studio.field.name" value="registered_date"/>
<property name="com.jaspersoft.studio.field.label" value="registered_date"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/>
</field>
<field name="security_code_date" class="java.sql.Timestamp">
<property name="com.jaspersoft.studio.field.name" value="security_code_date"/>
<property name="com.jaspersoft.studio.field.label" value="security_code_date"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/>
</field> </field>
<field name="api_key" class="java.lang.String"> <field name="departemen_id" class="java.lang.Integer">
<property name="com.jaspersoft.studio.field.name" value="api_key"/> <property name="com.jaspersoft.studio.field.name" value="departemen_id"/>
<property name="com.jaspersoft.studio.field.label" value="api_key"/> <property name="com.jaspersoft.studio.field.label" value="departemen_id"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/> <property name="com.jaspersoft.studio.field.tree.path" value="departemen_user"/>
</field>
<field name="partner_id" class="java.lang.Integer">
<property name="com.jaspersoft.studio.field.name" value="partner_id"/>
<property name="com.jaspersoft.studio.field.label" value="partner_id"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/>
</field> </field>
<field name="company_id" class="java.lang.Integer"> <field name="sub_departemen" class="java.lang.Integer">
<property name="com.jaspersoft.studio.field.name" value="company_id"/> <property name="com.jaspersoft.studio.field.name" value="sub_departemen"/>
<property name="com.jaspersoft.studio.field.label" value="company_id"/> <property name="com.jaspersoft.studio.field.label" value="sub_departemen"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/> <property name="com.jaspersoft.studio.field.tree.path" value="departemen_user"/>
</field> </field>
<field name="id" class="java.lang.Integer"> <field name="id" class="java.lang.Integer">
<property name="com.jaspersoft.studio.field.name" value="id"/> <property name="com.jaspersoft.studio.field.name" value="id"/>
<property name="com.jaspersoft.studio.field.label" value="id"/> <property name="com.jaspersoft.studio.field.label" value="id"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/> <property name="com.jaspersoft.studio.field.tree.path" value="departemen_user"/>
</field> </field>
<field name="user_name" class="java.lang.String"> <field name="COLUMN_5" class="java.lang.Integer">
<property name="com.jaspersoft.studio.field.name" value="user_name"/>
<property name="com.jaspersoft.studio.field.label" value="user_name"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/>
</field>
<field name="user_password" class="java.lang.String">
<property name="com.jaspersoft.studio.field.name" value="user_password"/>
<property name="com.jaspersoft.studio.field.label" value="user_password"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/>
</field>
<field name="email" class="java.lang.String">
<property name="com.jaspersoft.studio.field.name" value="email"/>
<property name="com.jaspersoft.studio.field.label" value="email"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/>
</field>
<field name="status" class="java.lang.Integer">
<property name="com.jaspersoft.studio.field.name" value="status"/>
<property name="com.jaspersoft.studio.field.label" value="status"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/>
</field>
<field name="security_code" class="java.lang.String">
<property name="com.jaspersoft.studio.field.name" value="security_code"/>
<property name="com.jaspersoft.studio.field.label" value="security_code"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/>
</field>
<field name="COLUMN_13" class="java.lang.Integer">
<property name="com.jaspersoft.studio.field.name" value="id"/> <property name="com.jaspersoft.studio.field.name" value="id"/>
<property name="com.jaspersoft.studio.field.label" value="id"/> <property name="com.jaspersoft.studio.field.label" value="id"/>
<property name="com.jaspersoft.studio.field.tree.path" value="departemen"/> <property name="com.jaspersoft.studio.field.tree.path" value="departemen"/>
...@@ -98,7 +58,7 @@ ...@@ -98,7 +58,7 @@
<property name="com.jaspersoft.studio.field.label" value="level_id"/> <property name="com.jaspersoft.studio.field.label" value="level_id"/>
<property name="com.jaspersoft.studio.field.tree.path" value="departemen"/> <property name="com.jaspersoft.studio.field.tree.path" value="departemen"/>
</field> </field>
<field name="COLUMN_19" class="java.lang.Integer"> <field name="company_id" class="java.lang.Integer">
<property name="com.jaspersoft.studio.field.name" value="company_id"/> <property name="com.jaspersoft.studio.field.name" value="company_id"/>
<property name="com.jaspersoft.studio.field.label" value="company_id"/> <property name="com.jaspersoft.studio.field.label" value="company_id"/>
<property name="com.jaspersoft.studio.field.tree.path" value="departemen"/> <property name="com.jaspersoft.studio.field.tree.path" value="departemen"/>
...@@ -113,7 +73,7 @@ ...@@ -113,7 +73,7 @@
<property name="com.jaspersoft.studio.field.label" value="kode"/> <property name="com.jaspersoft.studio.field.label" value="kode"/>
<property name="com.jaspersoft.studio.field.tree.path" value="departemen"/> <property name="com.jaspersoft.studio.field.tree.path" value="departemen"/>
</field> </field>
<field name="COLUMN_22" class="java.lang.Integer"> <field name="status" class="java.lang.Integer">
<property name="com.jaspersoft.studio.field.name" value="status"/> <property name="com.jaspersoft.studio.field.name" value="status"/>
<property name="com.jaspersoft.studio.field.label" value="status"/> <property name="com.jaspersoft.studio.field.label" value="status"/>
<property name="com.jaspersoft.studio.field.tree.path" value="departemen"/> <property name="com.jaspersoft.studio.field.tree.path" value="departemen"/>
...@@ -138,6 +98,66 @@ ...@@ -138,6 +98,66 @@
<property name="com.jaspersoft.studio.field.label" value="update_uid"/> <property name="com.jaspersoft.studio.field.label" value="update_uid"/>
<property name="com.jaspersoft.studio.field.tree.path" value="departemen"/> <property name="com.jaspersoft.studio.field.tree.path" value="departemen"/>
</field> </field>
<field name="last_login_date" class="java.sql.Timestamp">
<property name="com.jaspersoft.studio.field.name" value="last_login_date"/>
<property name="com.jaspersoft.studio.field.label" value="last_login_date"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/>
</field>
<field name="registered_date" class="java.sql.Timestamp">
<property name="com.jaspersoft.studio.field.name" value="registered_date"/>
<property name="com.jaspersoft.studio.field.label" value="registered_date"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/>
</field>
<field name="security_code_date" class="java.sql.Timestamp">
<property name="com.jaspersoft.studio.field.name" value="security_code_date"/>
<property name="com.jaspersoft.studio.field.label" value="security_code_date"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/>
</field>
<field name="api_key" class="java.lang.String">
<property name="com.jaspersoft.studio.field.name" value="api_key"/>
<property name="com.jaspersoft.studio.field.label" value="api_key"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/>
</field>
<field name="partner_id" class="java.lang.Integer">
<property name="com.jaspersoft.studio.field.name" value="partner_id"/>
<property name="com.jaspersoft.studio.field.label" value="partner_id"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/>
</field>
<field name="COLUMN_24" class="java.lang.Integer">
<property name="com.jaspersoft.studio.field.name" value="company_id"/>
<property name="com.jaspersoft.studio.field.label" value="company_id"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/>
</field>
<field name="COLUMN_25" class="java.lang.Integer">
<property name="com.jaspersoft.studio.field.name" value="id"/>
<property name="com.jaspersoft.studio.field.label" value="id"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/>
</field>
<field name="user_name" class="java.lang.String">
<property name="com.jaspersoft.studio.field.name" value="user_name"/>
<property name="com.jaspersoft.studio.field.label" value="user_name"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/>
</field>
<field name="user_password" class="java.lang.String">
<property name="com.jaspersoft.studio.field.name" value="user_password"/>
<property name="com.jaspersoft.studio.field.label" value="user_password"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/>
</field>
<field name="email" class="java.lang.String">
<property name="com.jaspersoft.studio.field.name" value="email"/>
<property name="com.jaspersoft.studio.field.label" value="email"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/>
</field>
<field name="COLUMN_29" class="java.lang.Integer">
<property name="com.jaspersoft.studio.field.name" value="status"/>
<property name="com.jaspersoft.studio.field.label" value="status"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/>
</field>
<field name="security_code" class="java.lang.String">
<property name="com.jaspersoft.studio.field.name" value="security_code"/>
<property name="com.jaspersoft.studio.field.label" value="security_code"/>
<property name="com.jaspersoft.studio.field.tree.path" value="users"/>
</field>
<background> <background>
<band splitType="Stretch"/> <band splitType="Stretch"/>
</background> </background>
......
...@@ -13,6 +13,7 @@ from pyramid.view import (view_config, ) ...@@ -13,6 +13,7 @@ from pyramid.view import (view_config, )
from . import BaseView, button_import from . import BaseView, button_import
from pyramid.path import AssetResolver from pyramid.path import AssetResolver
from . import BaseView, button_import, get_params from . import BaseView, button_import, get_params
from opensipkd.tools import get_random_string
from ..views import BaseView from ..views import BaseView
...@@ -140,7 +141,23 @@ class ViewJabatan(BaseView): ...@@ -140,7 +141,23 @@ class ViewJabatan(BaseView):
} }
print(parameters) print(parameters)
filename = jasper_export(self.report_file, parameters=parameters) filename = jasper_export(self.report_file, parameters=parameters)
return file_response(self.req, filename=filename[0]) return file_response(self.req, filename=filename[0])
@staticmethod
def query_register():
return DBSession.query(Jabatan.kode, Jabatan.nama, Jabatan.nama_pendek, Jabatan.nama_lain, Jabatan.jenis, Jabatan.eselon_id, Jabatan.status).order_by(Jabatan.kode)
def csv_response(self, **kwargs):
query = self.query_register()
row = query.first()
header = row._mapping.keys()
rows = [list(item) for item in query.all()]
filename = f"{get_random_string(16)}.csv"
value = {
'header': header,
'rows': rows,
}
return csv_response(self.req, value, filename)
@view_config(route_name='jabatan-act', renderer='json', @view_config(route_name='jabatan-act', renderer='json',
permission='read') permission='read')
......
...@@ -11,6 +11,7 @@ from pyramid.httpexceptions import HTTPFound ...@@ -11,6 +11,7 @@ from pyramid.httpexceptions import HTTPFound
from sqlalchemy.exc import IntegrityError from sqlalchemy.exc import IntegrityError
from pyramid.path import AssetResolver from pyramid.path import AssetResolver
from . import BaseView, button_import, get_params from . import BaseView, button_import, get_params
from opensipkd.tools import get_random_string
from . import widget_os, button_import from . import widget_os, button_import
from .dati2 import dati2_widget from .dati2 import dati2_widget
...@@ -148,6 +149,22 @@ class Views(BaseView): ...@@ -148,6 +149,22 @@ class Views(BaseView):
print(parameters) print(parameters)
filename = jasper_export(self.report_file, parameters=parameters) filename = jasper_export(self.report_file, parameters=parameters)
return file_response(self.req, filename=filename[0]) return file_response(self.req, filename=filename[0])
@staticmethod
def query_register():
return DBSession.query(ResKecamatan.dati2_id, ResKecamatan.kode, ResKecamatan.nama).order_by(ResKecamatan.dati2_id)
def csv_response(self, **kwargs):
query = self.query_register()
row = query.first()
header = row._mapping.keys()
rows = [list(item) for item in query.all()]
filename = f"{get_random_string(16)}.csv"
value = {
'header': header,
'rows': rows,
}
return csv_response(self.req, value, filename)
@view_config(route_name='kecamatan-act', renderer='json', @view_config(route_name='kecamatan-act', renderer='json',
permission='view') permission='view')
......
...@@ -12,6 +12,7 @@ from opensipkd.models import ( ...@@ -12,6 +12,7 @@ from opensipkd.models import (
from . import BaseView from . import BaseView
from pyramid.path import AssetResolver from pyramid.path import AssetResolver
from . import BaseView, button_import, get_params from . import BaseView, button_import, get_params
from opensipkd.tools import get_random_string
...@@ -108,6 +109,22 @@ class Views(BaseView): ...@@ -108,6 +109,22 @@ class Views(BaseView):
print(parameters) print(parameters)
filename = jasper_export(self.report_file, parameters=parameters) filename = jasper_export(self.report_file, parameters=parameters)
return file_response(self.req, filename=filename[0]) return file_response(self.req, filename=filename[0])
@staticmethod
def query_register():
return DBSession.query(Parameter.kode, Parameter.nama, Parameter.value, Parameter.status).order_by(Parameter.kode)
def csv_response(self, **kwargs):
query = self.query_register()
row = query.first()
header = row._mapping.keys()
rows = [list(item) for item in query.all()]
filename = f"{get_random_string(16)}.csv"
value = {
'header': header,
'rows': rows,
}
return csv_response(self.req, value, filename)
@view_config(route_name='parameter-act', renderer='json', @view_config(route_name='parameter-act', renderer='json',
permission='user-edit') permission='user-edit')
......
...@@ -5,6 +5,7 @@ from deform import widget ...@@ -5,6 +5,7 @@ from deform import widget
from pyramid.view import view_config from pyramid.view import view_config
from sqlalchemy import or_ from sqlalchemy import or_
from sqlalchemy.orm import aliased from sqlalchemy.orm import aliased
from opensipkd.tools import get_random_string
from opensipkd.models import DBSession as PartnerDBSession, DBSession, \ from opensipkd.models import DBSession as PartnerDBSession, DBSession, \
ResCompany ResCompany
...@@ -200,6 +201,22 @@ class ViewPartner(BaseView): ...@@ -200,6 +201,22 @@ class ViewPartner(BaseView):
print(parameters) print(parameters)
filename = jasper_export(self.report_file, parameters=parameters) filename = jasper_export(self.report_file, parameters=parameters)
return file_response(self.req, filename=filename[0]) return file_response(self.req, filename=filename[0])
@staticmethod
def query_register():
return DBSession.query(PartnerDepartemen.partner_id, PartnerDepartemen.departemen_id, PartnerDepartemen.departemen, PartnerDepartemen.jabatan_id, PartnerDepartemen.mulai, PartnerDepartemen.selesai).order_by(PartnerDepartemen.partner_id)
def csv_response(self, **kwargs):
query = self.query_register()
row = query.first()
header = row._mapping.keys()
rows = [list(item) for item in query.all()]
filename = f"{get_random_string(16)}.csv"
value = {
'header': header,
'rows': rows,
}
return csv_response(self.req, value, filename)
@view_config(route_name='partner-departemen-act', renderer='json', @view_config(route_name='partner-departemen-act', renderer='json',
permission='view') permission='view')
......
...@@ -11,6 +11,8 @@ from .user import user_list ...@@ -11,6 +11,8 @@ from .user import user_list
from pyramid.i18n import TranslationStringFactory from pyramid.i18n import TranslationStringFactory
from pyramid.path import AssetResolver from pyramid.path import AssetResolver
from . import BaseView, button_import, get_params from . import BaseView, button_import, get_params
from opensipkd.tools import get_random_string
from pyramid.httpexceptions import HTTPFound
_ = TranslationStringFactory('myapp') _ = TranslationStringFactory('myapp')
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
...@@ -67,6 +69,14 @@ class EditSchema(AddSchema): ...@@ -67,6 +69,14 @@ class EditSchema(AddSchema):
missing=colander.drop, missing=colander.drop,
widget=widget.HiddenWidget() widget=widget.HiddenWidget()
) )
# Override user_id agar tidak bisa diubah dan tidak wajib saat edit
user_id = colander.SchemaNode(
colander.Integer(),
widget=widget.SelectWidget(values=User.get_list(), readonly=True), # Readonly untuk mencegah perubahan
oid="user_id",
title="User",
missing=colander.drop # Tidak wajib saat edit
)
# Override departemen_id agar tidak wajib saat edit # Override departemen_id agar tidak wajib saat edit
departemen_id = colander.SchemaNode( departemen_id = colander.SchemaNode(
colander.Set(), colander.Set(),
...@@ -105,7 +115,6 @@ class Views(BaseView): ...@@ -105,7 +115,6 @@ class Views(BaseView):
return resolver.abspath() return resolver.abspath()
def pdf_response(self, **kwargs): def pdf_response(self, **kwargs):
# print("PDF RESPONSE======================================")
from opensipkd.base.tools.report import jasper_export from opensipkd.base.tools.report import jasper_export
logo = self.get_module_path('opensipkd.base') logo = self.get_module_path('opensipkd.base')
logo = os.path.join(logo, 'static', 'img', 'logo.png') logo = os.path.join(logo, 'static', 'img', 'logo.png')
...@@ -116,7 +125,23 @@ class Views(BaseView): ...@@ -116,7 +125,23 @@ class Views(BaseView):
print(parameters) print(parameters)
filename = jasper_export(self.report_file, parameters=parameters) filename = jasper_export(self.report_file, parameters=parameters)
return file_response(self.req, filename=filename[0]) return file_response(self.req, filename=filename[0])
@staticmethod
def query_register():
return DBSession.query(DepartemenUser.user_id, DepartemenUser.departemen_id).order_by(DepartemenUser.user_id)
def csv_response(self, **kwargs):
query = self.query_register()
row = query.first()
header = row._mapping.keys()
rows = [list(item) for item in query.all()]
filename = f"{get_random_string(16)}.csv"
value = {
'header': header,
'rows': rows,
}
return csv_response(self.req, value, filename)
@view_config(route_name='user-departemen-act', renderer='json', @view_config(route_name='user-departemen-act', renderer='json',
permission='user-view') permission='user-view')
def view_act(self): def view_act(self):
...@@ -153,7 +178,21 @@ class Views(BaseView): ...@@ -153,7 +178,21 @@ class Views(BaseView):
@view_config(route_name='user-departemen-edit', renderer='templates/form.pt', @view_config(route_name='user-departemen-edit', renderer='templates/form.pt',
permission='user-edit') permission='user-edit')
def view_edit(self): def view_edit(self):
return super().view_edit() response = super().view_edit()
if isinstance(response, dict):
print(f"Edit response: {response}")
if self.request.method == 'POST':
form = response.get('form')
if form.validate():
values = form.data
row = DBSession.query(DepartemenUser).filter_by(id=self.request.matchdict['id']).first()
updated_row = self.save_request(values, row)
if updated_row:
self.request.session.flash("Data berhasil diperbarui.", "success")
return HTTPFound(location=self.request.route_url('user-departemen'))
else:
self.request.session.flash("Gagal menyimpan perubahan.", "error")
return response
@view_config(route_name='user-departemen-upload', @view_config(route_name='user-departemen-upload',
renderer='templates/form.pt', permission='user-upload') renderer='templates/form.pt', permission='user-upload')
...@@ -162,8 +201,13 @@ class Views(BaseView): ...@@ -162,8 +201,13 @@ class Views(BaseView):
return super(Views, self).view_upload(exts=(".csv", ".tsv")) return super(Views, self).view_upload(exts=(".csv", ".tsv"))
def save_request(self, values, row=None): def save_request(self, values, row=None):
user_id = values.get("user_id") print(f"Values received in save_request: {values}")
print(f"Row before save: {row}")
# Saat edit, gunakan user_id dari row yang ada
user_id = row.user_id if row else values.get("user_id")
if not user_id: if not user_id:
print("No user_id found, returning None")
return None return None
if "departemen_id" in values: if "departemen_id" in values:
...@@ -180,7 +224,7 @@ class Views(BaseView): ...@@ -180,7 +224,7 @@ class Views(BaseView):
existing_row = DBSession.query(DepartemenUser).filter_by(user_id=user_id).first() existing_row = DBSession.query(DepartemenUser).filter_by(user_id=user_id).first()
if row and row.user_id != user_id: if row and row.user_id != user_id:
# Jika user_id berubah, hapus entri lama dan buat baru # Jika user_id berubah (tidak seharusnya terjadi saat edit)
DBSession.query(DepartemenUser).filter_by(user_id=row.user_id).delete() DBSession.query(DepartemenUser).filter_by(user_id=row.user_id).delete()
if selected_list: if selected_list:
new_row = DepartemenUser( new_row = DepartemenUser(
...@@ -199,7 +243,7 @@ class Views(BaseView): ...@@ -199,7 +243,7 @@ class Views(BaseView):
if selected_list: if selected_list:
existing_row.departemen_id = dept1 existing_row.departemen_id = dept1
existing_row.sub_departemen = dept2 existing_row.sub_departemen = dept2
# Jika selected_list kosong, biarkan data lama tetap ada print(f"Updated existing row: {existing_row}")
row = existing_row row = existing_row
else: else:
# Buat entri baru jika belum ada # Buat entri baru jika belum ada
...@@ -210,11 +254,20 @@ class Views(BaseView): ...@@ -210,11 +254,20 @@ class Views(BaseView):
sub_departemen=dept2 sub_departemen=dept2
) )
DBSession.add(new_row) DBSession.add(new_row)
print(f"Created new row: {new_row}")
row = new_row row = new_row
else: else:
row = None row = None
DBSession.flush() try:
DBSession.flush()
print(f"Row after save: {row}")
except Exception as e:
DBSession.rollback()
print(f"Error during flush: {str(e)}")
self.request.session.flash(f"Gagal menyimpan: {str(e)}", "error")
return None
return row return row
def get_existing_departemen(self, user_id): def get_existing_departemen(self, user_id):
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!