Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
 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))
Ejemplo n.º 6
0
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)