Merge lp:~cjwatson/launchpad/snap-upload-model into lp:launchpad

Proposed by Colin Watson
Status: Merged
Merged at revision: 18028
Proposed branch: lp:~cjwatson/launchpad/snap-upload-model
Merge into: lp:launchpad
Prerequisite: lp:~cjwatson/launchpad/snap-series
Diff against target: 148 lines (+59/-6)
3 files modified
lib/lp/snappy/interfaces/snap.py (+32/-1)
lib/lp/snappy/model/snap.py (+22/-3)
lib/lp/testing/factory.py (+5/-2)
To merge this branch: bzr merge lp:~cjwatson/launchpad/snap-upload-model
Reviewer Review Type Date Requested Status
William Grant code Approve
Review via email: mp+293648@code.launchpad.net

Commit message

Add basic model for Snap/SnapBuild store upload columns.

Description of the change

Add basic model for Snap/SnapBuild store upload columns. This doesn't do anything interesting yet and I haven't exported any of the attributes; I just wanted to have this in place to make it easier to submit subsequent branches.

To post a comment you must log in.
Revision history for this message
William Grant (wgrant) :
review: Approve (code)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/lp/snappy/interfaces/snap.py'
--- lib/lp/snappy/interfaces/snap.py 2016-02-28 17:23:53 +0000
+++ lib/lp/snappy/interfaces/snap.py 2016-05-09 15:49:50 +0000
@@ -86,6 +86,7 @@
86 PublicPersonChoice,86 PublicPersonChoice,
87 )87 )
88from lp.services.webhooks.interfaces import IWebhookTarget88from lp.services.webhooks.interfaces import IWebhookTarget
89from lp.snappy.interfaces.snappyseries import ISnappySeries
89from lp.soyuz.interfaces.archive import IArchive90from lp.soyuz.interfaces.archive import IArchive
90from lp.soyuz.interfaces.distroarchseries import IDistroArchSeries91from lp.soyuz.interfaces.distroarchseries import IDistroArchSeries
9192
@@ -354,6 +355,34 @@
354 "The Git branch containing a snapcraft.yaml recipe at the top "355 "The Git branch containing a snapcraft.yaml recipe at the top "
355 "level.")))356 "level.")))
356357
358 store_upload = Bool(
359 title=_("Automatically upload to store"),
360 required=True, readonly=False,
361 description=_(
362 "Whether builds of this snap package are automatically uploaded "
363 "to the store."))
364
365 store_series = ReferenceChoice(
366 title=_("Store series"),
367 schema=ISnappySeries, vocabulary="SnappySeries",
368 required=False, readonly=False,
369 description=_(
370 "The series in which this snap package should be published in the "
371 "store."))
372
373 store_name = TextLine(
374 title=_("Registered store package name"),
375 required=False, readonly=False,
376 description=_(
377 "The registered name of this snap package in the store."))
378
379 store_secrets = List(
380 value_type=TextLine(), title=_("Store upload tokens"),
381 required=False, readonly=False,
382 description=_(
383 "Serialized secrets issued by the store and the login service to "
384 "authorize uploads of this snap package."))
385
357386
358class ISnapAdminAttributes(Interface):387class ISnapAdminAttributes(Interface):
359 """`ISnap` attributes that can be edited by admins.388 """`ISnap` attributes that can be edited by admins.
@@ -401,7 +430,9 @@
401 @operation_for_version("devel")430 @operation_for_version("devel")
402 def new(registrant, owner, distro_series, name, description=None,431 def new(registrant, owner, distro_series, name, description=None,
403 branch=None, git_ref=None, require_virtualized=True,432 branch=None, git_ref=None, require_virtualized=True,
404 processors=None, date_created=None, private=False):433 processors=None, date_created=None, private=False,
434 store_upload=False, store_series=None, store_name=None,
435 store_secrets=None):
405 """Create an `ISnap`."""436 """Create an `ISnap`."""
406437
407 def exists(owner, name):438 def exists(owner, name):
408439
=== modified file 'lib/lp/snappy/model/snap.py'
--- lib/lp/snappy/model/snap.py 2016-02-28 17:40:10 +0000
+++ lib/lp/snappy/model/snap.py 2016-05-09 15:49:50 +0000
@@ -12,6 +12,7 @@
12 DateTime,12 DateTime,
13 Desc,13 Desc,
14 Int,14 Int,
15 JSON,
15 Not,16 Not,
16 Reference,17 Reference,
17 Store,18 Store,
@@ -148,10 +149,20 @@
148149
149 private = Bool(name='private')150 private = Bool(name='private')
150151
152 store_upload = Bool(name='store_upload', allow_none=False)
153
154 store_series_id = Int(name='store_series', allow_none=True)
155 store_series = Reference(store_series_id, 'SnappySeries.id')
156
157 store_name = Unicode(name='store_name', allow_none=True)
158
159 store_secrets = JSON('store_secrets', allow_none=True)
160
151 def __init__(self, registrant, owner, distro_series, name,161 def __init__(self, registrant, owner, distro_series, name,
152 description=None, branch=None, git_ref=None,162 description=None, branch=None, git_ref=None,
153 require_virtualized=True, date_created=DEFAULT,163 require_virtualized=True, date_created=DEFAULT,
154 private=False):164 private=False, store_upload=False, store_series=None,
165 store_name=None, store_secrets=None):
155 """Construct a `Snap`."""166 """Construct a `Snap`."""
156 if not getFeatureFlag(SNAP_FEATURE_FLAG):167 if not getFeatureFlag(SNAP_FEATURE_FLAG):
157 raise SnapFeatureDisabled168 raise SnapFeatureDisabled
@@ -168,6 +179,10 @@
168 self.date_created = date_created179 self.date_created = date_created
169 self.date_last_modified = date_created180 self.date_last_modified = date_created
170 self.private = private181 self.private = private
182 self.store_upload = store_upload
183 self.store_series = store_series
184 self.store_name = store_name
185 self.store_secrets = store_secrets
171186
172 @property187 @property
173 def valid_webhook_event_types(self):188 def valid_webhook_event_types(self):
@@ -389,7 +404,9 @@
389404
390 def new(self, registrant, owner, distro_series, name, description=None,405 def new(self, registrant, owner, distro_series, name, description=None,
391 branch=None, git_ref=None, require_virtualized=True,406 branch=None, git_ref=None, require_virtualized=True,
392 processors=None, date_created=DEFAULT, private=False):407 processors=None, date_created=DEFAULT, private=False,
408 store_upload=False, store_series=None, store_name=None,
409 store_secrets=None):
393 """See `ISnapSet`."""410 """See `ISnapSet`."""
394 if not registrant.inTeam(owner):411 if not registrant.inTeam(owner):
395 if owner.is_team:412 if owner.is_team:
@@ -414,7 +431,9 @@
414 registrant, owner, distro_series, name, description=description,431 registrant, owner, distro_series, name, description=description,
415 branch=branch, git_ref=git_ref,432 branch=branch, git_ref=git_ref,
416 require_virtualized=require_virtualized, date_created=date_created,433 require_virtualized=require_virtualized, date_created=date_created,
417 private=private)434 private=private, store_upload=store_upload,
435 store_series=store_series, store_name=store_name,
436 store_secrets=store_secrets)
418 store.add(snap)437 store.add(snap)
419438
420 if processors is None:439 if processors is None:
421440
=== modified file 'lib/lp/testing/factory.py'
--- lib/lp/testing/factory.py 2016-05-09 15:49:49 +0000
+++ lib/lp/testing/factory.py 2016-05-09 15:49:50 +0000
@@ -4607,7 +4607,8 @@
4607 def makeSnap(self, registrant=None, owner=None, distroseries=None,4607 def makeSnap(self, registrant=None, owner=None, distroseries=None,
4608 name=None, branch=None, git_ref=None,4608 name=None, branch=None, git_ref=None,
4609 require_virtualized=True, processors=None,4609 require_virtualized=True, processors=None,
4610 date_created=DEFAULT, private=False):4610 date_created=DEFAULT, private=False, store_upload=False,
4611 store_series=None, store_name=None, store_secrets=None):
4611 """Make a new Snap."""4612 """Make a new Snap."""
4612 if registrant is None:4613 if registrant is None:
4613 registrant = self.makePerson()4614 registrant = self.makePerson()
@@ -4623,7 +4624,9 @@
4623 registrant, owner, distroseries, name,4624 registrant, owner, distroseries, name,
4624 require_virtualized=require_virtualized, processors=processors,4625 require_virtualized=require_virtualized, processors=processors,
4625 date_created=date_created, branch=branch, git_ref=git_ref,4626 date_created=date_created, branch=branch, git_ref=git_ref,
4626 private=private)4627 private=private, store_upload=store_upload,
4628 store_series=store_series, store_name=store_name,
4629 store_secrets=store_secrets)
4627 IStore(snap).flush()4630 IStore(snap).flush()
4628 return snap4631 return snap
46294632