xia_engine.acl.AclItem

class xia_engine.acl.AclItem(**kwargs)

Bases: EmbeddedDocument

Access Control List Item

obj

object. Should keep hierarchy with “/” like Obj_A/key_set/sub_B/sub_C/…

Type

str

act

action. Like new, read, write, delete, drop or action/action_name

Type

str

Notes

  • obj is composed by three parts. Given the example of Obj_A/key_set/sub_B/sub_C/:
    • Object Part: Obj_A. In the most case, it is the Document class’s class name

    • Key name Part: Key_set
      • If key name is “key”, the privilege is calculated by using primary keys

      • In the other case, the privilege is calculated by using key set defined in _privilege_keys[key_set]

    • Value Part:
      • Value divided by “/”. Using * to match an element

      • obj accept variable embraced by {}.

      Like Obj_A/key_set/{user_name}. user_name is filled during the run time.

__init__(**kwargs)

Methods

__init__(**kwargs)

acl_match(obj, act)

act_compact(act_list)

act_match(key1, key2)

Comparison for act, possible to have several acts seperated by ','

act_subtract(key1, key2)

action(action_name[, acl, payload])

Doing an action of a document

assign_holder(holders_to_set, holder)

Assign holder

calculate_id()

Calculate document id from current attributes

collection_action(action_name[, acl, payload])

Doing a collection level action

dict_to_id(key_values)

Calculate document id from key_values

dict_to_id_list(key_values)

Calculate document id from key_values.

from_db([_engine])

Transform database data to internal data

from_display(**kwargs)

Transform Display data to internal data

get_actions()

Get action supported by this document

get_all_fields()

Get All fields of current class

get_display_data([lazy, catalog, show_hidden])

Get Display data (visualized form of data)

get_filled_acl_item(profile)

get_holder()

get_raw_data()

Get Raw data (materialized form of data)

get_runtime_data()

Get Runtime data (calculated from raw data when runtime is activated)

get_sample()

Get a sample document data

get_unique_list()

Get list of unique constrains

id_to_dict(doc_id)

From document id to key

key_match(key1, key2)

Customized match algo, * can be @middle

key_subtract(key1, key2)

How to handler the double limitations:

set_holder(holder)

to_db(*[, catalog, ignore_unknown, engine])

Translate the runtime data into raw data (materialized form of data)

validate()

Design Time Validation

Attributes

ITEM_FILL_LIMIT

OPERATORS

act

obj

classmethod act_match(key1: str, key2: str) bool

Comparison for act, possible to have several acts seperated by ‘,’

Parameters
  • key1 – key to compare

  • key2 – item from acl content

Returns

object: True if match else False

Return type

object

action(action_name: str, acl=None, payload: Optional[dict] = None)

Doing an action of a document

Parameters
  • action_name – The action name

  • acl – Access Control List

  • payload – Parameters of action

classmethod assign_holder(holders_to_set: list, holder)

Assign holder

Parameters
  • holders_to_set (list) – The holder must be attached to the given list

  • holder – Holder

calculate_id() Optional[str]

Calculate document id from current attributes

Returns

Document id as string if having key field defined else None

classmethod collection_action(action_name, acl=None, payload: Optional[dict] = None)

Doing a collection level action

Parameters
  • action_name – The action name

  • acl – Access Control List

  • payload – Parameters of action

classmethod dict_to_id(key_values: dict) str

Calculate document id from key_values

Parameters

key_values (dict) – Key value dictionary

Returns

Document id as string

classmethod dict_to_id_list(key_values: dict) list

Calculate document id from key_values. Accepting list as value. Output will always be list

Parameters

key_values (dict) – Key value dictionary

Returns

Document id as string

classmethod from_db(_engine: Optional[Type[BaseEngine]] = None, **kwargs)

Transform database data to internal data

Parameters
  • _engine – engine to be used for convert data

  • **kwargs (object) – python dict got from system

Returns

python dict object

classmethod from_display(**kwargs)

Transform Display data to internal data

Parameters

**kwargs (object) – display object got from front end

Returns

python dict object

classmethod get_actions()

Get action supported by this document

Returns

Base]

Return type

dictionary[str

classmethod get_all_fields() dict

Get All fields of current class

get_display_data(lazy: bool = True, catalog: Optional[dict] = None, show_hidden: bool = False)

Get Display data (visualized form of data)

Parameters
  • lazy (bool) – Left the fields as is if they are not explicitly loaded

  • catalog (dict) – The catalog of display field in the following format: * {field1: false, field2: false, field3: {sub-field1: true, sub-field2: true}} * field1, field2 is the top-level normal field * field3 is an embedded field/reference field/external field while sub-field1, sub-field2 is its fields * True or false will override the lazy setting, none means using lazy settings

  • show_hidden (bool) – If hidden value should be shown or not

Returns

python dict object

Notes

We will return the detail form if it is possible

get_raw_data()

Get Raw data (materialized form of data)

Returns

python dict object

get_runtime_data()

Get Runtime data (calculated from raw data when runtime is activated)

Returns

python dict object

classmethod get_sample()

Get a sample document data

classmethod get_unique_list() list

Get list of unique constrains

classmethod id_to_dict(doc_id: str) dict

From document id to key

Parameters

doc_id (str) – Document ID

Returns

A dictionary who holds the key fields and the values

classmethod key_match(key1: str, key2: str) bool

Customized match algo, * can be @middle

Parameters
  • key1 – key to compare

  • key2 – item from acl content

Returns

True if match else False

Return type

object

Comments:

classmethod key_subtract(key1: str, key2: str)

How to handler the double limitations:

  • ‘*’ - any = any

  • text - any = key_match(text, any) = text or None in the other case

  • ‘a*b’ - ‘x*y’ = biggest a and x + ‘*’ + biggest b and y

Parameters
  • key1 – key to compare

  • key2 – item from acl content

Returns

True if match else False

Return type

object

to_db(*, catalog: Optional[dict] = None, ignore_unknown: bool = False, engine: Optional[Type[BaseEngine]] = None)

Translate the runtime data into raw data (materialized form of data)

Parameters
  • catalog (dict) – Data catalog to be parsed

  • ignore_unknown (bool) – When a field is not defined in the document, should we send it back to the database

  • engine – engine to be used for db data conversion

Returns

python dict object

validate()

Design Time Validation

This validation is for removing obvious errors. Could still have errors during the runtime