def fetch_information(spr, bprs, changes, previous_version=None):
    changedby = None
    changedby_displayname = None
    maintainer = None
    maintainer_displayname = None

    if changes:
        changesfile = ChangesFile.formatChangesComment(
            sanitize_string(changes.get('Changes')))
        date = changes.get('Date')
        changedby = sanitize_string(changes.get('Changed-By'))
        maintainer = sanitize_string(changes.get('Maintainer'))
        changedby_displayname = changedby
        maintainer_displayname = maintainer
    elif spr or bprs:
        if not spr and bprs:
            spr = bprs[0].build.source_package_release
        changesfile = spr.aggregate_changelog(previous_version)
        date = spr.dateuploaded
        changedby = person_to_email(spr.creator)
        maintainer = person_to_email(spr.maintainer)
        if changedby:
            addr = formataddr(
                (spr.creator.displayname, spr.creator.preferredemail.email))
            changedby_displayname = sanitize_string(addr)
        if maintainer:
            addr = formataddr((spr.maintainer.displayname,
                               spr.maintainer.preferredemail.email))
            maintainer_displayname = sanitize_string(addr)
    else:
        changesfile = date = None

    return {
        'changelog': changesfile,
        'date': date,
        'changedby': changedby,
        'changedby_displayname': changedby_displayname,
        'maintainer': maintainer,
        'maintainer_displayname': maintainer_displayname,
    }
def fetch_information(spr, bprs, changes, previous_version=None):
    changedby = None
    changedby_displayname = None
    maintainer = None
    maintainer_displayname = None

    if changes:
        changesfile = ChangesFile.formatChangesComment(
            sanitize_string(changes.get('Changes')))
        date = changes.get('Date')
        changedby = sanitize_string(changes.get('Changed-By'))
        maintainer = sanitize_string(changes.get('Maintainer'))
        changedby_displayname = changedby
        maintainer_displayname = maintainer
    elif spr or bprs:
        if not spr and bprs:
            spr = bprs[0].build.source_package_release
        changesfile = spr.aggregate_changelog(previous_version)
        date = spr.dateuploaded
        changedby = person_to_email(spr.creator)
        maintainer = person_to_email(spr.maintainer)
        if changedby:
            addr = formataddr((spr.creator.displayname,
                               spr.creator.preferredemail.email))
            changedby_displayname = sanitize_string(addr)
        if maintainer:
            addr = formataddr((spr.maintainer.displayname,
                               spr.maintainer.preferredemail.email))
            maintainer_displayname = sanitize_string(addr)
    else:
        changesfile = date = None

    return {
        'changelog': changesfile,
        'date': date,
        'changedby': changedby,
        'changedby_displayname': changedby_displayname,
        'maintainer': maintainer,
        'maintainer_displayname': maintainer_displayname,
        }
Exemple #3
0
def fetch_information(spr, bprs, changes, previous_version=None):
    changelog = date = changedby = maintainer = None
    notify_changed_by = False

    if changes:
        changelog = ChangesFile.formatChangesComment(
            sanitize_string(changes.get('Changes')))
        date = changes.get('Date')
        try:
            changedby = parse_maintainer_bytes(changes.get('Changed-By'),
                                               'Changed-By')
        except ParseMaintError:
            pass
        try:
            maintainer = parse_maintainer_bytes(changes.get('Maintainer'),
                                                'Maintainer')
        except ParseMaintError:
            pass
        notify_changed_by = changes.get('Launchpad-Notify-Changed-By',
                                        '') == 'yes'
    elif spr or bprs:
        if not spr and bprs:
            spr = bprs[0].build.source_package_release
        changelog = spr.aggregate_changelog(previous_version)
        date = spr.dateuploaded
        if spr.creator and spr.creator.preferredemail:
            changedby = (spr.creator.displayname,
                         spr.creator.preferredemail.email)
        if spr.maintainer and spr.maintainer.preferredemail:
            maintainer = (spr.maintainer.displayname,
                          spr.maintainer.preferredemail.email)

    return {
        'changelog': changelog,
        'date': date,
        'changedby': changedby,
        'maintainer': maintainer,
        'notify_changed_by': notify_changed_by,
    }