def migrate_blockings(self): state_map = { None: BlockedRoom.State.pending, False: BlockedRoom.State.rejected, True: BlockedRoom.State.accepted } print cformat('%{white!}migrating blockings') for old_blocking_id, old_blocking in self.rb_root['RoomBlocking'][ 'Blockings'].iteritems(): b = Blocking(id=old_blocking.id, created_by_id=self.merged_avatars.get( old_blocking._createdBy, old_blocking._createdBy), created_dt=as_utc(old_blocking._utcCreatedDT), start_date=old_blocking.startDate, end_date=old_blocking.endDate, reason=convert_to_unicode(old_blocking.message)) print cformat(u'- %{cyan}{}').format(b.reason) for old_blocked_room in old_blocking.blockedRooms: br = BlockedRoom( state=state_map[old_blocked_room.active], rejected_by=old_blocked_room.rejectedBy, rejection_reason=convert_to_unicode( old_blocked_room.rejectionReason), ) room = Room.get(get_room_id(old_blocked_room.roomGUID)) room.blocked_rooms.append(br) b.blocked_rooms.append(br) print cformat(u' %{blue!}Room:%{reset} {} ({})').format( room.full_name, BlockedRoom.State(br.state).title) for old_principal in old_blocking.allowed: principal_id = old_principal._id if old_principal._type == 'Avatar': principal_id = int( self.merged_avatars.get(old_principal._id, old_principal._id)) principal_type = 'User' else: principal_type = 'Group' bp = BlockingPrincipal( _principal=[principal_type, principal_id]) b._allowed.add(bp) print cformat(u' %{blue!}Allowed:%{reset} {}({})').format( bp.entity_type, bp.entity_id) db.session.add(b) db.session.commit()