Skip to content

pombredanne/django-dynamic-rules

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sometimes when you develop apps for other people, they like to
define their own sets of "rules".

For example, one customer might say the value of a certain field on
a model might be valid when it is between 100 and 1000. Another customer
might consider the same field valid only when the value is between
500 and 1000.

That kind of validation is extremely difficult to do in a modelform's
clean method like you would if you knew beforehand what the valid values
were supposed to be.

This app lets you create some boundaries for various arbitrary parameters
that are tied to some other arbitrary model. Each customer can then define
what the rule parameters will be for their particular organization.


Usage:
First create a file called dynamic_actions.
Inside dynamic actions, you must register your rule class
with the dynamic_rules site.

The rule class must have the following attributes:
  key: a string to identify the rule class with the registry
  display_name: a name to use for the admin_form to show a readable name
  fields: a dictionary of field_names, and django form classes. This declares
          the parameters available.

Additionally, the rule class must accept a rule_model and model_to_check
as initialization arguments, and have a run method that accepts
*args and **kwargs.

To see the dynamic rules in action, syncdb from this project and fire
up the admin. Create a rule tied to group_object_id: 1 (i.e. customer 1)
and content type: 'customer'

Add a ModelToCheck model from the sample app that has a value that
violates your rule. Check the runserver console and see that the
violation printed.

This is best used in conjunction with django-dynamic-validation which lets you
track and store violations to the rules, or django-dynamic-manipulation
which lets you manipulate other data because of a triggered rule.

 - http://pypi.python.org/pypi/django-dynamic-validation
 - http://pypi.python.org/pypi/django-dynamic-manipulation

About

Allows you to create dynamic rules related to a particular model

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published