perubahan image captcha

1 parent 50ebf886
...@@ -40,6 +40,7 @@ localization = English_Australia.1252 ...@@ -40,6 +40,7 @@ localization = English_Australia.1252
# Base Configuration # Base Configuration
temp_files = C:\tmp temp_files = C:\tmp
captcha_files = C:\tmp\captcha
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
......
...@@ -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")
......
...@@ -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
......
...@@ -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)
......
...@@ -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__)
......
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):
......
...@@ -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 -*-
......
...@@ -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)
......
...@@ -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)
......
...@@ -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):
......
...@@ -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'
......
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
......
...@@ -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
......
...@@ -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,
......
...@@ -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
......
...@@ -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
......
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
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!