Started roughing out new crud base classes

This commit is contained in:
Jason Gerard DeRose
2009-01-21 17:19:39 -07:00
committed by Rob Crittenden
parent 6e53d03c69
commit 4febb4dd14
4 changed files with 58 additions and 0 deletions

View File

@@ -874,9 +874,11 @@ import plugable
from backend import Backend, Context
from frontend import Command, LocalOrRemote, Application
from frontend import Object, Method, Property
from crud import Create, Retrieve, Update, Delete, Search
from parameters import DefaultFrom, Bool, Flag, Int, Float, Bytes, Str, Password
from parameters import BytesEnum, StrEnum
try:
import uuid
except ImportError:

View File

@@ -73,6 +73,55 @@ class Find(frontend.Method):
yield option
class Create(frontend.Method):
"""
Create a new entry.
"""
class PKQuery(frontend.Method):
"""
Base class for `Retrieve`, `Update`, and `Delete`.
"""
def get_args(self):
yield self.obj.primary_key.clone(query=True, multivalue=True)
class Retrieve(PKQuery):
"""
Retrieve an entry by its primary key.
"""
class Update(PKQuery):
"""
Update one or more attributes on an entry.
"""
def get_options(self):
if self.extra_options_first:
for option in super(Update, self).get_options():
yield option
for option in self.obj.params_minus_pk():
yield option.clone(required=False)
if not self.extra_options_first:
for option in super(Update, self).get_options():
yield option
class Delete(PKQuery):
"""
Delete one or more entries.
"""
class Search(frontend.Method):
"""
Retrieve all entries that match a given search criteria.
"""
class CrudBackend(backend.Backend):
"""
Base class defining generic CRUD backend API.

View File

@@ -617,6 +617,8 @@ class Method(Attribute, Command):
`Property` classes.
"""
__public__ = Attribute.__public__.union(Command.__public__)
extra_options_first = False
extra_args_first = False
def __init__(self):
super(Method, self).__init__()

View File

@@ -230,6 +230,7 @@ class Param(ReadOnly):
('create_default', callable, None),
('autofill', bool, False),
('query', bool, False),
('attribute', bool, False),
('flags', frozenset, frozenset()),
# The 'default' kwarg gets appended in Param.__init__():
@@ -791,6 +792,8 @@ class Bytes(Data):
Python v3 ``(str, unicode) => (bytes, str)`` clean-up. See:
http://docs.python.org/3.0/whatsnew/3.0.html
Also see the `Str` parameter.
"""
type = str
@@ -839,6 +842,8 @@ class Str(Data):
Python v3 ``(str, unicode) => (bytes, str)`` clean-up. See:
http://docs.python.org/3.0/whatsnew/3.0.html
Also see the `Bytes` parameter.
"""
type = unicode