Skip to content

Commit

Permalink
First alpha! yehhHa!
Browse files Browse the repository at this point in the history
  • Loading branch information
Michel Pelletier committed Jun 23, 1999
1 parent 7537426 commit 5b26b12
Show file tree
Hide file tree
Showing 6 changed files with 178 additions and 43 deletions.
20 changes: 15 additions & 5 deletions Catalog.py
Expand Up @@ -46,7 +46,7 @@ def __init__(self, brains=None):

self.schema = {} # mapping from attribute name to column number
self.names = () # sequence of column names
self.indexes = {}
self.indexes = {} # maping from index name to index object

# the catalog maintains a BTree of object meta_data for
# convienient display on result pages. meta_data attributes
Expand Down Expand Up @@ -95,7 +95,6 @@ def has_key(self, key):
for key, value in self.schema.items():
scopy[key]=value
scopy['data_record_id_']=len(self.schema.keys())
scopy['data_record_unique_id_'] = self.paths[scopy['data_record_id_']]

mybrains.__theCircularGottaCoverUpABugRefOfJoy = mybrains
mybrains.__record_schema__ = scopy
Expand All @@ -109,6 +108,9 @@ def addColumn(self, name, default_value=None):

schema = self.schema
names = list(self.names)

if schema.has_key(name):
raise 'Column Exists', 'The column exists'

if not schema.has_key(name):
if schema.values():
Expand Down Expand Up @@ -162,11 +164,14 @@ def addIndex(self, name, type):
""" adds an index """
if self.indexes.has_key(name):
raise 'Index Exists', 'The index specified allready exists'


indexes = self.indexes
if type == 'FieldIndex':
self.indexes[name] = UnIndex.UnIndex(name)
indexes[name] = UnIndex.UnIndex(name)
elif type == 'TextIndex':
self.indexes[name] = UnTextIndex.UnTextIndex(name)
indexes[name] = UnTextIndex.UnTextIndex(name)

self.indexes = indexes

def delIndex(self, name):
""" deletes an index """
Expand Down Expand Up @@ -243,6 +248,11 @@ def clear(self):
x.clear()


def uniqueValuesFor(self, name):
""" return unique values for FieldIndex name """
return self.indexes[name].uniqueValues()


def recordify(self, object):
""" turns an object into a record tuple """

Expand Down
110 changes: 76 additions & 34 deletions ZCatalog.py
Expand Up @@ -99,6 +99,7 @@
from Persistence import Persistent
from Catalog import Catalog, orify
import pdb, traceback
from SearchIndex import UnIndex, UnTextIndex

manage_addZCatalogForm=HTMLFile('addZCatalog',globals())

Expand All @@ -120,7 +121,14 @@ class ZCatalog(SimpleItem, FindSupport, Persistent, Implicit):
{'label': 'Contents', 'action': 'manage_catalogView',
'target': 'manage_main'},
{'label': 'Find Items to ZCatalog', 'action': 'manage_catalogFind',
'target':'manage_main'},)
'target':'manage_main'},
{'label': 'Schema', 'action': 'manage_catalogSchema',
'target':'manage_main'},
{'label': 'Indexes', 'action': 'manage_catalogIndexes',
'target':'manage_main'},
{'label': 'Status', 'action': 'manage_catalogStatus',
'target':'manage_main'},
)


__ac_permissions__=(
Expand All @@ -142,6 +150,8 @@ class ZCatalog(SimpleItem, FindSupport, Persistent, Implicit):
manage_catalogFind = HTMLFile('catalogFind',globals())
manage_catalogFindResult = HTMLFile('catalogFindResult',globals())
manage_catalogSchema = HTMLFile('catalogSchema', globals())
manage_catalogIndexes = HTMLFile('catalogIndexes', globals())
manage_catalogStatus = HTMLFile('catalogStatus', globals())

manage_main = HTMLFile('catalogView',globals())

Expand All @@ -157,7 +167,10 @@ def __init__(self,id,title=None):
self._catalog.addIndex('title', 'TextIndex')

self._catalog.addColumn('meta_type')
self._catalog.addIndex('meta_type', 'TextIndex')
self._catalog.addIndex('meta_type', 'FieldIndex')

self._catalog.addColumn('bobobase_modification_time')
self._catalog.addIndex('bobobase_modification_time', 'FieldIndex')


def manage_catalogObject(self, REQUEST, urls=None, blah=None):
Expand All @@ -170,16 +183,13 @@ def manage_catalogObject(self, REQUEST, urls=None, blah=None):
# object.
obj = self.resolve_url(url, REQUEST)
except:
## print 'resolve_url failed while cataloging'
## c, i, t = sys.exc_info()
## traceback.print_exc()
continue

self.catalog_object(obj, url)

return MessageDialog(title="Bah!",
message="Say hello to my little friend",
action="manage_main")
message = "Objects Cataloged"
return self.manage_main(self, REQUEST,
manage_tabs_message=message)


def manage_uncatalogObject(self, REQUEST, urls=None):
Expand All @@ -190,16 +200,12 @@ def manage_uncatalogObject(self, REQUEST, urls=None):
try:
obj = self.resolve_url(url, REQUEST)
except:
print 'resolve_url failed while uncataloging'
c, i, t = sys.exc_info()
traceback.print_exc()
continue
print 'uncataloging %s' % url
self.uncatalog_object(url)

return MessageDialog(title="Bah!",
message="Say hello to my little friend",
action="manage_main")
message = "Object UnCataloged"
return self.manage_main(self, REQUEST,
manage_tabs_message=message)


def manage_catalogReindex(self, REQUEST):
Expand All @@ -218,19 +224,54 @@ def manage_catalogReindex(self, REQUEST):
self.uncatalog_object(path)
self.catalog_object(obj, path)

return MessageDialog(title="Bah!",
message="Say hello to my little friend",
action="manage_main")
message = "Catalog Reindexed"
return self.manage_main(self, REQUEST,
manage_tabs_message=message)


def manage_catalogClear(self, REQUEST):
""" clears the whole enchelada """
self._catalog.clear()

return MessageDialog(title="Bah!",
message="Say hello to my little friend",
action="manage_main")
message = "Catalog Cleared"
return self.manage_main(self, REQUEST,
manage_tabs_message=message)


def manage_addColumn(self, name, REQUEST):
""" add a column """
self._catalog.addColumn(name)

message = "Column added"
return self.manage_catalogSchema(self, REQUEST,
manage_tabs_message=message)

def manage_delColumns(self, names, REQUEST):
""" del a column """
for name in names:
self._catalog.delColumn(name)

message = "Columns deleted"
return self.manage_catalogSchema(self, REQUEST,
manage_tabs_message=message)

def manage_addIndex(self, name, type, REQUEST):
""" add an index """
self._catalog.addIndex(name, type)

message = "Index added"
return self.manage_catalogIndexes(self, REQUEST,
manage_tabs_message=message)

def manage_delIndexes(self, names, REQUEST):
""" del an index """
for name in names:
self._catalog.delIndex(name)

message = "Indexes deleted"
return self.manage_catalogIndexes(self, REQUEST,
manage_tabs_message=message)


def catalog_object(self, obj, uid):
""" wrapper around catalog """
Expand All @@ -242,36 +283,37 @@ def uncatalog_object(self, uid):
self._catalog.uncatalogObject(uid)


#miscilany


def manage_enterDebuger(self, REQUEST):
""" debugger VOODOO """
pdb.set_trace()
if REQUEST is not None:
return MessageDialog(title="Bah!",
message="Say hello to my little friend",
action="manage_main")
def uniqueValuesFor(self, name):
""" returns the unique values for a given FieldIndex """
return self._catalog.uniqueValuesFor(name)


def getpath(self, rid):
return self._catalog.paths[rid]


# impliment the searching interface
def schema(self):
return self._catalog.schema.keys()


def indexes(self):
return self._catalog.indexes.keys()

def index_objects(self):
return self._catalog.indexes.values()


def _searchable_arguments(self):
r = {}
n={'optional':1}
for name in self._catalog.names:
for name in self._catalog.indexes.keys():
r[name]=n
return r


def _searchable_result_columns(self):
r = []
for name in self._catalog.names:
for name in self._catalog.indexes.keys():
i = {}
i['name'] = name
i['type'] = 's'
Expand Down
34 changes: 34 additions & 0 deletions catalogIndexes.dtml
@@ -0,0 +1,34 @@
<HTML>
<HEAD>
<TITLE>View Catalog Records</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" LINK="#000099" VLINK="#555555">
<!--#var manage_tabs-->

<form action="<!--#var URL1-->">

<ul>
<!--#in indexes-->
<li>
<input type="checkbox" name="names:list" value="<!--#var sequence-item-->">
<!--#var sequence-item--></li>
<!--#/in-->
</ul>
<br>
<input name="manage_delIndexes:method" type=submit value=" Delete "><br>
Add Index: <input name="name"> <br>

of Index Type: <select name="type">
<option value="TextIndex">TextIndex</option>
<option value="FieldIndex">FieldIndex</options>
</select>
<input name="manage_addIndex:method" type=submit value=" Add ">
</form>

</BODY></HTML>






29 changes: 29 additions & 0 deletions catalogSchema.dtml
@@ -0,0 +1,29 @@
<HTML>
<HEAD>
<TITLE>View Catalog Records</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" LINK="#000099" VLINK="#555555">
<!--#var manage_tabs-->

<form action="<!--#var URL1-->">

<ul>
<!--#in schema-->
<li>
<input type="checkbox" name="names:list" value="<!--#var sequence-item-->">
<!--#var sequence-item--></li>
<!--#/in-->
</ul>
<br>
<input name="manage_delColumns:method" type=submit value=" Delete "><br>
Add column: <input name="name">
<input name="manage_addColumn:method" type=submit value=" Add ">
</form>

</BODY></HTML>






21 changes: 21 additions & 0 deletions catalogStatus.dtml
@@ -0,0 +1,21 @@
<HTML>
<HEAD>
<TITLE>View Catalog Records</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" LINK="#000099" VLINK="#555555">
<!--#var manage_tabs-->

<ul>
<!--#in index_objects-->
<li>
<!--#var "_.len(_['sequence-item'])"--> object are indexed in <b><!--#var "_['sequence-item'].id"--></b></li>
<!--#/in-->
</ul>

</BODY></HTML>






7 changes: 3 additions & 4 deletions catalogView.dtml
Expand Up @@ -50,8 +50,7 @@ NAME="manage_enterDebuger:method">

<tr valign=top>
<td valign="middle" align="center">
<INPUT TYPE="checkbox" NAME="urls:list" VALUE="<!--#var
data_record_unique_id_-->">
<INPUT TYPE="checkbox" NAME="urls:list" VALUE="<!--#var "getpath(data_record_id_)"-->"
</TD>
<td valign="top"><!--#var meta_type--></td>
<td valign="top" align="left">
Expand All @@ -65,8 +64,8 @@ data_record_unique_id_-->">
<!--#/in-->
</table>

<input type="submit" value=" Remove " NAME="unindexObject:method">
<input type="submit" value=" Update " NAME="indexObject:method">
<input type="submit" value=" Remove " NAME="manage_uncatalogObject:method">
<input type="submit" value=" Update " NAME="manage_catalogObject:method">

</form>

Expand Down

0 comments on commit 5b26b12

Please sign in to comment.