mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Started roughing out new crud base classes
This commit is contained in:
committed by
Rob Crittenden
parent
6e53d03c69
commit
4febb4dd14
@@ -874,9 +874,11 @@ import plugable
|
|||||||
from backend import Backend, Context
|
from backend import Backend, Context
|
||||||
from frontend import Command, LocalOrRemote, Application
|
from frontend import Command, LocalOrRemote, Application
|
||||||
from frontend import Object, Method, Property
|
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 DefaultFrom, Bool, Flag, Int, Float, Bytes, Str, Password
|
||||||
from parameters import BytesEnum, StrEnum
|
from parameters import BytesEnum, StrEnum
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import uuid
|
import uuid
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
|||||||
@@ -73,6 +73,55 @@ class Find(frontend.Method):
|
|||||||
yield option
|
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):
|
class CrudBackend(backend.Backend):
|
||||||
"""
|
"""
|
||||||
Base class defining generic CRUD backend API.
|
Base class defining generic CRUD backend API.
|
||||||
|
|||||||
@@ -617,6 +617,8 @@ class Method(Attribute, Command):
|
|||||||
`Property` classes.
|
`Property` classes.
|
||||||
"""
|
"""
|
||||||
__public__ = Attribute.__public__.union(Command.__public__)
|
__public__ = Attribute.__public__.union(Command.__public__)
|
||||||
|
extra_options_first = False
|
||||||
|
extra_args_first = False
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(Method, self).__init__()
|
super(Method, self).__init__()
|
||||||
|
|||||||
@@ -230,6 +230,7 @@ class Param(ReadOnly):
|
|||||||
('create_default', callable, None),
|
('create_default', callable, None),
|
||||||
('autofill', bool, False),
|
('autofill', bool, False),
|
||||||
('query', bool, False),
|
('query', bool, False),
|
||||||
|
('attribute', bool, False),
|
||||||
('flags', frozenset, frozenset()),
|
('flags', frozenset, frozenset()),
|
||||||
|
|
||||||
# The 'default' kwarg gets appended in Param.__init__():
|
# The 'default' kwarg gets appended in Param.__init__():
|
||||||
@@ -791,6 +792,8 @@ class Bytes(Data):
|
|||||||
Python v3 ``(str, unicode) => (bytes, str)`` clean-up. See:
|
Python v3 ``(str, unicode) => (bytes, str)`` clean-up. See:
|
||||||
|
|
||||||
http://docs.python.org/3.0/whatsnew/3.0.html
|
http://docs.python.org/3.0/whatsnew/3.0.html
|
||||||
|
|
||||||
|
Also see the `Str` parameter.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
type = str
|
type = str
|
||||||
@@ -839,6 +842,8 @@ class Str(Data):
|
|||||||
Python v3 ``(str, unicode) => (bytes, str)`` clean-up. See:
|
Python v3 ``(str, unicode) => (bytes, str)`` clean-up. See:
|
||||||
|
|
||||||
http://docs.python.org/3.0/whatsnew/3.0.html
|
http://docs.python.org/3.0/whatsnew/3.0.html
|
||||||
|
|
||||||
|
Also see the `Bytes` parameter.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
type = unicode
|
type = unicode
|
||||||
|
|||||||
Reference in New Issue
Block a user