Esempio n. 1
0
 def migrate_groups(self):
     it = committing_iterator(self.zodb_root['groups'].itervalues())
     used_names = set()
     for old_group in self.logger.progress_iterator('Migrating groups', it, len(self.zodb_root['groups']),
                                                    attrgetter('id'), lambda x: ''):
         if old_group.__class__.__name__ != 'Group':
             continue
         group_name = orig_group_name = convert_to_unicode(old_group.name).strip()
         n = 0
         while group_name.lower() in used_names:
             group_name = '{}-{}'.format(orig_group_name, n)
             n += 1
             self.print_warning('Duplicate group name: {}, using {} instead'.format(orig_group_name, group_name))
         used_names.add(group_name.lower())
         group = LocalGroup(id=int(old_group.id), name=group_name)
         self.print_success('%[white!]{:6d}%[reset] %[cyan]{}%[reset]'.format(group.id, group.name))
         members = set()
         for old_member in old_group.members:
             if old_member.__class__.__name__ != 'Avatar':
                 self.print_warning('Unsupported group member type: {}'.format(old_member.__class__.__name__))
                 continue
             user = self.global_ns.avatar_merged_user.get(old_member.id)
             if user is None:
                 self.print_warning('User not found: {}'.format(old_member.id))
                 continue
             members.add(user)
         for member in sorted(members, key=attrgetter('full_name')):
             self.print_info('%[blue!]<->%[reset]        %[white!]{:6d} %[yellow]{} ({})'.format(
                 member.id, member.full_name, member.email))
         group.members = members
         self.global_ns.all_groups[group.id] = group
         db.session.add(group)
     db.session.flush()
Esempio n. 2
0
    def migrate_groups(self):
        print cformat('%{white!}migrating groups')

        for old_group in committing_iterator(self.zodb_root['groups'].itervalues()):
            if old_group.__class__.__name__ != 'Group':
                continue
            group = LocalGroup(id=int(old_group.id), name=convert_to_unicode(old_group.name).strip())
            print cformat('%{green}+++%{reset} %{white!}{:6d}%{reset} %{cyan}{}%{reset}').format(group.id, group.name)
            members = set()
            for old_member in old_group.members:
                if old_member.__class__.__name__ != 'Avatar':
                    print cformat('%{yellow!}!!!        Unsupported group member type: {}').format(
                        old_member.__class__.__name__)
                    continue
                user = User.get(int(old_member.id))
                if user is None:
                    print cformat('%{yellow!}!!!        User not found: {}').format(old_member.id)
                    continue
                while user.merged_into_user:
                    user = user.merged_into_user
                if user.is_deleted:
                    print cformat('%{yellow!}!!!        User deleted: {}').format(user.id)
                    continue
                members.add(user)
            for member in sorted(members, key=attrgetter('full_name')):
                print cformat('%{blue!}<->%{reset}        %{white!}{:6d} %{yellow}{} ({})').format(
                    member.id, member.full_name, member.email)
            group.members = members
            db.session.add(group)
Esempio n. 3
0
    def migrate_groups(self):
        print cformat('%{white!}migrating groups')

        for old_group in committing_iterator(self.zodb_root['groups'].itervalues()):
            if old_group.__class__.__name__ != 'Group':
                continue
            group = LocalGroup(id=int(old_group.id), name=convert_to_unicode(old_group.name).strip())
            print cformat('%{green}+++%{reset} %{white!}{:6d}%{reset} %{cyan}{}%{reset}').format(group.id, group.name)
            members = set()
            for old_member in old_group.members:
                if old_member.__class__.__name__ != 'Avatar':
                    print cformat('%{yellow!}!!!        Unsupported group member type: {}').format(
                        old_member.__class__.__name__)
                    continue
                user = User.get(int(old_member.id))
                if user is None:
                    print cformat('%{yellow!}!!!        User not found: {}').format(old_member.id)
                    continue
                while user.merged_into_user:
                    user = user.merged_into_user
                if user.is_deleted:
                    print cformat('%{yellow!}!!!        User deleted: {}').format(user.id)
                    continue
                members.add(user)
            for member in sorted(members, key=attrgetter('full_name')):
                print cformat('%{blue!}<->%{reset}        %{white!}{:6d} %{yellow}{} ({})').format(
                    member.id, member.full_name, member.email)
            group.members = members
            db.session.add(group)