コード例 #1
0
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
コード例 #2
0
ファイル: views.py プロジェクト: gitter-badger/rooibos
 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
コード例 #3
0
ファイル: views.py プロジェクト: gitter-badger/rooibos
 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
コード例 #4
0
ファイル: views.py プロジェクト: eResearchSandpit/rooibos
 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
コード例 #5
0
ファイル: views.py プロジェクト: eResearchSandpit/rooibos
 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