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 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:
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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__()
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user