示例#1
0
 def _migrate_session(self, old_session, friendly_id=None):
     ac = old_session._Session__ac
     code = convert_to_unicode(old_session._code)
     if code == 'no code':
         code = ''
     session = Session(event_new=self.event, title=convert_to_unicode(old_session.title),
                       description=convert_to_unicode(old_session.description),
                       is_poster=(old_session._ttType == 'poster'), code=code,
                       default_contribution_duration=old_session._contributionDuration,
                       protection_mode=PROTECTION_MODE_MAP[ac._accessProtection])
     if friendly_id is not None:
         session.friendly_id = friendly_id
     else:
         # migrating a zombie session; we simply give it a new friendly id
         self.event._last_friendly_session_id += 1
         session.friendly_id = self.event._last_friendly_session_id
     if not self.quiet:
         self.print_info('%[blue!]Session%[reset] {}'.format(session.title))
     self.event_ns.legacy_session_map[old_session] = session
     if old_session.id not in self.legacy_session_ids_used:
         session.legacy_mapping = LegacySessionMapping(event_new=self.event, legacy_session_id=old_session.id)
         self.legacy_session_ids_used.add(old_session.id)
     else:
         self.print_warning('%[yellow!]Duplicate session id; not adding legacy mapping for {}'
                            .format(old_session.id))
     # colors
     try:
         session.colors = ColorTuple(old_session._textColor, old_session._color)
     except (AttributeError, ValueError) as e:
         self.print_warning('%[yellow]Session has no colors: "{}" [{}]'.format(session.title, e))
     principals = {}
     # managers / read access
     self._process_ac(SessionPrincipal, principals, ac, allow_emails=True)
     # coordinators
     for submitter in old_session._coordinators.itervalues():
         self._process_principal(SessionPrincipal, principals, submitter, 'Coordinator', roles={'coordinate'})
     self._process_principal_emails(SessionPrincipal, principals, getattr(old_session, '_coordinatorsEmail', []),
                                    'Coordinator', roles={'coordinate'}, allow_emails=True)
     session.acl_entries = set(principals.itervalues())
     return session