def update_files_privacy(pub_record): """Update file privacy according to the publishing destination :param pub_record: One of a SourcePackagePublishingHistory or BinaryPackagePublishingHistory record. :return: a list of changed `LibraryFileAlias` objects. """ package_files = [] archive = None if ISourcePackagePublishingHistory.providedBy(pub_record): archive = pub_record.archive # Unrestrict the package files files if necessary. sourcepackagerelease = pub_record.sourcepackagerelease package_files.extend([(source_file, 'libraryfile') for source_file in sourcepackagerelease.files]) # Unrestrict the package diff files if necessary. package_files.extend([(diff, 'diff_content') for diff in sourcepackagerelease.package_diffs]) # Unrestrict the source upload changesfile if necessary. package_upload = sourcepackagerelease.package_upload package_files.append((package_upload, 'changesfile')) package_files.append((sourcepackagerelease, 'changelog')) elif IBinaryPackagePublishingHistory.providedBy(pub_record): archive = pub_record.archive # Unrestrict the binary files if necessary. binarypackagerelease = pub_record.binarypackagerelease package_files.extend([(binary_file, 'libraryfile') for binary_file in binarypackagerelease.files]) # Unrestrict the upload changesfile file as necessary. build = binarypackagerelease.build package_upload = build.package_upload package_files.append((package_upload, 'changesfile')) # Unrestrict the buildlog file as necessary. package_files.append((build, 'log')) elif IPackageUploadCustom.providedBy(pub_record): # Unrestrict the custom files included package_files.append((pub_record, 'libraryfilealias')) # And set archive to the right attribute for PUCs archive = pub_record.packageupload.archive else: raise AssertionError( "pub_record is not one of SourcePackagePublishingHistory, " "BinaryPackagePublishingHistory or PackageUploadCustom.") changed_files = [] for obj, attr_name in package_files: lfa = getattr(obj, attr_name, None) # Only unrestrict restricted files published in public archives, # not the opposite. We don't have a use-case for privatizing # files yet. if (lfa is None or lfa.restricted == archive.private or lfa.restricted == False): continue # LibraryFileAlias.restricted is normally read-only, but we have a # good excuse here. removeSecurityProxy(lfa).restricted = archive.private changed_files.append(lfa) return changed_files
def is_binary(self): return IBinaryPackagePublishingHistory.providedBy(self.context)
def update_files_privacy(pub_record): """Update file privacy according to the publishing destination :param pub_record: One of a SourcePackagePublishingHistory or BinaryPackagePublishingHistory record. :return: a list of changed `LibraryFileAlias` objects. """ package_files = [] archive = None if ISourcePackagePublishingHistory.providedBy(pub_record): archive = pub_record.archive # Unrestrict the package files files if necessary. sourcepackagerelease = pub_record.sourcepackagerelease package_files.extend( [(source_file, 'libraryfile') for source_file in sourcepackagerelease.files]) # Unrestrict the package diff files if necessary. package_files.extend( [(diff, 'diff_content') for diff in sourcepackagerelease.package_diffs]) # Unrestrict the source upload changesfile if necessary. package_upload = sourcepackagerelease.package_upload package_files.append((package_upload, 'changesfile')) package_files.append((sourcepackagerelease, 'changelog')) elif IBinaryPackagePublishingHistory.providedBy(pub_record): archive = pub_record.archive # Unrestrict the binary files if necessary. binarypackagerelease = pub_record.binarypackagerelease package_files.extend( [(binary_file, 'libraryfile') for binary_file in binarypackagerelease.files]) # Unrestrict the upload changesfile file as necessary. build = binarypackagerelease.build package_upload = build.package_upload package_files.append((package_upload, 'changesfile')) # Unrestrict the buildlog file as necessary. package_files.append((build, 'log')) elif IPackageUploadCustom.providedBy(pub_record): # Unrestrict the custom files included package_files.append((pub_record, 'libraryfilealias')) # And set archive to the right attribute for PUCs archive = pub_record.packageupload.archive else: raise AssertionError( "pub_record is not one of SourcePackagePublishingHistory, " "BinaryPackagePublishingHistory or PackageUploadCustom.") changed_files = [] for obj, attr_name in package_files: lfa = getattr(obj, attr_name, None) # Only unrestrict restricted files published in public archives, # not the opposite. We don't have a use-case for privatizing # files yet. if (lfa is None or lfa.restricted == archive.private or lfa.restricted == False): continue # LibraryFileAlias.restricted is normally read-only, but we have a # good excuse here. removeSecurityProxy(lfa).restricted = archive.private changed_files.append(lfa) return changed_files