def duplicate_presentation(presentation, owner=None, title_suffix=' - Copy'): """ Duplicates an existing presentation, optionally into a new user's account """ dup = presentation.duplicate() if title_suffix: dup.title = dup.title + title_suffix dup.owner = owner or presentation.owner dup.save() # Duplicate presentation items for item in presentation.items.all(): dupitem = item.duplicate() dupitem.presentation = dup dupitem.save() # Duplicate access controls sync_access(presentation, dup) # Duplicate tags wrapper = OwnedWrapper.objects.get_for_object(user=presentation.owner, object=presentation) tags = Tag.objects.get_for_object(wrapper).values_list('name', flat=True) dup_wrapper = OwnedWrapper.objects.get_for_object(user=dup.owner, object=dup) Tag.objects.update_tags(dup_wrapper, '"%s"' % '","'.join(tags)) return dup
def get_storage(self): storage, created = Storage.objects.get_or_create( name=self.get_source_id(), defaults=dict(title=self.get_label(), system='local', base=os.path.join(settings.AUTO_STORAGE_DIR, self.get_source_id()))) if created: sync_access(self.shared, storage) return storage
def get_collection(self): collection, created = Collection.objects.get_or_create( name=self.get_source_id(), defaults=dict( title=self.get_label(), hidden=True, description='Local copies of shared collection images', )) if created: sync_access(self.shared, collection) return collection
def get_collection(self): collection, created = Collection.objects.get_or_create( name=self.get_source_id(), defaults=dict( title=self.get_label(), hidden=True, description='Local copies of shared collection images', ) ) if created: sync_access(self.shared, collection) return collection
def get_storage(self): storage, created = Storage.objects.get_or_create( name=self.get_source_id(), defaults=dict( title=self.get_label(), system='local', base=os.path.join(settings.AUTO_STORAGE_DIR, self.get_source_id()) ) ) if created: sync_access(self.shared, storage) return storage