16
16
from datetime import datetime, timedelta
17
from email.Encoders import encode_base64
18
from email.Utils import make_msgid, formatdate
19
from email.Message import Message as EmailMessage
20
from email.MIMEText import MIMEText
21
from email.MIMEMultipart import MIMEMultipart
17
from email.encoders import encode_base64
18
from email.utils import make_msgid, formatdate
19
from email.message import Message as EmailMessage
20
from email.mime.text import MIMEText
21
from email.mime.multipart import MIMEMultipart
22
22
from itertools import count
23
23
from StringIO import StringIO
76
76
from lp.translations.interfaces.translationgroup import (
77
77
ITranslationGroupSet)
78
78
from lp.translations.interfaces.translator import ITranslatorSet
79
from lp.translations.interfaces.translationsperson import ITranslationsPerson
79
from lp.translations.interfaces.translationsperson import ITranslationsPerson
80
80
from canonical.launchpad.ftests._sqlobject import syncUpdate
81
81
from lp.services.mail.signedmessage import SignedMessage
82
82
from lp.services.worlddata.interfaces.country import ICountrySet
100
100
from lp.registry.model.milestone import Milestone
101
101
from lp.registry.model.suitesourcepackage import SuiteSourcePackage
102
102
from lp.registry.interfaces.distribution import IDistributionSet
103
from lp.registry.interfaces.distroseries import (
104
DistroSeriesStatus, IDistroSeries)
103
from lp.registry.interfaces.series import SeriesStatus
104
from lp.registry.interfaces.distroseries import IDistroSeries
105
105
from lp.registry.interfaces.gpg import GPGKeyAlgorithm, IGPGKeySet
106
106
from lp.registry.interfaces.mailinglist import (
107
107
IMailingListSet, MailingListStatus)
512
512
group = self.makeTranslationGroup()
513
513
if person is None:
514
514
person = self.makePerson()
515
ITranslationsPerson(person).translations_relicensing_agreement = license
515
ITranslationsPerson(person).translations_relicensing_agreement = (
516
517
return getUtility(ITranslatorSet).new(group, language, person)
518
519
def makeMilestone(
527
528
productseries=productseries,
530
def makeProductRelease(self, milestone=None, product=None):
531
def makeProductRelease(self, milestone=None, product=None,
531
533
if milestone is None:
532
milestone = self.makeMilestone(product=product)
534
milestone = self.makeMilestone(product=product,
535
productseries=productseries)
533
536
return milestone.createProductRelease(
534
537
milestone.product.owner, datetime.now(pytz.UTC))
536
def makeProductReleaseFile(self, signed=True):
539
def makeProductReleaseFile(self, signed=True,
540
product=None, productseries=None,
543
description="test file"):
537
544
signature_filename = None
538
545
signature_content = None
540
547
signature_filename = 'test.txt.asc'
541
548
signature_content = '123'
542
release = self.makeProductRelease()
550
release = self.makeProductRelease(product=product,
551
productseries=productseries,
543
553
return release.addReleaseFile(
544
554
'test.txt', 'test', 'text/plain',
545
555
uploader=release.milestone.product.owner,
546
556
signature_filename=signature_filename,
547
557
signature_content=signature_content,
548
description="test file")
558
description=description)
550
560
def makeProduct(self, *args, **kwargs):
551
561
"""As makeProductNoCommit with an explicit transaction commit.
1436
1446
members, owner)
1438
1448
def makeDistroRelease(self, distribution=None, version=None,
1439
status=DistroSeriesStatus.DEVELOPMENT,
1449
status=SeriesStatus.DEVELOPMENT,
1440
1450
parent_series=None, name=None):
1441
1451
"""Make a new distro release."""
1442
1452
if distribution is None: