~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/registry/interfaces/sourcepackage.py

[r=benji][bug=795573,
 796233] On DistroSeries:+localpackagediffs ensure that the comment
 form is hidden after adding a new comment to a DistroSeriesDifference,
 prevent empty comments from being submitted,
 and add some animations and effects to make the UI less jarring and easier to
 follow.

Show diffs side-by-side

added added

removed removed

Lines of Context:
9
9
 
10
10
__all__ = [
11
11
    'ISourcePackage',
 
12
    'ISourcePackagePublic',
 
13
    'ISourcePackageEdit',
12
14
    'ISourcePackageFactory',
13
15
    'SourcePackageFileType',
14
16
    'SourcePackageType',
65
67
    )
66
68
 
67
69
 
68
 
class ISourcePackage(IBugTarget, IHasBranches, IHasMergeProposals,
69
 
                     IHasOfficialBugTags, IHasCodeImports,
70
 
                     IHasTranslationImports, IHasTranslationTemplates):
71
 
    """A SourcePackage. See the MagicSourcePackage specification. This
72
 
    interface preserves as much as possible of the old SourcePackage
73
 
    interface from the SourcePackage table, with the new table-less
74
 
    implementation."""
75
 
 
76
 
    export_as_webservice_entry()
 
70
class ISourcePackagePublic(IBugTarget, IHasBranches, IHasMergeProposals,
 
71
                           IHasOfficialBugTags, IHasCodeImports,
 
72
                           IHasTranslationImports, IHasTranslationTemplates):
 
73
    """Public attributes for SourcePackage."""
77
74
 
78
75
    id = Attribute("ID")
79
76
 
80
77
    name = exported(
81
78
        TextLine(
82
 
            title=_("Name"), required=True,
 
79
            title=_("Name"), required=True, readonly=True,
83
80
            description=_("The text name of this source package.")))
84
81
 
85
82
    displayname = exported(
86
83
        TextLine(
87
 
            title=_("Display name"), required=True,
 
84
            title=_("Display name"), required=True, readonly=True,
88
85
            description=_("A displayname, constructed, for this package")))
89
86
 
90
87
    path = Attribute("A path to this package, <distro>/<series>/<package>")
107
104
            Interface,
108
105
            # Really IDistribution, circular import fixed in
109
106
            # _schema_circular_imports.
110
 
            title=_("Distribution"), required=True,
 
107
            title=_("Distribution"), required=True, readonly=True,
111
108
            description=_("The distribution for this source package.")))
112
109
 
113
110
    # The interface for this is really IDistroSeries, but importing that would
115
112
    distroseries = exported(
116
113
        Reference(
117
114
            Interface, title=_("Distribution Series"), required=True,
 
115
            readonly=True,
118
116
            description=_("The DistroSeries for this SourcePackage")))
119
117
 
120
118
    sourcepackagename = Attribute("SourcePackageName")
130
128
    productseries = exported(
131
129
        ReferenceChoice(
132
130
            title=_("Project series"), required=False,
133
 
            vocabulary="ProductSeries",
 
131
            vocabulary="ProductSeries", readonly=True,
134
132
            schema=Interface,
135
133
            description=_(
136
134
                "The registered project series that this source package "
265
263
        :return: An `IBranch`.
266
264
        """
267
265
 
268
 
    # 'pocket' should actually be a PackagePublishingPocket, and 'branch'
269
 
    # should be IBranch, but we use the base classes to avoid circular
270
 
    # imports. Correct interface specific in _schema_circular_imports.
271
 
    @operation_parameters(
272
 
        pocket=Choice(
273
 
            title=_("Pocket"), required=True,
274
 
            vocabulary=DBEnumeratedType),
275
 
        branch=Reference(Interface, title=_("Branch"), required=False))
276
 
    @call_with(registrant=REQUEST_USER)
277
 
    @export_write_operation()
278
 
    def setBranch(pocket, branch, registrant):
279
 
        """Set the official branch for the given pocket of this package.
280
 
 
281
 
        :param pocket: A `PackagePublishingPocket`.
282
 
        :param branch: The branch to set as the official branch.
283
 
        :param registrant: The individual who created this link.
284
 
        :return: None
285
 
        """
286
 
 
287
266
    shouldimport = Attribute("""Whether we should import this or not.
288
267
        By 'import' we mean sourcerer analysis resulting in a manifest and a
289
268
        set of Bazaar branches which describe the source package release.
329
308
        """
330
309
 
331
310
 
 
311
class ISourcePackageEdit(Interface):
 
312
    """SourcePackage attributes requiring launchpad.Edit."""
 
313
 
 
314
    # 'pocket' should actually be a PackagePublishingPocket, and 'branch'
 
315
    # should be IBranch, but we use the base classes to avoid circular
 
316
    # imports. Correct interface specific in _schema_circular_imports.
 
317
    @operation_parameters(
 
318
        pocket=Choice(
 
319
            title=_("Pocket"), required=True,
 
320
            vocabulary=DBEnumeratedType),
 
321
        branch=Reference(Interface, title=_("Branch"), required=False))
 
322
    @call_with(registrant=REQUEST_USER)
 
323
    @export_write_operation()
 
324
    def setBranch(pocket, branch, registrant):
 
325
        """Set the official branch for the given pocket of this package.
 
326
 
 
327
        :param pocket: A `PackagePublishingPocket`.
 
328
        :param branch: The branch to set as the official branch.
 
329
        :param registrant: The individual who created this link.
 
330
        :return: None
 
331
        """
 
332
 
 
333
 
 
334
class ISourcePackage(ISourcePackagePublic, ISourcePackageEdit):
 
335
    """A source package associated to a particular distribution series."""
 
336
    export_as_webservice_entry()
 
337
 
 
338
 
332
339
class ISourcePackageFactory(Interface):
333
340
    """A creator of source packages."""
334
341