Example #1
0
    def _update_user(self, record):
        email = record.get('author_email')
        user_name = record.get('author_name')

        user_e = user_processor.load_user(self.runtime_storage_inst,
                                          email=email) or {}

        gerrit_id = record.get('gerrit_id')
        if gerrit_id:
            user_g = user_processor.load_user(self.runtime_storage_inst,
                                              gerrit_id=gerrit_id) or {}
        else:
            user_g = {}

        if user_processor.are_users_same([user_e, user_g]):
            # If sequence numbers are set and the same, merge is not needed
            return user_e

        user = user_processor.create_user(self.domains_index, email, gerrit_id,
                                          user_name)

        if user_e or user_g:
            # merge between existing profiles and a new one
            user, users_to_delete = user_processor.merge_user_profiles(
                self.domains_index, [user_e, user_g, user])

            # delete all unneeded profiles
            user_processor.delete_users(self.runtime_storage_inst,
                                        users_to_delete)

        user_processor.store_user(self.runtime_storage_inst, user)
        LOG.debug('Stored user: %s', user)

        return user
    def update_user(self, record):
        email = record.get('author_email')
        user_e = user_processor.load_user(
            self.runtime_storage_inst, email=email) or {}

        user_name = record.get('author_name')
        launchpad_id = record.get('launchpad_id')
        if (email and (not user_e) and (not launchpad_id) and
                (not user_e.get('launchpad_id'))):
            # query LP
            launchpad_id, lp_user_name = self._get_lp_info(email)
            if lp_user_name:
                user_name = lp_user_name

        gerrit_id = record.get('gerrit_id')
        if gerrit_id:
            user_g = user_processor.load_user(
                self.runtime_storage_inst, gerrit_id=gerrit_id) or {}
            if ((not user_g) and (not launchpad_id) and
                    (not user_e.get('launchpad_id'))):
                # query LP
                guessed_lp_id = gerrit_id
                lp_user_name = self._get_lp_user_name(guessed_lp_id)
                if lp_user_name == user_name:
                    launchpad_id = guessed_lp_id
        else:
            user_g = {}

        user_l = user_processor.load_user(
            self.runtime_storage_inst, launchpad_id=launchpad_id) or {}

        if ((user_e.get('seq') == user_l.get('seq') == user_g.get('seq')) and
                user_e.get('seq')):
            # sequence numbers are set and the same, merge is not needed
            user = user_e
        else:
            user = self._create_user(launchpad_id, email, gerrit_id, user_name)

            if user_e or user_l or user_g:
                user = self._merge_user_profiles(
                    [user_e, user_l, user_g, user])
            else:
                # create new
                if not user_name:
                    user_name = self._get_lp_user_name(launchpad_id)
                    if user_name:
                        user['user_name'] = user_name
                LOG.debug('Created new user: %s', user)

            user_processor.store_user(self.runtime_storage_inst, user)
            LOG.debug('Stored user: %s', user)

        return user
    def update_user(self, record):
        email = record.get('author_email')
        user_e = user_processor.load_user(self.runtime_storage_inst,
                                          email=email) or {}

        user_name = record.get('author_name')
        launchpad_id = record.get('launchpad_id')
        if (email and (not user_e) and (not launchpad_id)
                and (not user_e.get('launchpad_id'))):
            # query LP
            launchpad_id, lp_user_name = self._get_lp_info(email)
            if lp_user_name:
                user_name = lp_user_name

        gerrit_id = record.get('gerrit_id')
        if gerrit_id:
            user_g = user_processor.load_user(self.runtime_storage_inst,
                                              gerrit_id=gerrit_id) or {}
            if ((not user_g) and (not launchpad_id)
                    and (not user_e.get('launchpad_id'))):
                # query LP
                guessed_lp_id = gerrit_id
                lp_user_name = self._get_lp_user_name(guessed_lp_id)
                if lp_user_name == user_name:
                    launchpad_id = guessed_lp_id
        else:
            user_g = {}

        user_l = user_processor.load_user(self.runtime_storage_inst,
                                          launchpad_id=launchpad_id) or {}

        if ((user_e.get('seq') == user_l.get('seq') == user_g.get('seq'))
                and user_e.get('seq')):
            # sequence numbers are set and the same, merge is not needed
            user = user_e
        else:
            user = self._create_user(launchpad_id, email, gerrit_id, user_name)

            if user_e or user_l or user_g:
                user = self._merge_user_profiles(
                    [user_e, user_l, user_g, user])
            else:
                # create new
                if not user_name:
                    user_name = self._get_lp_user_name(launchpad_id)
                    if user_name:
                        user['user_name'] = user_name
                LOG.debug('Created new user: %s', user)

            user_processor.store_user(self.runtime_storage_inst, user)
            LOG.debug('Stored user: %s', user)

        return user
Example #4
0
 def apply_user_corrections(self, user_corrections_iterator):
     for user_correction in user_corrections_iterator:
         stored_user = user_processor.load_user(
             self, user_id=user_correction['user_id'])
         updated_user = user_processor.update_user_profile(
             stored_user, user_correction, is_correction=True)
         user_processor.store_user(self, updated_user)
    def _update_members_company_name(self):
        LOG.debug('Update members with company names')

        for record in self.runtime_storage_inst.get_all_records():
            if record['record_type'] != 'member':
                continue

            company_draft = record['company_draft']
            company_name = self.domains_index.get(
                utils.normalize_company_name(company_draft)) or (
                    utils.normalize_company_draft(company_draft))

            if company_name == record['company_name']:
                continue

            LOG.debug('Update record %s, company name changed to %s',
                      record, company_name)
            record['company_name'] = company_name

            yield record

            user = user_processor.load_user(self.runtime_storage_inst,
                                            record['user_id'])
            LOG.debug('Update user %s, company name changed to %s',
                      user, company_name)
            user['companies'] = [{
                'company_name': company_name,
                'end_date': 0,
            }]
            user_processor.store_user(self.runtime_storage_inst, user)
Example #6
0
def get_user_from_runtime_storage(user_id):
    runtime_storage_inst = get_runtime_storage()
    user_index = get_vault()['user_index']
    if user_id not in user_index:
        user_index[user_id] = user_processor.load_user(runtime_storage_inst,
                                                       user_id=user_id)
    return user_index[user_id]
    def _update_members_company_name(self):
        LOG.debug('Update members with company names')

        for record in self.runtime_storage_inst.get_all_records():
            if record['record_type'] != 'member':
                continue

            company_draft = record['company_draft']
            company_name = self.domains_index.get(
                utils.normalize_company_name(company_draft)) or (
                    utils.normalize_company_draft(company_draft))

            if company_name == record['company_name']:
                continue

            LOG.debug('Update record %s, company name changed to %s', record,
                      company_name)
            record['company_name'] = company_name

            yield record

            user = user_processor.load_user(self.runtime_storage_inst,
                                            record['user_id'])
            LOG.debug('Update user %s, company name changed to %s', user,
                      company_name)
            user['companies'] = [{
                'company_name': company_name,
                'end_date': 0,
            }]
            user_processor.store_user(self.runtime_storage_inst, user)
Example #8
0
    def _process_member(self, record):
        user_id = user_processor.make_user_id(member_id=record["member_id"])
        record["primary_key"] = user_id
        record["date"] = utils.member_date_to_timestamp(record["date_joined"])
        record["author_name"] = record["member_name"]
        record["module"] = "unknown"
        company_draft = record["company_draft"]

        company_name = self.domains_index.get(utils.normalize_company_name(company_draft)) or (
            utils.normalize_company_draft(company_draft)
        )

        # author_email is a key to create new user
        record["author_email"] = user_id
        record["company_name"] = company_name
        # _update_record_and_user function will create new user if needed
        self._update_record_and_user(record)
        record["company_name"] = company_name
        user = user_processor.load_user(self.runtime_storage_inst, user_id)

        user["user_name"] = record["author_name"]
        user["companies"] = [{"company_name": company_name, "end_date": 0}]
        user["company_name"] = company_name

        user_processor.store_user(self.runtime_storage_inst, user)

        record["company_name"] = company_name

        yield record
Example #9
0
def get_user_from_runtime_storage(user_id):
    runtime_storage_inst = get_runtime_storage()
    user_index = get_vault()['user_index']
    if user_id not in user_index:
        user_index[user_id] = user_processor.load_user(
            runtime_storage_inst, user_id=user_id)
    return user_index[user_id]
Example #10
0
    def _process_member(self, record):
        user_id = user_processor.make_user_id(member_id=record['member_id'])
        record['primary_key'] = user_id
        record['date'] = utils.member_date_to_timestamp(record['date_joined'])
        record['author_name'] = record['member_name']
        record['module'] = 'unknown'
        company_draft = record['company_draft']

        company_name = self.domains_index.get(
            utils.normalize_company_name(company_draft)) or (
                utils.normalize_company_draft(company_draft))

        # author_email is a key to create new user
        record['author_email'] = user_id
        record['company_name'] = company_name
        # _update_record_and_user function will create new user if needed
        self._update_record_and_user(record)
        record['company_name'] = company_name
        user = user_processor.load_user(self.runtime_storage_inst, user_id)

        user['user_name'] = record['author_name']
        user['companies'] = [{
            'company_name': company_name,
            'end_date': 0,
        }]
        user['company_name'] = company_name

        user_processor.store_user(self.runtime_storage_inst, user)

        record['company_name'] = company_name

        yield record
        def record_handler(record):
            if record['record_type'] != 'member':
                return

            company_draft = record['company_draft']
            company_name = self.domains_index.get(
                utils.normalize_company_name(company_draft)) or (
                    utils.normalize_company_draft(company_draft))

            if company_name == record['company_name']:
                return

            LOG.debug('Update record %s, company name changed to %s',
                      record, company_name)
            record['company_name'] = company_name

            yield record

            user = user_processor.load_user(self.runtime_storage_inst,
                                            record['user_id'])
            LOG.debug('Update user %s, company name changed to %s',
                      user, company_name)
            user['companies'] = [{
                'company_name': company_name,
                'end_date': 0,
            }]
            user_processor.store_user(self.runtime_storage_inst, user)
Example #12
0
        def record_handler(record):
            if record['record_type'] != 'member':
                return

            company_draft = record['company_draft']
            company_name = self.domains_index.get(
                utils.normalize_company_name(company_draft)) or (
                    utils.normalize_company_draft(company_draft))

            if company_name == record['company_name']:
                return

            LOG.debug('Update record %s, company name changed to %s', record,
                      company_name)
            record['company_name'] = company_name

            yield record

            user = user_processor.load_user(self.runtime_storage_inst,
                                            record['user_id'])
            LOG.debug('Update user %s, company name changed to %s', user,
                      company_name)
            user['companies'] = [{
                'company_name': company_name,
                'end_date': 0,
            }]
            user_processor.store_user(self.runtime_storage_inst, user)
    def _process_member(self, record):
        user_id = user_processor.make_user_id(member_id=record['member_id'])
        record['primary_key'] = user_id
        record['date'] = utils.member_date_to_timestamp(record['date_joined'])
        record['author_name'] = record['member_name']
        record['module'] = 'unknown'
        company_draft = record['company_draft']

        company_name = self.domains_index.get(utils.normalize_company_name(
            company_draft)) or (utils.normalize_company_draft(company_draft))

        # author_email is a key to create new user
        record['author_email'] = user_id
        record['company_name'] = company_name
        # _update_record_and_user function will create new user if needed
        self._update_record_and_user(record)
        record['company_name'] = company_name
        user = user_processor.load_user(self.runtime_storage_inst, user_id)

        user['user_name'] = record['author_name']
        user['companies'] = [{
            'company_name': company_name,
            'end_date': 0,
        }]
        user['company_name'] = company_name

        user_processor.store_user(self.runtime_storage_inst, user)

        record['company_name'] = company_name

        yield record
Example #14
0
def _store_users(runtime_storage_inst, users):
    for user in users:
        stored_user = user_processor.load_user(runtime_storage_inst,
                                               user_id=user['user_id'])
        if stored_user:
            stored_user.update(user)
            user = stored_user
        user['static'] = True
        user_processor.store_user(runtime_storage_inst, user)
def _store_users(runtime_storage_inst, users):
    for user in users:
        stored_user = user_processor.load_user(runtime_storage_inst,
                                               user_id=user['user_id'])
        if stored_user:
            stored_user.update(user)
            user = stored_user
        user['static'] = True
        user_processor.store_user(runtime_storage_inst, user)
Example #16
0
        def record_handler(record):
            if record["record_type"] != "member":
                return

            company_draft = record["company_draft"]
            company_name = self.domains_index.get(utils.normalize_company_name(company_draft)) or (
                utils.normalize_company_draft(company_draft)
            )

            if company_name == record["company_name"]:
                return

            LOG.debug("Update record %s, company name changed to %s", record, company_name)
            record["company_name"] = company_name

            yield record

            user = user_processor.load_user(self.runtime_storage_inst, record["user_id"])
            LOG.debug("Update user %s, company name changed to %s", user, company_name)
            user["companies"] = [{"company_name": company_name, "end_date": 0}]
            user_processor.store_user(self.runtime_storage_inst, user)
Example #17
0
    def test_process_commit_new_user_unknown(self):
        record_processor_inst = self.make_record_processor(
            companies=[{
                'company_name': 'IBM',
                'domains': ['ibm.com']
            }])

        processed_commit = list(
            record_processor_inst.process(
                generate_commits(author_email='*****@*****.**',
                                 author_name='John Doe')))[0]

        expected_commit = {
            'author_email': '*****@*****.**',
            'author_name': 'John Doe',
            'company_name': 'IBM',
        }

        self.assertRecordsMatch(expected_commit, processed_commit)
        user = user_processor.load_user(
            record_processor_inst.runtime_storage_inst,
            user_id='*****@*****.**')
        self.assertIn('*****@*****.**', user['emails'])
        self.assertEqual('IBM', user['companies'][0]['company_name'])
def _store_users(runtime_storage_inst, users):
    for user in users:
        stored_user = user_processor.load_user(runtime_storage_inst,
                                               user_id=user['user_id'])
        updated_user = user_processor.update_user_profile(stored_user, user)
        user_processor.store_user(runtime_storage_inst, updated_user)
    def _update_user(self, record):
        email = record.get('author_email')
        user_e = user_processor.load_user(self.runtime_storage_inst,
                                          email=email) or {}

        user_name = record.get('author_name')
        launchpad_id = record.get('launchpad_id')
        if (self._need_to_fetch_launchpad() and email and (not user_e)
                and (not launchpad_id) and (not user_e.get('launchpad_id'))):
            # query LP
            launchpad_id, lp_user_name = launchpad_utils.query_lp_info(email)
            if lp_user_name:
                user_name = lp_user_name

        gerrit_id = record.get('gerrit_id')
        if gerrit_id:
            user_g = user_processor.load_user(self.runtime_storage_inst,
                                              gerrit_id=gerrit_id) or {}
            if (self._need_to_fetch_launchpad() and (not user_g)
                    and (not launchpad_id)
                    and (not user_e.get('launchpad_id'))):
                # query LP
                guessed_lp_id = gerrit_id
                lp_user_name = launchpad_utils.query_lp_user_name(
                    guessed_lp_id)
                if lp_user_name == user_name:
                    launchpad_id = guessed_lp_id
        else:
            user_g = {}

        zanata_id = record.get('zanata_id')
        if zanata_id:
            user_z = user_processor.load_user(self.runtime_storage_inst,
                                              zanata_id=zanata_id) or {}
            if (self._need_to_fetch_launchpad() and (not user_z)
                    and (not launchpad_id)
                    and (not user_e.get('launchpad_id'))):
                # query LP
                guessed_lp_id = zanata_id
                user_name = launchpad_utils.query_lp_user_name(guessed_lp_id)
                if user_name != guessed_lp_id:
                    launchpad_id = guessed_lp_id
        else:
            user_z = {}

        user_l = user_processor.load_user(self.runtime_storage_inst,
                                          launchpad_id=launchpad_id) or {}

        if user_processor.are_users_same([user_e, user_l, user_g, user_z]):
            # If sequence numbers are set and the same, merge is not needed
            return user_e

        user = user_processor.create_user(self.domains_index, launchpad_id,
                                          email, gerrit_id, zanata_id,
                                          user_name)

        if user_e or user_l or user_g or user_z:
            # merge between existing profiles and a new one
            user, users_to_delete = user_processor.merge_user_profiles(
                self.domains_index, [user_e, user_l, user_g, user_z, user])

            # delete all unneeded profiles
            user_processor.delete_users(self.runtime_storage_inst,
                                        users_to_delete)
        else:
            # create new profile
            if (self._need_to_fetch_launchpad() and not user_name):
                user_name = launchpad_utils.query_lp_user_name(launchpad_id)
                if user_name:
                    user['user_name'] = user_name
            LOG.debug('Created new user: %s', user)

        user_processor.store_user(self.runtime_storage_inst, user)
        LOG.debug('Stored user: %s', user)

        return user