Mercurial > kallithea
comparison rhodecode/model/repo.py @ 3641:b44979649915 beta
recursive forks detach
- added API attrs for option to delete or detach forks
- deleting repos with attached forks raises an special Exception
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sun, 31 Mar 2013 16:18:09 +0200 |
parents | 10b4e34841a4 |
children | 34093903b505 3563bb7b4b82 |
comparison
equal
deleted
inserted
replaced
3640:4f80df0d45c8 | 3641:b44979649915 |
---|---|
40 from rhodecode.model.db import Repository, UserRepoToPerm, User, Permission, \ | 40 from rhodecode.model.db import Repository, UserRepoToPerm, User, Permission, \ |
41 Statistics, UserGroup, UserGroupRepoToPerm, RhodeCodeUi, RepoGroup,\ | 41 Statistics, UserGroup, UserGroupRepoToPerm, RhodeCodeUi, RepoGroup,\ |
42 RhodeCodeSetting, RepositoryField | 42 RhodeCodeSetting, RepositoryField |
43 from rhodecode.lib import helpers as h | 43 from rhodecode.lib import helpers as h |
44 from rhodecode.lib.auth import HasRepoPermissionAny | 44 from rhodecode.lib.auth import HasRepoPermissionAny |
45 from rhodecode.lib.exceptions import AttachedForksError | |
45 | 46 |
46 log = logging.getLogger(__name__) | 47 log = logging.getLogger(__name__) |
47 | 48 |
48 | 49 |
49 class RepoModel(BaseModel): | 50 class RepoModel(BaseModel): |
463 :param cur_user: | 464 :param cur_user: |
464 """ | 465 """ |
465 from rhodecode.lib.celerylib import tasks, run_task | 466 from rhodecode.lib.celerylib import tasks, run_task |
466 run_task(tasks.create_repo_fork, form_data, cur_user) | 467 run_task(tasks.create_repo_fork, form_data, cur_user) |
467 | 468 |
468 def delete(self, repo): | 469 def delete(self, repo, forks=None): |
470 """ | |
471 Delete given repository, forks parameter defines what do do with | |
472 attached forks. Throws AttachedForksError if deleted repo has attached | |
473 forks | |
474 | |
475 :param repo: | |
476 :param forks: str 'delete' or 'detach' | |
477 """ | |
469 repo = self._get_repo(repo) | 478 repo = self._get_repo(repo) |
470 if repo: | 479 if repo: |
480 if forks == 'detach': | |
481 for r in repo.forks: | |
482 r.fork = None | |
483 self.sa.add(r) | |
484 elif forks == 'delete': | |
485 for r in repo.forks: | |
486 self.delete(r, forks='delete') | |
487 elif [f for f in repo.forks]: | |
488 raise AttachedForksError() | |
489 | |
471 old_repo_dict = repo.get_dict() | 490 old_repo_dict = repo.get_dict() |
472 owner = repo.user | 491 owner = repo.user |
473 try: | 492 try: |
474 self.sa.delete(repo) | 493 self.sa.delete(repo) |
475 self.__delete_repo(repo) | 494 self.__delete_repo(repo) |