~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/soyuz/model/distributionjob.py

  • Committer: Launchpad Patch Queue Manager
  • Date: 2011-08-03 11:23:34 UTC
  • mfrom: (13457.6.16 upgrade-stderr)
  • Revision ID: launchpad@pqm.canonical.com-20110803112334-acnupsa7jmzmdeet
[r=stevenk][bug=819751] Fix the implementation of several methods in
 LoggingUIFactory.

Show diffs side-by-side

added added

removed removed

Lines of Context:
9
9
]
10
10
 
11
11
from lazr.delegates import delegates
 
12
import simplejson
12
13
from storm.locals import (
13
14
    And,
14
15
    Int,
15
 
    JSON,
16
16
    Reference,
 
17
    Unicode,
17
18
    )
18
19
from zope.interface import implements
19
20
 
 
21
from canonical.database.enumcol import EnumCol
 
22
from canonical.launchpad.interfaces.lpstorm import IStore
20
23
from lp.app.errors import NotFoundError
21
24
from lp.registry.model.distribution import Distribution
22
25
from lp.registry.model.distroseries import DistroSeries
23
 
from lp.services.database.enumcol import EnumCol
24
 
from lp.services.database.lpstorm import IStore
25
26
from lp.services.database.stormbase import StormBase
26
27
from lp.services.job.model.job import Job
27
28
from lp.services.job.runner import BaseRunnableJob
51
52
 
52
53
    job_type = EnumCol(enum=DistributionJobType, notNull=True)
53
54
 
54
 
    metadata = JSON('json_data')
 
55
    _json_data = Unicode('json_data')
55
56
 
56
57
    def __init__(self, distribution, distroseries, job_type, metadata):
57
58
        super(DistributionJob, self).__init__()
59
60
        self.distribution = distribution
60
61
        self.distroseries = distroseries
61
62
        self.job_type = job_type
62
 
        self.metadata = metadata
 
63
        self._json_data = self.serializeMetadata(metadata)
 
64
 
 
65
    @classmethod
 
66
    def serializeMetadata(cls, metadata_dict):
 
67
        """Serialize a dict of metadata into a unicode string."""
 
68
        return simplejson.dumps(metadata_dict).decode('utf-8')
 
69
 
 
70
    @property
 
71
    def metadata(self):
 
72
        return simplejson.loads(self._json_data)
63
73
 
64
74
 
65
75
class DistributionJobDerived(BaseRunnableJob):