def _extract_event_id(self, link_url): parsed_url = urlparse.urlparse(link_url) path = parsed_url.path query = parsed_url.query if query: parsed_qs = urlparse.parse_qs(query) if not parsed_qs: event_id = query else: event_id = parsed_qs['confId'][0] if is_legacy_id(event_id): try: event_id = self.legacy_event_mapping[event_id] except KeyError: return None else: match = re.match( r'/(?:event|e)/(?P<event_id>\d+)/material/(?P<material_id>\d+)/?', path) if match is not None: folder = LegacyAttachmentFolderMapping.find( event_id=match.group('event_id'), contribution_id=None, session_id=None, subcontribution_id=None, material_id=match.group('material_id')).one().folder return self._extract_event_id(folder.attachments[0].link_url) match = re.match(r'/(?:event|e)/(?P<event_id>\d+)/?', path) if match is None: print path event_id = match.group('event_id') return int(event_id)
def _extract_event_id(self, link_url): parsed_url = urlparse.urlparse(link_url) path = parsed_url.path query = parsed_url.query if query: parsed_qs = urlparse.parse_qs(query) if not parsed_qs: event_id = query else: event_id = parsed_qs['confId'][0] if is_legacy_id(event_id): try: event_id = self.legacy_event_mapping[event_id] except KeyError: return None else: match = re.match(r'/(?:event|e)/(?P<event_id>\d+)/material/(?P<material_id>\d+)/?', path) if match is not None: folder = LegacyAttachmentFolderMapping.find(event_id=match.group('event_id'), contribution_id=None, session_id=None, subcontribution_id=None, material_id=match.group('material_id')).one().folder return self._extract_event_id(folder.attachments[0].link_url) match = re.match(r'/(?:event|e)/(?P<event_id>\d+)/?', path) if match is None: print path event_id = match.group('event_id') return int(event_id)
def compat_folder(**kwargs): _clean_args(kwargs) folder = LegacyAttachmentFolderMapping.find(**kwargs).first_or_404().folder if folder.is_deleted or folder.linked_object is None: raise NotFound return redirect(url_for('attachments.list_folder', folder), 302 if current_app.debug else 301)
def migrate_event_attachments(self): self.print_step('migrating event attachments') for event, obj, material, resources in self._committing_iterator( self._iter_event_materials()): folder = self._folder_from_material(material, obj) lm = LegacyAttachmentFolderMapping(linked_object=obj, material_id=material.id, folder_id=folder['id']) self.todo[LegacyAttachmentFolderMapping].append(_sa_to_dict(lm)) if not self.quiet: self.print_success( cformat('%{cyan}[{}]%{reset} %{blue!}({})').format( folder['title'], _link_repr(folder)), event_id=event.id) for resource in resources: attachment = self._attachment_from_resource( folder, material, resource, event) if attachment is None: continue lm = LegacyAttachmentMapping(linked_object=obj, material_id=material.id, resource_id=resource.id, attachment_id=attachment['id']) self.todo[LegacyAttachmentMapping].append(_sa_to_dict(lm)) if not self.quiet: if attachment['type'] == AttachmentType.link: self.print_success(cformat('- %{cyan}{}').format( attachment['title']), event_id=event.id) else: self.print_success(cformat('- %{cyan!}{}').format( attachment['title']), event_id=event.id)
def migrate_event_attachments(self): for obj, material, resources, legacy_link_data in self._iter_event_materials(): folder = self._folder_from_material(material, obj) LegacyAttachmentFolderMapping(material_id=material.id, folder=folder, **legacy_link_data) if not self.quiet: self.print_success('%[cyan][{}]%[reset] %[blue!]({})'.format(folder.title, folder.link_repr)) for resource in resources: attachment = self._attachment_from_resource(folder, material, resource, self.conf) if attachment is None: continue LegacyAttachmentMapping(material_id=material.id, resource_id=resource.id, attachment=attachment, **legacy_link_data) if not self.quiet: if attachment.type == AttachmentType.link: self.print_success('- %[cyan]{}'.format(attachment.title)) else: self.print_success('- %[cyan!]{}'.format(attachment.title))
def compat_folder(**kwargs): _clean_args(kwargs) folder = LegacyAttachmentFolderMapping.find(**kwargs).first_or_404().folder if folder.is_deleted or folder.linked_object is None: raise NotFound return redirect(url_for('attachments.list_folder', folder), 302 if current_app.debug else 301)