aboutsummaryrefslogtreecommitdiffstats
path: root/libbe/names.py
blob: b866f75313ab848a93ab9c1da7f736bb125a79c4 (plain) (blame)
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
# Copyright (C) 2005 Aaron Bentley and Panometrics, Inc.
# <abentley@panoramicfeedback.com>
#
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program; if not, write to the Free Software
#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

import os
import sys
import doctest

def uuid():
    # this code borrowed from standard commands module
    # but adapted to win32
    pipe = os.popen('uuidgen', 'r')
    text = pipe.read()
    sts = pipe.close()
    if sts not in (0, None):
        raise "Failed to run uuidgen"
    if text[-1:] == '\n': text = text[:-1]
    return text

def creator():
    if sys.platform != "win32":
        return os.environ["LOGNAME"]
    else:
        return os.environ["USERNAME"]

def unique_name(bug, bugs):
    """
    Generate short names from uuids.  Picks the minimum number of
    characters (>=3) from the beginning of the uuid such that the
    short names are unique.
    
    Obviously, as the number of bugs in the database grows, these
    short names will cease to be unique.  The complete uuid should be
    used for long term reference.
    """
    chars = 3
    for some_bug in bugs:
        if bug.uuid == some_bug.uuid:
            continue
        while (bug.uuid[:chars] == some_bug.uuid[:chars]):
            chars+=1
    return bug.uuid[:chars]

suite = doctest.DocTestSuite()