MCPcopy Index your code
hub / github.com/WebODM/WebODM / duplicate

Method duplicate

app/models/project.py:103–131  ·  view source on GitHub ↗
(self, new_owner=None)

Source from the content-addressed store, hash-verified

101 }
102
103 def duplicate(self, new_owner=None):
104 try:
105 with transaction.atomic():
106 project = Project.objects.get(pk=self.pk)
107 project.pk = None
108 project.name = gettext('Copy of %(task)s') % {'task': self.name}
109 project.created_at = timezone.now()
110 if new_owner is not None:
111 project.owner = new_owner
112 project.public_id = None
113 project.public_edit = False
114 project.public = False
115 project.save()
116 project.refresh_from_db()
117
118 for task in self.task_set.all():
119 new_task = task.duplicate(set_new_name=False)
120 if not new_task:
121 raise Exception("Failed to duplicate {}".format(new_task))
122
123 # Move/Assign to new duplicate
124 new_task.project = project
125 new_task.save()
126
127 return project
128 except Exception as e:
129 logger.warning("Cannot duplicate project: {}".format(str(e)))
130
131 return False
132
133 def save(self, *args, **kwargs):
134 # Assign a public ID if missing and public = True

Callers

nothing calls this directly

Calls 3

getMethod · 0.45
saveMethod · 0.45
formatMethod · 0.45

Tested by

no test coverage detected