Пример #1
0
 def index_users(cls):
     projects = CodeDoubanProject.get_projects()
     user_names = set(project.owner_name for project in projects)
     index_data = [cls.get_user_index(User(u)) for u in user_names]
     indexes = [(data['name'].encode('hex'), data) for data in index_data]
     IndexEngine.create_index_bulk('user', indexes)
Пример #2
0
 def get_forked_users(self):
     rs = store.execute('select owner_id from codedouban_projects '
                        'where fork_from=%s', self.id)
     return [User(user_id) for user_id, in rs]
Пример #3
0
 def __init__(self, name):
     name = name.strip()
     self.user = User(name) if name else None
     if not self.user:
         raise TraversalError()
Пример #4
0
 def owner(self):
     return User(self.author)
Пример #5
0
 def addUser(self, name='unittest_user'):
     return User(name)
Пример #6
0
 def owner(self):
     return User(self.owner_id)
Пример #7
0
 def test_user_settings(self):
     u = User('testu')
     assert u.settings.show_tips is None
     u.settings.show_tips = True
     assert u.settings.show_tips is True
Пример #8
0
 def members(self):
     from vilya.models.user import User
     rs = GroupUser.gets(group_id=self.id)
     return [User(r.user_id) for r in rs]
Пример #9
0
 def user(self):
     from vilya.models.user import User
     return User(self.user_id)
Пример #10
0
 def closer(self):
     if self.closer_id:
         from vilya.models.user import User
         return User(self.closer_id)
     return None
Пример #11
0
 def assignee(self):
     if self.assignee_id:
         from vilya.models.user import User
         return User(self.assignee_id)
     return None
Пример #12
0
 def user(self):
     return User(self.user_id)
Пример #13
0
def add_pull(ticket, pullreq, user):
    from dispatches import dispatch
    from vilya.libs.text import get_mentions_from_text
    from vilya.libs.signals import pullrequest_signal
    from vilya.models.user import get_author_by_email
    from vilya.models.user import User
    from vilya.models.trello.core import process_trello_notify

    reporter = user.username
    commits = pullreq.commits
    # TODO: refactory is! auto number how to?
    shas = [p.sha for p in commits]
    ticket_len = Ticket.get_count_by_proj_id(ticket.project_id)
    if ticket_len == 0:
        # 检查是否创建过新PR,若未创建过则以旧PR号为基准累加
        max_ticket_id = PullRequest.get_max_ticket_id(ticket.project_id)
        if max_ticket_id >= 0:
            ticket = Ticket.add(ticket.project_id, ticket.title,
                                ticket.description, ticket.author,
                                max_ticket_id + 1)
        else:
            ticket = Ticket.add(ticket.project_id, ticket.title,
                                ticket.description, ticket.author)
    else:
        ticket = Ticket.add(ticket.project_id, ticket.title,
                            ticket.description, ticket.author)
    pullreq = pullreq.insert(ticket.ticket_number)

    if shas:
        ticket.add_commits(','.join(shas), reporter)
    noti_receivers = [
        committer.name for committer in
        CodeDoubanProject.get_committers_by_project(pullreq.to_proj.id)
    ]  # noqa
    noti_receivers = noti_receivers + [pullreq.to_proj.owner.name]
    get_commit_author = lambda u: get_author_by_email(u.email.encode('utf-8'))
    commit_authors = {get_commit_author(c.author) for c in commits}
    commit_authors = {a for a in commit_authors if a}
    noti_receivers.extend(commit_authors)

    # diffs, author_by_file, authors = pullreq.get_diffs(with_blame=True)
    # FIXME: diffs没用到?
    # diffs = pullreq.get_diffs()

    # blame代码变更的原作者, 也加到at users
    at_users = get_mentions_from_text(ticket.description)
    # at_users.extend(authors)
    at_users.append(pullreq.to_proj.owner_id)
    at_users = set(at_users)

    # FIXME: invited_users is used on page /hub/my_pull_requests/
    invited_users = [
        User(u).add_invited_pull_request(ticket.id) for u in at_users
    ]

    ProjectOwnLRUCounter(user.username).use(pullreq.to_proj.id)
    ProjectWatchLRUCounter(user.username).use(pullreq.to_proj.id)

    # TODO: 重构Feed之后取消这个信号的发送
    pullrequest_signal.send(user.username,
                            extra_receivers=noti_receivers,
                            pullreq=pullreq,
                            comment=ticket.description,
                            ticket_id=ticket.ticket_id,
                            ticket=ticket,
                            status="unmerge",
                            new_version=True)

    dispatch('pullreq',
             data=dict(sender=user.username,
                       content=ticket.description,
                       ticket=ticket,
                       status='unmerge',
                       new_version=True,
                       extra_receivers=noti_receivers))

    dispatch('pr_actions',
             data=dict(type='pr_opened',
                       hooks=pullreq.to_proj.hooks,
                       author=user,
                       title=ticket.title,
                       body=ticket.description,
                       ticket=ticket,
                       pullreq=pullreq))

    # FIXME: move to dispatch
    process_trello_notify(user, ticket)
    return pullreq
Пример #14
0
 def following(self, request):
     name = self.name
     list_type = "following"
     user_list = User(name).get_following()
     return self.follow_list(request, list_type, user_list)
Пример #15
0
 def __init__(self, name=''):
     self.name = name
     self.user = User(name)
Пример #16
0
 def pledged(self):
     from vilya.models.user import User
     return [(User(user_id), amount)
             for user_id, amount, time in self.get_pledged()]
Пример #17
0
 def stars(self):
     rs = store.execute("select user_id from gist_stars where gist_id=%s",
                        (self.id, ))
     return [User(user_id) for user_id, in rs]
Пример #18
0
 def get_watch_users(self):
     return [User(user_id)
             for user_id in CodeDoubanProject.get_watch_user_ids(self.id)]
Пример #19
0
 def test_user_equal(self):
     assert User('tu', '*****@*****.**') == User('tu', '*****@*****.**')
     assert User('tu1', '*****@*****.**') != User('tu2', '*****@*****.**')
Пример #20
0
 def get_committers_by_project(cls, proj_id):
     rs = store.execute("select user_id from codedouban_committers "
                        "where project_id=%s", proj_id)
     return [User(user_id) for user_id, in rs]
Пример #21
0
def notify_by_irc(target_obj, channel, message):
    from vilya.models.user import User
    user = User(channel)
    notify_irc = user.notify_irc(target_obj) if user else None
    if notify_irc:
        send_message(channel, message)
Пример #22
0
 def get_user_perm(self, user_id):
     if user_id == self.owner_id:
         return PERM_ADMIN
     committers = self.committers
     if User(user_id) in committers:
         return PERM_PUSH
Пример #23
0
 def test_get_user_badges(self):
     user = User('qingfeng')
     with new_badge(user.username) as badge:
         badge.award(item_id=user.username)
         eq_(len(user.get_badges()), 2)
Пример #24
0
 def addUser(self, name='api_test_user'):
     return User(name)