Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
aa.gusti
/
opensipkd-base
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit c67ff093
authored
Mar 25, 2025
by
iqbal
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
Penambahan alamat pada jasper dan perbaikan menu user area
1 parent
8373a07c
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
1395 additions
and
1300 deletions
opensipkd/base/reports/Group.jrxml
opensipkd/base/reports/desa.jrxml
opensipkd/base/reports/eselon.jrxml
opensipkd/base/reports/kabupaten.jrxml
opensipkd/base/reports/partner1.jrxml
opensipkd/base/reports/user_area.jrxml
opensipkd/base/views/dati2.py
opensipkd/base/views/desa.py
opensipkd/base/views/eselon.py
opensipkd/base/views/groups.py
opensipkd/base/views/partner.py
opensipkd/base/views/user_area.py
opensipkd/base/reports/Group.jrxml
View file @
c67ff09
...
@@ -7,6 +7,7 @@
...
@@ -7,6 +7,7 @@
<defaultValueExpression>
<![CDATA["PEMERINTAH KABUPATEN KUNINGAN"]]>
</defaultValueExpression>
<defaultValueExpression>
<![CDATA["PEMERINTAH KABUPATEN KUNINGAN"]]>
</defaultValueExpression>
</parameter>
</parameter>
<parameter
name=
"logo"
class=
"java.lang.String"
/>
<parameter
name=
"logo"
class=
"java.lang.String"
/>
<parameter
name=
"alamat_lengkap"
class=
"java.lang.String"
/>
<queryString>
<queryString>
<![CDATA[select * FROM groups]]>
<![CDATA[select * FROM groups]]>
</queryString>
</queryString>
...
@@ -34,9 +35,9 @@
...
@@ -34,9 +35,9 @@
<band
splitType=
"Stretch"
/>
<band
splitType=
"Stretch"
/>
</background>
</background>
<title>
<title>
<band
height=
"10
0
"
splitType=
"Stretch"
>
<band
height=
"10
1
"
splitType=
"Stretch"
>
<staticText>
<staticText>
<reportElement
x=
"14
3"
y=
"49
"
width=
"269"
height=
"30"
uuid=
"5b7637d7-75f9-4fcb-83f0-3199ee657145"
/>
<reportElement
x=
"14
0"
y=
"32
"
width=
"269"
height=
"30"
uuid=
"5b7637d7-75f9-4fcb-83f0-3199ee657145"
/>
<textElement
textAlignment=
"Center"
verticalAlignment=
"Middle"
>
<textElement
textAlignment=
"Center"
verticalAlignment=
"Middle"
>
<font
size=
"14"
isBold=
"true"
/>
<font
size=
"14"
isBold=
"true"
/>
</textElement>
</textElement>
...
@@ -53,12 +54,19 @@
...
@@ -53,12 +54,19 @@
<imageExpression>
<![CDATA[$P{logo}]]>
</imageExpression>
<imageExpression>
<![CDATA[$P{logo}]]>
</imageExpression>
</image>
</image>
<textField>
<textField>
<reportElement
x=
"
230"
y=
"19"
width=
"100
"
height=
"30"
uuid=
"32f184cc-d09f-44cc-9637-84400c055f5e"
/>
<reportElement
x=
"
140"
y=
"2"
width=
"269
"
height=
"30"
uuid=
"32f184cc-d09f-44cc-9637-84400c055f5e"
/>
<textElement
textAlignment=
"Center"
verticalAlignment=
"Middle"
>
<textElement
textAlignment=
"Center"
verticalAlignment=
"Middle"
>
<font
size=
"16"
isBold=
"true"
/>
<font
size=
"16"
isBold=
"true"
/>
</textElement>
</textElement>
<textFieldExpression>
<![CDATA[$P{judul}]]>
</textFieldExpression>
<textFieldExpression>
<![CDATA[$P{judul}]]>
</textFieldExpression>
</textField>
</textField>
<textField>
<reportElement
x=
"10"
y=
"62"
width=
"551"
height=
"30"
uuid=
"eac58289-71ef-45cd-8d35-17d219ef7847"
/>
<textElement
textAlignment=
"Center"
verticalAlignment=
"Middle"
>
<font
isBold=
"true"
/>
</textElement>
<textFieldExpression>
<![CDATA[$P{alamat_lengkap}]]>
</textFieldExpression>
</textField>
</band>
</band>
</title>
</title>
<pageHeader>
<pageHeader>
...
...
opensipkd/base/reports/desa.jrxml
View file @
c67ff09
...
@@ -5,6 +5,7 @@
...
@@ -5,6 +5,7 @@
<property
name=
"com.jaspersoft.studio.data.sql.tables"
value=
""
/>
<property
name=
"com.jaspersoft.studio.data.sql.tables"
value=
""
/>
<parameter
name=
"logo"
class=
"java.lang.String"
/>
<parameter
name=
"logo"
class=
"java.lang.String"
/>
<parameter
name=
"judul"
class=
"java.lang.String"
/>
<parameter
name=
"judul"
class=
"java.lang.String"
/>
<parameter
name=
"alamat_lengkap"
class=
"java.lang.String"
/>
<queryString>
<queryString>
<![CDATA[select * FROM res_desa JOIN res_kecamatan ON res_desa.kecamatan_id = res_kecamatan.id;]]>
<![CDATA[select * FROM res_desa JOIN res_kecamatan ON res_desa.kecamatan_id = res_kecamatan.id;]]>
</queryString>
</queryString>
...
@@ -112,9 +113,9 @@
...
@@ -112,9 +113,9 @@
<band
splitType=
"Stretch"
/>
<band
splitType=
"Stretch"
/>
</background>
</background>
<title>
<title>
<band
height=
"9
5
"
splitType=
"Stretch"
>
<band
height=
"9
6
"
splitType=
"Stretch"
>
<staticText>
<staticText>
<reportElement
x=
"1
43"
y=
"30"
width=
"26
9"
height=
"30"
uuid=
"458b62a6-e929-4690-a8a0-c260967c1d92"
/>
<reportElement
x=
"1
10"
y=
"30"
width=
"31
9"
height=
"30"
uuid=
"458b62a6-e929-4690-a8a0-c260967c1d92"
/>
<textElement
textAlignment=
"Center"
verticalAlignment=
"Middle"
>
<textElement
textAlignment=
"Center"
verticalAlignment=
"Middle"
>
<font
size=
"14"
isBold=
"true"
/>
<font
size=
"14"
isBold=
"true"
/>
</textElement>
</textElement>
...
@@ -137,6 +138,13 @@
...
@@ -137,6 +138,13 @@
</textElement>
</textElement>
<textFieldExpression>
<![CDATA[$P{judul}]]>
</textFieldExpression>
<textFieldExpression>
<![CDATA[$P{judul}]]>
</textFieldExpression>
</textField>
</textField>
<textField>
<reportElement
x=
"0"
y=
"50"
width=
"551"
height=
"30"
uuid=
"a1b164d9-0cd8-4f6f-807b-506312e81fd9"
/>
<textElement
textAlignment=
"Center"
verticalAlignment=
"Middle"
>
<font
isBold=
"true"
/>
</textElement>
<textFieldExpression>
<![CDATA[$P{alamat_lengkap}]]>
</textFieldExpression>
</textField>
</band>
</band>
</title>
</title>
<columnHeader>
<columnHeader>
...
@@ -198,14 +206,19 @@
...
@@ -198,14 +206,19 @@
<textFieldExpression>
<![CDATA[$F{kode}]]>
</textFieldExpression>
<textFieldExpression>
<![CDATA[$F{kode}]]>
</textFieldExpression>
</textField>
</textField>
<textField>
<textField>
<reportElement
x=
"161"
y=
"0"
width=
"210"
height=
"21"
uuid=
"e07771a9-7326-46ef-b09c-e0b5a02dad3c"
/>
<reportElement
x=
"161"
y=
"0"
width=
"210"
height=
"21"
uuid=
"e07771a9-7326-46ef-b09c-e0b5a02dad3c"
>
<property
name=
"com.jaspersoft.studio.unit.rightIndent"
value=
"pixel"
/>
<property
name=
"com.jaspersoft.studio.unit.leftIndent"
value=
"px"
/>
</reportElement>
<box>
<box>
<topPen
lineWidth=
"1.0"
lineStyle=
"Solid"
lineColor=
"#000000"
/>
<topPen
lineWidth=
"1.0"
lineStyle=
"Solid"
lineColor=
"#000000"
/>
<leftPen
lineWidth=
"1.0"
lineStyle=
"Solid"
lineColor=
"#000000"
/>
<leftPen
lineWidth=
"1.0"
lineStyle=
"Solid"
lineColor=
"#000000"
/>
<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"
>
<paragraph
leftIndent=
"10"
/>
</textElement>
<textFieldExpression>
<![CDATA[$F{nama}]]>
</textFieldExpression>
<textFieldExpression>
<![CDATA[$F{nama}]]>
</textFieldExpression>
</textField>
</textField>
<textField>
<textField>
...
...
opensipkd/base/reports/eselon.jrxml
View file @
c67ff09
...
@@ -5,6 +5,7 @@
...
@@ -5,6 +5,7 @@
<property
name=
"com.jaspersoft.studio.data.sql.tables"
value=
""
/>
<property
name=
"com.jaspersoft.studio.data.sql.tables"
value=
""
/>
<parameter
name=
"logo"
class=
"java.lang.String"
/>
<parameter
name=
"logo"
class=
"java.lang.String"
/>
<parameter
name=
"judul"
class=
"java.lang.String"
/>
<parameter
name=
"judul"
class=
"java.lang.String"
/>
<parameter
name=
"alamat_lengkap"
class=
"java.lang.String"
/>
<queryString>
<queryString>
<![CDATA[select * FROM eselon]]>
<![CDATA[select * FROM eselon]]>
</queryString>
</queryString>
...
@@ -67,7 +68,7 @@
...
@@ -67,7 +68,7 @@
<band
splitType=
"Stretch"
/>
<band
splitType=
"Stretch"
/>
</background>
</background>
<title>
<title>
<band
height=
"
89
"
splitType=
"Stretch"
>
<band
height=
"
95
"
splitType=
"Stretch"
>
<staticText>
<staticText>
<reportElement
x=
"143"
y=
"30"
width=
"269"
height=
"30"
uuid=
"8be6d74b-7953-470f-8fbb-799d55a1f230"
/>
<reportElement
x=
"143"
y=
"30"
width=
"269"
height=
"30"
uuid=
"8be6d74b-7953-470f-8fbb-799d55a1f230"
/>
<textElement
textAlignment=
"Center"
verticalAlignment=
"Middle"
>
<textElement
textAlignment=
"Center"
verticalAlignment=
"Middle"
>
...
@@ -92,6 +93,13 @@
...
@@ -92,6 +93,13 @@
</textElement>
</textElement>
<textFieldExpression>
<![CDATA[$P{judul}]]>
</textFieldExpression>
<textFieldExpression>
<![CDATA[$P{judul}]]>
</textFieldExpression>
</textField>
</textField>
<textField>
<reportElement
x=
"0"
y=
"50"
width=
"551"
height=
"30"
uuid=
"1b5edd70-0a69-437b-8d36-d5fe76327040"
/>
<textElement
textAlignment=
"Center"
verticalAlignment=
"Middle"
>
<font
isBold=
"true"
/>
</textElement>
<textFieldExpression>
<![CDATA[$P{alamat_lengkap}]]>
</textFieldExpression>
</textField>
</band>
</band>
</title>
</title>
<columnHeader>
<columnHeader>
...
...
opensipkd/base/reports/kabupaten.jrxml
View file @
c67ff09
...
@@ -5,6 +5,7 @@
...
@@ -5,6 +5,7 @@
<property
name=
"com.jaspersoft.studio.data.sql.tables"
value=
""
/>
<property
name=
"com.jaspersoft.studio.data.sql.tables"
value=
""
/>
<parameter
name=
"logo"
class=
"java.lang.String"
/>
<parameter
name=
"logo"
class=
"java.lang.String"
/>
<parameter
name=
"judul"
class=
"java.lang.String"
/>
<parameter
name=
"judul"
class=
"java.lang.String"
/>
<parameter
name=
"alamat_lengkap"
class=
"java.lang.String"
/>
<queryString>
<queryString>
<![CDATA[select * FROM res_dati2 join res_provinsi ON res_dati2.provinsi_id = res_provinsi.id]]>
<![CDATA[select * FROM res_dati2 join res_provinsi ON res_dati2.provinsi_id = res_provinsi.id]]>
</queryString>
</queryString>
...
@@ -136,12 +137,19 @@
...
@@ -136,12 +137,19 @@
<imageExpression>
<![CDATA[$P{logo}]]>
</imageExpression>
<imageExpression>
<![CDATA[$P{logo}]]>
</imageExpression>
</image>
</image>
<textField>
<textField>
<reportElement
x=
"
240"
y=
"0"
width=
"100
"
height=
"30"
uuid=
"caa2d5c9-f7f6-4c74-a52b-8014d519c5c3"
/>
<reportElement
x=
"
143"
y=
"0"
width=
"269
"
height=
"30"
uuid=
"caa2d5c9-f7f6-4c74-a52b-8014d519c5c3"
/>
<textElement
textAlignment=
"Center"
verticalAlignment=
"Middle"
>
<textElement
textAlignment=
"Center"
verticalAlignment=
"Middle"
>
<font
size=
"16"
isBold=
"true"
/>
<font
size=
"16"
isBold=
"true"
/>
</textElement>
</textElement>
<textFieldExpression>
<![CDATA[$P{judul}]]>
</textFieldExpression>
<textFieldExpression>
<![CDATA[$P{judul}]]>
</textFieldExpression>
</textField>
</textField>
<textField>
<reportElement
x=
"2"
y=
"48"
width=
"550"
height=
"30"
uuid=
"4cabc0db-0c35-4c0f-8e53-5723054d06af"
/>
<textElement
textAlignment=
"Center"
verticalAlignment=
"Middle"
>
<font
isBold=
"true"
/>
</textElement>
<textFieldExpression>
<![CDATA[$P{alamat_lengkap}]]>
</textFieldExpression>
</textField>
</band>
</band>
</title>
</title>
<columnHeader>
<columnHeader>
...
@@ -203,25 +211,33 @@
...
@@ -203,25 +211,33 @@
<textFieldExpression>
<![CDATA[$F{kode}]]>
</textFieldExpression>
<textFieldExpression>
<![CDATA[$F{kode}]]>
</textFieldExpression>
</textField>
</textField>
<textField>
<textField>
<reportElement
x=
"161"
y=
"0"
width=
"210"
height=
"21"
uuid=
"042939e5-65d9-4170-b4d3-67f999964030"
/>
<reportElement
x=
"161"
y=
"0"
width=
"210"
height=
"21"
uuid=
"042939e5-65d9-4170-b4d3-67f999964030"
>
<property
name=
"com.jaspersoft.studio.unit.leftIndent"
value=
"px"
/>
</reportElement>
<box>
<box>
<topPen
lineWidth=
"1.0"
lineStyle=
"Solid"
lineColor=
"#000000"
/>
<topPen
lineWidth=
"1.0"
lineStyle=
"Solid"
lineColor=
"#000000"
/>
<leftPen
lineWidth=
"1.0"
lineStyle=
"Solid"
lineColor=
"#000000"
/>
<leftPen
lineWidth=
"1.0"
lineStyle=
"Solid"
lineColor=
"#000000"
/>
<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=
"Left"
verticalAlignment=
"Middle"
/>
<textElement
textAlignment=
"Left"
verticalAlignment=
"Middle"
>
<paragraph
leftIndent=
"10"
/>
</textElement>
<textFieldExpression>
<![CDATA[$F{nama}]]>
</textFieldExpression>
<textFieldExpression>
<![CDATA[$F{nama}]]>
</textFieldExpression>
</textField>
</textField>
<textField>
<textField>
<reportElement
x=
"371"
y=
"0"
width=
"181"
height=
"21"
uuid=
"2db6a1ee-202a-4714-a0b6-ab4545981f01"
/>
<reportElement
x=
"371"
y=
"0"
width=
"181"
height=
"21"
uuid=
"2db6a1ee-202a-4714-a0b6-ab4545981f01"
>
<property
name=
"com.jaspersoft.studio.unit.leftIndent"
value=
"px"
/>
</reportElement>
<box>
<box>
<topPen
lineWidth=
"1.0"
lineStyle=
"Solid"
lineColor=
"#000000"
/>
<topPen
lineWidth=
"1.0"
lineStyle=
"Solid"
lineColor=
"#000000"
/>
<leftPen
lineWidth=
"1.0"
lineStyle=
"Solid"
lineColor=
"#000000"
/>
<leftPen
lineWidth=
"1.0"
lineStyle=
"Solid"
lineColor=
"#000000"
/>
<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=
"Left"
verticalAlignment=
"Middle"
/>
<textElement
textAlignment=
"Left"
verticalAlignment=
"Middle"
>
<paragraph
leftIndent=
"10"
/>
</textElement>
<textFieldExpression>
<![CDATA[$F{COLUMN_14}]]>
</textFieldExpression>
<textFieldExpression>
<![CDATA[$F{COLUMN_14}]]>
</textFieldExpression>
</textField>
</textField>
</band>
</band>
...
...
opensipkd/base/reports/partner1.jrxml
View file @
c67ff09
...
@@ -5,6 +5,7 @@
...
@@ -5,6 +5,7 @@
<property
name=
"com.jaspersoft.studio.data.sql.tables"
value=
""
/>
<property
name=
"com.jaspersoft.studio.data.sql.tables"
value=
""
/>
<parameter
name=
"logo"
class=
"java.lang.String"
/>
<parameter
name=
"logo"
class=
"java.lang.String"
/>
<parameter
name=
"judul"
class=
"java.lang.String"
/>
<parameter
name=
"judul"
class=
"java.lang.String"
/>
<parameter
name=
"alamat_lengkap"
class=
"java.lang.String"
/>
<queryString>
<queryString>
<![CDATA[select * FROM partner]]>
<![CDATA[select * FROM partner]]>
</queryString>
</queryString>
...
@@ -209,8 +210,8 @@
...
@@ -209,8 +210,8 @@
<title>
<title>
<band
height=
"91"
splitType=
"Stretch"
>
<band
height=
"91"
splitType=
"Stretch"
>
<staticText>
<staticText>
<reportElement
x=
"
204"
y=
"40"
width=
"130"
height=
"2
0"
uuid=
"404cb1e0-9e9b-4d9e-9f12-7ae4ee60561f"
/>
<reportElement
x=
"
0"
y=
"30"
width=
"552"
height=
"3
0"
uuid=
"404cb1e0-9e9b-4d9e-9f12-7ae4ee60561f"
/>
<textElement>
<textElement
textAlignment=
"Center"
>
<font
size=
"14"
isBold=
"true"
/>
<font
size=
"14"
isBold=
"true"
/>
</textElement>
</textElement>
<text>
<![CDATA[DAFTAR PARTNER]]>
</text>
<text>
<![CDATA[DAFTAR PARTNER]]>
</text>
...
@@ -226,12 +227,19 @@
...
@@ -226,12 +227,19 @@
<imageExpression>
<![CDATA[$P{logo}]]>
</imageExpression>
<imageExpression>
<![CDATA[$P{logo}]]>
</imageExpression>
</image>
</image>
<textField>
<textField>
<reportElement
x=
"
220"
y=
"0"
width=
"100
"
height=
"30"
uuid=
"167de0fa-238f-4d7c-9bb8-8b282cb08dbd"
/>
<reportElement
x=
"
0"
y=
"0"
width=
"552
"
height=
"30"
uuid=
"167de0fa-238f-4d7c-9bb8-8b282cb08dbd"
/>
<textElement
textAlignment=
"Center"
verticalAlignment=
"Middle"
>
<textElement
textAlignment=
"Center"
verticalAlignment=
"Middle"
>
<font
size=
"14"
isBold=
"true"
/>
<font
size=
"14"
isBold=
"true"
/>
</textElement>
</textElement>
<textFieldExpression>
<![CDATA[$P{judul}]]>
</textFieldExpression>
<textFieldExpression>
<![CDATA[$P{judul}]]>
</textFieldExpression>
</textField>
</textField>
<textField>
<reportElement
x=
"-6"
y=
"50"
width=
"551"
height=
"30"
uuid=
"d9376b77-97ac-43f7-8837-7cedc45a38a4"
/>
<textElement
textAlignment=
"Center"
verticalAlignment=
"Middle"
>
<font
isBold=
"true"
/>
</textElement>
<textFieldExpression>
<![CDATA[$P{alamat_lengkap}]]>
</textFieldExpression>
</textField>
</band>
</band>
</title>
</title>
<columnHeader>
<columnHeader>
...
@@ -306,14 +314,18 @@
...
@@ -306,14 +314,18 @@
<textFieldExpression>
<![CDATA[$F{kode}]]>
</textFieldExpression>
<textFieldExpression>
<![CDATA[$F{kode}]]>
</textFieldExpression>
</textField>
</textField>
<textField>
<textField>
<reportElement
x=
"110"
y=
"0"
width=
"160"
height=
"21"
uuid=
"5eae21bc-8f4a-44e4-9e8a-66da6ee9de99"
/>
<reportElement
x=
"110"
y=
"0"
width=
"160"
height=
"21"
uuid=
"5eae21bc-8f4a-44e4-9e8a-66da6ee9de99"
>
<property
name=
"com.jaspersoft.studio.unit.leftIndent"
value=
"px"
/>
</reportElement>
<box>
<box>
<topPen
lineWidth=
"1.0"
lineStyle=
"Solid"
lineColor=
"#000000"
/>
<topPen
lineWidth=
"1.0"
lineStyle=
"Solid"
lineColor=
"#000000"
/>
<leftPen
lineWidth=
"1.0"
lineStyle=
"Solid"
lineColor=
"#000000"
/>
<leftPen
lineWidth=
"1.0"
lineStyle=
"Solid"
lineColor=
"#000000"
/>
<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"
>
<paragraph
leftIndent=
"10"
/>
</textElement>
<textFieldExpression>
<![CDATA[$F{nama}]]>
</textFieldExpression>
<textFieldExpression>
<![CDATA[$F{nama}]]>
</textFieldExpression>
</textField>
</textField>
<textField>
<textField>
...
@@ -330,6 +342,7 @@
...
@@ -330,6 +342,7 @@
<textField>
<textField>
<reportElement
x=
"270"
y=
"0"
width=
"160"
height=
"21"
uuid=
"b00fbbe6-e991-4a59-837e-601a2462aebf"
>
<reportElement
x=
"270"
y=
"0"
width=
"160"
height=
"21"
uuid=
"b00fbbe6-e991-4a59-837e-601a2462aebf"
>
<property
name=
"com.jaspersoft.studio.spreadsheet.connectionID"
value=
"add93502-c54f-4ef3-912a-338d7f0ff64b"
/>
<property
name=
"com.jaspersoft.studio.spreadsheet.connectionID"
value=
"add93502-c54f-4ef3-912a-338d7f0ff64b"
/>
<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"
/>
...
@@ -337,7 +350,9 @@
...
@@ -337,7 +350,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"
>
<paragraph
leftIndent=
"10"
/>
</textElement>
<textFieldExpression>
<![CDATA[$F{email}]]>
</textFieldExpression>
<textFieldExpression>
<![CDATA[$F{email}]]>
</textFieldExpression>
</textField>
</textField>
</band>
</band>
...
...
opensipkd/base/reports/user_area.jrxml
View file @
c67ff09
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
<property
name=
"com.jaspersoft.studio.data.defaultdataadapter"
value=
"POSTGRES"
/>
<property
name=
"com.jaspersoft.studio.data.defaultdataadapter"
value=
"POSTGRES"
/>
<parameter
name=
"logo"
class=
"java.lang.String"
/>
<parameter
name=
"logo"
class=
"java.lang.String"
/>
<parameter
name=
"judul"
class=
"java.lang.String"
/>
<parameter
name=
"judul"
class=
"java.lang.String"
/>
<parameter
name=
"alamat"
class=
"java.lang.String"
/>
<parameter
name=
"alamat
_lengkap
"
class=
"java.lang.String"
/>
<queryString
language=
"SQL"
>
<queryString
language=
"SQL"
>
<![CDATA[select * from user_area join res_desa on user_area.desa_id = res_desa.id join users on user_area.user_id = users.id;]]>
<![CDATA[select * from user_area join res_desa on user_area.desa_id = res_desa.id join users on user_area.user_id = users.id;]]>
</queryString>
</queryString>
...
@@ -157,12 +157,19 @@
...
@@ -157,12 +157,19 @@
<imageExpression>
<![CDATA[$P{logo}]]>
</imageExpression>
<imageExpression>
<![CDATA[$P{logo}]]>
</imageExpression>
</image>
</image>
<textField>
<textField>
<reportElement
x=
"
220"
y=
"0"
width=
"100
"
height=
"30"
uuid=
"f3b018df-9d30-4be3-837b-db47a83dfadc"
/>
<reportElement
x=
"
143"
y=
"0"
width=
"269
"
height=
"30"
uuid=
"f3b018df-9d30-4be3-837b-db47a83dfadc"
/>
<textElement
textAlignment=
"Center"
verticalAlignment=
"Middle"
>
<textElement
textAlignment=
"Center"
verticalAlignment=
"Middle"
>
<font
size=
"16"
isBold=
"true"
/>
<font
size=
"16"
isBold=
"true"
/>
</textElement>
</textElement>
<textFieldExpression>
<![CDATA[$P{judul}]]>
</textFieldExpression>
<textFieldExpression>
<![CDATA[$P{judul}]]>
</textFieldExpression>
</textField>
</textField>
<textField>
<reportElement
x=
"0"
y=
"50"
width=
"551"
height=
"30"
uuid=
"9d916137-3fc4-4759-b377-4b95c1bbfafc"
/>
<textElement
textAlignment=
"Center"
verticalAlignment=
"Middle"
>
<font
isBold=
"true"
/>
</textElement>
<textFieldExpression>
<![CDATA[$P{alamat_lengkap}]]>
</textFieldExpression>
</textField>
</band>
</band>
</title>
</title>
<columnHeader>
<columnHeader>
...
...
opensipkd/base/views/dati2.py
View file @
c67ff09
...
@@ -93,6 +93,7 @@ class ViewDati2(BaseView):
...
@@ -93,6 +93,7 @@ class ViewDati2(BaseView):
logo
=
os
.
path
.
join
(
logo
,
'static'
,
'img'
,
'logo.png'
)
logo
=
os
.
path
.
join
(
logo
,
'static'
,
'img'
,
'logo.png'
)
parameters
=
{
parameters
=
{
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"alamat_lengkap"
:
get_params
(
'address'
,
"Bekasi"
),
"logo"
:
logo
"logo"
:
logo
}
}
print
(
parameters
)
print
(
parameters
)
...
...
opensipkd/base/views/desa.py
View file @
c67ff09
import
os
import
os
import
colander
import
colander
from
deform
import
(
widget
,
)
from
deform
import
(
widget
,
)
from
opensipkd.models
import
DBSession
,
ResDesa
,
kategori_desa
,
ResKecamatan
,
ResProvinsi
,
ResDati2
from
opensipkd.models
import
DBSession
,
ResDesa
,
kategori_desa
,
ResKecamatan
,
ResProvinsi
,
ResDati2
from
.
import
BaseView
,
btn_upload
from
.
import
BaseView
,
btn_upload
from
opensipkd.tools.buttons
import
btn_close
,
btn_add
from
opensipkd.tools.buttons
import
btn_close
,
btn_add
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.view
import
(
view_config
,
)
from
pyramid.view
import
(
view_config
,
)
from
.
import
BaseView
,
btn_upload
from
.
import
BaseView
,
btn_upload
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.report
import
csv_response
,
file_response
from
opensipkd.tools.report
import
csv_response
,
file_response
from
.dati2
import
dati2_widget
from
.dati2
import
dati2_widget
from
opensipkd.tools
import
get_random_string
from
opensipkd.tools
import
get_random_string
from
.kecamatan
import
kecamatan_widget
from
.kecamatan
import
kecamatan_widget
from
.provinsi
import
provinsi_widget
from
.provinsi
import
provinsi_widget
from
..views
import
BaseView
from
..views
import
BaseView
_
=
TranslationStringFactory
(
"opensipkd"
)
_
=
TranslationStringFactory
(
"opensipkd"
)
SESS_ADD_FAILED
=
'Tambah desa gagal'
SESS_ADD_FAILED
=
'Tambah desa gagal'
SESS_EDIT_FAILED
=
'Edit desa gagal'
SESS_EDIT_FAILED
=
'Edit desa gagal'
def
get_desa_list
():
def
get_desa_list
():
# r = [("", "--Pilih Desa--")]
# r = [("", "--Pilih Desa--")]
r
=
[]
r
=
[]
q
=
DBSession
.
query
(
ResDesa
)
.
order_by
(
ResDesa
.
nama
)
q
=
DBSession
.
query
(
ResDesa
)
.
order_by
(
ResDesa
.
nama
)
for
row
in
q
:
for
row
in
q
:
g
=
(
str
(
row
.
id
),
(
f
"{row.kode}/ {row.nama}"
))
g
=
(
str
(
row
.
id
),
(
f
"{row.kode}/ {row.nama}"
))
r
.
append
(
g
)
r
.
append
(
g
)
return
r
return
r
@colander.deferred
@colander.deferred
def
desa_widget
(
node
,
kw
):
def
desa_widget
(
node
,
kw
):
values
=
kw
.
get
(
'desa_list'
,
[])
values
=
kw
.
get
(
'desa_list'
,
[])
return
widget
.
Select2Widget
(
values
=
values
,
return
widget
.
Select2Widget
(
values
=
values
,
placeholder
=
"Pilih Desa/Kelurahan"
)
placeholder
=
"Pilih Desa/Kelurahan"
)
class
AddSchema
(
colander
.
Schema
):
class
AddSchema
(
colander
.
Schema
):
provinsi_id
=
colander
.
SchemaNode
(
colander
.
String
(),
provinsi_id
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
provinsi_widget
,
widget
=
provinsi_widget
,
validator
=
colander
.
Length
(
max
=
32
),
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"provinsi_id"
,
oid
=
"provinsi_id"
,
slave
=
"dati2_id"
,
slave
=
"dati2_id"
,
slave_url
=
"/dati2/select/act?provinsi_id="
,
slave_url
=
"/dati2/select/act?provinsi_id="
,
title
=
"Provinsi"
,
title
=
"Provinsi"
,
)
)
dati2_id
=
colander
.
SchemaNode
(
colander
.
String
(),
dati2_id
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
dati2_widget
,
widget
=
dati2_widget
,
validator
=
colander
.
Length
(
max
=
32
),
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"dati2_id"
,
oid
=
"dati2_id"
,
slave
=
"kecamatan_id"
,
slave
=
"kecamatan_id"
,
slave_url
=
"/kecamatan/select/act?dati2_id="
,
slave_url
=
"/kecamatan/select/act?dati2_id="
,
title
=
"Kabupaten/Kota"
,
title
=
"Kabupaten/Kota"
,
)
)
kecamatan_id
=
colander
.
SchemaNode
(
colander
.
String
(),
kecamatan_id
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
kecamatan_widget
,
widget
=
kecamatan_widget
,
validator
=
colander
.
Length
(
max
=
32
),
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kecamatan_id"
,
oid
=
"kecamatan_id"
,
title
=
"Kecamatan"
)
title
=
"Kecamatan"
)
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
)
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
)
kategori
=
colander
.
SchemaNode
(
colander
.
String
(),
kategori
=
colander
.
SchemaNode
(
colander
.
String
(),
widget
=
widget
.
SelectWidget
(
values
=
kategori_desa
),
widget
=
widget
.
SelectWidget
(
values
=
kategori_desa
),
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
)
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
128
),
validator
=
colander
.
Length
(
max
=
128
),
oid
=
"nama"
)
oid
=
"nama"
)
class
EditSchema
(
AddSchema
):
class
EditSchema
(
AddSchema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
id
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
widget
=
widget
.
HiddenWidget
(
readonly
=
True
))
widget
=
widget
.
HiddenWidget
(
readonly
=
True
))
class
ListSchema
(
colander
.
Schema
):
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
title
=
_
(
"action"
,
default
=
"Action"
))
title
=
_
(
"action"
,
default
=
"Action"
))
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
width
=
'100pt'
,
title
=
"Kode"
)
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
width
=
'100pt'
,
title
=
"Kode"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Nama"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Nama"
)
kecamatan
=
colander
.
SchemaNode
(
colander
.
String
(),
field
=
ResKecamatan
.
nama
)
kecamatan
=
colander
.
SchemaNode
(
colander
.
String
(),
field
=
ResKecamatan
.
nama
)
class
ViewDesa
(
BaseView
):
class
ViewDesa
(
BaseView
):
def
__init__
(
self
,
request
):
def
__init__
(
self
,
request
):
super
(
ViewDesa
,
self
)
.
__init__
(
request
)
super
(
ViewDesa
,
self
)
.
__init__
(
request
)
self
.
form_scripts
=
""
self
.
form_scripts
=
""
self
.
form_params
=
dict
(
scripts
=
""
)
self
.
form_params
=
dict
(
scripts
=
""
)
self
.
list_url
=
'desa'
self
.
list_url
=
'desa'
self
.
list_route
=
'desa'
self
.
list_route
=
'desa'
self
.
add_schema
=
AddSchema
self
.
add_schema
=
AddSchema
self
.
edit_schema
=
EditSchema
self
.
edit_schema
=
EditSchema
self
.
table
=
ResDesa
self
.
table
=
ResDesa
self
.
list_schema
=
ListSchema
self
.
list_schema
=
ListSchema
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
btn_upload
,)
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
btn_upload
,)
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
path
)
path
=
os
.
path
.
dirname
(
path
)
self
.
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'desa.jrxml'
)
self
.
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'desa.jrxml'
)
# Mendapatkan path gambar
# Mendapatkan path gambar
def
get_module_path
(
self
,
module_name
):
def
get_module_path
(
self
,
module_name
):
a
=
AssetResolver
(
module_name
)
a
=
AssetResolver
(
module_name
)
resolver
=
a
.
resolve
(
''
)
resolver
=
a
.
resolve
(
''
)
return
resolver
.
abspath
()
return
resolver
.
abspath
()
def
pdf_response
(
self
,
**
kwargs
):
def
pdf_response
(
self
,
**
kwargs
):
# print("PDF RESPONSE======================================")
# 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'
)
parameters
=
{
parameters
=
{
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"logo"
:
logo
"alamat_lengkap"
:
get_params
(
'address'
,
"Bekasi"
),
}
"logo"
:
logo
print
(
parameters
)
}
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
print
(
parameters
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
@staticmethod
def
query_register
():
@staticmethod
return
DBSession
.
query
(
ResDesa
.
kecamatan_id
,
ResDesa
.
kode
,
ResDesa
.
kategori
,
ResDesa
.
nama
)
.
order_by
(
ResDesa
.
kecamatan_id
)
def
query_register
():
return
DBSession
.
query
(
ResDesa
.
kecamatan_id
,
ResDesa
.
kode
,
ResDesa
.
kategori
,
ResDesa
.
nama
)
.
order_by
(
ResDesa
.
kecamatan_id
)
def
csv_response
(
self
,
**
kwargs
):
query
=
self
.
query_register
()
def
csv_response
(
self
,
**
kwargs
):
row
=
query
.
first
()
query
=
self
.
query_register
()
header
=
row
.
_mapping
.
keys
()
row
=
query
.
first
()
rows
=
[
list
(
item
)
for
item
in
query
.
all
()]
header
=
row
.
_mapping
.
keys
()
filename
=
f
"{get_random_string(16)}.csv"
rows
=
[
list
(
item
)
for
item
in
query
.
all
()]
value
=
{
filename
=
f
"{get_random_string(16)}.csv"
'header'
:
header
,
value
=
{
'rows'
:
rows
,
'header'
:
header
,
}
'rows'
:
rows
,
return
csv_response
(
self
.
req
,
value
,
filename
)
}
return
csv_response
(
self
.
req
,
value
,
filename
)
def
form_validator
(
self
,
form
,
value
):
def
err_kode
():
def
form_validator
(
self
,
form
,
value
):
raise
colander
.
Invalid
(
form
,
'Kode
%
s sudah digunakan oleh
%
s'
%
(
def
err_kode
():
value
[
'kode'
],
found
.
nama
))
raise
colander
.
Invalid
(
form
,
'Kode
%
s sudah digunakan oleh
%
s'
%
(
value
[
'kode'
],
found
.
nama
))
def
err_nama
():
raise
colander
.
Invalid
(
form
,
def
err_nama
():
'Uraian
%
s sudah digunakan oleh kode
%
s'
%
(
raise
colander
.
Invalid
(
form
,
value
[
'nama'
],
found
.
kode
))
'Uraian
%
s sudah digunakan oleh kode
%
s'
%
(
value
[
'nama'
],
found
.
kode
))
if
'id'
in
form
.
request
.
matchdict
:
uid
=
form
.
request
.
matchdict
[
'id'
]
if
'id'
in
form
.
request
.
matchdict
:
q
=
DBSession
.
query
(
ResDesa
)
.
filter_by
(
id
=
uid
)
uid
=
form
.
request
.
matchdict
[
'id'
]
row
=
q
.
first
()
q
=
DBSession
.
query
(
ResDesa
)
.
filter_by
(
id
=
uid
)
else
:
row
=
q
.
first
()
row
=
None
else
:
row
=
None
q
=
ResDesa
.
query_kode
(
value
[
'kode'
])
\
.
filter
(
ResDesa
.
kecamatan_id
==
value
[
"kecamatan_id"
])
q
=
ResDesa
.
query_kode
(
value
[
'kode'
])
\
found
=
q
.
first
()
.
filter
(
ResDesa
.
kecamatan_id
==
value
[
"kecamatan_id"
])
if
row
:
found
=
q
.
first
()
if
found
and
found
.
id
!=
row
.
id
:
if
row
:
err_kode
()
if
found
and
found
.
id
!=
row
.
id
:
elif
found
:
err_kode
()
err_kode
()
elif
found
:
err_kode
()
found
=
ResDesa
.
query_nama
(
value
[
'nama'
])
\
.
filter
(
ResDesa
.
kecamatan_id
==
value
[
"kecamatan_id"
])
.
first
()
found
=
ResDesa
.
query_nama
(
value
[
'nama'
])
\
if
found
:
.
filter
(
ResDesa
.
kecamatan_id
==
value
[
"kecamatan_id"
])
.
first
()
if
found
and
found
.
id
!=
row
.
id
:
if
found
:
err_nama
()
if
found
and
found
.
id
!=
row
.
id
:
elif
found
:
err_nama
()
err_nama
()
elif
found
:
err_nama
()
def
get_bindings
(
self
,
row
=
None
):
provinsi_list
=
ResProvinsi
.
get_list
()
def
get_bindings
(
self
,
row
=
None
):
kecamatan
=
row
and
row
.
kecamatan
or
None
provinsi_list
=
ResProvinsi
.
get_list
()
kecamatan_list
=
kecamatan
and
ResKecamatan
.
get_list
(
kecamatan
.
dati2_id
)
or
[]
kecamatan
=
row
and
row
.
kecamatan
or
None
dati2
=
kecamatan
and
kecamatan
.
dati2
or
None
kecamatan_list
=
kecamatan
and
ResKecamatan
.
get_list
(
kecamatan
.
dati2_id
)
or
[]
dati2_list
=
dati2
and
ResDati2
.
get_list
(
dati2
.
provinsi_id
)
or
[]
dati2
=
kecamatan
and
kecamatan
.
dati2
or
None
return
dict
(
dati2_list
=
dati2
and
ResDati2
.
get_list
(
dati2
.
provinsi_id
)
or
[]
provinsi_list
=
provinsi_list
,
return
dict
(
dati2_list
=
dati2_list
,
provinsi_list
=
provinsi_list
,
kecamatan_list
=
kecamatan_list
,
dati2_list
=
dati2_list
,
)
kecamatan_list
=
kecamatan_list
,
)
def
get_values
(
self
,
row
,
istime
=
False
):
d
=
super
()
.
get_values
(
row
,
istime
)
def
get_values
(
self
,
row
,
istime
=
False
):
kecamatan
=
row
and
row
.
kecamatan
or
None
d
=
super
()
.
get_values
(
row
,
istime
)
d
[
"dati2_id"
]
=
kecamatan
and
kecamatan
.
dati2_id
or
None
kecamatan
=
row
and
row
.
kecamatan
or
None
dati2
=
kecamatan
and
kecamatan
.
dati2
or
None
d
[
"dati2_id"
]
=
kecamatan
and
kecamatan
.
dati2_id
or
None
d
[
"provinsi_id"
]
=
dati2
and
dati2
.
provinsi_id
or
None
dati2
=
kecamatan
and
kecamatan
.
dati2
or
None
return
d
d
[
"provinsi_id"
]
=
dati2
and
dati2
.
provinsi_id
or
None
return
d
@view_config
(
route_name
=
'desa-view'
,
renderer
=
'templates/form.pt'
,
permission
=
'wilayah'
)
@view_config
(
route_name
=
'desa-view'
,
def
view_view
(
self
):
renderer
=
'templates/form.pt'
,
permission
=
'wilayah'
)
return
super
()
.
view_view
()
def
view_view
(
self
):
return
super
()
.
view_view
()
@view_config
(
route_name
=
'desa'
,
renderer
=
'templates/table.pt'
,
@view_config
(
route_name
=
'desa'
,
permission
=
'wilayah'
)
renderer
=
'templates/table.pt'
,
def
view_list
(
self
):
permission
=
'wilayah'
)
return
super
(
ViewDesa
,
self
)
.
view_list
()
def
view_list
(
self
):
return
super
(
ViewDesa
,
self
)
.
view_list
()
def
list_join
(
self
,
query
):
return
query
.
outerjoin
(
ResKecamatan
)
def
list_join
(
self
,
query
):
return
query
.
outerjoin
(
ResKecamatan
)
@view_config
(
route_name
=
'desa-act'
,
renderer
=
'json'
,
permission
=
'view'
)
@view_config
(
route_name
=
'desa-act'
,
renderer
=
'json'
,
def
view_act
(
self
):
permission
=
'view'
)
return
super
()
.
view_act
()
def
view_act
(
self
):
return
super
()
.
view_act
()
def
next_act
(
self
):
request
=
self
.
req
def
next_act
(
self
):
url_dict
=
request
.
matchdict
request
=
self
.
req
if
url_dict
[
'act'
]
==
'select'
:
url_dict
=
request
.
matchdict
kecamatan_id
=
request
.
params
[
"kecamatan_id"
]
if
url_dict
[
'act'
]
==
'select'
:
data
=
ResDesa
.
get_list
(
kecamatan_id
)
kecamatan_id
=
request
.
params
[
"kecamatan_id"
]
result
=
{
f
"{k[0]}"
:
k
[
1
]
for
k
in
data
}
data
=
ResDesa
.
get_list
(
kecamatan_id
)
return
result
result
=
{
f
"{k[0]}"
:
k
[
1
]
for
k
in
data
}
return
result
@view_config
(
route_name
=
'desa-add'
,
renderer
=
'templates/form.pt'
,
permission
=
'wilayah'
)
@view_config
(
route_name
=
'desa-add'
,
def
view_add
(
self
):
renderer
=
'templates/form.pt'
,
permission
=
'wilayah'
)
return
super
(
ViewDesa
,
self
)
.
view_add
()
def
view_add
(
self
):
return
super
(
ViewDesa
,
self
)
.
view_add
()
@view_config
(
route_name
=
'desa-edit'
,
renderer
=
'templates/form.pt'
,
permission
=
'wilayah'
)
@view_config
(
route_name
=
'desa-edit'
,
def
view_edt
(
self
):
renderer
=
'templates/form.pt'
,
permission
=
'wilayah'
)
return
super
(
ViewDesa
,
self
)
.
view_edit
()
def
view_edt
(
self
):
return
super
(
ViewDesa
,
self
)
.
view_edit
()
@view_config
(
route_name
=
'desa-delete'
,
renderer
=
'templates/form.pt'
,
permission
=
'wilayah'
)
@view_config
(
route_name
=
'desa-delete'
,
def
view_delete
(
self
):
renderer
=
'templates/form.pt'
,
permission
=
'wilayah'
)
return
super
(
ViewDesa
,
self
)
.
view_delete
()
def
view_delete
(
self
):
return
super
(
ViewDesa
,
self
)
.
view_delete
()
@view_config
(
route_name
=
'desa-upload'
,
renderer
=
'templates/form.pt'
,
permission
=
'wilayah'
)
@view_config
(
route_name
=
'desa-upload'
,
def
view_upload
(
self
):
renderer
=
'templates/form.pt'
,
permission
=
'wilayah'
)
return
super
()
.
view_upload
(
exts
=
(
'.csv'
,
".tsv"
))
def
view_upload
(
self
):
return
super
()
.
view_upload
(
exts
=
(
'.csv'
,
".tsv"
))
opensipkd/base/views/eselon.py
View file @
c67ff09
import
os
import
os
import
colander
import
colander
from
deform
import
(
from
deform
import
(
widget
,
widget
,
)
)
from
pyramid.view
import
(
from
pyramid.view
import
(
view_config
,
view_config
,
)
)
from
opensipkd.models
import
(
from
opensipkd.models
import
(
DBSession
,
DBSession
,
Eselon
Eselon
)
)
from
..views
import
BaseView
from
..views
import
BaseView
from
.
import
BaseView
,
btn_upload
from
.
import
BaseView
,
btn_upload
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.report
import
csv_response
,
file_response
from
opensipkd.tools.report
import
csv_response
,
file_response
from
opensipkd.tools
import
get_random_string
from
opensipkd.tools
import
get_random_string
SESS_ADD_FAILED
=
'Tambah eselon gagal'
SESS_ADD_FAILED
=
'Tambah eselon gagal'
SESS_EDIT_FAILED
=
'Edit eselon gagal'
SESS_EDIT_FAILED
=
'Edit eselon gagal'
class
AddSchema
(
colander
.
Schema
):
class
AddSchema
(
colander
.
Schema
):
kode
=
colander
.
SchemaNode
(
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
32
),
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
)
oid
=
"kode"
)
nama
=
colander
.
SchemaNode
(
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
128
),
validator
=
colander
.
Length
(
max
=
128
),
oid
=
"nama"
)
oid
=
"nama"
)
status
=
colander
.
SchemaNode
(
status
=
colander
.
SchemaNode
(
colander
.
Integer
(),
colander
.
Integer
(),
widget
=
widget
.
CheckboxWidget
(
true_val
=
'1'
,
false_val
=
'0'
),
widget
=
widget
.
CheckboxWidget
(
true_val
=
'1'
,
false_val
=
'0'
),
default
=
1
,
default
=
1
,
oid
=
"status"
)
oid
=
"status"
)
class
EditSchema
(
AddSchema
):
class
EditSchema
(
AddSchema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
id
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
missing
=
colander
.
drop
,
widget
=
widget
.
HiddenWidget
())
widget
=
widget
.
HiddenWidget
())
class
ListSchema
(
colander
.
Schema
):
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Action"
)
id
=
colander
.
SchemaNode
(
colander
.
String
(),
title
=
"Action"
)
kode
=
colander
.
SchemaNode
(
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
32
),
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
,
oid
=
"kode"
,
title
=
"Kode"
,
title
=
"Kode"
,
width
=
"100pt"
)
width
=
"100pt"
)
nama
=
colander
.
SchemaNode
(
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
64
),
validator
=
colander
.
Length
(
max
=
64
),
oid
=
"nama"
)
oid
=
"nama"
)
status
=
colander
.
SchemaNode
(
status
=
colander
.
SchemaNode
(
colander
.
Boolean
(),
colander
.
Boolean
(),
widget
=
widget
.
CheckboxWidget
(),
widget
=
widget
.
CheckboxWidget
(),
oid
=
"status"
)
oid
=
"status"
)
class
Views
(
BaseView
):
class
Views
(
BaseView
):
def
__init__
(
self
,
request
):
def
__init__
(
self
,
request
):
super
(
Views
,
self
)
.
__init__
(
request
)
super
(
Views
,
self
)
.
__init__
(
request
)
self
.
form_params
=
dict
(
scripts
=
""
)
self
.
form_params
=
dict
(
scripts
=
""
)
self
.
list_url
=
'eselon'
self
.
list_url
=
'eselon'
self
.
list_route
=
'eselon'
self
.
list_route
=
'eselon'
self
.
add_schema
=
AddSchema
self
.
add_schema
=
AddSchema
self
.
edit_schema
=
EditSchema
self
.
edit_schema
=
EditSchema
self
.
table
=
Eselon
self
.
table
=
Eselon
self
.
list_schema
=
ListSchema
self
.
list_schema
=
ListSchema
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
btn_upload
,)
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
btn_upload
,)
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
path
)
path
=
os
.
path
.
dirname
(
path
)
self
.
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'eselon.jrxml'
)
self
.
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'eselon.jrxml'
)
# Mendapatkan path gambar
# Mendapatkan path gambar
def
get_module_path
(
self
,
module_name
):
def
get_module_path
(
self
,
module_name
):
a
=
AssetResolver
(
module_name
)
a
=
AssetResolver
(
module_name
)
resolver
=
a
.
resolve
(
''
)
resolver
=
a
.
resolve
(
''
)
return
resolver
.
abspath
()
return
resolver
.
abspath
()
def
pdf_response
(
self
,
**
kwargs
):
def
pdf_response
(
self
,
**
kwargs
):
# print("PDF RESPONSE======================================")
# 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'
)
parameters
=
{
parameters
=
{
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"logo"
:
logo
"alamat_lengkap"
:
get_params
(
'address'
,
"Bekasi"
),
}
"logo"
:
logo
print
(
parameters
)
}
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
print
(
parameters
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
@staticmethod
def
query_register
():
@staticmethod
return
DBSession
.
query
(
Eselon
.
kode
,
Eselon
.
nama
,
Eselon
.
status
)
.
order_by
(
Eselon
.
kode
)
def
query_register
():
return
DBSession
.
query
(
Eselon
.
kode
,
Eselon
.
nama
,
Eselon
.
status
)
.
order_by
(
Eselon
.
kode
)
def
csv_response
(
self
,
**
kwargs
):
query
=
self
.
query_register
()
def
csv_response
(
self
,
**
kwargs
):
row
=
query
.
first
()
query
=
self
.
query_register
()
header
=
row
.
_mapping
.
keys
()
row
=
query
.
first
()
rows
=
[
list
(
item
)
for
item
in
query
.
all
()]
header
=
row
.
_mapping
.
keys
()
filename
=
f
"{get_random_string(16)}.csv"
rows
=
[
list
(
item
)
for
item
in
query
.
all
()]
value
=
{
filename
=
f
"{get_random_string(16)}.csv"
'header'
:
header
,
value
=
{
'rows'
:
rows
,
'header'
:
header
,
}
'rows'
:
rows
,
return
csv_response
(
self
.
req
,
value
,
filename
)
}
return
csv_response
(
self
.
req
,
value
,
filename
)
@view_config
(
route_name
=
'eselon'
,
renderer
=
'templates/table.pt'
,
permission
=
'eselon'
)
@view_config
(
route_name
=
'eselon'
,
renderer
=
'templates/table.pt'
,
def
view_list
(
self
):
permission
=
'eselon'
)
return
super
(
Views
,
self
)
.
view_list
()
def
view_list
(
self
):
return
super
(
Views
,
self
)
.
view_list
()
@view_config
(
route_name
=
'eselon-upload'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-upload'
)
@view_config
(
route_name
=
'eselon-upload'
,
def
view_upload
(
self
):
renderer
=
'templates/form.pt'
,
permission
=
'user-upload'
)
self
.
upload_keys
=
[
"kode"
]
def
view_upload
(
self
):
return
super
()
.
view_upload
(
exts
=
(
'.csv'
,
".tsv"
))
self
.
upload_keys
=
[
"kode"
]
return
super
()
.
view_upload
(
exts
=
(
'.csv'
,
".tsv"
))
@view_config
(
route_name
=
'eselon-act'
,
renderer
=
'json'
,
permission
=
'read'
)
@view_config
(
route_name
=
'eselon-act'
,
renderer
=
'json'
,
def
view_act
(
self
):
permission
=
'read'
)
return
super
(
Views
,
self
)
.
view_act
()
def
view_act
(
self
):
return
super
(
Views
,
self
)
.
view_act
()
def
next_act
(
self
):
params
=
self
.
params
def
next_act
(
self
):
url_dict
=
self
.
req
.
matchdict
params
=
self
.
params
if
url_dict
[
'act'
]
==
'hok'
:
url_dict
=
self
.
req
.
matchdict
term
=
'term'
in
params
and
params
[
'term'
]
or
''
if
url_dict
[
'act'
]
==
'hok'
:
qry
=
Eselon
.
query
()
.
\
term
=
'term'
in
params
and
params
[
'term'
]
or
''
filter
(
Eselon
.
kode
.
ilike
(
'
%%%
s
%%
'
%
term
))
.
\
qry
=
Eselon
.
query
()
.
\
order_by
(
Eselon
.
kode
)
filter
(
Eselon
.
kode
.
ilike
(
'
%%%
s
%%
'
%
term
))
.
\
order_by
(
Eselon
.
kode
)
r
=
[]
for
row
in
qry
.
all
():
r
=
[]
d
=
dict
(
for
row
in
qry
.
all
():
id
=
row
.
id
,
d
=
dict
(
value
=
row
.
kode
,
id
=
row
.
id
,
nama
=
row
.
nama
value
=
row
.
kode
,
)
nama
=
row
.
nama
r
.
append
(
d
)
)
return
r
r
.
append
(
d
)
return
r
elif
url_dict
[
'act'
]
==
'hon'
:
term
=
'term'
in
params
and
params
[
'term'
]
or
''
elif
url_dict
[
'act'
]
==
'hon'
:
prefix
=
'prefix'
in
params
and
params
[
'prefix'
]
or
''
term
=
'term'
in
params
and
params
[
'term'
]
or
''
qry
=
Eselon
.
query
()
.
\
prefix
=
'prefix'
in
params
and
params
[
'prefix'
]
or
''
filter
(
Eselon
.
nama
.
ilike
(
'
%%%
s
%%
'
%
term
))
.
\
qry
=
Eselon
.
query
()
.
\
order_by
(
Eselon
.
nama
)
filter
(
Eselon
.
nama
.
ilike
(
'
%%%
s
%%
'
%
term
))
.
\
r
=
[]
order_by
(
Eselon
.
nama
)
for
row
in
qry
.
all
():
r
=
[]
d
=
dict
(
for
row
in
qry
.
all
():
id
=
row
.
id
,
d
=
dict
(
value
=
row
.
nama
,
id
=
row
.
id
,
kode
=
row
.
kode
,
value
=
row
.
nama
,
)
kode
=
row
.
kode
,
r
.
append
(
d
)
)
return
r
r
.
append
(
d
)
return
r
@view_config
(
route_name
=
'eselon-add'
,
renderer
=
'templates/form.pt'
,
permission
=
'eselon'
)
@view_config
(
route_name
=
'eselon-add'
,
renderer
=
'templates/form.pt'
,
def
view_add
(
self
):
permission
=
'eselon'
)
return
super
()
.
view_add
()
def
view_add
(
self
):
return
super
()
.
view_add
()
@view_config
(
route_name
=
'eselon-edit'
,
renderer
=
'templates/form.pt'
,
permission
=
'eselon'
)
@view_config
(
route_name
=
'eselon-edit'
,
renderer
=
'templates/form.pt'
,
def
view_edit
(
self
):
permission
=
'eselon'
)
return
super
()
.
view_edit
()
def
view_edit
(
self
):
return
super
()
.
view_edit
()
@view_config
(
route_name
=
'eselon-view'
,
renderer
=
'templates/form.pt'
,
permission
=
'eselon'
)
@view_config
(
route_name
=
'eselon-view'
,
renderer
=
'templates/form.pt'
,
def
view_view
(
self
):
permission
=
'eselon'
)
return
super
()
.
view_view
()
def
view_view
(
self
):
return
super
()
.
view_view
()
@view_config
(
route_name
=
'eselon-delete'
,
renderer
=
'templates/form.pt'
,
permission
=
'eselon'
)
@view_config
(
route_name
=
'eselon-delete'
,
renderer
=
'templates/form.pt'
,
def
view_delete
(
self
):
permission
=
'eselon'
)
return
super
()
.
view_delete
()
def
view_delete
(
self
):
return
super
()
.
view_delete
()
def
form_validator
(
self
,
form
,
value
):
def
err_kode
():
def
form_validator
(
self
,
form
,
value
):
raise
colander
.
Invalid
(
form
,
def
err_kode
():
'Kode
%
s sudah digunakan oleh
%
s'
%
(
raise
colander
.
Invalid
(
form
,
value
[
'kode'
],
found
.
nama
))
'Kode
%
s sudah digunakan oleh
%
s'
%
(
value
[
'kode'
],
found
.
nama
))
def
err_nama
():
raise
colander
.
Invalid
(
form
,
def
err_nama
():
'Nama
%
s sudah digunakan oleh kode
%
s'
%
(
raise
colander
.
Invalid
(
form
,
value
[
'nama'
],
found
.
kode
))
'Nama
%
s sudah digunakan oleh kode
%
s'
%
(
value
[
'nama'
],
found
.
kode
))
# edit
def
err_ruang
():
# edit
raise
colander
.
Invalid
(
form
,
def
err_ruang
():
'Nama ruang
%
s tidak boleh lebih dari 1 karakter.'
%
(
raise
colander
.
Invalid
(
form
,
value
[
'ruang'
]))
'Nama ruang
%
s tidak boleh lebih dari 1 karakter.'
%
(
value
[
'ruang'
]))
if
'id'
in
form
.
request
.
matchdict
:
uid
=
form
.
request
.
matchdict
[
'id'
]
if
'id'
in
form
.
request
.
matchdict
:
q
=
DBSession
.
query
(
Eselon
)
.
filter_by
(
id
=
uid
)
uid
=
form
.
request
.
matchdict
[
'id'
]
eselon
=
q
.
first
()
q
=
DBSession
.
query
(
Eselon
)
.
filter_by
(
id
=
uid
)
else
:
eselon
=
q
.
first
()
eselon
=
None
else
:
eselon
=
None
q
=
Eselon
.
query_kode
(
value
[
'kode'
])
found
=
q
.
first
()
q
=
Eselon
.
query_kode
(
value
[
'kode'
])
if
eselon
:
found
=
q
.
first
()
if
found
and
found
.
id
!=
eselon
.
id
:
if
eselon
:
err_kode
()
if
found
and
found
.
id
!=
eselon
.
id
:
elif
found
:
err_kode
()
err_kode
()
elif
found
:
err_kode
()
found
=
Eselon
.
query_nama
(
value
[
'nama'
])
.
first
()
if
eselon
:
found
=
Eselon
.
query_nama
(
value
[
'nama'
])
.
first
()
if
found
and
found
.
id
!=
eselon
.
id
:
if
eselon
:
err_nama
()
if
found
and
found
.
id
!=
eselon
.
id
:
elif
found
:
err_nama
()
elif
found
:
err_nama
()
err_nama
()
\ No newline at end of file
\ No newline at end of file
opensipkd/base/views/groups.py
View file @
c67ff09
import
os
import
os
import
re
import
re
import
colander
import
colander
from
deform
import
widget
from
deform
import
widget
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.view
import
view_config
from
pyramid.view
import
view_config
from
.
import
BaseView
,
btn_upload
from
.
import
BaseView
,
btn_upload
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
.
import
BaseView
from
.
import
BaseView
from
opensipkd.tools
import
get_random_string
from
opensipkd.tools
import
get_random_string
from
opensipkd.tools.report
import
csv_response
,
file_response
from
opensipkd.tools.report
import
csv_response
,
file_response
from
opensipkd.models
import
(
from
opensipkd.models
import
(
DBSession
,
DBSession
,
Group
,
Group
,
Permission
,
Permission
,
GroupPermission
,
GroupPermission
,
)
)
_
=
TranslationStringFactory
(
'user'
)
_
=
TranslationStringFactory
(
'user'
)
@colander.deferred
@colander.deferred
def
name_validator
(
node
,
kw
):
def
name_validator
(
node
,
kw
):
return
NameValidator
(
kw
[
'group'
])
return
NameValidator
(
kw
[
'group'
])
@colander.deferred
@colander.deferred
def
permissions_widget
(
node
,
kw
):
def
permissions_widget
(
node
,
kw
):
values
=
kw
.
get
(
'permissions_list'
,
[])
values
=
kw
.
get
(
'permissions_list'
,
[])
return
widget
.
CheckboxChoiceWidget
(
values
=
values
)
return
widget
.
CheckboxChoiceWidget
(
values
=
values
)
class
AddSchema
(
colander
.
Schema
):
class
AddSchema
(
colander
.
Schema
):
group_name
=
colander
.
SchemaNode
(
group_name
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
validator
=
name_validator
)
validator
=
name_validator
)
description
=
colander
.
SchemaNode
(
description
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
256
),
validator
=
colander
.
Length
(
max
=
256
),
missing
=
colander
.
drop
)
missing
=
colander
.
drop
)
permissions
=
colander
.
SchemaNode
(
permissions
=
colander
.
SchemaNode
(
colander
.
Set
(),
widget
=
permissions_widget
,
title
=
'Hak akses'
,
missing
=
colander
.
drop
)
colander
.
Set
(),
widget
=
permissions_widget
,
title
=
'Hak akses'
,
missing
=
colander
.
drop
)
class
EditSchema
(
AddSchema
):
class
EditSchema
(
AddSchema
):
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
widget
=
widget
.
HiddenWidget
(
readonly
=
True
),
widget
=
widget
.
HiddenWidget
(
readonly
=
True
),
missing
=
colander
.
drop
)
missing
=
colander
.
drop
)
class
ListSchema
(
colander
.
Schema
):
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
visible
=
False
,
title
=
"Action"
)
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
visible
=
False
,
title
=
"Action"
)
group_name
=
colander
.
SchemaNode
(
group_name
=
colander
.
SchemaNode
(
colander
.
String
(),
)
colander
.
String
(),
)
description
=
colander
.
SchemaNode
(
colander
.
String
())
description
=
colander
.
SchemaNode
(
colander
.
String
())
class
Views
(
BaseView
):
class
Views
(
BaseView
):
def
__init__
(
self
,
request
):
def
__init__
(
self
,
request
):
super
(
Views
,
self
)
.
__init__
(
request
)
super
(
Views
,
self
)
.
__init__
(
request
)
self
.
list_schema
=
ListSchema
self
.
list_schema
=
ListSchema
self
.
list_route
=
"group"
self
.
list_route
=
"group"
self
.
table
=
Group
self
.
table
=
Group
self
.
add_schema
=
AddSchema
self
.
add_schema
=
AddSchema
self
.
edit_schema
=
EditSchema
self
.
edit_schema
=
EditSchema
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
btn_upload
,)
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
btn_upload
,)
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
path
)
path
=
os
.
path
.
dirname
(
path
)
self
.
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'Group.jrxml'
)
self
.
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'Group.jrxml'
)
# Mendapatkan path gambar
# Mendapatkan path gambar
def
get_module_path
(
self
,
module_name
):
def
get_module_path
(
self
,
module_name
):
a
=
AssetResolver
(
module_name
)
a
=
AssetResolver
(
module_name
)
resolver
=
a
.
resolve
(
''
)
resolver
=
a
.
resolve
(
''
)
return
resolver
.
abspath
()
return
resolver
.
abspath
()
def
pdf_response
(
self
,
**
kwargs
):
def
pdf_response
(
self
,
**
kwargs
):
# print("PDF RESPONSE======================================")
# 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'
)
parameters
=
{
parameters
=
{
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"logo"
:
logo
"alamat_lengkap"
:
get_params
(
'address'
,
"Bekasi"
),
}
"logo"
:
logo
print
(
parameters
)
}
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
print
(
parameters
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
def
get_bindings
(
self
,
row
=
None
):
return
dict
(
group
=
row
,
def
get_bindings
(
self
,
row
=
None
):
permissions_list
=
get_permissions_list
())
return
dict
(
group
=
row
,
@staticmethod
permissions_list
=
get_permissions_list
())
def
query_register
():
@staticmethod
return
DBSession
.
query
(
Group
.
group_name
,
Group
.
description
,
Group
.
permissions
)
.
order_by
(
Group
.
group_name
)
def
query_register
():
return
DBSession
.
query
(
Group
.
group_name
,
Group
.
description
,
Group
.
permissions
)
.
order_by
(
Group
.
group_name
)
def
csv_response
(
self
,
**
kwargs
):
query
=
self
.
query_register
()
def
csv_response
(
self
,
**
kwargs
):
row
=
query
.
first
()
query
=
self
.
query_register
()
header
=
row
.
_mapping
.
keys
()
row
=
query
.
first
()
rows
=
[
list
(
item
)
for
item
in
query
.
all
()]
header
=
row
.
_mapping
.
keys
()
filename
=
f
"{get_random_string(16)}.csv"
rows
=
[
list
(
item
)
for
item
in
query
.
all
()]
value
=
{
filename
=
f
"{get_random_string(16)}.csv"
'header'
:
header
,
value
=
{
'rows'
:
rows
,
'header'
:
header
,
}
'rows'
:
rows
,
return
csv_response
(
self
.
req
,
value
,
filename
)
}
return
csv_response
(
self
.
req
,
value
,
filename
)
@view_config
(
route_name
=
'group'
,
renderer
=
'templates/table.pt'
,
@view_config
(
permission
=
'user-view'
)
route_name
=
'group'
,
renderer
=
'templates/table.pt'
,
def
view_list
(
self
):
permission
=
'user-view'
)
return
super
(
Views
,
self
)
.
view_list
()
def
view_list
(
self
):
return
super
(
Views
,
self
)
.
view_list
()
@view_config
(
route_name
=
'group-act'
,
renderer
=
'json'
,
permission
=
'user-view'
)
@view_config
(
def
view_act
(
self
):
route_name
=
'group-act'
,
renderer
=
'json'
,
permission
=
'user-view'
)
return
super
(
Views
,
self
)
.
view_act
()
def
view_act
(
self
):
return
super
(
Views
,
self
)
.
view_act
()
def
next_act
(
self
):
request
=
self
.
req
def
next_act
(
self
):
url_dict
=
request
.
matchdict
request
=
self
.
req
params
=
self
.
params
url_dict
=
request
.
matchdict
if
url_dict
[
'act'
]
==
'hon'
:
params
=
self
.
params
term
=
'term'
in
params
and
params
[
'term'
]
or
''
if
url_dict
[
'act'
]
==
'hon'
:
q
=
DBSession
.
query
(
Group
.
id
,
Group
.
description
)
.
filter
(
term
=
'term'
in
params
and
params
[
'term'
]
or
''
Group
.
description
.
ilike
(
'
%
{}
%
'
.
format
(
term
)))
.
\
q
=
DBSession
.
query
(
Group
.
id
,
Group
.
description
)
.
filter
(
order_by
(
Group
.
group_name
)
Group
.
description
.
ilike
(
'
%
{}
%
'
.
format
(
term
)))
.
\
rows
=
q
.
all
()
order_by
(
Group
.
group_name
)
r
=
[]
rows
=
q
.
all
()
for
k
in
rows
:
r
=
[]
d
=
dict
(
id
=
k
[
0
],
value
=
k
[
1
])
for
k
in
rows
:
r
.
append
(
d
)
d
=
dict
(
id
=
k
[
0
],
value
=
k
[
1
])
return
r
r
.
append
(
d
)
return
r
@view_config
(
route_name
=
'group-add'
,
renderer
=
'templates/form.pt'
,
@view_config
(
permission
=
'user-edit'
)
route_name
=
'group-add'
,
renderer
=
'templates/form.pt'
,
def
view_add
(
self
):
permission
=
'user-edit'
)
return
super
(
Views
,
self
)
.
view_add
()
def
view_add
(
self
):
return
super
(
Views
,
self
)
.
view_add
()
def
save_request
(
self
,
values
,
row
=
None
):
insert
=
not
row
def
save_request
(
self
,
values
,
row
=
None
):
vals
=
values
.
copy
()
insert
=
not
row
vals
.
pop
(
'permissions'
)
vals
=
values
.
copy
()
row
=
self
.
save
(
vals
,
self
.
req
.
user
,
row
)
vals
.
pop
(
'permissions'
)
existing
=
group_permission_set
(
row
)
row
=
self
.
save
(
vals
,
self
.
req
.
user
,
row
)
unused
=
existing
-
values
[
'permissions'
]
existing
=
group_permission_set
(
row
)
if
unused
:
unused
=
existing
-
values
[
'permissions'
]
q
=
DBSession
.
query
(
GroupPermission
)
.
filter_by
(
group_id
=
row
.
id
)
.
\
if
unused
:
filter
(
GroupPermission
.
perm_name
.
in_
(
unused
))
q
=
DBSession
.
query
(
GroupPermission
)
.
filter_by
(
group_id
=
row
.
id
)
.
\
q
.
delete
(
synchronize_session
=
False
)
filter
(
GroupPermission
.
perm_name
.
in_
(
unused
))
new
=
values
[
'permissions'
]
-
existing
q
.
delete
(
synchronize_session
=
False
)
for
perm_name
in
new
:
new
=
values
[
'permissions'
]
-
existing
gp
=
GroupPermission
()
for
perm_name
in
new
:
gp
.
group_id
=
row
.
id
gp
=
GroupPermission
()
gp
.
perm_name
=
perm_name
gp
.
group_id
=
row
.
id
DBSession
.
add
(
gp
)
gp
.
perm_name
=
perm_name
data
=
dict
(
group_name
=
row
.
group_name
)
DBSession
.
add
(
gp
)
if
insert
:
data
=
dict
(
group_name
=
row
.
group_name
)
ts
=
_
(
'group-added'
,
default
=
'{group_name} group has been added.'
,
mapping
=
data
)
if
insert
:
ts
=
_
(
'group-added'
,
default
=
'{group_name} group has been added.'
,
mapping
=
data
)
else
:
ts
=
_
(
'group-updated'
,
default
=
'${group_name} group profile updated'
,
mapping
=
data
)
else
:
self
.
ses
.
flash
(
ts
)
ts
=
_
(
'group-updated'
,
default
=
'${group_name} group profile updated'
,
mapping
=
data
)
return
row
self
.
ses
.
flash
(
ts
)
return
row
def
get_values
(
self
,
row
,
istime
=
False
):
values
=
super
(
Views
,
self
)
.
get_values
(
row
,
istime
)
def
get_values
(
self
,
row
,
istime
=
False
):
values
[
'permissions'
]
=
group_permission_set
(
row
)
values
=
super
(
Views
,
self
)
.
get_values
(
row
,
istime
)
return
values
values
[
'permissions'
]
=
group_permission_set
(
row
)
return
values
@view_config
(
route_name
=
'group-view'
,
renderer
=
'templates/form.pt'
,
@view_config
(
permission
=
'user-view'
)
route_name
=
'group-view'
,
renderer
=
'templates/form.pt'
,
def
view_view
(
self
):
permission
=
'user-view'
)
return
super
(
Views
,
self
)
.
view_view
()
def
view_view
(
self
):
return
super
(
Views
,
self
)
.
view_view
()
@view_config
(
route_name
=
'group-upload'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-upload'
)
@view_config
(
route_name
=
'group-upload'
,
def
view_upload
(
self
):
renderer
=
'templates/form.pt'
,
permission
=
'user-upload'
)
self
.
upload_keys
=
[
"group_name"
]
def
view_upload
(
self
):
return
super
()
.
view_upload
(
exts
=
(
'.csv'
,
".tsv"
))
self
.
upload_keys
=
[
"group_name"
]
return
super
()
.
view_upload
(
exts
=
(
'.csv'
,
".tsv"
))
@view_config
(
route_name
=
'group-edit'
,
renderer
=
'templates/form.pt'
,
@view_config
(
permission
=
'user-edit'
)
route_name
=
'group-edit'
,
renderer
=
'templates/form.pt'
,
def
view_edit
(
self
):
permission
=
'user-edit'
)
return
super
(
Views
,
self
)
.
view_edit
()
def
view_edit
(
self
):
return
super
(
Views
,
self
)
.
view_edit
()
#def delete_msg(self, row):
#data = dict(group_name=row.group_name)
#def delete_msg(self, row):
#ts = _('group-deleted',
#data = dict(group_name=row.group_name)
#default='{group_name} group has been deleted.',
#ts = _('group-deleted',
#mapping=data)
#default='{group_name} group has been deleted.',
#self.ses.flash(ts)
#mapping=data)
#self.ses.flash(ts)
@view_config
(
route_name
=
'group-delete'
,
renderer
=
'templates/form.pt'
,
@view_config
(
permission
=
'user-edit'
)
route_name
=
'group-delete'
,
renderer
=
'templates/form.pt'
,
def
view_delete
(
self
):
permission
=
'user-edit'
)
return
super
(
Views
,
self
)
.
view_delete
()
def
view_delete
(
self
):
return
super
(
Views
,
self
)
.
view_delete
()
def
clean_name
(
s
):
s
=
s
.
strip
()
def
clean_name
(
s
):
while
s
.
find
(
' '
)
>
-
1
:
s
=
s
.
strip
()
s
=
s
.
replace
(
' '
,
' '
)
while
s
.
find
(
' '
)
>
-
1
:
return
s
s
=
s
.
replace
(
' '
,
' '
)
return
s
class
Validator
:
def
__init__
(
self
,
group
):
class
Validator
:
self
.
group
=
group
def
__init__
(
self
,
group
):
self
.
group
=
group
class
NameValidator
(
Validator
):
class
NameValidator
(
Validator
):
def
__call__
(
self
,
node
,
value
):
group_name
=
value
def
__call__
(
self
,
node
,
value
):
def
group_max
():
group_name
=
value
raise
colander
.
Invalid
(
node
,
_
(
'Maksimal 128 karakter'
))
def
group_max
():
raise
colander
.
Invalid
(
node
,
_
(
'Maksimal 128 karakter'
))
# Jika karakter melebihi 128 karakter maka, panggil fungsi
if
(
len
(
group_name
)
>
128
):
# Jika karakter melebihi 128 karakter maka, panggil fungsi
group_max
()
if
(
len
(
group_name
)
>
128
):
group_max
()
if
self
.
group
and
self
.
group
.
group_name
.
lower
()
==
group_name
.
lower
():
return
if
self
.
group
and
self
.
group
.
group_name
.
lower
()
==
group_name
.
lower
():
return
q
=
DBSession
.
query
(
Group
)
.
\
filter
(
Group
.
group_name
.
ilike
(
group_name
))
q
=
DBSession
.
query
(
Group
)
.
\
found
=
q
.
first
()
filter
(
Group
.
group_name
.
ilike
(
group_name
))
if
not
found
:
found
=
q
.
first
()
return
if
not
found
:
data
=
dict
(
group_name
=
group_name
,
gid
=
found
.
id
)
return
ts
=
_
(
data
=
dict
(
group_name
=
group_name
,
gid
=
found
.
id
)
'group-name-already-used'
,
ts
=
_
(
default
=
'Group name ${group_name} already used by ID ${gid}'
,
'group-name-already-used'
,
mapping
=
data
)
default
=
'Group name ${group_name} already used by ID ${gid}'
,
raise
colander
.
Invalid
(
node
,
ts
)
mapping
=
data
)
raise
colander
.
Invalid
(
node
,
ts
)
@colander.deferred
def
name_validator
(
node
,
kw
):
@colander.deferred
return
NameValidator
(
kw
[
'group'
])
def
name_validator
(
node
,
kw
):
return
NameValidator
(
kw
[
'group'
])
@colander.deferred
def
permissions_widget
(
node
,
kw
):
@colander.deferred
values
=
kw
.
get
(
'permission_list'
,
[])
def
permissions_widget
(
node
,
kw
):
return
widget
.
CheckboxChoiceWidget
(
values
=
values
)
values
=
kw
.
get
(
'permission_list'
,
[])
return
widget
.
CheckboxChoiceWidget
(
values
=
values
)
def
get_permissions_list
():
q
=
DBSession
.
query
(
Permission
)
def
get_permissions_list
():
r
=
[]
q
=
DBSession
.
query
(
Permission
)
for
perm
in
q
.
order_by
(
Permission
.
description
):
r
=
[]
row
=
(
perm
.
perm_name
,
perm
.
description
)
for
perm
in
q
.
order_by
(
Permission
.
description
):
r
.
append
(
row
)
row
=
(
perm
.
perm_name
,
perm
.
description
)
return
r
r
.
append
(
row
)
return
r
def
group_permission_set
(
group
):
q
=
DBSession
.
query
(
GroupPermission
)
.
filter_by
(
group_id
=
group
.
id
)
def
group_permission_set
(
group
):
r
=
[]
q
=
DBSession
.
query
(
GroupPermission
)
.
filter_by
(
group_id
=
group
.
id
)
for
gp
in
q
:
r
=
[]
r
.
append
(
gp
.
perm_name
)
for
gp
in
q
:
return
set
(
r
)
r
.
append
(
gp
.
perm_name
)
return
set
(
r
)
opensipkd/base/views/partner.py
View file @
c67ff09
import
os
import
os
import
logging
import
logging
import
colander
import
colander
from
deform
import
(
from
deform
import
(
widget
,
Button
,
widget
,
Button
,
)
)
from
opensipkd.base
import
get_id_card_folder
from
opensipkd.base
import
get_id_card_folder
from
opensipkd.models
import
DBSession
,
Partner
,
PartnerFiles
from
opensipkd.models
import
DBSession
,
Partner
,
PartnerFiles
from
opensipkd.models
import
(
from
opensipkd.models
import
(
ResProvinsi
,
ResDati2
,
ResKecamatan
,
ResDesa
)
ResProvinsi
,
ResDati2
,
ResKecamatan
,
ResDesa
)
from
opensipkd.models.common
import
ResCompany
from
opensipkd.models.common
import
ResCompany
from
.
import
BaseView
,
btn_upload
from
.
import
BaseView
,
btn_upload
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.report
import
csv_response
,
file_response
from
opensipkd.tools.report
import
csv_response
,
file_response
from
opensipkd.tools
import
Upload
,
img_exts
from
opensipkd.tools
import
Upload
,
img_exts
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.i18n
import
TranslationStringFactory
from
opensipkd.tools
import
get_random_string
from
opensipkd.tools
import
get_random_string
from
pyramid.view
import
(
from
pyramid.view
import
(
view_config
,
view_config
,
)
)
from
.
import
BaseView
,
btn_upload
from
.
import
BaseView
,
btn_upload
from
.company
import
company_widget
from
.company
import
company_widget
from
.partner_base
import
PartnerSchema
from
.partner_base
import
PartnerSchema
# from .. import partner_idcard_url
# from .. import partner_idcard_url
from
..views
import
BaseView
from
..views
import
BaseView
log
=
logging
.
getLogger
(
__name__
)
log
=
logging
.
getLogger
(
__name__
)
_
=
TranslationStringFactory
(
"opensipkd"
)
_
=
TranslationStringFactory
(
"opensipkd"
)
SESS_ADD_FAILED
=
'Tambah partner gagal'
SESS_ADD_FAILED
=
'Tambah partner gagal'
SESS_EDIT_FAILED
=
'Edit partner gagal'
SESS_EDIT_FAILED
=
'Edit partner gagal'
class
AddSchema
(
PartnerSchema
):
class
AddSchema
(
PartnerSchema
):
is_vendor
=
colander
.
SchemaNode
(
is_vendor
=
colander
.
SchemaNode
(
colander
.
Integer
(),
colander
.
Integer
(),
widget
=
widget
.
CheckboxWidget
(
true_val
=
"1"
,
false_val
=
"0"
),
widget
=
widget
.
CheckboxWidget
(
true_val
=
"1"
,
false_val
=
"0"
),
oid
=
"is_vendor"
,
oid
=
"is_vendor"
,
title
=
"Vendor"
)
title
=
"Vendor"
)
is_customer
=
colander
.
SchemaNode
(
is_customer
=
colander
.
SchemaNode
(
colander
.
Integer
(),
colander
.
Integer
(),
widget
=
widget
.
CheckboxWidget
(
true_val
=
"1"
,
false_val
=
"0"
),
widget
=
widget
.
CheckboxWidget
(
true_val
=
"1"
,
false_val
=
"0"
),
oid
=
"is_customer"
,
oid
=
"is_customer"
,
title
=
"Customer"
)
title
=
"Customer"
)
company_id
=
colander
.
SchemaNode
(
company_id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
colander
.
Integer
(),
widget
=
company_widget
,
widget
=
company_widget
,
missing
=
colander
.
drop
,
missing
=
colander
.
drop
,
oid
=
"company_id"
,
oid
=
"company_id"
,
title
=
"Company"
)
title
=
"Company"
)
def
after_bind
(
self
,
schema
,
kwargs
):
def
after_bind
(
self
,
schema
,
kwargs
):
super
()
.
after_bind
(
schema
,
kwargs
)
super
()
.
after_bind
(
schema
,
kwargs
)
request
=
kwargs
[
"request"
]
request
=
kwargs
[
"request"
]
if
request
.
user
.
company_id
:
if
request
.
user
.
company_id
:
self
[
"company_id"
]
.
widget
=
widget
.
HiddenWidget
()
self
[
"company_id"
]
.
widget
=
widget
.
HiddenWidget
()
self
[
"company_id"
]
.
default
=
request
.
user
.
company_id
self
[
"company_id"
]
.
default
=
request
.
user
.
company_id
class
EditSchema
(
AddSchema
):
class
EditSchema
(
AddSchema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
id
=
colander
.
SchemaNode
(
colander
.
String
(),
missing
=
colander
.
drop
,
missing
=
colander
.
drop
,
widget
=
widget
.
HiddenWidget
(),
widget
=
widget
.
HiddenWidget
(),
)
)
def
after_bind
(
self
,
schema
,
kwargs
):
def
after_bind
(
self
,
schema
,
kwargs
):
super
()
.
after_bind
(
schema
,
kwargs
)
super
()
.
after_bind
(
schema
,
kwargs
)
class
ListSchema
(
colander
.
Schema
):
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
title
=
_
(
"action"
,
default
=
"Action"
))
title
=
_
(
"action"
,
default
=
"Action"
))
kode
=
colander
.
SchemaNode
(
kode
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
32
),
validator
=
colander
.
Length
(
max
=
32
),
oid
=
"kode"
,
oid
=
"kode"
,
title
=
"Kode"
,
title
=
"Kode"
,
width
=
"100pt"
)
width
=
"100pt"
)
nama
=
colander
.
SchemaNode
(
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
validator
=
colander
.
Length
(
max
=
128
),
validator
=
colander
.
Length
(
max
=
128
),
oid
=
"nama"
)
oid
=
"nama"
)
email
=
colander
.
SchemaNode
(
email
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
oid
=
"email"
)
oid
=
"email"
)
idcard
=
colander
.
SchemaNode
(
idcard
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
oid
=
"idcard"
,
oid
=
"idcard"
,
title
=
"Identitas"
title
=
"Identitas"
)
)
status
=
colander
.
SchemaNode
(
status
=
colander
.
SchemaNode
(
colander
.
Boolean
(),
colander
.
Boolean
(),
widget
=
widget
.
CheckboxWidget
(),
widget
=
widget
.
CheckboxWidget
(),
oid
=
"status"
)
oid
=
"status"
)
created
=
colander
.
SchemaNode
(
created
=
colander
.
SchemaNode
(
colander
.
String
())
colander
.
String
())
def
after_bind
(
self
,
schema
,
kw
):
def
after_bind
(
self
,
schema
,
kw
):
request
=
kw
.
get
(
"request"
)
request
=
kw
.
get
(
"request"
)
self
[
"idcard"
]
.
url
=
request
.
static_url
(
get_id_card_folder
(
"/"
))
self
[
"idcard"
]
.
url
=
request
.
static_url
(
get_id_card_folder
(
"/"
))
class
ViewPartner
(
BaseView
):
class
ViewPartner
(
BaseView
):
def
__init__
(
self
,
request
):
def
__init__
(
self
,
request
):
super
()
.
__init__
(
request
)
super
()
.
__init__
(
request
)
self
.
form_params
=
dict
(
scripts
=
""
)
self
.
form_params
=
dict
(
scripts
=
""
)
self
.
list_url
=
'partner'
self
.
list_url
=
'partner'
self
.
list_route
=
'partner'
self
.
list_route
=
'partner'
self
.
add_schema
=
AddSchema
self
.
add_schema
=
AddSchema
self
.
edit_schema
=
EditSchema
self
.
edit_schema
=
EditSchema
self
.
table
=
Partner
self
.
table
=
Partner
self
.
list_schema
=
ListSchema
self
.
list_schema
=
ListSchema
self
.
save_state
=
True
self
.
save_state
=
True
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
btn_upload
,)
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
btn_upload
,)
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
path
)
path
=
os
.
path
.
dirname
(
path
)
self
.
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'partner1.jrxml'
)
self
.
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'partner1.jrxml'
)
# Mendapatkan path gambar
# Mendapatkan path gambar
def
get_module_path
(
self
,
module_name
):
def
get_module_path
(
self
,
module_name
):
a
=
AssetResolver
(
module_name
)
a
=
AssetResolver
(
module_name
)
resolver
=
a
.
resolve
(
''
)
resolver
=
a
.
resolve
(
''
)
return
resolver
.
abspath
()
return
resolver
.
abspath
()
def
pdf_response
(
self
,
**
kwargs
):
def
pdf_response
(
self
,
**
kwargs
):
# print("PDF RESPONSE======================================")
# 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'
)
parameters
=
{
parameters
=
{
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"logo"
:
logo
"alamat_lengkap"
:
get_params
(
'address'
,
"Bekasi"
),
}
"logo"
:
logo
print
(
parameters
)
}
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
print
(
parameters
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
@staticmethod
def
query_register
():
@staticmethod
return
DBSession
.
query
(
Partner
.
is_vendor
,
Partner
.
is_customer
,
Partner
.
company_id
)
.
order_by
(
Partner
.
is_vendor
)
def
query_register
():
return
DBSession
.
query
(
Partner
.
is_vendor
,
Partner
.
is_customer
,
Partner
.
company_id
)
.
order_by
(
Partner
.
is_vendor
)
def
csv_response
(
self
,
**
kwargs
):
query
=
self
.
query_register
()
def
csv_response
(
self
,
**
kwargs
):
row
=
query
.
first
()
query
=
self
.
query_register
()
header
=
row
.
_mapping
.
keys
()
row
=
query
.
first
()
rows
=
[
list
(
item
)
for
item
in
query
.
all
()]
header
=
row
.
_mapping
.
keys
()
filename
=
f
"{get_random_string(16)}.csv"
rows
=
[
list
(
item
)
for
item
in
query
.
all
()]
value
=
{
filename
=
f
"{get_random_string(16)}.csv"
'header'
:
header
,
value
=
{
'rows'
:
rows
,
'header'
:
header
,
}
'rows'
:
rows
,
return
csv_response
(
self
.
req
,
value
,
filename
)
}
return
csv_response
(
self
.
req
,
value
,
filename
)
########
# List #
########
########
# List #
@view_config
(
route_name
=
'partner'
,
renderer
=
'templates/table.pt'
,
########
permission
=
'user-view'
)
@view_config
(
route_name
=
'partner'
,
renderer
=
'templates/table.pt'
,
def
view_list
(
self
):
permission
=
'user-view'
)
new_buttons
=
{
"kta"
:
def
view_list
(
self
):
{
"obj"
:
"kta"
,
new_buttons
=
{
"kta"
:
"js"
:
"""if (m{tableid}ID!=null)
{
"obj"
:
"kta"
,
window.location=o{tableid}Uri+'/'+m{tableid}ID+'/kta?{params}';
"js"
:
"""if (m{tableid}ID!=null)
else displayEmptyID();
window.location=o{tableid}Uri+'/'+m{tableid}ID+'/kta?{params}';
"""
else displayEmptyID();
},
"""
"ktp"
:
},
{
"obj"
:
Button
(
"ktp"
,
title
=
_
(
'KTP'
),
css_class
=
"btn-danger"
),
"ktp"
:
"js"
:
"""if (m{tableid}ID!=null)
{
"obj"
:
Button
(
"ktp"
,
title
=
_
(
'KTP'
),
css_class
=
"btn-danger"
),
window.location=o{tableid}Uri+'/'+m{tableid}ID+'/ktp?{params}';
"js"
:
"""if (m{tableid}ID!=null)
else displayEmptyID();
window.location=o{tableid}Uri+'/'+m{tableid}ID+'/ktp?{params}';
"""
else displayEmptyID();
}
"""
}
}
return
super
()
.
view_list
(
new_buttons
=
new_buttons
)
}
return
super
()
.
view_list
(
new_buttons
=
new_buttons
)
@view_config
(
route_name
=
'partner-act'
,
renderer
=
'json'
,
permission
=
'user-view'
)
@view_config
(
route_name
=
'partner-act'
,
renderer
=
'json'
,
def
view_act
(
self
):
permission
=
'user-view'
)
return
super
()
.
view_act
()
def
view_act
(
self
):
return
super
()
.
view_act
()
def
next_act
(
self
):
request
=
self
.
req
def
next_act
(
self
):
params
=
request
.
params
request
=
self
.
req
url_dict
=
request
.
matchdict
params
=
request
.
params
if
url_dict
[
'act'
]
==
'hok'
:
url_dict
=
request
.
matchdict
term
=
'term'
in
params
and
params
[
'term'
]
or
''
if
url_dict
[
'act'
]
==
'hok'
:
prefix
=
'prefix'
in
params
and
params
[
'prefix'
]
or
''
term
=
'term'
in
params
and
params
[
'term'
]
or
''
q
=
DBSession
.
query
(
Partner
.
id
,
Partner
.
kode
.
label
(
'value'
),
prefix
=
'prefix'
in
params
and
params
[
'prefix'
]
or
''
Partner
.
kode
,
Partner
.
nama
)
.
\
q
=
DBSession
.
query
(
Partner
.
id
,
Partner
.
kode
.
label
(
'value'
),
filter
(
Partner
.
nama
.
ilike
(
'
%%%
s
%%
'
%
term
))
.
\
Partner
.
kode
,
Partner
.
nama
)
.
\
filter
(
Partner
.
is_vendor
==
1
)
.
\
filter
(
Partner
.
nama
.
ilike
(
'
%%%
s
%%
'
%
term
))
.
\
order_by
(
Partner
.
nama
)
filter
(
Partner
.
is_vendor
==
1
)
.
\
keys
=
q
.
first
()
.
keys
()
order_by
(
Partner
.
nama
)
r
=
[]
keys
=
q
.
first
()
.
keys
()
for
k
in
q
.
all
():
r
=
[]
d
=
dict
(
zip
(
keys
,
k
))
for
k
in
q
.
all
():
r
.
append
(
d
)
d
=
dict
(
zip
(
keys
,
k
))
return
r
r
.
append
(
d
)
return
r
elif
url_dict
[
'act'
]
==
'hon'
:
term
=
'term'
in
params
and
params
[
'term'
]
or
''
elif
url_dict
[
'act'
]
==
'hon'
:
prefix
=
'prefix'
in
params
and
params
[
'prefix'
]
or
''
term
=
'term'
in
params
and
params
[
'term'
]
or
''
q
=
DBSession
.
query
(
Partner
.
id
,
Partner
.
nama
.
label
(
'value'
),
prefix
=
'prefix'
in
params
and
params
[
'prefix'
]
or
''
Partner
.
kode
,
Partner
.
nama
)
.
\
q
=
DBSession
.
query
(
Partner
.
id
,
Partner
.
nama
.
label
(
'value'
),
filter
(
Partner
.
nama
.
ilike
(
'
%%%
s
%%
'
%
term
))
.
\
Partner
.
kode
,
Partner
.
nama
)
.
\
order_by
(
Partner
.
nama
)
filter
(
Partner
.
nama
.
ilike
(
'
%%%
s
%%
'
%
term
))
.
\
row
=
q
.
first
()
order_by
(
Partner
.
nama
)
if
not
row
:
row
=
q
.
first
()
return
[]
if
not
row
:
return
[]
keys
=
row
.
keys
()
r
=
[
dict
(
zip
(
keys
,
k
))
for
k
in
q
.
all
()]
keys
=
row
.
keys
()
return
r
r
=
[
dict
(
zip
(
keys
,
k
))
for
k
in
q
.
all
()]
return
r
elif
url_dict
[
'act'
]
==
'vendor'
:
# vendor only
term
=
'term'
in
params
and
params
[
'term'
]
or
''
elif
url_dict
[
'act'
]
==
'vendor'
:
# vendor only
prefix
=
'prefix'
in
params
and
params
[
'prefix'
]
or
''
term
=
'term'
in
params
and
params
[
'term'
]
or
''
q
=
DBSession
.
query
(
Partner
.
id
,
Partner
.
nama
.
label
(
'value'
),
prefix
=
'prefix'
in
params
and
params
[
'prefix'
]
or
''
Partner
.
kode
,
Partner
.
nama
)
.
\
q
=
DBSession
.
query
(
Partner
.
id
,
Partner
.
nama
.
label
(
'value'
),
filter
(
Partner
.
nama
.
ilike
(
'
%%%
s
%%
'
%
term
))
.
\
Partner
.
kode
,
Partner
.
nama
)
.
\
filter
(
Partner
.
is_vendor
==
1
)
.
\
filter
(
Partner
.
nama
.
ilike
(
'
%%%
s
%%
'
%
term
))
.
\
order_by
(
Partner
.
nama
)
filter
(
Partner
.
is_vendor
==
1
)
.
\
keys
=
q
.
first
()
.
keys
()
order_by
(
Partner
.
nama
)
r
=
[]
keys
=
q
.
first
()
.
keys
()
for
k
in
q
.
all
():
r
=
[]
d
=
dict
(
zip
(
keys
,
k
))
for
k
in
q
.
all
():
r
.
append
(
d
)
d
=
dict
(
zip
(
keys
,
k
))
return
r
r
.
append
(
d
)
return
r
elif
url_dict
[
'act'
]
==
'customer'
:
# customer only
term
=
'term'
in
params
and
params
[
'term'
]
or
''
elif
url_dict
[
'act'
]
==
'customer'
:
# customer only
prefix
=
'prefix'
in
params
and
params
[
'prefix'
]
or
''
term
=
'term'
in
params
and
params
[
'term'
]
or
''
q
=
DBSession
.
query
(
Partner
.
id
,
Partner
.
nama
.
label
(
'value'
),
prefix
=
'prefix'
in
params
and
params
[
'prefix'
]
or
''
Partner
.
kode
,
Partner
.
nama
)
.
\
q
=
DBSession
.
query
(
Partner
.
id
,
Partner
.
nama
.
label
(
'value'
),
filter
(
Partner
.
nama
.
ilike
(
'
%%%
s
%%
'
%
term
))
.
\
Partner
.
kode
,
Partner
.
nama
)
.
\
filter
(
Partner
.
is_customer
==
1
)
.
\
filter
(
Partner
.
nama
.
ilike
(
'
%%%
s
%%
'
%
term
))
.
\
order_by
(
Partner
.
nama
)
filter
(
Partner
.
is_customer
==
1
)
.
\
keys
=
q
.
first
()
.
keys
()
order_by
(
Partner
.
nama
)
r
=
[]
keys
=
q
.
first
()
.
keys
()
for
k
in
q
.
all
():
r
=
[]
d
=
dict
(
zip
(
keys
,
k
))
for
k
in
q
.
all
():
r
.
append
(
d
)
d
=
dict
(
zip
(
keys
,
k
))
return
r
r
.
append
(
d
)
return
r
@view_config
(
route_name
=
'partner-add'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-edit'
)
@view_config
(
route_name
=
'partner-add'
,
renderer
=
'templates/form.pt'
,
def
view_add
(
self
):
permission
=
'user-edit'
)
return
super
()
.
view_add
()
def
view_add
(
self
):
return
super
()
.
view_add
()
@view_config
(
route_name
=
'partner-edit'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-edit'
)
@view_config
(
route_name
=
'partner-edit'
,
renderer
=
'templates/form.pt'
,
def
view_edt
(
self
):
permission
=
'user-edit'
)
return
super
()
.
view_edit
()
def
view_edt
(
self
):
return
super
()
.
view_edit
()
@view_config
(
route_name
=
'partner-view'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-edit'
)
@view_config
(
route_name
=
'partner-view'
,
renderer
=
'templates/form.pt'
,
def
view_view
(
self
):
permission
=
'user-edit'
)
return
super
()
.
view_view
()
def
view_view
(
self
):
return
super
()
.
view_view
()
@view_config
(
route_name
=
'partner-upload'
,
renderer
=
'templates/upload.pt'
,
permission
=
'user-upload'
)
@view_config
(
route_name
=
'partner-upload'
,
def
view_upload
(
self
):
renderer
=
'templates/upload.pt'
,
permission
=
'user-upload'
)
self
.
upload_keys
=
[
"kode"
]
def
view_upload
(
self
):
return
super
(
ViewPartner
,
self
)
.
view_upload
(
exts
=
(
'.csv'
,
".tsv"
))
self
.
upload_keys
=
[
"kode"
]
return
super
(
ViewPartner
,
self
)
.
view_upload
(
exts
=
(
'.csv'
,
".tsv"
))
@view_config
(
route_name
=
'partner-delete'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-edit'
)
@view_config
(
route_name
=
'partner-delete'
,
renderer
=
'templates/form.pt'
,
def
view_delete
(
self
):
permission
=
'user-edit'
)
return
super
()
.
view_delete
()
def
view_delete
(
self
):
return
super
()
.
view_delete
()
def
form_validator
(
self
,
form
,
value
):
def
err_kode
():
def
form_validator
(
self
,
form
,
value
):
raise
colander
.
Invalid
(
form
,
def
err_kode
():
'Kode
%
s sudah digunakan oleh
%
s'
%
(
raise
colander
.
Invalid
(
form
,
value
[
'kode'
],
found
.
nama
))
'Kode
%
s sudah digunakan oleh
%
s'
%
(
value
[
'kode'
],
found
.
nama
))
if
'id'
in
form
.
request
.
matchdict
:
uid
=
form
.
request
.
matchdict
[
'id'
]
if
'id'
in
form
.
request
.
matchdict
:
q
=
DBSession
.
query
(
Partner
)
.
filter_by
(
id
=
uid
)
uid
=
form
.
request
.
matchdict
[
'id'
]
row
=
q
.
first
()
q
=
DBSession
.
query
(
Partner
)
.
filter_by
(
id
=
uid
)
else
:
row
=
q
.
first
()
row
=
None
else
:
row
=
None
q
=
Partner
.
query_kode
(
value
[
'kode'
])
found
=
q
.
first
()
q
=
Partner
.
query_kode
(
value
[
'kode'
])
if
row
:
found
=
q
.
first
()
if
found
and
found
.
id
!=
row
.
id
:
if
row
:
err_kode
()
if
found
and
found
.
id
!=
row
.
id
:
elif
found
:
err_kode
()
err_kode
()
elif
found
:
if
"idcard"
in
value
and
value
[
"idcard"
]:
err_kode
()
idcard
=
value
[
"idcard"
]
if
"idcard"
in
value
and
value
[
"idcard"
]:
if
"fp"
in
idcard
and
idcard
[
"fp"
]
and
idcard
[
"fp"
]
!=
b
''
:
idcard
=
value
[
"idcard"
]
path
=
get_id_card_folder
()
if
"fp"
in
idcard
and
idcard
[
"fp"
]
and
idcard
[
"fp"
]
!=
b
''
:
upload
=
Upload
(
path
)
path
=
get_id_card_folder
()
value
[
"idcard"
]
=
upload
.
save_fp
(
idcard
)
upload
=
Upload
(
path
)
value
[
"idcard"
]
=
upload
.
save_fp
(
idcard
)
else
:
value
.
pop
(
"idcard"
)
else
:
value
.
pop
(
"idcard"
)
value
[
'is_vendor'
]
=
'is_vendor'
in
value
and
\
value
[
'is_vendor'
]
and
1
or
0
value
[
'is_vendor'
]
=
'is_vendor'
in
value
and
\
value
[
'is_customer'
]
=
'is_customer'
in
value
and
\
value
[
'is_vendor'
]
and
1
or
0
value
[
'is_customer'
]
and
1
or
0
value
[
'is_customer'
]
=
'is_customer'
in
value
and
\
value
[
"status"
]
=
'status'
in
value
and
value
[
'status'
]
and
1
or
0
value
[
'is_customer'
]
and
1
or
0
value
[
"status"
]
=
'status'
in
value
and
value
[
'status'
]
and
1
or
0
def
get_bindings
(
self
,
row
=
None
):
result
=
super
()
.
get_bindings
(
row
)
def
get_bindings
(
self
,
row
=
None
):
provinsi_list
=
ResProvinsi
.
get_list
()
result
=
super
()
.
get_bindings
(
row
)
dati2_list
=
row
and
row
.
provinsi_id
and
ResDati2
.
get_list
(
provinsi_list
=
ResProvinsi
.
get_list
()
row
.
provinsi_id
)
or
[]
dati2_list
=
row
and
row
.
provinsi_id
and
ResDati2
.
get_list
(
kecamatan_list
=
row
and
row
.
dati2_id
and
ResKecamatan
.
get_list
(
row
.
provinsi_id
)
or
[]
row
.
dati2_id
)
or
[]
kecamatan_list
=
row
and
row
.
dati2_id
and
ResKecamatan
.
get_list
(
desa_list
=
row
and
row
.
kecamatan_id
and
ResDesa
.
get_list
(
row
.
dati2_id
)
or
[]
row
.
kecamatan_id
)
or
[]
desa_list
=
row
and
row
.
kecamatan_id
and
ResDesa
.
get_list
(
result
.
update
(
dict
(
row
.
kecamatan_id
)
or
[]
provinsi_list
=
provinsi_list
,
result
.
update
(
dict
(
dati2_list
=
dati2_list
,
provinsi_list
=
provinsi_list
,
kecamatan_list
=
kecamatan_list
,
dati2_list
=
dati2_list
,
desa_list
=
desa_list
,
kecamatan_list
=
kecamatan_list
,
company_list
=
ResCompany
.
get_list
()
desa_list
=
desa_list
,
))
company_list
=
ResCompany
.
get_list
()
))
return
result
return
result
def
save_request
(
self
,
values
,
row
=
None
):
# if "idcard" in values and values["idcard"]:
def
save_request
(
self
,
values
,
row
=
None
):
# if str(self.req.POST['upload']) != "":
# if "idcard" in values and values["idcard"]:
# folder = self.get_params("idcard_folder", '/tmp/idcard')
# if str(self.req.POST['upload']) != "":
# upload = Upload(folder)
# folder = self.get_params("idcard_folder", '/tmp/idcard')
# file_name = upload.save(self.req, 'upload', img_exts)
# upload = Upload(folder)
# values["idcard"] = file_name
# file_name = upload.save(self.req, 'upload', img_exts)
# else:
# values["idcard"] = file_name
# del values["idcard"]
# else:
# del values["idcard"]
row
=
super
()
.
save_request
(
values
,
row
)
return
row
row
=
super
()
.
save_request
(
values
,
row
)
return
row
def
get_values
(
self
,
row
,
istime
=
False
):
d
=
super
()
.
get_values
(
row
,
istime
)
def
get_values
(
self
,
row
,
istime
=
False
):
if
"idcard"
in
d
and
d
[
"idcard"
]:
d
=
super
()
.
get_values
(
row
,
istime
)
filename
=
d
[
"idcard"
]
if
"idcard"
in
d
and
d
[
"idcard"
]:
url
=
self
.
req
.
static_url
(
get_id_card_folder
(
"/"
))
filename
=
d
[
"idcard"
]
preview_url
=
"/"
.
join
([
url
,
filename
])
url
=
self
.
req
.
static_url
(
get_id_card_folder
(
"/"
))
log
.
info
(
preview_url
)
preview_url
=
"/"
.
join
([
url
,
filename
])
d
[
"idcard"
]
=
{
"uid"
:
filename
.
split
(
"."
)[
0
],
log
.
info
(
preview_url
)
"filename"
:
filename
,
d
[
"idcard"
]
=
{
"uid"
:
filename
.
split
(
"."
)[
0
],
"preview_url"
:
preview_url
"filename"
:
filename
,
}
"preview_url"
:
preview_url
return
d
}
return
d
def
before_delete
(
self
,
row
):
PartnerFiles
.
query
()
.
filter_by
(
partner_id
=
row
.
id
)
.
delete
()
def
before_delete
(
self
,
row
):
PartnerFiles
.
query
()
.
filter_by
(
partner_id
=
row
.
id
)
.
delete
()
@colander.deferred
def
partner_widget
(
node
,
kw
):
@colander.deferred
values
=
kw
.
get
(
'partner_list'
,
[])
def
partner_widget
(
node
,
kw
):
return
widget
.
Select2Widget
(
values
=
values
)
values
=
kw
.
get
(
'partner_list'
,
[])
return
widget
.
Select2Widget
(
values
=
values
)
opensipkd/base/views/user_area.py
View file @
c67ff09
import
os
import
os
import
colander
import
colander
import
logging
import
logging
from
deform
import
widget
from
deform
import
widget
from
pyramid.view
import
view_config
from
pyramid.view
import
view_config
from
.
import
BaseView
,
btn_upload
from
.
import
BaseView
,
btn_upload
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
...models
import
DBSession
,
ResDesa
,
User
,
UserArea
from
...models
import
DBSession
,
ResDesa
,
User
,
UserArea
from
.desa
import
desa_widget
,
get_desa_list
from
.desa
import
desa_widget
,
get_desa_list
from
sqlalchemy
import
func
from
sqlalchemy
import
func
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.i18n
import
TranslationStringFactory
from
opensipkd.tools.report
import
csv_response
,
file_response
from
opensipkd.tools.report
import
csv_response
,
file_response
from
opensipkd.tools
import
get_random_string
from
opensipkd.tools
import
get_random_string
_
=
TranslationStringFactory
(
'myapp'
)
_
=
TranslationStringFactory
(
'myapp'
)
log
=
logging
.
getLogger
(
__name__
)
log
=
logging
.
getLogger
(
__name__
)
class
ListSchema
(
colander
.
Schema
):
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
colander
.
Integer
(),
title
=
"Action"
title
=
"Action"
)
)
user_name
=
colander
.
SchemaNode
(
user_name
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
field
=
User
.
user_name
,
field
=
User
.
user_name
,
title
=
"User"
title
=
"User"
)
)
desa_kd
=
colander
.
SchemaNode
(
desa_kd
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
field
=
ResDesa
.
kode
)
field
=
ResDesa
.
kode
)
desa_name
=
colander
.
SchemaNode
(
desa_name
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
field
=
ResDesa
.
nama
)
field
=
ResDesa
.
nama
)
@colander.deferred
@colander.deferred
def
desa_checkbox_widget
(
node
,
kw
):
def
desa_checkbox_widget
(
node
,
kw
):
values
=
kw
.
get
(
'desa_list'
,
[])
values
=
kw
.
get
(
'desa_list'
,
[])
return
widget
.
CheckboxChoiceWidget
(
values
=
values
)
# Tetap menggunakan CheckboxChoiceWidget
return
widget
.
CheckboxChoiceWidget
(
values
=
values
)
def
single_choice_validator
(
node
,
value
):
def
single_choice_validator
(
node
,
value
):
"""Validator untuk memastikan hanya satu opsi yang dipilih."""
"""Validator untuk memastikan hanya satu opsi yang dipilih."""
if
len
(
value
)
>
1
:
if
len
(
value
)
>
1
:
raise
colander
.
Invalid
(
node
,
"Hanya boleh memilih satu Kelurahan/Desa."
)
raise
colander
.
Invalid
(
node
,
"Hanya boleh memilih satu Kelurahan/Desa."
)
class
AddSchema
(
colander
.
Schema
):
class
AddSchema
(
colander
.
Schema
):
user_id
=
colander
.
SchemaNode
(
user_id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
colander
.
Integer
(),
widget
=
widget
.
SelectWidget
(
values
=
User
.
get_list
()),
widget
=
widget
.
SelectWidget
(
values
=
User
.
get_list
()),
oid
=
"user_id"
,
oid
=
"user_id"
,
title
=
"User"
,
title
=
"User"
,
)
)
desa_id
=
colander
.
SchemaNode
(
desa_id
=
colander
.
SchemaNode
(
colander
.
Set
(),
# Kembali ke colander.Set()
colander
.
Set
(),
widget
=
desa_checkbox_widget
,
widget
=
desa_checkbox_widget
,
validator
=
single_choice_validator
,
# Tambahkan validator
validator
=
single_choice_validator
,
oid
=
"desa_id"
,
oid
=
"desa_id"
,
title
=
"Kelurahan/Desa"
,
title
=
"Kelurahan/Desa"
,
)
)
class
EditSchema
(
AddSchema
):
class
EditSchema
(
AddSchema
):
id
=
colander
.
SchemaNode
(
colander
.
String
(),
id
=
colander
.
SchemaNode
(
missing
=
colander
.
drop
,
colander
.
String
(),
widget
=
widget
.
HiddenWidget
(
readonly
=
True
))
missing
=
colander
.
drop
,
widget
=
widget
.
HiddenWidget
(
readonly
=
True
)
class
Views
(
BaseView
):
)
def
__init__
(
self
,
request
):
user_id
=
colander
.
SchemaNode
(
super
(
Views
,
self
)
.
__init__
(
request
)
colander
.
Integer
(),
self
.
list_schema
=
ListSchema
missing
=
colander
.
drop
,
self
.
add_schema
=
AddSchema
widget
=
widget
.
SelectWidget
(
values
=
User
.
get_list
(),
readonly
=
True
),
# Ditampilkan, tetapi readonly
self
.
edit_schema
=
EditSchema
oid
=
"user_id"
,
self
.
list_route
=
'user-area'
title
=
"User"
,
self
.
table
=
UserArea
)
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
btn_upload
,)
path
=
os
.
path
.
dirname
(
__file__
)
class
Views
(
BaseView
):
path
=
os
.
path
.
dirname
(
path
)
def
__init__
(
self
,
request
):
self
.
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'user_area.jrxml'
)
super
(
Views
,
self
)
.
__init__
(
request
)
self
.
list_schema
=
ListSchema
# Mendapatkan path gambar
self
.
add_schema
=
AddSchema
def
get_module_path
(
self
,
module_name
):
self
.
edit_schema
=
EditSchema
a
=
AssetResolver
(
module_name
)
self
.
list_route
=
'user-area'
resolver
=
a
.
resolve
(
''
)
self
.
table
=
UserArea
return
resolver
.
abspath
()
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
btn_upload
,)
path
=
os
.
path
.
dirname
(
__file__
)
def
pdf_response
(
self
,
**
kwargs
):
path
=
os
.
path
.
dirname
(
path
)
from
opensipkd.base.tools.report
import
jasper_export
self
.
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'user_area.jrxml'
)
logo
=
self
.
get_module_path
(
'opensipkd.base'
)
logo
=
os
.
path
.
join
(
logo
,
'static'
,
'img'
,
'logo.png'
)
def
get_module_path
(
self
,
module_name
):
parameters
=
{
a
=
AssetResolver
(
module_name
)
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
resolver
=
a
.
resolve
(
''
)
"logo"
:
logo
return
resolver
.
abspath
()
}
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
def
pdf_response
(
self
,
**
kwargs
):
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
from
opensipkd.base.tools.report
import
jasper_export
logo
=
self
.
get_module_path
(
'opensipkd.base'
)
@staticmethod
logo
=
os
.
path
.
join
(
logo
,
'static'
,
'img'
,
'logo.png'
)
def
query_register
():
parameters
=
{
return
DBSession
.
query
(
UserArea
.
user_id
,
UserArea
.
desa_id
)
.
order_by
(
UserArea
.
user_id
)
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"alamat_lengkap"
:
get_params
(
'address'
,
"Bekasi"
),
def
csv_response
(
self
,
**
kwargs
):
"logo"
:
logo
query
=
self
.
query_register
()
# Panggil sebagai metode instance
}
row
=
query
.
first
()
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
header
=
row
.
_mapping
.
keys
()
if
row
else
[
'user_id'
,
'desa_id'
]
# Tambahkan fallback jika query kosong
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
rows
=
[
list
(
item
)
for
item
in
query
.
all
()]
filename
=
f
"{get_random_string(16)}.csv"
@staticmethod
value
=
{
def
query_register
():
'header'
:
header
,
return
DBSession
.
query
(
UserArea
.
user_id
,
UserArea
.
desa_id
)
.
order_by
(
UserArea
.
user_id
)
'rows'
:
rows
,
}
def
csv_response
(
self
,
**
kwargs
):
return
csv_response
(
self
.
req
,
value
,
filename
)
query
=
self
.
query_register
()
row
=
query
.
first
()
def
list_join
(
self
,
query
,
**
kwargs
):
header
=
row
.
_mapping
.
keys
()
if
row
else
[
'user_id'
,
'desa_id'
]
return
query
.
outerjoin
(
ResDesa
,
ResDesa
.
id
==
self
.
table
.
desa_id
)
\
rows
=
[
list
(
item
)
for
item
in
query
.
all
()]
.
outerjoin
(
User
,
User
.
id
==
self
.
table
.
user_id
)
filename
=
f
"{get_random_string(16)}.csv"
value
=
{
@view_config
(
route_name
=
'user-area'
,
renderer
=
'templates/table.pt'
,
'header'
:
header
,
permission
=
'user-view'
)
'rows'
:
rows
,
def
view_list
(
self
,
**
kwargs
):
}
return
super
(
Views
,
self
)
.
view_list
(
**
kwargs
)
return
csv_response
(
self
.
req
,
value
,
filename
)
@view_config
(
route_name
=
'user-area-act'
,
renderer
=
'json'
,
def
list_join
(
self
,
query
,
**
kwargs
):
permission
=
'user-view'
)
return
query
.
outerjoin
(
ResDesa
,
ResDesa
.
id
==
self
.
table
.
desa_id
)
\
def
view_act
(
self
):
.
outerjoin
(
User
,
User
.
id
==
self
.
table
.
user_id
)
return
super
(
Views
,
self
)
.
view_act
()
@view_config
(
route_name
=
'user-area'
,
renderer
=
'templates/table.pt'
,
def
get_bindings
(
self
,
row
=
None
):
permission
=
'user-view'
)
return
{
def
view_list
(
self
,
**
kwargs
):
"desa_list"
:
get_desa_list
()
return
super
(
Views
,
self
)
.
view_list
(
**
kwargs
)
}
@view_config
(
route_name
=
'user-area-act'
,
renderer
=
'json'
,
@view_config
(
route_name
=
'user-area-add'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-view'
)
permission
=
'user-edit'
)
def
view_act
(
self
):
def
view_add
(
self
):
return
super
(
Views
,
self
)
.
view_act
()
return
super
(
Views
,
self
)
.
view_add
()
def
get_bindings
(
self
,
row
=
None
):
@view_config
(
route_name
=
'user-area-view'
,
renderer
=
'templates/form.pt'
,
return
{
permission
=
'user-view'
)
"desa_list"
:
get_desa_list
()
def
view_view
(
self
):
}
return
super
(
Views
,
self
)
.
view_view
()
@view_config
(
route_name
=
'user-area-add'
,
renderer
=
'templates/form.pt'
,
@view_config
(
route_name
=
'user-area-delete'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-edit'
)
permission
=
'user-edit'
)
def
view_add
(
self
):
def
view_delete
(
self
):
return
super
(
Views
,
self
)
.
view_add
()
return
super
(
Views
,
self
)
.
view_delete
()
@view_config
(
route_name
=
'user-area-view'
,
renderer
=
'templates/form.pt'
,
@view_config
(
route_name
=
'user-area-upload'
,
permission
=
'user-view'
)
renderer
=
'templates/upload.pt'
,
permission
=
'user-upload'
)
def
view_view
(
self
):
def
view_upload
(
self
):
return
super
(
Views
,
self
)
.
view_view
()
self
.
upload_keys
=
[
"user_id"
]
return
super
(
Views
,
self
)
.
view_upload
(
exts
=
(
'.csv'
,
".tsv"
))
@view_config
(
route_name
=
'user-area-delete'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-edit'
)
@view_config
(
route_name
=
'user-area-edit'
,
renderer
=
'templates/form.pt'
,
def
view_delete
(
self
):
permission
=
'user-edit'
)
return
super
(
Views
,
self
)
.
view_delete
()
def
view_edit
(
self
):
return
super
(
Views
,
self
)
.
view_edit
()
@view_config
(
route_name
=
'user-area-upload'
,
renderer
=
'templates/upload.pt'
,
permission
=
'user-upload'
)
def
save_request
(
self
,
values
,
row
=
None
):
def
view_upload
(
self
):
user_id
=
values
.
get
(
"user_id"
)
self
.
upload_keys
=
[
"user_id"
]
if
not
user_id
:
return
super
(
Views
,
self
)
.
view_upload
(
exts
=
(
'.csv'
,
".tsv"
))
return
None
desa_ids
=
values
.
get
(
"desa_id"
)
@view_config
(
route_name
=
'user-area-edit'
,
renderer
=
'templates/form.pt'
,
if
desa_ids
:
permission
=
'user-edit'
)
desa_id
=
next
(
iter
(
desa_ids
))
if
desa_ids
else
None
def
view_edit
(
self
):
if
desa_id
is
not
None
:
return
super
(
Views
,
self
)
.
view_edit
()
existing_desa
=
self
.
get_existing_desa
(
user_id
)
desa_id_str
=
str
(
desa_id
)
def
save_request
(
self
,
values
,
row
=
None
):
if
desa_id_str
not
in
existing_desa
:
if
row
:
# Mode Edit: Perbarui entri yang ada
DBSession
.
query
(
UserArea
)
.
filter_by
(
user_id
=
user_id
)
.
delete
(
synchronize_session
=
False
)
desa_ids
=
values
.
get
(
"desa_id"
)
new_row
=
UserArea
(
if
desa_ids
:
user_id
=
user_id
,
desa_id
=
next
(
iter
(
desa_ids
))
if
desa_ids
else
None
desa_id
=
int
(
desa_id
)
if
desa_id
is
not
None
:
)
row
.
desa_id
=
int
(
desa_id
)
# Perbarui desa_id pada row yang ada
DBSession
.
add
(
new_row
)
# user_id tidak diubah, tetap dari row.user_id
DBSession
.
flush
()
DBSession
.
add
(
row
)
return
row
DBSession
.
flush
()
return
row
def
get_existing_desa
(
self
,
user_id
):
return
None
q
=
DBSession
.
query
(
UserArea
)
.
filter_by
(
user_id
=
user_id
)
else
:
# Mode Tambah: Buat entri baru tanpa menghapus entri lama
r
=
[]
user_id
=
values
.
get
(
"user_id"
)
for
ug
in
q
:
if
not
user_id
:
r
.
append
(
str
(
ug
.
desa_id
))
return
None
return
set
(
r
)
desa_ids
=
values
.
get
(
"desa_id"
)
if
desa_ids
:
def
get_values
(
self
,
row
,
istime
=
False
):
desa_id
=
next
(
iter
(
desa_ids
))
if
desa_ids
else
None
d
=
super
(
Views
,
self
)
.
get_values
(
row
,
istime
)
if
desa_id
is
not
None
:
existing_desa
=
self
.
get_existing_desa
(
row
.
user_id
)
new_row
=
UserArea
(
d
[
"desa_id"
]
=
{
next
(
iter
(
existing_desa
))}
if
existing_desa
else
set
()
user_id
=
user_id
,
desa_id
=
int
(
desa_id
)
)
DBSession
.
add
(
new_row
)
DBSession
.
flush
()
return
new_row
return
None
def
get_existing_desa
(
self
,
user_id
):
q
=
DBSession
.
query
(
UserArea
)
.
filter_by
(
user_id
=
user_id
)
r
=
[]
for
ug
in
q
:
r
.
append
(
str
(
ug
.
desa_id
))
return
set
(
r
)
def
get_values
(
self
,
row
,
istime
=
False
):
# Call the parent class's get_values to get the base dictionary
d
=
super
(
Views
,
self
)
.
get_values
(
row
,
istime
)
# Populate the form with the existing data from the selected row
d
[
"id"
]
=
str
(
row
.
id
)
# Hidden field for the row ID
d
[
"user_id"
]
=
row
.
user_id
# Pre-fill user_id (readonly in edit form)
d
[
"desa_id"
]
=
{
str
(
row
.
desa_id
)}
# Pre-fill desa_id as a single-item set
return
d
return
d
\ No newline at end of file
\ No newline at end of file
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment