Mercurial > kallithea
comparison rhodecode/model/pull_request.py @ 2541:1c2ba03c42b4 beta
Added dynamic data loading for other repo we open pull request against
- fixed notification emails, now with link to comment or status change in given pull request
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Tue, 03 Jul 2012 03:07:15 +0200 |
parents | 17893d61792a |
children | c1cac08d7062 |
comparison
equal
deleted
inserted
replaced
2540:b1975bb589c5 | 2541:1c2ba03c42b4 |
---|---|
27 import binascii | 27 import binascii |
28 from pylons.i18n.translation import _ | 28 from pylons.i18n.translation import _ |
29 | 29 |
30 from rhodecode.lib import helpers as h | 30 from rhodecode.lib import helpers as h |
31 from rhodecode.model import BaseModel | 31 from rhodecode.model import BaseModel |
32 from rhodecode.model.db import PullRequest, PullRequestReviewers, Notification | 32 from rhodecode.model.db import PullRequest, PullRequestReviewers, Notification,\ |
33 ChangesetStatus | |
33 from rhodecode.model.notification import NotificationModel | 34 from rhodecode.model.notification import NotificationModel |
34 from rhodecode.lib.utils2 import safe_unicode | 35 from rhodecode.lib.utils2 import safe_unicode |
35 | 36 |
36 from rhodecode.lib.vcs.utils.hgcompat import discovery | 37 from rhodecode.lib.vcs.utils.hgcompat import discovery |
38 from rhodecode.model.changeset_status import ChangesetStatusModel | |
39 from rhodecode.model.comment import ChangesetCommentsModel | |
40 from rhodecode.model.meta import Session | |
37 | 41 |
38 log = logging.getLogger(__name__) | 42 log = logging.getLogger(__name__) |
39 | 43 |
40 | 44 |
41 class PullRequestModel(BaseModel): | 45 class PullRequestModel(BaseModel): |
46 repo = self._get_repo(repo) | 50 repo = self._get_repo(repo) |
47 return PullRequest.query().filter(PullRequest.other_repo == repo).all() | 51 return PullRequest.query().filter(PullRequest.other_repo == repo).all() |
48 | 52 |
49 def create(self, created_by, org_repo, org_ref, other_repo, | 53 def create(self, created_by, org_repo, org_ref, other_repo, |
50 other_ref, revisions, reviewers, title, description=None): | 54 other_ref, revisions, reviewers, title, description=None): |
55 | |
51 created_by_user = self._get_user(created_by) | 56 created_by_user = self._get_user(created_by) |
57 org_repo = self._get_repo(org_repo) | |
58 other_repo = self._get_repo(other_repo) | |
52 | 59 |
53 new = PullRequest() | 60 new = PullRequest() |
54 new.org_repo = self._get_repo(org_repo) | 61 new.org_repo = org_repo |
55 new.org_ref = org_ref | 62 new.org_ref = org_ref |
56 new.other_repo = self._get_repo(other_repo) | 63 new.other_repo = other_repo |
57 new.other_ref = other_ref | 64 new.other_ref = other_ref |
58 new.revisions = revisions | 65 new.revisions = revisions |
59 new.title = title | 66 new.title = title |
60 new.description = description | 67 new.description = description |
61 new.author = created_by_user | 68 new.author = created_by_user |
62 self.sa.add(new) | 69 self.sa.add(new) |
63 | 70 Session().flush() |
64 #members | 71 #members |
65 for member in reviewers: | 72 for member in reviewers: |
66 _usr = self._get_user(member) | 73 _usr = self._get_user(member) |
67 reviewer = PullRequestReviewers(_usr, new) | 74 reviewer = PullRequestReviewers(_usr, new) |
68 self.sa.add(reviewer) | 75 self.sa.add(reviewer) |
80 qualified=True, | 87 qualified=True, |
81 ) | 88 ) |
82 ) | 89 ) |
83 ) | 90 ) |
84 body = description | 91 body = description |
85 notif.create(created_by=created_by, subject=subject, body=body, | 92 notif.create(created_by=created_by_user, subject=subject, body=body, |
86 recipients=reviewers, | 93 recipients=reviewers, |
87 type_=Notification.TYPE_PULL_REQUEST,) | 94 type_=Notification.TYPE_PULL_REQUEST,) |
88 | 95 |
89 return new | 96 return new |
90 | 97 |