Mercurial > kallithea
comparison rhodecode/model/db.py @ 2434:f29469677319 codereview
Added basic models for saving open pull requests
- added pull-request models
- added pull-requests notifications into inbox
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sun, 10 Jun 2012 02:08:10 +0200 |
parents | 9f37281195a2 |
children | 1bc579bcd67a |
comparison
equal
deleted
inserted
replaced
2433:74f2910f7ad9 | 2434:f29469677319 |
---|---|
1369 revision = Column('revision', String(40), nullable=False) | 1369 revision = Column('revision', String(40), nullable=False) |
1370 status = Column('status', String(128), nullable=False, default=DEFAULT) | 1370 status = Column('status', String(128), nullable=False, default=DEFAULT) |
1371 changeset_comment_id = Column('changeset_comment_id', Integer(), ForeignKey('changeset_comments.comment_id')) | 1371 changeset_comment_id = Column('changeset_comment_id', Integer(), ForeignKey('changeset_comments.comment_id')) |
1372 modified_at = Column('modified_at', DateTime(), nullable=False, default=datetime.datetime.now) | 1372 modified_at = Column('modified_at', DateTime(), nullable=False, default=datetime.datetime.now) |
1373 version = Column('version', Integer(), nullable=False, default=0) | 1373 version = Column('version', Integer(), nullable=False, default=0) |
1374 pull_request_id = Column("pull_request_id", Integer(), ForeignKey('pull_requests.pull_request_id'), nullable=True) | |
1375 | |
1374 author = relationship('User', lazy='joined') | 1376 author = relationship('User', lazy='joined') |
1375 repo = relationship('Repository') | 1377 repo = relationship('Repository') |
1376 comment = relationship('ChangesetComment', lazy='joined') | 1378 comment = relationship('ChangesetComment', lazy='joined') |
1379 pull_request = relationship('PullRequest', lazy='joined') | |
1377 | 1380 |
1378 @classmethod | 1381 @classmethod |
1379 def get_status_lbl(cls, value): | 1382 def get_status_lbl(cls, value): |
1380 return dict(cls.STATUSES).get(value) | 1383 return dict(cls.STATUSES).get(value) |
1381 | 1384 |
1382 @property | 1385 @property |
1383 def status_lbl(self): | 1386 def status_lbl(self): |
1384 return ChangesetStatus.get_status_lbl(self.status) | 1387 return ChangesetStatus.get_status_lbl(self.status) |
1388 | |
1389 | |
1390 class PullRequest(Base, BaseModel): | |
1391 __tablename__ = 'pull_requests' | |
1392 __table_args__ = ( | |
1393 {'extend_existing': True, 'mysql_engine': 'InnoDB', | |
1394 'mysql_charset': 'utf8'}, | |
1395 ) | |
1396 | |
1397 pull_request_id = Column('pull_request_id', Integer(), nullable=False, primary_key=True) | |
1398 title = Column('title', Unicode(256), nullable=True) | |
1399 description = Column('description', Unicode(10240), nullable=True) | |
1400 _revisions = Column('revisions', UnicodeText(20500)) # 500 revisions max | |
1401 org_repo_id = Column('org_repo_id', Integer(), ForeignKey('repositories.repo_id'), nullable=False) | |
1402 org_ref = Column('org_ref', Unicode(256), nullable=False) | |
1403 other_repo_id = Column('other_repo_id', Integer(), ForeignKey('repositories.repo_id'), nullable=False) | |
1404 other_ref = Column('other_ref', Unicode(256), nullable=False) | |
1405 | |
1406 @hybrid_property | |
1407 def revisions(self): | |
1408 return self._revisions.split(':') | |
1409 | |
1410 @revisions.setter | |
1411 def revisions(self, val): | |
1412 self._revisions = ':'.join(val) | |
1413 | |
1414 reviewers = relationship('PullRequestReviewers') | |
1415 org_repo = relationship('Repository', primaryjoin='PullRequest.org_repo_id==Repository.repo_id') | |
1416 other_repo = relationship('Repository', primaryjoin='PullRequest.other_repo_id==Repository.repo_id') | |
1417 | |
1418 def __json__(self): | |
1419 return dict( | |
1420 revisions=self.revisions | |
1421 ) | |
1422 | |
1423 | |
1424 class PullRequestReviewers(Base, BaseModel): | |
1425 __tablename__ = 'pull_request_reviewers' | |
1426 __table_args__ = ( | |
1427 {'extend_existing': True, 'mysql_engine': 'InnoDB', | |
1428 'mysql_charset': 'utf8'}, | |
1429 ) | |
1430 | |
1431 def __init__(self, user=None, pull_request=None): | |
1432 self.user = user | |
1433 self.pull_request = pull_request | |
1434 | |
1435 pull_requests_reviewers_id = Column('pull_requests_reviewers_id', Integer(), nullable=False, primary_key=True) | |
1436 pull_request_id = Column("pull_request_id", Integer(), ForeignKey('pull_requests.pull_request_id'), nullable=False) | |
1437 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=True) | |
1438 | |
1439 user = relationship('User') | |
1440 pull_request = relationship('PullRequest') | |
1385 | 1441 |
1386 | 1442 |
1387 class Notification(Base, BaseModel): | 1443 class Notification(Base, BaseModel): |
1388 __tablename__ = 'notifications' | 1444 __tablename__ = 'notifications' |
1389 __table_args__ = ( | 1445 __table_args__ = ( |