Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Z
Zope
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
Zope
Commits
40606ff7
Commit
40606ff7
authored
Jul 25, 1997
by
Jim Fulton
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
initial
parent
6e03dd44
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
418 additions
and
1 deletion
+418
-1
lib/python/Shared/DC/ZRDB/DA.py
lib/python/Shared/DC/ZRDB/DA.py
+214
-0
lib/python/Shared/DC/ZRDB/Setup
lib/python/Shared/DC/ZRDB/Setup
+5
-1
lib/python/Shared/DC/ZRDB/connection.dtml
lib/python/Shared/DC/ZRDB/connection.dtml
+29
-0
lib/python/Shared/DC/ZRDB/daAdd.dtml
lib/python/Shared/DC/ZRDB/daAdd.dtml
+44
-0
lib/python/Shared/DC/ZRDB/edit.dtml
lib/python/Shared/DC/ZRDB/edit.dtml
+46
-0
lib/python/Shared/DC/ZRDB/main.dtml
lib/python/Shared/DC/ZRDB/main.dtml
+80
-0
No files found.
lib/python/Shared/DC/ZRDB/DA.py
0 → 100644
View file @
40606ff7
#!/bin/env python
##############################################################################
#
# Copyright
#
# Copyright 1996 Digital Creations, L.C., 910 Princess Anne
# Street, Suite 300, Fredericksburg, Virginia 22401 U.S.A. All
# rights reserved.
#
##############################################################################
__doc__
=
'''Generic Database adapter
$Id: DA.py,v 1.1 1997/07/25 16:43:05 jim Exp $'''
__version__
=
'$Revision: 1.1 $'
[
11
:
-
2
]
import
string
,
OFS
.
Folder
,
Aqueduct
.
Aqueduct
,
Aqueduct
.
RDB
import
DocumentTemplate
,
marshal
,
md5
,
zlib
,
base64
,
DateTime
,
Acquisition
from
Aqueduct.Aqueduct
import
quotedHTML
,
decodestring
,
parse
,
Rotor
from
Aqueduct.Aqueduct
import
custom_default_report
,
default_input_form
from
Aqueduct.Aqueduct
import
default_report_src
from
Globals
import
Persistent
,
ManageHTMLFile
,
MessageDialog
from
cStringIO
import
StringIO
log_file
=
None
class
Folder
(
OFS
.
Folder
.
Folder
):
meta_type
=
'Aqueduct Database Adapter Folder'
manage_options
=
OFS
.
Folder
.
Folder
.
manage_options
+
(
{
'icon'
:
'App/arrow.jpg'
,
'label'
:
'Database Connection'
,
'action'
:
'manage_connectionForm'
,
'target'
:
'manage_main'
},
)
manage_main
=
ManageHTMLFile
(
'AqueductDA/main'
)
manage_connectionForm
=
ManageHTMLFile
(
'AqueductDA/connection'
)
manage_addDAForm
=
ManageHTMLFile
(
'AqueductDA/daAdd'
)
start_time
=
DateTime
.
now
()
def
manage_connection
(
self
,
value
=
None
,
check
=
None
,
REQUEST
=
None
):
'change database connection data'
if
value
is
None
:
return
self
.
database_connection_string
()
if
check
:
self
.
database_connect
()
self
.
database_connection_string
(
value
)
return
self
.
manage_main
(
self
,
REQUEST
)
def
database_connect
(
self
,
s
=
''
):
try
:
self
.
_v_database_connection
.
close
()
except
:
pass
self
.
bad_connection_string
=
(
"""<strong>Warning</strong>: The database is not connected.
"""
)
if
not
s
:
s
=
self
.
folder_database_connection_string
()
if
not
s
:
return
DB
=
self
.
database_connection_factory
()
try
:
self
.
_v_database_connection
=
DB
(
s
)
self
.
connect_time
=
DateTime
.
now
()
except
:
raise
'BadRequest'
,
(
'<strong>Invalid connection string:</strong><br>'
+
s
)
self
.
bad_connection_string
=
''
def
__setstate__
(
self
,
v
):
Folder
.
inheritedAttribute
(
'__setstate__'
)(
self
,
v
)
try
:
if
self
.
_v_database_connection
is
not
None
:
return
except
:
pass
try
:
self
.
database_connect
()
except
:
pass
def
manage_addDA
(
self
,
name
,
key
,
arguments
,
template
,
REQUEST
):
'Add a query'
q
=
Query
(
name
,
key
,
arguments
,
template
)
self
.
_setObject
(
name
,
q
)
return
self
.
manage_main
(
self
,
REQUEST
)
test_url___allow_groups__
=
None
def
test_url_
(
self
):
'Method for testing server connection information'
return
'PING'
class
Query
(
Aqueduct
.
Aqueduct
.
BaseQuery
,
Persistent
,
Acquisition
.
Implicit
):
'Database query object'
meta_type
=
'Aqueduct Database Adapter'
hasAqueductClientInterface
=
1
manage
=
ManageHTMLFile
(
'AqueductDA/edit'
)
def
__init__
(
self
,
name
=
''
,
key
=
''
,
arguments
=
''
,
template
=
''
,
description
=
''
):
if
not
name
:
return
self
.
name
=
name
self
.
report_src
=
default_report_src
self
.
manage_edit
(
key
,
description
,
arguments
,
template
)
def
quoted_src
(
self
):
return
quotedHTML
(
self
.
src
)
def
manage_edit
(
self
,
key
,
description
,
arguments
,
template
,
URL2
=
''
):
'change query properties'
self
.
description
=
description
self
.
key
=
key
self
.
rotor
=
Rotor
(
key
)
self
.
arguments_src
=
arguments
self
.
arguments
=
parse
(
arguments
)
self
.
src
=
template
self
.
template
=
DocumentTemplate
.
HTML
(
template
)
self
.
manage_testForm
=
DocumentTemplate
.
HTML
(
default_input_form
(
self
.
name
,
self
.
arguments
,
action
=
'manage_test'
),
__name__
=
'test input form'
)
if
URL2
:
return
MessageDialog
(
title
=
self
.
name
+
' changed'
,
message
=
self
.
name
+
' has been changed sucessfully.'
,
action
=
URL2
+
'/manage_main'
,
)
def
query_data
(
self
,
REQUEST
):
try
:
DB__
=
self
.
database_connection
()
except
:
raise
'Database Error'
,
(
'%s is not connected to a database'
%
self
.
name
)
argdata
=
self
.
_argdata
(
REQUEST
,
1
)
query_string
=
self
.
_query_string
(
argdata
,
'manage_test'
)
query
=
self
.
template
(
self
,
REQUEST
)
result
=
DB__
.
query
(
query
)
result
=
Aqueduct
.
RDB
.
RDB
(
StringIO
(
result
))
return
result
def
manage_test
(
self
,
REQUEST
):
'Provide a simple interface for testing a query'
try
:
DB__
=
self
.
database_connection
()
except
:
raise
'Database Error'
,
(
'%s is not connected to a database'
%
self
.
name
)
argdata
=
self
.
_argdata
(
REQUEST
,
1
)
query_string
=
self
.
_query_string
(
argdata
,
'manage_test'
)
query
=
self
.
template
(
self
,
REQUEST
)
result
=
DB__
.
query
(
query
)
result
=
Aqueduct
.
RDB
.
RDB
(
StringIO
(
result
))
self
.
result_names
=
result
.
names
()
self
.
report_src
=
custom_default_report
(
result
,
action
=
'/manage_testForm'
)
report
=
DocumentTemplate
.
HTML
(
self
.
report_src
)
return
report
(
self
,
REQUEST
,
query_results
=
result
,
query_string
=
query_string
,
)
def
query
(
self
,
DB__
,
REQUEST
,
RESPONSE
):
' '
if
DB__
is
None
:
raise
'Database Error'
,
(
'No database connection defined'
)
try
:
argdata
=
REQUEST
.
form
.
value
argdata
=
decodestring
(
argdata
)
argdata
=
self
.
rotor
.
decrypt
(
argdata
)
digest
,
argdata
=
argdata
[:
16
],
argdata
[
16
:]
if
md5
.
new
(
argdata
).
digest
()
!=
digest
:
raise
'Bad Request'
,
'Corrupted Data'
argdata
=
marshal
.
loads
(
argdata
)
query
=
apply
(
self
.
template
,(
self
,),
argdata
)
result
=
DB__
.
query
(
query
)
result
=
zlib
.
compress
(
result
,
1
)
result
=
md5
.
new
(
result
).
digest
()
+
result
result
=
self
.
rotor
.
encrypt
(
result
)
result
=
base64
.
encodestring
(
result
)
RESPONSE
[
'content-type'
]
=
'text/X-PyDB'
RESPONSE
[
'Content-Length'
]
=
len
(
result
)
RESPONSE
.
write
(
result
)
except
:
t
,
v
,
tb
=
sys
.
exc_type
,
sys
.
exc_value
,
sys
.
exc_traceback
result
=
str
(
RESPONSE
.
exception
())
serial
=
str
(
DateTime
.
now
())
if
log_file
:
l
=
string
.
find
(
result
,
"Traceback (innermost last):"
)
if
l
>=
0
:
l
=
result
[
l
:]
else
:
l
=
v
log_file
.
write
(
"%s
\
n
%s %s, %s:
\
n
%s
\
n
"
%
(
'-'
*
30
,
serial
,
self
.
name
,
t
,
l
))
log_file
.
flush
()
serial
=
"Error number: %s
\
n
"
%
serial
serial
=
zlib
.
compress
(
serial
,
1
)
serial
=
md5
.
new
(
serial
).
digest
()
+
serial
serial
=
self
.
rotor
.
encrypt
(
serial
)
serial
=
base64
.
encodestring
(
serial
)
RESPONSE
.
setBody
(
serial
)
##############################################################################
# Test functions:
#
def
main
():
# The "main" program for this module
import
sys
print
sys
.
argv
[
0
]
+
" is a pure module and doesn't do anything by itself."
if
__name__
==
"__main__"
:
main
()
##############################################################################
#
# $Log: DA.py,v $
# Revision 1.1 1997/07/25 16:43:05 jim
# initial
#
#
lib/python/Shared/DC/ZRDB/Setup
View file @
40606ff7
*shared*
# install DA.py
# install connection.dtml
# install daAdd.dtml
# install edit.dtml
lib/python/Shared/DC/ZRDB/connection.dtml
0 → 100644
View file @
40606ff7
<html>
<head>
<title>
DA Database Connection Information
</title>
</head>
<body
bgcolor=
"#FFFFFF"
link=
"#3333FF"
alink=
"#009999"
vlink=
"#006600"
>
<FONT
SIZE=
"+2"
COLOR=
"#77003B"
>
Aqueduct Database Adapter
<br>
Database Connection Information
</FONT>
<form
action=
"<!--#var PARENT_URL-->/manage_connection"
method=
"post"
>
<strong>
Enter the database connection string:
</strong><br>
<input
name=
"value"
size=
"60"
value=
"<!--#var manage_connection-->"
><p>
<strong>
Check here to test connection string:
</strong>
<input
name=
"check"
type=
"CHECKBOX"
value=
"YES"
CHECKED
>
<hr>
<input
type=
"SUBMIT"
name=
"SUBMIT"
value=
"Change Connection String"
>
<input
type=
"SUBMIT"
name=
"SUBMIT"
value=
"Cancel"
>
<!--#if HTTP_REFERER-->
<INPUT
NAME=
"CANCEL_ACTION"
TYPE=
"HIDDEN"
VALUE=
"<!--#var HTTP_REFERER-->"
>
<!--#else HTTP_REFERER-->
<INPUT
NAME=
"CANCEL_ACTION"
TYPE=
"HIDDEN"
VALUE=
"<!--#var PARENT_URL-->"
>
<!--#/if HTTP_REFERER-->
</form>
</body>
</html>
lib/python/Shared/DC/ZRDB/daAdd.dtml
0 → 100644
View file @
40606ff7
<html><head><title>
DA New Query
</title></head>
<body
bgcolor=
"#FFFFFF"
link=
"#3333FF"
alink=
"#009999"
vlink=
"#006600"
>
<FONT
SIZE=
"+2"
COLOR=
"#77003B"
>
Aqueduct Database Adapter
<br>
New Native Query Template
</FONT>
<form
action=
"<!--#var PARENT_URL-->/manage_addDA"
method=
"post"
>
<table>
<tr>
<td><strong>
Name:
</strong></td>
<td><input
name=
"name"
size=
"40"
></td></tr>
<tr>
<td><strong>
Description:
</strong></td>
<td><input
name=
"description"
size=
"40"
></td></tr>
<tr>
<td><strong>
Access key:
</strong></td>
<td><input
name=
"key"
size=
"40"
></td></tr>
<tr>
<td><strong>
Arguments:
</strong></td>
<td><input
name=
"arguments"
size=
"40"
></td></tr>
<tr>
<td
colspan=
2
><strong>
Query template:
</strong><br>
<textarea
name=
"template"
rows=
10
cols=
60
>
select *
from data
</textarea></td></tr>
<tr><td></td><td>
<input
type=
"SUBMIT"
name=
"SUBMIT"
value=
"Add Server Query"
>
<input
type=
"SUBMIT"
name=
"SUBMIT"
value=
"Cancel"
>
<!--#if HTTP_REFERER-->
<INPUT
NAME=
"CANCEL_ACTION"
TYPE=
"HIDDEN"
VALUE=
"<!--#var HTTP_REFERER-->"
>
<!--#else HTTP_REFERER-->
<INPUT
NAME=
"CANCEL_ACTION"
TYPE=
"HIDDEN"
VALUE=
"<!--#var PARENT_URL-->/manage"
>
<!--#/if HTTP_REFERER-->
</td></tr>
</table>
</form>
</body>
</html>
lib/python/Shared/DC/ZRDB/edit.dtml
0 → 100644
View file @
40606ff7
<html><head><title>
DA Query:
<!--#var name-->
</title></head><body>
<body
bgcolor=
"#FFFFFF"
link=
"#3333FF"
alink=
"#009999"
vlink=
"#006600"
>
<FONT
SIZE=
"+2"
COLOR=
"#77003B"
>
Aqueduct Database Adapter
<br>
Edit Native Query Template,
<!--#var name-->
</FONT>
<form
action=
"<!--#var URL2-->/<!--#var name-->/manage_edit"
method=
"<!--#var web__form__method-->"
>
<table>
<tr>
<td><strong>
Name:
</strong></td>
<td>
<!--#var name-->
</td></tr>
<tr>
<td><strong>
Description:
</strong></td>
<td><input
name=
"description"
size=
"40"
value=
"<!--#var description-->"
></td></tr>
<tr>
<td><strong>
Access key:
</strong></td>
<td><input
name=
"key"
size=
"40"
value=
"<!--#var key-->"
></td></tr>
<tr>
<td><strong>
Arguments:
</strong></td>
<td><input
name=
"arguments"
size=
"40"
value=
"<!--#var arguments_src-->"
></td>
</tr>
<tr>
<td
colspan=
2
><strong>
Query template:
</strong><br>
<textarea
name=
"template"
rows=
10
cols=
60
>
<!--#var quoted_src-->
</textarea></td></tr>
<tr><td></td><td>
<input
type=
"SUBMIT"
name=
"SUBMIT"
value=
"OK"
>
<input
type=
"SUBMIT"
name=
"SUBMIT"
value=
"Cancel"
>
<!--#if HTTP_REFERER-->
<INPUT
NAME=
"CANCEL_ACTION"
TYPE=
"HIDDEN"
VALUE=
"<!--#var HTTP_REFERER-->"
>
<!--#else HTTP_REFERER-->
<INPUT
NAME=
"CANCEL_ACTION"
TYPE=
"HIDDEN"
VALUE=
"<!--#var URL2-->/manage"
>
<!--#/if HTTP_REFERER-->
</td></tr>
</table>
</form>
</body>
</html>
lib/python/Shared/DC/ZRDB/main.dtml
0 → 100644
View file @
40606ff7
<HTML>
<HEAD>
<TITLE><!--#var name fmt=spacify--></TITLE>
</HEAD>
<BODY>
<FONT SIZE="+2" COLOR="#77003B"><!--#var name fmt=spacify--></FONT>
<BR>
<!--#if parentObject-->
<!--#in parentObject-->
<A HREF="<!--#var URL2-->/manage" target="_top">
<IMG SRC="<!--#var SOFTWARE_URL-->/OFS/dirup.jpg" BORDER=0>
</A>
Go up to
<!--#var name fmt=spacify-->
<!--#var description-->
<BR>
<!--#/in parentObject-->
<!--#/if parentObject-->
<!--#if objectValues-->
<P>
The following items have been defined. To edit an item, click
on the item's icon. To view an item, click on the item's name.
<P>
<!--#in objectValues-->
<A HREF="<!--#var URL1-->/<!--#var name-->/manage"
<!--#if sequence-var-manage_options-->
TARGET="_top"
<!--#else sequence-var-manage_options-->
TARGET="manage_main"
<!--#endif sequence-var-manage_options-->>
<IMG SRC="<!--#var SOFTWARE_URL-->/<!--#var icon-->" BORDER="0">
</A>
<A HREF="<!--#var URL1-->/<!--#var name--><!--#if manage_testForm-->/manage_testForm<!--#/if manage_testForm-->">
<!--#var name fmt=spacify-->
</A> <!--#var description--><BR>
<!--#/in objectValues-->
<P>
<!--#/if objectValues-->
<TABLE>
<TR>
<TD VALIGN="TOP">
To add a new item, select an item type and click the "Add" button.
</TD>
<TD VALIGN="TOP">
<FORM ACTION="<!--#var PARENT_URL-->/manage_addObject" METHOD="GET">
<SELECT NAME="type">
<!--#in all_meta_types mapping-->
<OPTION VALUE="<!--#var name-->"><!--#var name fmt=spacify-->
<!--#/in all_meta_types-->
</SELECT><BR>
<INPUT TYPE="SUBMIT" VALUE="Add">
</FORM>
</TD>
</TR>
<!--#if objectValues-->
<TR>
<TD VALIGN="TOP">
To delete items, select one or more items and
click the "Delete" button.
</TD>
<TD VALIGN="TOP">
<FORM ACTION="<!--#var PARENT_URL-->/manage_delObjects" METHOD="GET">
<SELECT NAME="names:list" MULTIPLE SIZE="5">
<!--#in objectValues-->
<OPTION VALUE="<!--#var name-->"><!--#var name fmt=spacify-->
<!--#/in objectValues-->
</SELECT><br>
<INPUT TYPE="SUBMIT" VALUE="Delete">
</FORM>
</TD>
</TR>
<!--#/if objectValues-->
</TABLE>
</BODY>
</HTML>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
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 comment