Skip to content

Commit

Permalink
Use PickledObjectField from django-picklefield for storing args and k…
Browse files Browse the repository at this point in the history
…wargs.
  • Loading branch information
gintas committed Oct 9, 2009
1 parent 3dc89b1 commit 0359dc3
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 20 deletions.
1 change: 1 addition & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
packages=find_packages('src'),
package_dir={'' : 'src'},
package_data={'django_future': ['*.txt']},
install_requires=['django-picklefield'],
classifiers=[
'Development Status :: 4 - Beta',
'Framework :: Django',
Expand Down
23 changes: 3 additions & 20 deletions src/django_future/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from django.conf import settings
from django.contrib.contenttypes import generic
from django.contrib.contenttypes.models import ContentType
from picklefield import PickledObjectField


__all__ = ['ScheduledJob']
Expand Down Expand Up @@ -33,32 +34,14 @@ class ScheduledJob(models.Model):
content_object = generic.GenericForeignKey()

callable_name = models.CharField(max_length=255)
args_pickled = models.TextField(editable=False)
kwargs_pickled = models.TextField(editable=False)
args = PickledObjectField()
kwargs = PickledObjectField()
error = models.TextField(blank=True, null=True)

class Meta:
get_latest_by = 'time_slot_start'
ordering = ['time_slot_start']

def _get_args(self):
return self._unpickle(self.args_pickled)
def _set_args(self, value):
self.args_pickled = self._pickle(value)
args = property(_get_args, _set_args)

def _get_kwargs(self):
return self._unpickle(self.kwargs_pickled)
def _set_kwargs(self, value):
self.kwargs_pickled = self._pickle(value)
kwargs = property(_get_kwargs, _set_kwargs)

def _pickle(self, value):
return cPickle.dumps(value).encode('base64')

def _unpickle(self, s):
return cPickle.loads(str(s).decode('base64'))

def __repr__(self):
return '<ScheduledJob (%s) callable=%r>' % (
self.status, self.callable_name)
Expand Down

0 comments on commit 0359dc3

Please # to comment.