# Copyright 2016 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Some constants used in Monorail issue tracker pages."""
from __future__ import print_function
from __future__ import division
from __future__ import absolute_import

import re

from mrproto import user_pb2


# Default columns shown on issue list page, and other built-in cols.
DEFAULT_COL_SPEC = 'ID Type Status Priority Milestone Owner Summary'
OTHER_BUILT_IN_COLS = [
    'AllLabels', 'Attachments', 'Stars', 'Opened', 'Closed', 'Modified',
    'BlockedOn', 'Blocking', 'Blocked', 'MergedInto',
    'Reporter', 'Cc', 'Project', 'Component',
    'OwnerModified', 'StatusModified', 'ComponentModified',
    'OwnerLastVisit']

# These are label prefixes that would conflict with built-in column names.
# E.g., no issue should have a *label* id-1234 or status-foo because any
# search for "id:1234" or "status:foo" would not look at labels.
RESERVED_PREFIXES = [
    'id', 'project', 'reporter', 'summary', 'status', 'owner', 'cc',
    'attachments', 'attachment', 'component', 'opened', 'closed',
    'modified', 'is', 'has', 'blockedon', 'blocking', 'blocked', 'mergedinto',
    'stars', 'starredby', 'description', 'comment', 'commentby', 'label',
    'hotlist', 'rank', 'explicit_status', 'derived_status', 'explicit_owner',
    'derived_owner', 'explicit_cc', 'derived_cc', 'explicit_label',
    'derived_label', 'last_comment_by', 'exact_component',
    'explicit_component', 'derived_component', 'alllabels', 'gate']

# Suffix of a column name for an approval's approvers.
APPROVER_COL_SUFFIX = '-approver'
APPROVAL_SETTER_COL_SUFFIX = '-setter'
APPROVAL_SET_ON_COL_SUFFIX = '-on'

# Reserved column name suffixes that field names cannot end with.
RESERVED_COL_NAME_SUFFIXES = [
    APPROVER_COL_SUFFIX,
    APPROVAL_SETTER_COL_SUFFIX,
    APPROVAL_SET_ON_COL_SUFFIX
]

# The columns are useless in the grid view, so don't offer them.
# These are also not used in groupby in the issue list.
NOT_USED_IN_GRID_AXES = [
    'Summary', 'ID', 'Opened', 'Closed', 'Modified', 'Cc',
    'OwnerModified', 'StatusModified', 'ComponentModified',
    'OwnerLastVisit', 'AllLabels']

# Issues per page in the issue list
DEFAULT_RESULTS_PER_PAGE = 100

# Search field input indicating that the user wants to
# jump to the specified issue.
JUMP_RE = re.compile(r'^\d+$')

# Regular expression defining a single search term.
# Used when parsing the contents of the issue search field.
TERM_RE = re.compile(r'[-a-zA-Z0-9._]+')

# Pattern used to validate component leaf names, the parts of
# a component path between the ">" symbols.
COMPONENT_LEAF_PATTERN = '[a-zA-Z]([-_]?[a-zA-Z0-9])+'

# Regular expression used to validate new component leaf names.
# This should never match any string with a ">" in it.
COMPONENT_NAME_RE = re.compile(r'^%s$' % (COMPONENT_LEAF_PATTERN))

# Pattern for matching a full component name, not just a single leaf.
# Allows any number of repeating valid leaf names separated by ">" characters.
COMPONENT_PATH_PATTERN = r'%s(\>%s)*' % (
    COMPONENT_LEAF_PATTERN, COMPONENT_LEAF_PATTERN)

# Regular expression used to validate new field names.
FIELD_NAME_RE = re.compile(r'^[a-zA-Z]([-_]?[a-zA-Z0-9])*$')

# Regular expression used to validate new phase_names.
PHASE_NAME_RE = re.compile(r'^[a-z]([-_]?[a-z0-9])*$', re.IGNORECASE)

# The next few items are specifications of the defaults for project
# issue configurations.  These are used for projects that do not have
# their own config.
DEFAULT_CANNED_QUERIES = [
    # Query ID, Name, Base query ID (not used for built-in queries), conditions
    (1, 'All issues', 0, ''),
    (2, 'Open issues', 0, 'is:open'),
    (3, 'Open and owned by me', 0, 'is:open owner:me'),
    (4, 'Open and reported by me', 0, 'is:open reporter:me'),
    (5, 'Open and starred by me', 0, 'is:open is:starred'),
    (6, 'New issues', 0, 'status:new'),
    (7, 'Issues to verify', 0, 'status=fixed,done'),
    (8, 'Open with comment by me', 0, 'is:open commentby:me'),
    ]

DEFAULT_CANNED_QUERY_CONDS = {
    query_id: cond
    for (query_id, _name, _base, cond) in DEFAULT_CANNED_QUERIES}

ALL_ISSUES_CAN = 1
OPEN_ISSUES_CAN = 2

# Define well-known issue statuses.  Each status has 3 parts: a name, a
# description, and True if the status means that an issue should be
# considered to be open or False if it should be considered closed.
DEFAULT_WELL_KNOWN_STATUSES = [
    # Name, docstring, means_open, deprecated
    ('New', 'Issue has not had initial review yet', True, False),
    ('Accepted', 'Problem reproduced / Need acknowledged', True, False),
    ('Started', 'Work on this issue has begun', True, False),
    ('Fixed', 'Developer made source code changes, QA should verify', False,
     False),
    ('Verified', 'QA has verified that the fix worked', False, False),
    ('Invalid', 'This was not a valid issue report', False, False),
    ('Duplicate', 'This report duplicates an existing issue', False, False),
    ('WontFix', 'We decided to not take action on this issue', False, False),
    ('Done', 'The requested non-coding task was completed', False, False),
    ]

DEFAULT_WELL_KNOWN_LABELS = [
    # Name, docstring, deprecated
    ('Type-Defect', 'Report of a software defect', False),
    ('Type-Enhancement', 'Request for enhancement', False),
    ('Type-Task', 'Work item that doesn\'t change the code or docs', False),
    ('Type-Other', 'Some other kind of issue', False),
    ('Priority-Critical', 'Must resolve in the specified milestone', False),
    ('Priority-High', 'Strongly want to resolve in the specified milestone',
        False),
    ('Priority-Medium', 'Normal priority', False),
    ('Priority-Low', 'Might slip to later milestone', False),
    ('OpSys-All', 'Affects all operating systems', False),
    ('OpSys-Windows', 'Affects Windows users', False),
    ('OpSys-Linux', 'Affects Linux users', False),
    ('OpSys-OSX', 'Affects Mac OS X users', False),
    ('Milestone-Release1.0', 'All essential functionality working', False),
    ('Security', 'Security risk to users', False),
    ('Performance', 'Performance issue', False),
    ('Usability', 'Affects program usability', False),
    ('Maintainability', 'Hinders future changes', False),
    ]

# Exclusive label prefixes are ones that can only be used once per issue.
# For example, an issue would normally have only one Priority-* label, whereas
# an issue might have many OpSys-* labels.
DEFAULT_EXCL_LABEL_PREFIXES = ['Type', 'Priority', 'Milestone']

DEFAULT_USER_DEFECT_REPORT_TEMPLATE = {
    'name': 'Defect report from user',
    'summary': 'Enter one-line summary',
    'summary_must_be_edited': True,
    'content': (
        'What steps will reproduce the problem?\n'
        '1. \n'
        '2. \n'
        '3. \n'
        '\n'
        'What is the expected output?\n'
        '\n'
        '\n'
        'What do you see instead?\n'
        '\n'
        '\n'
        'What version of the product are you using? '
        'On what operating system?\n'
        '\n'
        '\n'
        'Please provide any additional information below.\n'),
    'status': 'New',
    'labels': ['Type-Defect', 'Priority-Medium'],
    }

DEFAULT_DEVELOPER_DEFECT_REPORT_TEMPLATE = {
    'name': 'Defect report from developer',
    'summary': 'Enter one-line summary',
    'summary_must_be_edited': True,
    'content': (
        'What steps will reproduce the problem?\n'
        '1. \n'
        '2. \n'
        '3. \n'
        '\n'
        'What is the expected output?\n'
        '\n'
        '\n'
        'What do you see instead?\n'
        '\n'
        '\n'
        'Please use labels and text to provide additional information.\n'),
    'status': 'Accepted',
    'labels': ['Type-Defect', 'Priority-Medium'],
    'members_only': True,
    }


DEFAULT_TEMPLATES = [
    DEFAULT_DEVELOPER_DEFECT_REPORT_TEMPLATE,
    DEFAULT_USER_DEFECT_REPORT_TEMPLATE,
    ]

DEFAULT_STATUSES_OFFER_MERGE = ['Duplicate']


# This is used by JS on the issue admin page to indicate that the user deleted
# this template, so it should not be considered when updating the project's
# issue config.
DELETED_TEMPLATE_NAME = '<DELETED>'


# This is the default maximum total bytes of files attached
# to all the issues in a project.
ISSUE_ATTACHMENTS_QUOTA_HARD = 50 * 1024 * 1024
ISSUE_ATTACHMENTS_QUOTA_SOFT = ISSUE_ATTACHMENTS_QUOTA_HARD - 1 * 1024 * 1024

# Default value for nav action after updating an issue.
DEFAULT_AFTER_ISSUE_UPDATE = user_pb2.IssueUpdateNav.STAY_SAME_ISSUE

# Maximum comment length to mitigate spammy comments
MAX_COMMENT_CHARS = 50 * 1024
MAX_SUMMARY_CHARS = 500

SHORT_SUMMARY_LENGTH = 45

# Number of recent commands to offer the user on the quick edit form.
MAX_RECENT_COMMANDS = 5

# These recent commands are shown if the user has no history of their own.
DEFAULT_RECENT_COMMANDS = [
    ('owner=me status=Accepted', "I'll handle this one."),
    ('owner=me Priority=High status=Accepted', "I'll look into it soon."),
    ('status=Fixed', 'The change for this is done now.'),
    ('Type=Enhancement', 'This is an enhancement, not a defect.'),
    ('status=Invalid', 'Please report this in a more appropriate place.'),
    ]

# Consider an issue to be a "noisy" issue if it has more than these:
NOISY_ISSUE_COMMENT_COUNT = 100
NOISY_ISSUE_STARRER_COUNT = 100

# After a project owner edits the filter rules, we recompute the
# derived field values in work items that each handle a chunk of
# of this many items.
RECOMPUTE_DERIVED_FIELDS_BLOCK_SIZE = 1000

# This is the number of issues listed in the ReindexQueue table that will
# be processed each minute.
MAX_ISSUES_TO_REINDEX_PER_MINUTE = 1000
