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