#!/usr/bin/python
# Authors:
#  Jamie Strandboge <jamie@canonical.com>
#  Kees Cook <kees@ubuntu.com>
# Copyright (C) 2009-2010 Canonical, Ltd.
# License: GPLv3

import lpl_common
import optparse
import sys

lp = lpl_common.connect()

def subscribed(bug, person):
    '''This looks for a person in the bug subscription list.
       Sometimes, the API is ugly'''
    for subscriber in bug.subscriptions:
        if str(subscriber.person) == str(person):
            return True
    return False

def unsubscribe(bug, person):
    unsub_self = False
    if bug.security_related:
        print '\tunsec %s' % (str(bug))
        bug.security_related = False
        lpl_common.save(bug)
    if subscribed(bug, person):
        print '\tunsub %s' % (str(bug))
        if bug.private and not subscribed(bug, lp.me):
            print "\t\ttemporarily subscribing self..."
            bug.subscribe(person=lp.me)
            unsub_self = True
        bug.unsubscribe(person=person)
        if unsub_self:
            print "\t\tunsubscribing self..."
            bug.unsubscribe(person=lp.me)


person = lp.people[sys.argv[1]]

for num in sys.argv[2:]:
    bug = lp.bugs[num]
    print "%s..." % (num)

    for dup in bug.duplicates:
        unsubscribe(dup, person)
    unsubscribe(bug, person)
