112 lines
2.9 KiB
Python
112 lines
2.9 KiB
Python
#
|
|
# $Id$
|
|
#
|
|
# This file contains class definitions and interface to the database
|
|
# itself while defining objects that the database will return.
|
|
#
|
|
|
|
import rcs, re
|
|
|
|
|
|
#
|
|
# The most generic exception that this library will raise.
|
|
#
|
|
class PVVDBError(Exception):
|
|
pass
|
|
|
|
|
|
#
|
|
# PVVMember is the class that represents a record in the database.
|
|
# Its interface is like a dict with a few additional methods to
|
|
# talk to the database itself.
|
|
#
|
|
class PVVMember(dict):
|
|
|
|
def __init__(self, data, dbref):
|
|
# Populate the object with the fields and values provided in the
|
|
# `data' object. `dbref' is a pointer to the PVVDB instance that
|
|
# created the PVVMember instance.
|
|
pass
|
|
|
|
def save(self):
|
|
# Synchronise the object to disk via the database interface.
|
|
pass
|
|
|
|
def load(self):
|
|
# Update the object with the data on disk.
|
|
pass
|
|
|
|
def is_saved(self):
|
|
# Checks whether the objects need to be saved or loaded.
|
|
pass
|
|
|
|
|
|
#
|
|
# PVVDB is the class that interfaces to the directory structure and files.
|
|
# It also verifies the data read from the files and written to it.
|
|
#
|
|
class PVVDB:
|
|
|
|
def __init__(self, base):
|
|
# Find the record definition file, read it, verify it and
|
|
# set the legal set of fields.
|
|
pass
|
|
|
|
def __del__(self):
|
|
# clean up locks and such before being deleted.
|
|
pass
|
|
|
|
def __format(self, file_path):
|
|
# parses and verifies the .format files for a database.
|
|
fh = file(file_path)
|
|
fmt = {}
|
|
for line in fh:
|
|
if line[0] == "#":
|
|
continue
|
|
name, value = line.strip().split(":", 1)
|
|
value = value.split("#", 1)[0].strip()
|
|
if not value in ['scalar', 'list']:
|
|
raise PVVDBError, "%s not legal .format datatype." % value
|
|
fmt[name] = value
|
|
return fmt
|
|
|
|
def lock(self, username):
|
|
# Lock the record.
|
|
pass
|
|
|
|
def unlock(self, username):
|
|
# Unlock the record.
|
|
pass
|
|
|
|
def load(self, username, lock=False):
|
|
# Read the record from the database. Will do an automatic lock
|
|
# if `lock' is True.
|
|
pass
|
|
|
|
def save(self, username, comment="", lock=False):
|
|
# Write the record to the database. Will automatically unlock
|
|
# the record if `lock' is True. A `comment' can be supplied that
|
|
# explains the changes made.
|
|
pass
|
|
|
|
|
|
#
|
|
# Regular interface to the database.
|
|
#
|
|
|
|
pathmap = {}
|
|
|
|
def connect(path):
|
|
# returns a PVVDB instance to that path. If asked for another
|
|
# PVVDB instance with the same path as earlier, it will return
|
|
# the same object.
|
|
if not path in pathmap:
|
|
pathmap[path] = PVVDB(path)
|
|
return pathmap[path]
|
|
|
|
def disconnect(dbo):
|
|
# do not do anything, really. PVVDB objects will clean up
|
|
# automatically when deleted. is here for future database
|
|
# systems.
|
|
pass
|