Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
aa.gusti
/
tangsel-base
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 9e83e1b3
authored
May 27, 2025
by
aa.gustiana@gmail.com
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
perubahan image captcha
1 parent
50ebf886
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
90 additions
and
55 deletions
development.ini
tangsel/base/__init__.py
tangsel/base/models/base.py
tangsel/base/models/users.py
tangsel/base/scripts/initializedb.py
tangsel/base/tools/db.py
tangsel/base/tools/report.py
tangsel/base/views/__init__.py
tangsel/base/views/base_views.py
tangsel/base/views/common.py
tangsel/base/views/partner.py
tangsel/base/views/partner_base.py
tangsel/base/views/register.py
tangsel/base/views/user.py
tangsel/base/views/user_login.py
tangsel/base/widgets/widget_os.py
tangsel/tools/captcha.py
development.ini
View file @
9e83e1b
...
@@ -40,6 +40,7 @@ localization = English_Australia.1252
...
@@ -40,6 +40,7 @@ localization = English_Australia.1252
# Base Configuration
# Base Configuration
temp_files
=
C:
\t
mp
temp_files
=
C:
\t
mp
captcha_files
=
C:
\t
mp
\c
aptcha
partner_doc
=
C:
\\
tmp
\\
docs
\\
partner
\\
partner_doc
=
C:
\\
tmp
\\
docs
\\
partner
\\
;home_tpl = tangsel.samsat.jabar.views:templates/login.pt
;home_tpl = tangsel.samsat.jabar.views:templates/login.pt
;login_tpl = tangsel.samsat.jabar.views:templates/login.pt
;login_tpl = tangsel.samsat.jabar.views:templates/login.pt
...
...
tangsel/base/__init__.py
View file @
9e83e1b
...
@@ -12,7 +12,7 @@ from pyramid.config import Configurator
...
@@ -12,7 +12,7 @@ from pyramid.config import Configurator
from
pyramid.events
import
NewRequest
,
BeforeRender
,
subscriber
from
pyramid.events
import
NewRequest
,
BeforeRender
,
subscriber
from
pyramid_mailer
import
mailer_factory_from_settings
from
pyramid_mailer
import
mailer_factory_from_settings
from
opensipkd
.tools
import
get_settings
,
DefaultTimeZone
,
dmy
,
dmyhms
from
tangsel
.tools
import
get_settings
,
DefaultTimeZone
,
dmy
,
dmyhms
from
.security
import
MySecurityPolicy
,
get_user
from
.security
import
MySecurityPolicy
,
get_user
from
sqlalchemy
import
engine_from_config
from
sqlalchemy
import
engine_from_config
from
.models.base
import
DBSession
from
.models.base
import
DBSession
...
@@ -218,7 +218,7 @@ def get_config(settings):
...
@@ -218,7 +218,7 @@ def get_config(settings):
config
.
add_static_view
(
'deform_static'
,
'deform:static'
,
config
.
add_static_view
(
'deform_static'
,
'deform:static'
,
cache_max_age
=
3600
)
cache_max_age
=
3600
)
config
.
add_renderer
(
'csv'
,
'
opensipkd
.tools.CSVRenderer'
)
config
.
add_renderer
(
'csv'
,
'
tangsel
.tools.CSVRenderer'
)
config
.
add_renderer
(
'json'
,
json_renderer
())
config
.
add_renderer
(
'json'
,
json_renderer
())
config
.
add_renderer
(
'json_rpc'
,
json_rpc
())
config
.
add_renderer
(
'json_rpc'
,
json_rpc
())
config
.
registry
[
'mailer'
]
=
mailer_factory_from_settings
(
settings
)
config
.
registry
[
'mailer'
]
=
mailer_factory_from_settings
(
settings
)
...
@@ -244,7 +244,7 @@ def get_config(settings):
...
@@ -244,7 +244,7 @@ def get_config(settings):
# # config.add_request_method(get_module_menus, 'get_module_menus', reify=True)
# # config.add_request_method(get_module_menus, 'get_module_menus', reify=True)
# # config.add_request_method(get_module_submenus, 'get_module_submenus', reify=True)
# # config.add_request_method(get_module_submenus, 'get_module_submenus', reify=True)
# # config.add_translation_dirs('
opensipkd
.base:locale/')
# # config.add_translation_dirs('
tangsel
.base:locale/')
# partner_files = get_params("partner_files", settings=settings,
# partner_files = get_params("partner_files", settings=settings,
# alternate="/tmp/partner")
# alternate="/tmp/partner")
...
...
tangsel/base/models/base.py
View file @
9e83e1b
...
@@ -2,7 +2,7 @@ import logging
...
@@ -2,7 +2,7 @@ import logging
from
datetime
import
datetime
from
datetime
import
datetime
import
ziggurat_foundations.models
import
ziggurat_foundations.models
from
opensipkd
.tools
import
as_timezone
from
tangsel
.tools
import
as_timezone
from
sqlalchemy
import
Column
,
String
,
SmallInteger
,
Integer
,
DateTime
,
func
,
Numeric
from
sqlalchemy
import
Column
,
String
,
SmallInteger
,
Integer
,
DateTime
,
func
,
Numeric
from
sqlalchemy
import
inspect
as
sa_inspect
from
sqlalchemy
import
inspect
as
sa_inspect
from
sqlalchemy.ext.hybrid
import
hybrid_property
from
sqlalchemy.ext.hybrid
import
hybrid_property
...
...
tangsel/base/models/users.py
View file @
9e83e1b
...
@@ -2,7 +2,7 @@ from datetime import datetime
...
@@ -2,7 +2,7 @@ from datetime import datetime
import
pytz
import
pytz
import
sqlalchemy
as
sa
import
sqlalchemy
as
sa
from
opensipkd
.tools
import
as_timezone
from
tangsel
.tools
import
as_timezone
from
pyramid.authorization
import
(
Allow
,
Authenticated
,
ALL_PERMISSIONS
)
from
pyramid.authorization
import
(
Allow
,
Authenticated
,
ALL_PERMISSIONS
)
from
sqlalchemy
import
(
from
sqlalchemy
import
(
Column
,
Integer
,
DateTime
,
String
)
Column
,
Integer
,
DateTime
,
String
)
...
...
tangsel/base/scripts/initializedb.py
View file @
9e83e1b
...
@@ -25,7 +25,7 @@ from sqlalchemy.schema import CreateSchema
...
@@ -25,7 +25,7 @@ from sqlalchemy.schema import CreateSchema
from
sqlalchemy.sql.sqltypes
import
BOOLEAN
from
sqlalchemy.sql.sqltypes
import
BOOLEAN
from
ziggurat_foundations.models.services.user
import
UserService
from
ziggurat_foundations.models.services.user
import
UserService
from
opensipkd
.tools
import
get_ext
from
tangsel
.tools
import
get_ext
log
=
logging
.
getLogger
(
__name__
)
log
=
logging
.
getLogger
(
__name__
)
...
...
tangsel/base/tools/db.py
View file @
9e83e1b
from
sqlalchemy
import
func
from
sqlalchemy
import
func
# from
opensipkd
.base.models import Parameter
# from
tangsel
.base.models import Parameter
def
column_concat
(
cols
=
None
):
def
column_concat
(
cols
=
None
):
...
...
tangsel/base/tools/report.py
View file @
9e83e1b
...
@@ -6,7 +6,7 @@ import logging
...
@@ -6,7 +6,7 @@ import logging
import
os
import
os
from
tangsel.tools.report
import
*
from
tangsel.tools.report
import
*
log
=
logging
.
getLogger
(
__name__
)
log
=
logging
.
getLogger
(
__name__
)
log
.
warning
(
"Opensipkd.base.tools.pbb depreciated use
opensipkd
.tools.pbb"
)
log
.
warning
(
"Opensipkd.base.tools.pbb depreciated use
tangsel
.tools.pbb"
)
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
...
...
tangsel/base/views/__init__.py
View file @
9e83e1b
...
@@ -13,7 +13,7 @@ from .base_views import BaseView
...
@@ -13,7 +13,7 @@ from .base_views import BaseView
from
datetime
import
timedelta
from
datetime
import
timedelta
from
tangsel.detable
import
*
from
tangsel.detable
import
*
from
.common
import
ColumnDT
,
DataTables
from
.common
import
ColumnDT
,
DataTables
from
opensipkd
.tools
import
mem_tmp_store
from
tangsel
.tools
import
mem_tmp_store
from
deform
import
(
from
deform
import
(
Form
,
ValidationFailure
,
widget
,
Button
,
FileData
)
Form
,
ValidationFailure
,
widget
,
Button
,
FileData
)
...
...
tangsel/base/views/base_views.py
View file @
9e83e1b
...
@@ -13,14 +13,14 @@ from deform.widget import SelectWidget
...
@@ -13,14 +13,14 @@ from deform.widget import SelectWidget
from
pyramid.httpexceptions
import
HTTPFound
,
HTTPNotFound
from
pyramid.httpexceptions
import
HTTPFound
,
HTTPNotFound
from
sqlalchemy
import
Table
from
sqlalchemy
import
Table
# from
opensipkd
.base.views.upload import tmpstore
# from
tangsel
.base.views.upload import tmpstore
from
opensipkd
.tools
import
dmy
,
get_settings
,
get_ext
,
\
from
tangsel
.tools
import
dmy
,
get_settings
,
get_ext
,
\
date_from_str
,
get_random_string
,
Upload
,
InvalidExtension
,
mem_tmp_store
date_from_str
,
get_random_string
,
Upload
,
InvalidExtension
,
mem_tmp_store
from
opensipkd
.tools.buttons
import
(
from
tangsel
.tools.buttons
import
(
btn_save
,
btn_cancel
,
btn_close
,
btn_delete
,
btn_add
,
btn_csv
,
btn_save
,
btn_cancel
,
btn_close
,
btn_delete
,
btn_add
,
btn_csv
,
btn_pdf
,
btn_unpost
,
btn_post
,
btn_upload
)
btn_pdf
,
btn_unpost
,
btn_post
,
btn_upload
)
# from
opensipkd
.tools.captcha import get_captcha
# from
tangsel
.tools.captcha import get_captcha
from
opensipkd
.tools.report
import
csv_response
,
file_response
from
tangsel
.tools.report
import
csv_response
,
file_response
from
..
import
BASE_CLASS
from
..
import
BASE_CLASS
from
.common
import
DataTables
from
.common
import
DataTables
from
..models
import
DBSession
,
Partner
from
..models
import
DBSession
,
Partner
...
@@ -537,7 +537,7 @@ class BaseView(object):
...
@@ -537,7 +537,7 @@ class BaseView(object):
raise
HTTPNotFound
raise
HTTPNotFound
def
pdf_response
(
self
,
**
kwargs
):
def
pdf_response
(
self
,
**
kwargs
):
from
opensipkd
.base.tools.report
import
jasper_export
from
tangsel
.base.tools.report
import
jasper_export
filename
=
jasper_export
(
self
.
report_file
)
filename
=
jasper_export
(
self
.
report_file
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
...
@@ -681,7 +681,7 @@ class BaseView(object):
...
@@ -681,7 +681,7 @@ class BaseView(object):
table
=
None
table
=
None
if
not
exts
:
if
not
exts
:
exts
=
self
.
upload_exts
exts
=
self
.
upload_exts
from
opensipkd
.tools
import
Upload
from
tangsel
.tools
import
Upload
bindings
=
self
.
get_bindings
()
bindings
=
self
.
get_bindings
()
form
=
self
.
get_form
(
self
.
upload_schema
,
bindings
=
bindings
)
form
=
self
.
get_form
(
self
.
upload_schema
,
bindings
=
bindings
)
...
...
tangsel/base/views/common.py
View file @
9e83e1b
...
@@ -5,7 +5,7 @@ from sqlalchemy import (String, Text, or_,)
...
@@ -5,7 +5,7 @@ from sqlalchemy import (String, Text, or_,)
from
sqlalchemy.dialects
import
oracle
,
mssql
from
sqlalchemy.dialects
import
oracle
,
mssql
from
datatables
import
DataTables
as
BaseDataTables
,
ColumnDT
from
datatables
import
DataTables
as
BaseDataTables
,
ColumnDT
log
=
logging
.
getLogger
(
__name__
)
log
=
logging
.
getLogger
(
__name__
)
log
.
warning
(
"
opensipkd.base.captcha depreciated use opensipkd
.tools.captcha"
)
log
.
warning
(
"
tangsel.base.captcha depreciated use tangsel
.tools.captcha"
)
class
DataTables
(
BaseDataTables
):
class
DataTables
(
BaseDataTables
):
...
...
tangsel/base/views/partner.py
View file @
9e83e1b
...
@@ -4,12 +4,12 @@ import colander
...
@@ -4,12 +4,12 @@ import colander
from
deform
import
(
from
deform
import
(
widget
,
Button
,
widget
,
Button
,
)
)
# from
opensipkd
.base import get_id_card_folder
# from
tangsel
.base import get_id_card_folder
from
..models
import
DBSession
,
Partner
,
PartnerFiles
from
..models
import
DBSession
,
Partner
,
PartnerFiles
# from ..models import (
# from ..models import (
# ResProvinsi, ResDati2, ResKecamatan, ResDesa)
# ResProvinsi, ResDati2, ResKecamatan, ResDesa)
# from
opensipkd
.models.common import ResCompany
# from
tangsel
.models.common import ResCompany
from
opensipkd
.tools
import
Upload
,
img_exts
from
tangsel
.tools
import
Upload
,
img_exts
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.view
import
(
from
pyramid.view
import
(
view_config
,
view_config
,
...
@@ -23,7 +23,7 @@ from .. import BASE_CLASS
...
@@ -23,7 +23,7 @@ from .. import BASE_CLASS
log
=
logging
.
getLogger
(
__name__
)
log
=
logging
.
getLogger
(
__name__
)
_
=
TranslationStringFactory
(
"
opensipkd
"
)
_
=
TranslationStringFactory
(
"
tangsel
"
)
SESS_ADD_FAILED
=
'Tambah partner gagal'
SESS_ADD_FAILED
=
'Tambah partner gagal'
SESS_EDIT_FAILED
=
'Edit partner gagal'
SESS_EDIT_FAILED
=
'Edit partner gagal'
...
...
tangsel/base/views/partner_base.py
View file @
9e83e1b
from
sqlalchemy
import
true
from
sqlalchemy
import
true
import
colander
import
colander
from
deform
import
FileData
,
widget
from
deform
import
FileData
,
widget
from
opensipkd
.tools
import
mem_tmp_store
from
tangsel
.tools
import
mem_tmp_store
from
translationstring
import
TranslationStringFactory
from
translationstring
import
TranslationStringFactory
# from
opensipkd
.base.views.dati2 import dati2_widget
# from
tangsel
.base.views.dati2 import dati2_widget
# from
opensipkd
.base.views.desa import desa_widget
# from
tangsel
.base.views.desa import desa_widget
# from
opensipkd
.base.views.kecamatan import kecamatan_widget
# from
tangsel
.base.views.kecamatan import kecamatan_widget
# from
opensipkd
.base.views.provinsi import provinsi_widget
# from
tangsel
.base.views.provinsi import provinsi_widget
# from
opensipkd
.models import Partner
# from
tangsel
.models import Partner
from
.
import
Validator
from
.
import
Validator
# from .. import get_urls
# from .. import get_urls
from
..models
import
Partner
from
..models
import
Partner
...
...
tangsel/base/views/register.py
View file @
9e83e1b
...
@@ -31,8 +31,8 @@ from datetime import datetime
...
@@ -31,8 +31,8 @@ from datetime import datetime
import
colander
import
colander
from
deform
import
(
widget
,
FileData
,
ValidationFailure
,
Button
)
from
deform
import
(
widget
,
FileData
,
ValidationFailure
,
Button
)
from
opensipkd
.tools
import
Upload
,
mem_tmp_store
,
image_validator
,
date_from_str
from
tangsel
.tools
import
Upload
,
mem_tmp_store
,
image_validator
,
date_from_str
from
opensipkd
.tools.buttons
import
btn_cancel
,
btn_save
from
tangsel
.tools.buttons
import
btn_cancel
,
btn_save
from
pyramid.httpexceptions
import
HTTPFound
,
HTTPNotFound
from
pyramid.httpexceptions
import
HTTPFound
,
HTTPNotFound
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.i18n
import
TranslationStringFactory
from
ziggurat_foundations.models.services.user
import
UserService
from
ziggurat_foundations.models.services.user
import
UserService
...
...
tangsel/base/views/user.py
View file @
9e83e1b
...
@@ -3,7 +3,7 @@ import re
...
@@ -3,7 +3,7 @@ import re
import
colander
import
colander
from
deform
import
(
widget
,
)
from
deform
import
(
widget
,
)
from
opensipkd
.tools
import
create_now
from
tangsel
.tools
import
create_now
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.view
import
view_config
from
pyramid.view
import
view_config
from
sqlalchemy
import
(
func
,
)
from
sqlalchemy
import
(
func
,
)
...
@@ -94,8 +94,8 @@ class Views(BaseView):
...
@@ -94,8 +94,8 @@ class Views(BaseView):
#
#
# elif url_dict['act'] == 'pdf':
# elif url_dict['act'] == 'pdf':
# query = query_register()
# query = query_register()
# import
opensipkd
.base
# import
tangsel
.base
# base_path = os.path.dirname(
opensipkd
.base.__file__)
# base_path = os.path.dirname(
tangsel
.base.__file__)
# path = os.path.join(base_path, 'reports')
# path = os.path.join(base_path, 'reports')
# rml_row = open_rml_row(path + '/user.row.rml')
# rml_row = open_rml_row(path + '/user.row.rml')
# rows = [rml_row.format(user_name=r.user_name, email=r.email,
# rows = [rml_row.format(user_name=r.user_name, email=r.email,
...
...
tangsel/base/views/user_login.py
View file @
9e83e1b
...
@@ -42,8 +42,8 @@ from ..models import DBSession
...
@@ -42,8 +42,8 @@ from ..models import DBSession
from
.
import
one_hour
,
two_minutes
from
.
import
one_hour
,
two_minutes
from
..models.users
import
User
,
ExternalIdentity
from
..models.users
import
User
,
ExternalIdentity
# , Partner
# , Partner
from
opensipkd
.tools
import
create_now
,
set_user_log
,
get_settings
from
tangsel
.tools
import
create_now
,
set_user_log
,
get_settings
from
opensipkd
.tools.buttons
import
btn_cancel
from
tangsel
.tools.buttons
import
btn_cancel
# from .. import get_urls
# from .. import get_urls
from
.base_views
import
CSRFSchema
,
BaseView
from
.base_views
import
CSRFSchema
,
BaseView
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.i18n
import
TranslationStringFactory
...
...
tangsel/base/widgets/widget_os.py
View file @
9e83e1b
...
@@ -12,14 +12,14 @@ from deform.i18n import _
...
@@ -12,14 +12,14 @@ from deform.i18n import _
from
deform.widget
import
(
from
deform.widget
import
(
Widget
,
_StrippedString
,
Select2Widget
,
_normalize_choices
,
OptGroup
,
Widget
,
_StrippedString
,
Select2Widget
,
_normalize_choices
,
OptGroup
,
DateInputWidget
as
WidgetDateInputWidget
,
AutocompleteInputWidget
)
DateInputWidget
as
WidgetDateInputWidget
,
AutocompleteInputWidget
)
from
opensipkd
.tools.captcha
import
img_captcha
from
tangsel
.tools.captcha
import
img_captcha
_logging
=
logging
.
getLogger
(
__name__
)
_logging
=
logging
.
getLogger
(
__name__
)
class
DokumenWidget
(
Widget
):
class
DokumenWidget
(
Widget
):
template
=
"
opensipkd
.base:/widgets/templates/dokumen.pt"
template
=
"
tangsel
.base:/widgets/templates/dokumen.pt"
readonly_template
=
"
opensipkd
.base:/widgets/templates/readonly/dokumen.pt"
readonly_template
=
"
tangsel
.base:/widgets/templates/readonly/dokumen.pt"
assume_y2k
=
True
assume_y2k
=
True
_pstruct_schema
=
SchemaNode
(
_pstruct_schema
=
SchemaNode
(
...
@@ -76,8 +76,8 @@ class DokumenWidget(Widget):
...
@@ -76,8 +76,8 @@ class DokumenWidget(Widget):
class
FormulirWidget
(
Widget
):
class
FormulirWidget
(
Widget
):
template
=
"
opensipkd
.base:/views/widgets/formulir.pt"
template
=
"
tangsel
.base:/views/widgets/formulir.pt"
readonly_template
=
"
opensipkd
.base:/views/widgets/readonly/formulir.pt"
readonly_template
=
"
tangsel
.base:/views/widgets/readonly/formulir.pt"
assume_y2k
=
True
assume_y2k
=
True
_pstruct_schema
=
SchemaNode
(
_pstruct_schema
=
SchemaNode
(
...
@@ -130,8 +130,8 @@ class FormulirWidget(Widget):
...
@@ -130,8 +130,8 @@ class FormulirWidget(Widget):
class
BlokKavNoWidget
(
Widget
):
class
BlokKavNoWidget
(
Widget
):
template
=
"
opensipkd
.base:./widgets/templates/blok_kav_no.pt"
template
=
"
tangsel
.base:./widgets/templates/blok_kav_no.pt"
readonly_template
=
"
opensipkd
.base:./widgets/templates/readonly/blok_kav_no.pt"
readonly_template
=
"
tangsel
.base:./widgets/templates/readonly/blok_kav_no.pt"
_pstruct_schema
=
SchemaNode
(
_pstruct_schema
=
SchemaNode
(
Mapping
(),
Mapping
(),
...
@@ -300,8 +300,8 @@ class AutocompleteMsInputWidget(AutocompleteInputWidget):
...
@@ -300,8 +300,8 @@ class AutocompleteMsInputWidget(AutocompleteInputWidget):
class
QtyWidget
(
Widget
):
class
QtyWidget
(
Widget
):
template
=
"
opensipkd
.base:/widgets/templates/qty.pt"
template
=
"
tangsel
.base:/widgets/templates/qty.pt"
readonly_template
=
"
opensipkd
.base:/viewswidgets/templates/readonly/qty.pt"
readonly_template
=
"
tangsel
.base:/viewswidgets/templates/readonly/qty.pt"
_pstruct_schema
=
SchemaNode
(
_pstruct_schema
=
SchemaNode
(
Mapping
(),
Mapping
(),
...
@@ -365,7 +365,7 @@ class CaptchaWidget(Widget):
...
@@ -365,7 +365,7 @@ class CaptchaWidget(Widget):
"""
"""
template
=
"
opensipkd
.base:widgets/templates/captcha.pt"
template
=
"
tangsel
.base:widgets/templates/captcha.pt"
readonly_template
=
"textinput"
readonly_template
=
"textinput"
strip
=
True
strip
=
True
requirements
=
()
requirements
=
()
...
@@ -417,7 +417,7 @@ class ImageWidget(Widget):
...
@@ -417,7 +417,7 @@ class ImageWidget(Widget):
"""
"""
template
=
"
opensipkd
.base:views/widgets/image.pt"
template
=
"
tangsel
.base:views/widgets/image.pt"
readonly_template
=
"image"
readonly_template
=
"image"
strip
=
True
strip
=
True
requirements
=
()
requirements
=
()
...
@@ -466,8 +466,8 @@ class MapWidget(Widget):
...
@@ -466,8 +466,8 @@ class MapWidget(Widget):
"""
"""
template
=
"
opensipkd
.base:views/widgets/gmap.pt"
template
=
"
tangsel
.base:views/widgets/gmap.pt"
readonly_template
=
"
opensipkd
.base:views/widgets/readonly/gmap.pt"
readonly_template
=
"
tangsel
.base:views/widgets/readonly/gmap.pt"
map_center
=
[
0
,
0
]
map_center
=
[
0
,
0
]
map_zoom
=
12
map_zoom
=
12
gmap_key
=
None
gmap_key
=
None
...
@@ -486,7 +486,7 @@ class MapWidget(Widget):
...
@@ -486,7 +486,7 @@ class MapWidget(Widget):
show_options
=
False
show_options
=
False
requirements
=
((
'deform'
,
None
),
requirements
=
((
'deform'
,
None
),
{
{
"js"
:
"
opensipkd
.base:static/js/gmap.js"
,
"js"
:
"
tangsel
.base:static/js/gmap.js"
,
"css"
:
"deform:static/select2/select2.css"
,
"css"
:
"deform:static/select2/select2.css"
,
},)
},)
...
@@ -546,8 +546,8 @@ class LeafMapWidget(Widget):
...
@@ -546,8 +546,8 @@ class LeafMapWidget(Widget):
"""
"""
template
=
"
opensipkd
.base:views/widgets/leafmap.pt"
template
=
"
tangsel
.base:views/widgets/leafmap.pt"
readonly_template
=
"
opensipkd
.base:views/widgets/readonly/leafmap.pt"
readonly_template
=
"
tangsel
.base:views/widgets/readonly/leafmap.pt"
map_center
=
[
0
,
0
]
map_center
=
[
0
,
0
]
map_zoom
=
12
map_zoom
=
12
# gmap_control = ['Point', 'Polygon', 'LineString']
# gmap_control = ['Point', 'Polygon', 'LineString']
...
@@ -566,9 +566,9 @@ class LeafMapWidget(Widget):
...
@@ -566,9 +566,9 @@ class LeafMapWidget(Widget):
requirements
=
(
requirements
=
(
(
'deform'
,
None
),
(
'deform'
,
None
),
{
{
"js"
:
[
"
opensipkd
.base:static/v3/map/leaflet/leaflet.js"
,
"js"
:
[
"
tangsel
.base:static/v3/map/leaflet/leaflet.js"
,
"https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/0.4.2/leaflet.draw.js"
],
"https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/0.4.2/leaflet.draw.js"
],
"css"
:
[
"
opensipkd
.base:static/v3/map/leaflet/leaflet.css"
,
"css"
:
[
"
tangsel
.base:static/v3/map/leaflet/leaflet.css"
,
"https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/0.4.2/leaflet.draw.css"
],
"https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/0.4.2/leaflet.draw.css"
],
})
})
...
@@ -633,7 +633,7 @@ class BootStrapDateInputWidget(Widget):
...
@@ -633,7 +633,7 @@ class BootStrapDateInputWidget(Widget):
template
=
"bootstrapdateinput"
template
=
"bootstrapdateinput"
readonly_template
=
"readonly/textinput"
readonly_template
=
"readonly/textinput"
type_name
=
"text"
type_name
=
"text"
req_path
=
"
opensipkd
.base:static/v3/js/plugin"
req_path
=
"
tangsel
.base:static/v3/js/plugin"
requirements
=
(
requirements
=
(
(
'deform'
,
None
),
(
'deform'
,
None
),
{
{
...
@@ -843,8 +843,8 @@ class MoneyInputWidget(widget.MoneyInputWidget):
...
@@ -843,8 +843,8 @@ class MoneyInputWidget(widget.MoneyInputWidget):
class
FilterWidget
(
Widget
):
class
FilterWidget
(
Widget
):
template
=
"
opensipkd
.base:/views/widgets/filters.pt"
template
=
"
tangsel
.base:/views/widgets/filters.pt"
readonly_template
=
"
opensipkd
.base:/views/widgets/readonly/filters.pt"
readonly_template
=
"
tangsel
.base:/views/widgets/readonly/filters.pt"
null_value
=
""
null_value
=
""
values
=
()
values
=
()
size
=
None
size
=
None
...
...
tangsel/tools/captcha.py
0 → 100644
View file @
9e83e1b
from
opensipkd.tools.captcha
import
*
def
img_captcha
(
request
,
length
=
5
,
chars
=
string
.
ascii_uppercase
+
string
.
digits
):
kode_captcha
=
randomcaptcha
(
length
,
chars
)
_here
=
os
.
path
.
dirname
(
__file__
)
# captcha_path = os.path.abspath('/static/img/captcha.png'))
# font_path = os.path.abspath(os.path.join('/static/v3/fonts/arial.ttf'))
settings
=
get_settings
()
captcha_files
=
settings
[
'captcha_files'
]
if
not
os
.
path
.
exists
(
captcha_files
):
os
.
makedirs
(
captcha_files
)
file_name
=
get_random_string
(
16
)
+
'.png'
from
pyramid.path
import
AssetResolver
a
=
AssetResolver
(
'tangsel.base'
)
static_path
=
a
.
resolve
(
'static'
)
.
abspath
()
captcha_path
=
os
.
path
.
abspath
(
os
.
path
.
join
(
captcha_files
,
file_name
))
font_path
=
os
.
path
.
abspath
(
os
.
path
.
join
(
static_path
,
'v3/fonts/arial.ttf'
))
captcha_image
=
captcha
(
drawings
=
[
background
(
color
=
'#fff'
),
text
(
fonts
=
[
font_path
],
drawings
=
[
offset
(
0.8
)
]),
noise
(),
smooth
()
],
width
=
300
)
image
=
captcha_image
(
' '
+
kode_captcha
+
' '
)
image
.
save
(
captcha_path
,
'PNG'
,
quality
=
75
)
kode_captcha
=
kode_captcha
request
.
session
[
'captcha'
]
=
kode_captcha
return
kode_captcha
,
file_name
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