Source code for fancy_cronfield.widgets

#!/usr/bin/env python
# vim: ai ts=4 sts=4 et sw=4
import copy

from django import forms


# FIXME Issue #17 - z-index issue for CronField UI in inline admins
[docs]class CronWidget(forms.TextInput): """ CronWidget class providing gentle select UI for cron fields """ input_type = 'hidden' def __init__(self, attrs=None, options=None): options = options or {} self.options = { 'use_gentle_select': True, 'allow_multiple_all': False, 'allow_multiple_dom': True, 'allow_multiple_month': True, 'allow_multiple_dow': True, 'allow_multiple_hour': True, 'allow_multiple_minute': True, } for key in self.options.keys(): self.options.update({ key: options.get(key, self.options.get(key)) }) attrs = attrs if attrs is not None else {} attrs.update({'data-fancy': 'cron'}) for key in self.options.keys(): if self.options.get(key): attrs.update({ 'data-%s' % key: '1' }) super(CronWidget, self).__init__(attrs) def __deepcopy__(self, memo): obj = copy.copy(self) obj.attrs = self.attrs.copy() obj.options = copy.copy(self.options) memo[id(self)] = obj return obj
[docs] class Media: css = { 'all': ( 'fancy_cronfield/css/cronfield.min.css', 'fancy_cronfield/css/jquery-cron.min.css', 'fancy_cronfield/css/jquery-gentleSelect.min.css', ) } js = ( 'fancy_cronfield/js/jquery-1.4.1.min.js', 'fancy_cronfield/js/jquery-cron.min.js', 'fancy_cronfield/js/jquery-gentleSelect.min.js', 'fancy_cronfield/js/cronfield.min.js', )