def update(self, revision, data, user=None): """Note: Dataverse only has psuedo versions, don't save them Dataverse requires a user for the weird check below and Django dies when _get_current_user is called """ self.name = data['name'] self.materialized_path = data['materialized'] self.save() version = FileVersion(identifier=revision) version.update_metadata(data, save=False) user = user or _get_current_user() if not user or not self.node.can_edit(user=user): try: # Users without edit permission can only see published files if not data['extra']['hasPublishedVersion']: # Blank out name and path for the render # Dont save because there's no reason to persist the change self.name = '' self.materialized_path = '' return (version, '<div class="alert alert-info" role="alert">This file does not exist.</div>') except (KeyError, IndexError): pass return version
def update(self, revision, data, user=None): """Figshare does not support versioning. Always pass revision as None to avoid conflict. """ self.name = data['name'] self.materialized_path = data['materialized'] self.save() version = FileVersion(identifier=None) version.update_metadata(data, save=False) # Draft files are not renderable if data['extra']['status'] == 'drafts': return (version, u''' <style> .file-download{{display: none;}} .file-share{{display: none;}} </style> <div class="alert alert-info" role="alert"> The file "{name}" is still a draft on figshare. <br> To view it on the OSF <a href="https://support.figshare.com/support/solutions">publish</a> it on figshare. </div> '''.format(name=markupsafe.escape(self.name))) return version
def update(self, revision, data, user=None): """Figshare does not support versioning. Always pass revision as None to avoid conflict. """ self.name = data['name'] self.materialized_path = data['materialized'] self.save() version = FileVersion(identifier=None) version.update_metadata(data, save=False) # Draft files are not renderable if data['extra']['status'] == 'drafts': return (version, u''' <style> .file-download{{display: none;}} .file-share{{display: none;}} </style> <div class="alert alert-info" role="alert"> The file "{name}" is still a draft on figshare. <br> To view it on the OSF <a href="http://figshare.com/faqs">publish</a> it on figshare. </div> '''.format(name=escape_html(self.name))) return version
def update(self, revision, data, user=None): """Note: Dataverse only has psuedo versions, don't save them Dataverse requires a user for the weird check below and Django dies when _get_current_user is called """ self.name = data['name'] self.materialized_path = data['materialized'] self.save() version = FileVersion(identifier=revision) version.update_metadata(data, save=False) user = user or _get_current_user() if not user or not self.node.can_edit(user=user): try: # Users without edit permission can only see published files if not data['extra']['hasPublishedVersion']: # Blank out name and path for the render # Dont save because there's no reason to persist the change self.name = '' self.materialized_path = '' return ( version, '<div class="alert alert-info" role="alert">This file does not exist.</div>' ) except (KeyError, IndexError): pass return version
def create_version(self, creator, location, metadata=None): latest_version = self.get_version() version = FileVersion(identifier=len(self.versions) + 1, creator=creator, location=location) if latest_version and latest_version.is_duplicate(version): return latest_version if metadata: version.update_metadata(metadata) version._find_matching_archive(save=False) version.save() self.versions.append(version) self.save() return version