~launchpad-pqm/launchpad/devel

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# Copyright 2010-2011 Canonical Ltd.  This software is licensed under the
# GNU Affero General Public License version 3 (see the file LICENSE).

"""Interfaces for the Launchpad application.

Note that these are not interfaces to application content objects.
"""

__metaclass__ = type

__all__ = [
    'ILaunchpadCelebrities',
    'ILaunchpadUsage',
    'IServiceUsage',
    ]

from lazr.restful.declarations import exported
from zope.interface import (
    Attribute,
    Interface,
    )
from zope.schema import (
    Bool,
    Choice,
    )

from canonical.launchpad import _
from lp.app.enums import ServiceUsage


class ILaunchpadCelebrities(Interface):
    """Well known things.

    Celebrities are SQLBase instances that have a well known name.
    """
    admin = Attribute("The 'admins' team.")
    software_center_agent = Attribute("The Software Center Agent.")
    bug_importer = Attribute("The bug importer.")
    bug_watch_updater = Attribute("The Bug Watch Updater.")
    buildd_admin = Attribute("The Build Daemon administrator.")
    commercial_admin = Attribute("The Launchpad Commercial team.")
    debbugs = Attribute("The Debian Bug Tracker")
    debian = Attribute("The Debian Distribution.")
    english = Attribute("The English language.")
    gnome_bugzilla = Attribute("The Gnome Bugzilla.")
    hwdb_team = Attribute("The HWDB team.")
    janitor = Attribute("The Launchpad Janitor.")
    katie = Attribute("The Debian Auto-sync user.")
    launchpad = Attribute("The Launchpad project.")
    launchpad_developers = Attribute("The Launchpad development team.")
    obsolete_junk = Attribute("The Obsolete Junk project.")
    ppa_key_guard = Attribute("The PPA signing keys owner.")
    registry_experts = Attribute("The Registry Administrators team.")
    rosetta_experts = Attribute("The Rosetta Experts team.")
    savannah_tracker = Attribute("The GNU Savannah Bug Tracker.")
    sourceforge_tracker = Attribute("The SourceForge Bug Tracker")
    ubuntu = Attribute("The Ubuntu Distribution.")
    ubuntu_archive_mirror = Attribute("The main archive mirror for Ubuntu.")
    ubuntu_bugzilla = Attribute("The Ubuntu Bugzilla.")
    ubuntu_cdimage_mirror = Attribute("The main cdimage mirror for Ubuntu.")
    ubuntu_security = Attribute("The 'ubuntu-security' team.")
    ubuntu_techboard = Attribute("The Ubuntu technical board.")
    vcs_imports = Attribute("The 'vcs-imports' team.")

    def isCelebrityPerson(name):
        """Return true if there is an IPerson celebrity with the given name.
        """


class IServiceUsage(Interface):
    """Pillar service usages."""

    # XXX: BradCrittenden 2010-08-06 bug=n/a:  I hate using the term 'pillar'
    # but cannot use 'project' or 'distribution'.  The phrase 'Where does'
    # implies an actual location not an answer of "Launchpad, externally, or
    # neither."
    answers_usage = Choice(
        title=_('Type of service for answers application'),
        description=_("Where does this pillar have an Answers forum?"),
        default=ServiceUsage.UNKNOWN,
        vocabulary=ServiceUsage)
    blueprints_usage = Choice(
        title=_('Type of service for blueprints application'),
        description=_("Where does this pillar host blueprints?"),
        default=ServiceUsage.UNKNOWN,
        vocabulary=ServiceUsage)
    codehosting_usage = Choice(
        title=_('Type of service for hosting code'),
        description=_("Where does this pillar host code?"),
        default=ServiceUsage.UNKNOWN,
        vocabulary=ServiceUsage)
    translations_usage = exported(Choice(
        title=_('Type of service for translations application'),
        description=_("Where does this pillar do translations?"),
        default=ServiceUsage.UNKNOWN,
        vocabulary=ServiceUsage), as_of="devel")
    bug_tracking_usage = Choice(
        title=_('Type of service for tracking bugs'),
        description=_("Where does this pillar track bugs?"),
        default=ServiceUsage.UNKNOWN,
        vocabulary=ServiceUsage)
    uses_launchpad = Bool(
        title=_('Uses Launchpad for something.'))


class ILaunchpadUsage(Interface):
    """How the project uses Launchpad."""
    official_answers = Bool(
        title=_('People can ask questions in Launchpad Answers'),
        required=True)
    official_blueprints = Bool(
        title=_('This project uses blueprints'), required=True)
    official_codehosting = Bool(
        title=_('Code for this project is published in Bazaar branches on'
                ' Launchpad'),
        required=True)
    official_malone = Bool(
        title=_('Bugs in this project are tracked in Launchpad'),
        required=True)
    official_anything = Bool(
        title=_('Uses Launchpad for something'))
    enable_bug_expiration = Bool(
        title=_('Expire "Incomplete" bug reports when they become inactive'),
        required=True)