630
630
override = overrides[overrides_index]
631
# Make a note of the destination source's version for use
632
# in sending the email notification and closing bugs.
633
existing = archive.getPublishedSources(
634
name=source.sourcepackagerelease.name, exact_match=True,
635
status=active_publishing_status,
636
distroseries=series, pocket=pocket).first()
638
old_version = existing.sourcepackagerelease.version
631
641
sub_copies = _do_direct_copy(
632
642
source, archive, destination_series, pocket,
633
643
include_binaries, override, close_bugs=close_bugs,
634
create_dsd_job=create_dsd_job)
644
create_dsd_job=create_dsd_job,
645
close_bugs_since_version=old_version)
637
648
person, source.sourcepackagerelease, [], [], archive,
638
649
destination_series, pocket, changes=None,
639
650
action='accepted',
640
announce_from_person=announce_from_person)
651
announce_from_person=announce_from_person,
652
previous_version=old_version)
642
654
overrides_index += 1
643
655
copies.extend(sub_copies)
648
660
def _do_direct_copy(source, archive, series, pocket, include_binaries,
649
override=None, close_bugs=True, create_dsd_job=True):
661
override=None, close_bugs=True, create_dsd_job=True,
662
close_bugs_since_version=None):
650
663
"""Copy publishing records to another location.
652
665
Copy each item of the given list of `SourcePackagePublishingHistory`
669
682
copied publication should be closed.
670
683
:param create_dsd_job: A boolean indicating whether or not a dsd job
671
684
should be created for the new source publication.
685
:param close_bugs_since_version: If close_bugs is True,
686
then this parameter says which changelog entries to parse looking
687
for bugs to close. See `close_bugs_for_sourcepackagerelease`.
673
689
:return: a list of `ISourcePackagePublishingHistory` and
674
690
`BinaryPackagePublishingHistory` corresponding to the copied
700
716
source_copy = source.copyTo(
701
717
series, pocket, archive, override, create_dsd_job=create_dsd_job)
703
close_bugs_for_sourcepublication(source_copy)
719
close_bugs_for_sourcepublication(
720
source_copy, close_bugs_since_version)
704
721
copies.append(source_copy)
706
723
source_copy = source_in_destination.first()