Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ Config Store

- Stores configurations and are retrievable as a dictionary
- Configurations are lazily loaded and are cached per request
- Configurations can have a Setup action to run one-time requests dependent on the configuration data
- Configuration is defined as a django form

Installation
Expand All @@ -23,12 +24,19 @@ Define your configuration form somewhere::

from configstore.configs import ConfigurationInstance, register
from configstore.forms import ConfigurationForm

import logging

class ExampleConfigurationForm(ConfigurationForm):
amount = forms.DecimalField()
message = forms.CharField()
user = forms.ModelChoiceField(queryset=User.objects.all())

@staticmethod
def config_task(configuration):
logging.info("You just ran the configuration action for %s!" % unicode(configuration.name) )
return "Yay, you've accomplished nothing!"

Register the form::

complex_instance = ConfigurationInstance('example', 'Example Config', ExampleConfigurationForm)
Expand Down
8 changes: 8 additions & 0 deletions configstore/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,14 @@
class ConfigurationAdmin(admin.ModelAdmin):
list_display = ('name', 'key', 'site')

actions = ['run_setup']

def run_setup(self, request, queryset):
for item in queryset:
setup_task = CONFIGS.get(item.key).form.config_task
self.message_user(request, setup_task(item))
run_setup.short_description = "Run the setup task for the configuration"

def get_fieldsets(self, request, obj=None):
#consider it might be nice delegate more of this functionality to the ConfigurationInstance
form_builder = self.get_form(request, obj)
Expand Down
9 changes: 9 additions & 0 deletions configstore/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,13 @@ class Meta:
model = Configuration
fields = ['site']

@staticmethod
def config_task(configuration):
"""
Params:
configuration - Instance of django-configstore.models.Configuration

Return:
Message to be echo'ed back to the user through "message_user".
"""
return "No task defined for %s." % configuration.name