Exemplo n.º 1
0
    def setUp(self):
        self.finder = UserFinder()

        self.user1 = User.objects.create(username="******",
                                         first_name="Joe",
                                         last_name="User",
                                         email="*****@*****.**")
        self.user2 = User.objects.create(username="******",
                                         first_name="John",
                                         last_name="",
                                         email="*****@*****.**")
        self.user3 = User.objects.create(username="******",
                                         first_name="Bob",
                                         last_name="Jones",
                                         email="*****@*****.**")

        for user in (self.user1, self.user2, self.user3):
            email_addr = "*****@*****.**" % user.username
            UserProfile.objects.create(user=user, public_email=email_addr)

        self.user4 = User.objects.create(username="******",
                                         first_name="Tim",
                                         last_name="One",
                                         email="*****@*****.**")
        self.user5 = User.objects.create(username="******",
                                         first_name="Tim",
                                         last_name="Two",
                                         email="*****@*****.**")
Exemplo n.º 2
0
    def handle_noargs(self, **options):
        v = int(options.get('verbosity', None))
        if v == 0:
            logger.level = logging.ERROR
        elif v == 1:
            logger.level = logging.INFO
        elif v == 2:
            logger.level = logging.DEBUG

        finder = UserFinder()
        match_packager(finder)
        match_flagrequest(finder)
Exemplo n.º 3
0
def add_signoff_comments():
    logger.info("getting all signoff groups")
    groups = get_signoff_groups()
    logger.info("%d signoff groups found", len(groups))

    finder = UserFinder()

    for group in groups:
        if not group.default_spec:
            continue

        logger.debug("getting SVN log for %s (%s)", group.pkgbase, group.repo)
        log = cached_svn_log(group.pkgbase, group.repo)
        logger.info("creating spec with SVN message for %s", group.pkgbase)
        spec = create_specification(group.packages[0], log, finder)
        spec.save()
Exemplo n.º 4
0
def import_keys(keyring):
    outdata = call_gpg(keyring, "--list-sigs")
    keydata = parse_keydata(outdata)

    logger.info("creating or finding %d keys", len(keydata))
    created_ct = updated_ct = 0
    with transaction.atomic():
        finder = UserFinder()
        # we are dependent on parents coming before children; parse_keydata
        # uses an OrderedDict to ensure this is the case.
        for data in keydata.values():
            parent_id = None
            if data.parent:
                parent_data = keydata.get(data.parent, None)
                if parent_data:
                    parent_id = parent_data.db_id
            other = {
                'expires': data.expires,
                'revoked': data.revoked,
                'parent_id': parent_id,
            }
            dkey, created = DeveloperKey.objects.get_or_create(
                key=data.key, created=data.created, defaults=other)
            data.db_id = dkey.id

            # set or update any additional data we might need to
            needs_save = False
            if created:
                created_ct += 1
            else:
                for k, v in other.items():
                    if getattr(dkey, k) != v:
                        setattr(dkey, k, v)
                        needs_save = True
            if dkey.owner_id is None:
                owner = find_key_owner(data, keydata, finder)
                if owner is not None:
                    dkey.owner = owner
                    needs_save = True
            if needs_save:
                dkey.save()
                updated_ct += 1

    key_ct = DeveloperKey.objects.all().count()
    logger.info("%d total keys in database", key_ct)
    logger.info("created %d, updated %d keys", created_ct, updated_ct)
Exemplo n.º 5
0
    def setUp(self):
        self.finder = UserFinder()

        self.user1 = User.objects.create(username="******", first_name="Joe",
                last_name="User", email="*****@*****.**")
        self.user2 = User.objects.create(username="******", first_name="John",
                last_name="", email="*****@*****.**")
        self.user3 = User.objects.create(username="******", first_name="Bob",
                last_name="Jones", email="*****@*****.**")

        for user in (self.user1, self.user2, self.user3):
            email_addr = "*****@*****.**" % user.username
            UserProfile.objects.create(user=user, public_email=email_addr)

        self.user4 = User.objects.create(username="******", first_name="Tim",
                last_name="One", email="*****@*****.**")
        self.user5 = User.objects.create(username="******", first_name="Tim",
                last_name="Two", email="*****@*****.**")
Exemplo n.º 6
0
class FindUserTest(TestCase):
    def setUp(self):
        self.finder = UserFinder()

        self.user1 = User.objects.create(username="******",
                                         first_name="Joe",
                                         last_name="User",
                                         email="*****@*****.**")
        self.user2 = User.objects.create(username="******",
                                         first_name="John",
                                         last_name="",
                                         email="*****@*****.**")
        self.user3 = User.objects.create(username="******",
                                         first_name="Bob",
                                         last_name="Jones",
                                         email="*****@*****.**")

        for user in (self.user1, self.user2, self.user3):
            email_addr = "*****@*****.**" % user.username
            UserProfile.objects.create(user=user, public_email=email_addr)

        self.user4 = User.objects.create(username="******",
                                         first_name="Tim",
                                         last_name="One",
                                         email="*****@*****.**")
        self.user5 = User.objects.create(username="******",
                                         first_name="Tim",
                                         last_name="Two",
                                         email="*****@*****.**")

    def test_not_matching(self):
        self.assertIsNone(self.finder.find(None))
        self.assertIsNone(self.finder.find(""))
        self.assertIsNone(self.finder.find("Bogus"))
        self.assertIsNone(self.finder.find("Bogus <invalid"))
        self.assertIsNone(self.finder.find("Bogus User <*****@*****.**>"))
        self.assertIsNone(self.finder.find("<*****@*****.**>"))
        self.assertIsNone(self.finder.find("*****@*****.**"))
        self.assertIsNone(self.finder.find("Unknown Packager"))

    def test_by_email(self):
        self.assertEqual(self.user1,
                         self.finder.find("XXX YYY <*****@*****.**>"))
        self.assertEqual(self.user2,
                         self.finder.find("YYY ZZZ <*****@*****.**>"))

    def test_by_profile_email(self):
        self.assertEqual(self.user1,
                         self.finder.find("XXX <*****@*****.**>"))
        self.assertEqual(self.user2,
                         self.finder.find("YYY <*****@*****.**>"))
        self.assertEqual(self.user3,
                         self.finder.find("ZZZ <*****@*****.**>"))

    def test_by_name(self):
        self.assertEqual(
            self.user1, self.finder.find("Joe User <*****@*****.**>"))
        self.assertEqual(self.user1, self.finder.find("Joe User"))
        self.assertEqual(self.user2,
                         self.finder.find("John <*****@*****.**>"))
        self.assertEqual(self.user2, self.finder.find("John"))
        self.assertEqual(
            self.user3,
            self.finder.find("Bob Jones <bjones AT Arch Linux DOT org>"))

    def test_by_invalid(self):
        self.assertEqual(self.user1,
                         self.finder.find("Joe User <*****@*****.**"))
        self.assertEqual(
            self.user1,
            self.finder.find("Joe 'nickname' User <*****@*****.**"))
        self.assertEqual(
            self.user1,
            self.finder.find("Joe \"nickname\" User <*****@*****.**"))
        self.assertEqual(self.user1,
                         self.finder.find("Joe User <*****@*****.**"))

    def test_cache(self):
        # simply look two of them up, but then do it repeatedly
        for _ in range(5):
            self.assertEqual(self.user1,
                             self.finder.find("XXX YYY <*****@*****.**>"))
            self.assertEqual(
                self.user3,
                self.finder.find("Bob Jones <bjones AT Arch Linux DOT org>"))

    def test_ambiguous(self):
        self.assertEqual(self.user4,
                         self.finder.find("Tim One <*****@*****.**>"))
        self.assertEqual(self.user5,
                         self.finder.find("Tim Two <*****@*****.**>"))
        self.assertIsNone(self.finder.find("Tim <*****@*****.**>"))
Exemplo n.º 7
0
def create_multivalued(dbpkg, repopkg, db_attr, repo_attr):
    '''Populate the simplest of multivalued attributes. These are those that
    only deal with a 'name' attribute, such as licenses, groups, etc. The input
    and output objects and attribute names are specified, and everything is
    done via getattr().'''
    collection = getattr(dbpkg, db_attr)
    collection.all().delete()
    model = collection.model
    new_items = []
    for name in getattr(repopkg, repo_attr):
        new_items.append(model(pkg=dbpkg, name=name))
    if new_items:
        model.objects.bulk_create(new_items)


finder = UserFinder()


def populate_pkg(dbpkg, repopkg, force=False, timestamp=None):
    # we reset the flag date only if the upstream version components change;
    # e.g. epoch or pkgver, but not pkgrel
    if dbpkg.epoch is None or dbpkg.epoch != repopkg.epoch:
        dbpkg.flag_date = None
    elif dbpkg.pkgver is None or dbpkg.pkgver != repopkg.ver:
        dbpkg.flag_date = None

    if repopkg.base:
        dbpkg.pkgbase = repopkg.base
    else:
        dbpkg.pkgbase = repopkg.name
    dbpkg.pkgver = repopkg.ver
Exemplo n.º 8
0
class FindUserTest(TestCase):

    def setUp(self):
        self.finder = UserFinder()

        self.user1 = User.objects.create(username="******", first_name="Joe",
                last_name="User", email="*****@*****.**")
        self.user2 = User.objects.create(username="******", first_name="John",
                last_name="", email="*****@*****.**")
        self.user3 = User.objects.create(username="******", first_name="Bob",
                last_name="Jones", email="*****@*****.**")

        for user in (self.user1, self.user2, self.user3):
            email_addr = "*****@*****.**" % user.username
            UserProfile.objects.create(user=user, public_email=email_addr)

        self.user4 = User.objects.create(username="******", first_name="Tim",
                last_name="One", email="*****@*****.**")
        self.user5 = User.objects.create(username="******", first_name="Tim",
                last_name="Two", email="*****@*****.**")

    def test_not_matching(self):
        self.assertIsNone(self.finder.find(None))
        self.assertIsNone(self.finder.find(""))
        self.assertIsNone(self.finder.find("Bogus"))
        self.assertIsNone(self.finder.find("Bogus <invalid"))
        self.assertIsNone(self.finder.find("Bogus User <*****@*****.**>"))
        self.assertIsNone(self.finder.find("<*****@*****.**>"))
        self.assertIsNone(self.finder.find("*****@*****.**"))
        self.assertIsNone(self.finder.find("Unknown Packager"))

    def test_by_email(self):
        self.assertEqual(self.user1,
                self.finder.find("XXX YYY <*****@*****.**>"))
        self.assertEqual(self.user2,
                self.finder.find("YYY ZZZ <*****@*****.**>"))

    def test_by_profile_email(self):
        self.assertEqual(self.user1,
                self.finder.find("XXX <*****@*****.**>"))
        self.assertEqual(self.user2,
                self.finder.find("YYY <*****@*****.**>"))
        self.assertEqual(self.user3,
                self.finder.find("ZZZ <*****@*****.**>"))

    def test_by_name(self):
        self.assertEqual(self.user1,
                self.finder.find("Joe User <*****@*****.**>"))
        self.assertEqual(self.user1,
                self.finder.find("Joe User"))
        self.assertEqual(self.user2,
                self.finder.find("John <*****@*****.**>"))
        self.assertEqual(self.user2,
                self.finder.find("John"))
        self.assertEqual(self.user3,
                self.finder.find("Bob Jones <bjones AT Arch Linux DOT org>"))

    def test_by_invalid(self):
        self.assertEqual(self.user1,
                self.finder.find("Joe User <*****@*****.**"))
        self.assertEqual(self.user1,
                self.finder.find("Joe 'nickname' User <*****@*****.**"))
        self.assertEqual(self.user1,
                self.finder.find("Joe \"nickname\" User <*****@*****.**"))
        self.assertEqual(self.user1,
                self.finder.find("Joe User <*****@*****.**"))

    def test_cache(self):
        # simply look two of them up, but then do it repeatedly
        for _ in range(5):
            self.assertEqual(self.user1,
                    self.finder.find("XXX YYY <*****@*****.**>"))
            self.assertEqual(self.user3,
                    self.finder.find("Bob Jones <bjones AT Arch Linux DOT org>"))

    def test_ambiguous(self):
        self.assertEqual(self.user4,
                self.finder.find("Tim One <*****@*****.**>"))
        self.assertEqual(self.user5,
                self.finder.find("Tim Two <*****@*****.**>"))
        self.assertIsNone(self.finder.find("Tim <*****@*****.**>"))

    def test_find_by_username(self):
        self.assertEqual(self.finder.find_by_username(None), None)
        self.assertEqual(self.finder.find_by_username('noone'), None)
        self.assertEqual(self.finder.find_by_username(self.user1.username), self.user1)
        # Test cache
        self.assertEqual(self.finder.find_by_username(self.user1.username), self.user1)

    def test_find_by_email(self):
        self.assertEqual(self.finder.find_by_email(None), None)
        self.assertEqual(self.finder.find_by_email('*****@*****.**'), None)
        self.assertEqual(self.finder.find_by_email(self.user1.email), self.user1)
        # Test cache
        self.assertEqual(self.finder.find_by_email(self.user1.email), self.user1)