Show More
@@ -53,12 +53,13 b' from zope.cachedescriptors.property impo' | |||||
53 | from pyramid.threadlocal import get_current_request |
|
53 | from pyramid.threadlocal import get_current_request | |
54 | from webhelpers2.text import remove_formatting |
|
54 | from webhelpers2.text import remove_formatting | |
55 |
|
55 | |||
|
56 | from rhodecode.lib.str_utils import safe_bytes | |||
56 | from rhodecode.translation import _ |
|
57 | from rhodecode.translation import _ | |
57 | from rhodecode.lib.vcs import get_vcs_instance, VCSError |
|
58 | from rhodecode.lib.vcs import get_vcs_instance, VCSError | |
58 | from rhodecode.lib.vcs.backends.base import ( |
|
59 | from rhodecode.lib.vcs.backends.base import ( | |
59 | EmptyCommit, Reference, unicode_to_reference, reference_to_unicode) |
|
60 | EmptyCommit, Reference, unicode_to_reference, reference_to_unicode) | |
60 | from rhodecode.lib.utils2 import ( |
|
61 | from rhodecode.lib.utils2 import ( | |
61 |
str2bool, safe_str, get_commit_safe, |
|
62 | str2bool, safe_str, get_commit_safe, sha1_safe, | |
62 | time_to_datetime, aslist, Optional, safe_int, get_clone_url, AttributeDict, |
|
63 | time_to_datetime, aslist, Optional, safe_int, get_clone_url, AttributeDict, | |
63 | glob2re, StrictAttributeDict, cleaned_uri, datetime_to_time) |
|
64 | glob2re, StrictAttributeDict, cleaned_uri, datetime_to_time) | |
64 | from rhodecode.lib.jsonalchemy import MutationObj, MutationList, JsonType, \ |
|
65 | from rhodecode.lib.jsonalchemy import MutationObj, MutationList, JsonType, \ | |
@@ -316,7 +317,7 b' class RhodeCodeSetting(Base, BaseModel):' | |||||
316 | SETTINGS_TYPES = { |
|
317 | SETTINGS_TYPES = { | |
317 | 'str': safe_str, |
|
318 | 'str': safe_str, | |
318 | 'int': safe_int, |
|
319 | 'int': safe_int, | |
319 |
'unicode': safe_ |
|
320 | 'unicode': safe_str, | |
320 | 'bool': str2bool, |
|
321 | 'bool': str2bool, | |
321 | 'list': functools.partial(aslist, sep=',') |
|
322 | 'list': functools.partial(aslist, sep=',') | |
322 | } |
|
323 | } | |
@@ -360,7 +361,7 b' class RhodeCodeSetting(Base, BaseModel):' | |||||
360 |
|
361 | |||
361 | :param val: |
|
362 | :param val: | |
362 | """ |
|
363 | """ | |
363 |
val = safe_ |
|
364 | val = safe_str(val) | |
364 | # encode the encrypted value |
|
365 | # encode the encrypted value | |
365 | if 'encrypted' in self.app_settings_type: |
|
366 | if 'encrypted' in self.app_settings_type: | |
366 | cipher = EncryptedTextValue() |
|
367 | cipher = EncryptedTextValue() | |
@@ -436,7 +437,7 b' class RhodeCodeUi(Base, BaseModel):' | |||||
436 | ui_active = Column( |
|
437 | ui_active = Column( | |
437 | "ui_active", Boolean(), nullable=True, unique=None, default=True) |
|
438 | "ui_active", Boolean(), nullable=True, unique=None, default=True) | |
438 |
|
439 | |||
439 |
def __ |
|
440 | def __str__(self): | |
440 | return '<%s[%s]%s=>%s]>' % (self.__class__.__name__, self.ui_section, |
|
441 | return '<%s[%s]%s=>%s]>' % (self.__class__.__name__, self.ui_section, | |
441 | self.ui_key, self.ui_value) |
|
442 | self.ui_key, self.ui_value) | |
442 |
|
443 | |||
@@ -494,7 +495,7 b' class RepoRhodeCodeSetting(Base, BaseMod' | |||||
494 |
|
495 | |||
495 | :param val: |
|
496 | :param val: | |
496 | """ |
|
497 | """ | |
497 |
self._app_settings_value = safe_ |
|
498 | self._app_settings_value = safe_str(val) | |
498 |
|
499 | |||
499 | @hybrid_property |
|
500 | @hybrid_property | |
500 | def app_settings_type(self): |
|
501 | def app_settings_type(self): | |
@@ -508,8 +509,8 b' class RepoRhodeCodeSetting(Base, BaseMod' | |||||
508 | % (SETTINGS_TYPES.keys(), val)) |
|
509 | % (SETTINGS_TYPES.keys(), val)) | |
509 | self._app_settings_type = val |
|
510 | self._app_settings_type = val | |
510 |
|
511 | |||
511 |
def __ |
|
512 | def __str__(self): | |
512 |
return |
|
513 | return "<%s('%s:%s:%s[%s]')>" % ( | |
513 | self.__class__.__name__, self.repository.repo_name, |
|
514 | self.__class__.__name__, self.repository.repo_name, | |
514 | self.app_settings_name, self.app_settings_value, |
|
515 | self.app_settings_name, self.app_settings_value, | |
515 | self.app_settings_type |
|
516 | self.app_settings_type | |
@@ -542,7 +543,7 b' class RepoRhodeCodeUi(Base, BaseModel):' | |||||
542 |
|
543 | |||
543 | repository = relationship('Repository') |
|
544 | repository = relationship('Repository') | |
544 |
|
545 | |||
545 |
def __ |
|
546 | def __str__(self): | |
546 | return '<%s[%s:%s]%s=>%s]>' % ( |
|
547 | return '<%s[%s:%s]%s=>%s]>' % ( | |
547 | self.__class__.__name__, self.repository.repo_name, |
|
548 | self.__class__.__name__, self.repository.repo_name, | |
548 | self.ui_section, self.ui_key, self.ui_value) |
|
549 | self.ui_section, self.ui_key, self.ui_value) | |
@@ -626,9 +627,9 b' class User(Base, BaseModel):' | |||||
626 | # no cascade, set NULL |
|
627 | # no cascade, set NULL | |
627 | scope_artifacts = relationship('FileStore', primaryjoin='FileStore.scope_user_id==User.user_id') |
|
628 | scope_artifacts = relationship('FileStore', primaryjoin='FileStore.scope_user_id==User.user_id') | |
628 |
|
629 | |||
629 | def __unicode__(self): |
|
630 | ||
630 | return u"<%s('id:%s:%s')>" % (self.__class__.__name__, |
|
631 | def __str__(self): | |
631 | self.user_id, self.username) |
|
632 | return f"<{self.__class__.__name__}('id:{self.user_id}:{self.username}')>" | |
632 |
|
633 | |||
633 | @hybrid_property |
|
634 | @hybrid_property | |
634 | def email(self): |
|
635 | def email(self): | |
@@ -1177,8 +1178,8 b' class UserApiKeys(Base, BaseModel):' | |||||
1177 |
|
1178 | |||
1178 | user = relationship('User', lazy='joined') |
|
1179 | user = relationship('User', lazy='joined') | |
1179 |
|
1180 | |||
1180 |
def __ |
|
1181 | def __str__(self): | |
1181 |
return |
|
1182 | return f"<{self.__class__.__name__}('{self.role}')>" | |
1182 |
|
1183 | |||
1183 | def __json__(self): |
|
1184 | def __json__(self): | |
1184 | data = { |
|
1185 | data = { | |
@@ -1318,9 +1319,8 b' class UserIpMap(Base, BaseModel):' | |||||
1318 | 'ip_range': self._get_ip_range(self.ip_addr), |
|
1319 | 'ip_range': self._get_ip_range(self.ip_addr), | |
1319 | } |
|
1320 | } | |
1320 |
|
1321 | |||
1321 |
def __ |
|
1322 | def __str__(self): | |
1322 |
return |
|
1323 | return "<%s('user_id:%s=>%s')>" % (self.__class__.__name__, self.user_id, self.ip_addr) | |
1323 | self.user_id, self.ip_addr) |
|
|||
1324 |
|
1324 | |||
1325 |
|
1325 | |||
1326 | class UserSshKeys(Base, BaseModel): |
|
1326 | class UserSshKeys(Base, BaseModel): | |
@@ -1382,9 +1382,9 b' class UserLog(Base, BaseModel):' | |||||
1382 | user_data = Column('user_data_json', MutationObj.as_mutable(JsonType(dialect_map=dict(mysql=LONGTEXT())))) |
|
1382 | user_data = Column('user_data_json', MutationObj.as_mutable(JsonType(dialect_map=dict(mysql=LONGTEXT())))) | |
1383 | action_data = Column('action_data_json', MutationObj.as_mutable(JsonType(dialect_map=dict(mysql=LONGTEXT())))) |
|
1383 | action_data = Column('action_data_json', MutationObj.as_mutable(JsonType(dialect_map=dict(mysql=LONGTEXT())))) | |
1384 |
|
1384 | |||
1385 | def __unicode__(self): |
|
1385 | ||
1386 | return u"<%s('id:%s:%s')>" % ( |
|
1386 | def __str__(self): | |
1387 |
|
|
1387 | return f"<{self.__class__.__name__}('id:{self.repository_name}:{self.action}')>" | |
1388 |
|
1388 | |||
1389 | def __json__(self): |
|
1389 | def __json__(self): | |
1390 | return { |
|
1390 | return { | |
@@ -1473,10 +1473,8 b' class UserGroup(Base, BaseModel):' | |||||
1473 | def sync(self): |
|
1473 | def sync(self): | |
1474 | return self._load_sync(self.group_data) |
|
1474 | return self._load_sync(self.group_data) | |
1475 |
|
1475 | |||
1476 |
def __ |
|
1476 | def __str__(self): | |
1477 | return u"<%s('id:%s:%s')>" % (self.__class__.__name__, |
|
1477 | return f"<{self.__class__.__name__}('id:{self.users_group_id}:{self.users_group_name}')>" | |
1478 | self.users_group_id, |
|
|||
1479 | self.users_group_name) |
|
|||
1480 |
|
1478 | |||
1481 | @classmethod |
|
1479 | @classmethod | |
1482 | def get_by_group_name(cls, group_name, cache=False, |
|
1480 | def get_by_group_name(cls, group_name, cache=False, | |
@@ -1783,9 +1781,9 b' class Repository(Base, BaseModel):' | |||||
1783 | # no cascade, set NULL |
|
1781 | # no cascade, set NULL | |
1784 | artifacts = relationship('FileStore', primaryjoin='FileStore.scope_repo_id==Repository.repo_id') |
|
1782 | artifacts = relationship('FileStore', primaryjoin='FileStore.scope_repo_id==Repository.repo_id') | |
1785 |
|
1783 | |||
1786 | def __unicode__(self): |
|
1784 | ||
1787 | return u"<%s('%s:%s')>" % (self.__class__.__name__, self.repo_id, |
|
1785 | def __str__(self): | |
1788 | safe_unicode(self.repo_name)) |
|
1786 | return "<%s('%s:%s')>" % (self.__class__.__name__, self.repo_id, self.repo_name) | |
1789 |
|
1787 | |||
1790 | @hybrid_property |
|
1788 | @hybrid_property | |
1791 | def description_safe(self): |
|
1789 | def description_safe(self): | |
@@ -2012,7 +2010,7 b' class Repository(Base, BaseModel):' | |||||
2012 | # names in the database, but that eventually needs to be converted |
|
2010 | # names in the database, but that eventually needs to be converted | |
2013 | # into a valid system path |
|
2011 | # into a valid system path | |
2014 | p += self.repo_name.split(self.NAME_SEP) |
|
2012 | p += self.repo_name.split(self.NAME_SEP) | |
2015 |
return os.path.join(*map(safe_ |
|
2013 | return os.path.join(*map(safe_str, p)) | |
2016 |
|
2014 | |||
2017 | @property |
|
2015 | @property | |
2018 | def cache_keys(self): |
|
2016 | def cache_keys(self): | |
@@ -2699,8 +2697,8 b' class RepoGroup(Base, BaseModel):' | |||||
2699 | self.group_name = group_name |
|
2697 | self.group_name = group_name | |
2700 | self.parent_group = parent_group |
|
2698 | self.parent_group = parent_group | |
2701 |
|
2699 | |||
2702 |
def __ |
|
2700 | def __str__(self): | |
2703 |
return |
|
2701 | return "<%s('id:%s:%s')>" % ( | |
2704 | self.__class__.__name__, self.group_id, self.group_name) |
|
2702 | self.__class__.__name__, self.group_id, self.group_name) | |
2705 |
|
2703 | |||
2706 | @hybrid_property |
|
2704 | @hybrid_property | |
@@ -3233,8 +3231,8 b' class Permission(Base, BaseModel):' | |||||
3233 | permission_name = Column("permission_name", String(255), nullable=True, unique=None, default=None) |
|
3231 | permission_name = Column("permission_name", String(255), nullable=True, unique=None, default=None) | |
3234 | permission_longname = Column("permission_longname", String(255), nullable=True, unique=None, default=None) |
|
3232 | permission_longname = Column("permission_longname", String(255), nullable=True, unique=None, default=None) | |
3235 |
|
3233 | |||
3236 |
def __ |
|
3234 | def __str__(self): | |
3237 |
return |
|
3235 | return "<%s('%s:%s')>" % ( | |
3238 | self.__class__.__name__, self.permission_id, self.permission_name |
|
3236 | self.__class__.__name__, self.permission_id, self.permission_name | |
3239 | ) |
|
3237 | ) | |
3240 |
|
3238 | |||
@@ -3422,8 +3420,8 b' class UserRepoToPerm(Base, BaseModel):' | |||||
3422 | Session().add(n) |
|
3420 | Session().add(n) | |
3423 | return n |
|
3421 | return n | |
3424 |
|
3422 | |||
3425 |
def __ |
|
3423 | def __str__(self): | |
3426 |
return |
|
3424 | return f'<{self.user} => {self.repository} >' | |
3427 |
|
3425 | |||
3428 |
|
3426 | |||
3429 | class UserUserGroupToPerm(Base, BaseModel): |
|
3427 | class UserUserGroupToPerm(Base, BaseModel): | |
@@ -3451,8 +3449,8 b' class UserUserGroupToPerm(Base, BaseMode' | |||||
3451 | Session().add(n) |
|
3449 | Session().add(n) | |
3452 | return n |
|
3450 | return n | |
3453 |
|
3451 | |||
3454 |
def __ |
|
3452 | def __str__(self): | |
3455 |
return |
|
3453 | return f'<{self.user} => {self.user_group} >' | |
3456 |
|
3454 | |||
3457 |
|
3455 | |||
3458 | class UserToPerm(Base, BaseModel): |
|
3456 | class UserToPerm(Base, BaseModel): | |
@@ -3469,8 +3467,8 b' class UserToPerm(Base, BaseModel):' | |||||
3469 | user = relationship('User') |
|
3467 | user = relationship('User') | |
3470 | permission = relationship('Permission', lazy='joined') |
|
3468 | permission = relationship('Permission', lazy='joined') | |
3471 |
|
3469 | |||
3472 |
def __ |
|
3470 | def __str__(self): | |
3473 |
return |
|
3471 | return f'<{self.user} => {self.permission} >' | |
3474 |
|
3472 | |||
3475 |
|
3473 | |||
3476 | class UserGroupRepoToPerm(Base, BaseModel): |
|
3474 | class UserGroupRepoToPerm(Base, BaseModel): | |
@@ -3499,8 +3497,8 b' class UserGroupRepoToPerm(Base, BaseMode' | |||||
3499 | Session().add(n) |
|
3497 | Session().add(n) | |
3500 | return n |
|
3498 | return n | |
3501 |
|
3499 | |||
3502 |
def __ |
|
3500 | def __str__(self): | |
3503 |
return |
|
3501 | return '<UserGroupRepoToPerm:%s => %s >' % (self.users_group, self.repository) | |
3504 |
|
3502 | |||
3505 |
|
3503 | |||
3506 | class UserGroupUserGroupToPerm(Base, BaseModel): |
|
3504 | class UserGroupUserGroupToPerm(Base, BaseModel): | |
@@ -3529,8 +3527,8 b' class UserGroupUserGroupToPerm(Base, Bas' | |||||
3529 | Session().add(n) |
|
3527 | Session().add(n) | |
3530 | return n |
|
3528 | return n | |
3531 |
|
3529 | |||
3532 |
def __ |
|
3530 | def __str__(self): | |
3533 |
return |
|
3531 | return '<UserGroupUserGroup:%s => %s >' % (self.target_user_group, self.user_group) | |
3534 |
|
3532 | |||
3535 |
|
3533 | |||
3536 | class UserGroupToPerm(Base, BaseModel): |
|
3534 | class UserGroupToPerm(Base, BaseModel): | |
@@ -3599,8 +3597,8 b' class UserGroupRepoGroupToPerm(Base, Bas' | |||||
3599 | Session().add(n) |
|
3597 | Session().add(n) | |
3600 | return n |
|
3598 | return n | |
3601 |
|
3599 | |||
3602 |
def __ |
|
3600 | def __str__(self): | |
3603 |
return |
|
3601 | return '<UserGroupRepoGroupToPerm:%s => %s >' % (self.users_group, self.group) | |
3604 |
|
3602 | |||
3605 |
|
3603 | |||
3606 | class Statistics(Base, BaseModel): |
|
3604 | class Statistics(Base, BaseModel): | |
@@ -3670,8 +3668,8 b' class CacheKey(Base, BaseModel):' | |||||
3670 | # first key should be same for all entries, since all workers should share it |
|
3668 | # first key should be same for all entries, since all workers should share it | |
3671 | self.cache_state_uid = cache_state_uid or self.generate_new_state_uid() |
|
3669 | self.cache_state_uid = cache_state_uid or self.generate_new_state_uid() | |
3672 |
|
3670 | |||
3673 |
def __ |
|
3671 | def __str__(self): | |
3674 |
return |
|
3672 | return "<%s('%s:%s[%s]')>" % ( | |
3675 | self.__class__.__name__, |
|
3673 | self.__class__.__name__, | |
3676 | self.cache_id, self.cache_key, self.cache_active) |
|
3674 | self.cache_id, self.cache_key, self.cache_active) | |
3677 |
|
3675 | |||
@@ -3912,11 +3910,11 b' class ChangesetComment(Base, BaseModel):' | |||||
3912 | if self.status_change: |
|
3910 | if self.status_change: | |
3913 | return self.status_change[0].status_lbl |
|
3911 | return self.status_change[0].status_lbl | |
3914 |
|
3912 | |||
3915 |
def __ |
|
3913 | def __str__(self): | |
3916 | if self.comment_id: |
|
3914 | if self.comment_id: | |
3917 |
return '<DB:Comment # |
|
3915 | return f'<DB:Comment #{self.comment_id}>' | |
3918 | else: |
|
3916 | else: | |
3919 |
return '<DB:Comment at |
|
3917 | return f'<DB:Comment at {id(self)!r}>' | |
3920 |
|
3918 | |||
3921 | def get_api_data(self): |
|
3919 | def get_api_data(self): | |
3922 | comment = self |
|
3920 | comment = self | |
@@ -4009,11 +4007,9 b' class ChangesetStatus(Base, BaseModel):' | |||||
4009 | comment = relationship('ChangesetComment', lazy='select') |
|
4007 | comment = relationship('ChangesetComment', lazy='select') | |
4010 | pull_request = relationship('PullRequest', lazy='select') |
|
4008 | pull_request = relationship('PullRequest', lazy='select') | |
4011 |
|
4009 | |||
4012 | def __unicode__(self): |
|
4010 | ||
4013 | return u"<%s('%s[v%s]:%s')>" % ( |
|
4011 | def __str__(self): | |
4014 | self.__class__.__name__, |
|
4012 | return f"<{self.__class__.__name__}('{self.status}[v{self.version}]:{self.author}')>" | |
4015 | self.status, self.version, self.author |
|
|||
4016 | ) |
|
|||
4017 |
|
4013 | |||
4018 | @classmethod |
|
4014 | @classmethod | |
4019 | def get_status_lbl(cls, value): |
|
4015 | def get_status_lbl(cls, value): | |
@@ -4143,7 +4139,7 b' class _PullRequestBase(BaseModel):' | |||||
4143 | if len(parts) != 3: |
|
4139 | if len(parts) != 3: | |
4144 | raise ValueError( |
|
4140 | raise ValueError( | |
4145 | 'Invalid reference format given: {}, expected X:Y:Z'.format(val)) |
|
4141 | 'Invalid reference format given: {}, expected X:Y:Z'.format(val)) | |
4146 |
self._source_ref = safe_ |
|
4142 | self._source_ref = safe_str(val) | |
4147 |
|
4143 | |||
4148 | _target_ref = Column('other_ref', Unicode(255), nullable=False) |
|
4144 | _target_ref = Column('other_ref', Unicode(255), nullable=False) | |
4149 |
|
4145 | |||
@@ -4157,7 +4153,7 b' class _PullRequestBase(BaseModel):' | |||||
4157 | if len(parts) != 3: |
|
4153 | if len(parts) != 3: | |
4158 | raise ValueError( |
|
4154 | raise ValueError( | |
4159 | 'Invalid reference format given: {}, expected X:Y:Z'.format(val)) |
|
4155 | 'Invalid reference format given: {}, expected X:Y:Z'.format(val)) | |
4160 |
self._target_ref = safe_ |
|
4156 | self._target_ref = safe_str(val) | |
4161 |
|
4157 | |||
4162 | @declared_attr |
|
4158 | @declared_attr | |
4163 | def target_repo_id(cls): |
|
4159 | def target_repo_id(cls): | |
@@ -4290,7 +4286,7 b' class _PullRequestBase(BaseModel):' | |||||
4290 | PullRequestModel().merge_status(pull_request) |
|
4286 | PullRequestModel().merge_status(pull_request) | |
4291 | merge_state = { |
|
4287 | merge_state = { | |
4292 | 'status': merge_status, |
|
4288 | 'status': merge_status, | |
4293 |
'message': safe_ |
|
4289 | 'message': safe_str(msg), | |
4294 | } |
|
4290 | } | |
4295 | else: |
|
4291 | else: | |
4296 | merge_state = {'status': 'not_available', |
|
4292 | merge_state = {'status': 'not_available', | |
@@ -4375,12 +4371,10 b' class PullRequest(Base, _PullRequestBase' | |||||
4375 | pull_request_id = Column( |
|
4371 | pull_request_id = Column( | |
4376 | 'pull_request_id', Integer(), nullable=False, primary_key=True) |
|
4372 | 'pull_request_id', Integer(), nullable=False, primary_key=True) | |
4377 |
|
4373 | |||
4378 |
def __ |
|
4374 | def __str__(self): | |
4379 | if self.pull_request_id: |
|
4375 | if self.pull_request_id: | |
4380 |
return '<DB:PullRequest # |
|
4376 | return f'<DB:PullRequest #{self.pull_request_id}>' | |
4381 | else: |
|
4377 | else: | |
4382 | return '<DB:PullRequest at %#x>' % id(self) |
|
|||
4383 |
|
||||
4384 | reviewers = relationship('PullRequestReviewers', cascade="all, delete-orphan") |
|
4378 | reviewers = relationship('PullRequestReviewers', cascade="all, delete-orphan") | |
4385 | statuses = relationship('ChangesetStatus', cascade="all, delete-orphan") |
|
4379 | statuses = relationship('ChangesetStatus', cascade="all, delete-orphan") | |
4386 | comments = relationship('ChangesetComment', cascade="all, delete-orphan") |
|
4380 | comments = relationship('ChangesetComment', cascade="all, delete-orphan") | |
@@ -4412,8 +4406,9 b' class PullRequest(Base, _PullRequestBase' | |||||
4412 | raise AttributeError( |
|
4406 | raise AttributeError( | |
4413 | '%s object has no attribute %s' % (self, item)) |
|
4407 | '%s object has no attribute %s' % (self, item)) | |
4414 |
|
4408 | |||
4415 |
def __ |
|
4409 | def __str__(self): | |
4416 |
|
|
4410 | pr_id = self.attrs.get('pull_request_id') | |
|
4411 | return f'<DB:PullRequestDisplay #{pr_id}>' | |||
4417 |
|
4412 | |||
4418 | def versions(self): |
|
4413 | def versions(self): | |
4419 | return pull_request_obj.versions.order_by( |
|
4414 | return pull_request_obj.versions.order_by( | |
@@ -4546,15 +4541,16 b' class PullRequestVersion(Base, _PullRequ' | |||||
4546 | ForeignKey('pull_requests.pull_request_id'), nullable=False) |
|
4541 | ForeignKey('pull_requests.pull_request_id'), nullable=False) | |
4547 | pull_request = relationship('PullRequest') |
|
4542 | pull_request = relationship('PullRequest') | |
4548 |
|
4543 | |||
4549 |
def __ |
|
4544 | def __str__(self): | |
4550 | if self.pull_request_version_id: |
|
4545 | if self.pull_request_version_id: | |
4551 |
return '<DB:PullRequestVersion # |
|
4546 | return f'<DB:PullRequestVersion #{self.pull_request_version_id}>' | |
4552 | else: |
|
4547 | else: | |
4553 |
return '<DB:PullRequestVersion at |
|
4548 | return f'<DB:PullRequestVersion at {id(self)!r}>' | |
4554 |
|
4549 | |||
4555 | @property |
|
4550 | @property | |
4556 | def reviewers(self): |
|
4551 | def reviewers(self): | |
4557 | return self.pull_request.reviewers |
|
4552 | return self.pull_request.reviewers | |
|
4553 | ||||
4558 | @property |
|
4554 | @property | |
4559 | def reviewers(self): |
|
4555 | def reviewers(self): | |
4560 | return self.pull_request.reviewers |
|
4556 | return self.pull_request.reviewers | |
@@ -4648,9 +4644,8 b' class PullRequestReviewers(Base, BaseMod' | |||||
4648 |
|
4644 | |||
4649 | return qry.all() |
|
4645 | return qry.all() | |
4650 |
|
4646 | |||
4651 |
def __ |
|
4647 | def __str__(self): | |
4652 | return u"<%s('id:%s')>" % (self.__class__.__name__, |
|
4648 | return f"<{self.__class__.__name__}('id:{self.pull_requests_reviewers_id}')>" | |
4653 | self.pull_requests_reviewers_id) |
|
|||
4654 |
|
4649 | |||
4655 |
|
4650 | |||
4656 | class Notification(Base, BaseModel): |
|
4651 | class Notification(Base, BaseModel): | |
@@ -4821,8 +4816,8 b' class Gist(Base, BaseModel):' | |||||
4821 |
|
4816 | |||
4822 | owner = relationship('User') |
|
4817 | owner = relationship('User') | |
4823 |
|
4818 | |||
4824 |
def __ |
|
4819 | def __str__(self): | |
4825 |
return '<Gist:[ |
|
4820 | return f'<Gist:[{self.gist_type}]{self.gist_access_id}>' | |
4826 |
|
4821 | |||
4827 | @hybrid_property |
|
4822 | @hybrid_property | |
4828 | def description_safe(self): |
|
4823 | def description_safe(self): | |
@@ -5005,7 +5000,7 b' class Integration(Base, BaseModel):' | |||||
5005 | return 'root_repos' |
|
5000 | return 'root_repos' | |
5006 | return 'global' |
|
5001 | return 'global' | |
5007 |
|
5002 | |||
5008 |
def __ |
|
5003 | def __str__(self): | |
5009 | return '<Integration(%r, %r)>' % (self.integration_type, self.scope) |
|
5004 | return '<Integration(%r, %r)>' % (self.integration_type, self.scope) | |
5010 |
|
5005 | |||
5011 |
|
5006 | |||
@@ -5248,7 +5243,7 b' class RepoReviewRule(Base, BaseModel):' | |||||
5248 | rules.append(user_group) |
|
5243 | rules.append(user_group) | |
5249 | return rules |
|
5244 | return rules | |
5250 |
|
5245 | |||
5251 |
def __ |
|
5246 | def __str__(self): | |
5252 | return '<RepoReviewerRule(id=%r, repo=%r)>' % ( |
|
5247 | return '<RepoReviewerRule(id=%r, repo=%r)>' % ( | |
5253 | self.repo_review_rule_id, self.repo) |
|
5248 | self.repo_review_rule_id, self.repo) | |
5254 |
|
5249 | |||
@@ -5366,7 +5361,7 b' class ScheduleEntry(Base, BaseModel):' | |||||
5366 | def kwargs_raw(self, indent=None): |
|
5361 | def kwargs_raw(self, indent=None): | |
5367 | return self._as_raw(self.task_kwargs, indent) |
|
5362 | return self._as_raw(self.task_kwargs, indent) | |
5368 |
|
5363 | |||
5369 |
def __ |
|
5364 | def __str__(self): | |
5370 | return '<DB:ScheduleEntry({}:{})>'.format( |
|
5365 | return '<DB:ScheduleEntry({}:{})>'.format( | |
5371 | self.schedule_entry_id, self.schedule_name) |
|
5366 | self.schedule_entry_id, self.schedule_name) | |
5372 |
|
5367 | |||
@@ -5442,9 +5437,8 b' class UserToRepoBranchPermission(Base, _' | |||||
5442 | _branch_pattern = Column('branch_pattern', UnicodeText().with_variant(UnicodeText(2048), 'mysql'), default=u'*') # glob |
|
5437 | _branch_pattern = Column('branch_pattern', UnicodeText().with_variant(UnicodeText(2048), 'mysql'), default=u'*') # glob | |
5443 | _branch_hash = Column('branch_hash', UnicodeText().with_variant(UnicodeText(2048), 'mysql')) |
|
5438 | _branch_hash = Column('branch_hash', UnicodeText().with_variant(UnicodeText(2048), 'mysql')) | |
5444 |
|
5439 | |||
5445 |
def __ |
|
5440 | def __str__(self): | |
5446 |
return |
|
5441 | return f'<UserBranchPermission({self.user_repo_to_perm} => {self.branch_pattern!r})>' | |
5447 | self.user_repo_to_perm, self.branch_pattern) |
|
|||
5448 |
|
5442 | |||
5449 |
|
5443 | |||
5450 | class UserGroupToRepoBranchPermission(Base, _BaseBranchPerms): |
|
5444 | class UserGroupToRepoBranchPermission(Base, _BaseBranchPerms): | |
@@ -5468,9 +5462,8 b' class UserGroupToRepoBranchPermission(Ba' | |||||
5468 | _branch_pattern = Column('branch_pattern', UnicodeText().with_variant(UnicodeText(2048), 'mysql'), default=u'*') # glob |
|
5462 | _branch_pattern = Column('branch_pattern', UnicodeText().with_variant(UnicodeText(2048), 'mysql'), default=u'*') # glob | |
5469 | _branch_hash = Column('branch_hash', UnicodeText().with_variant(UnicodeText(2048), 'mysql')) |
|
5463 | _branch_hash = Column('branch_hash', UnicodeText().with_variant(UnicodeText(2048), 'mysql')) | |
5470 |
|
5464 | |||
5471 |
def __ |
|
5465 | def __str__(self): | |
5472 |
return |
|
5466 | return f'<UserBranchPermission({self.user_group_repo_to_perm} => {self.branch_pattern!r})>' | |
5473 | self.user_group_repo_to_perm, self.branch_pattern) |
|
|||
5474 |
|
5467 | |||
5475 |
|
5468 | |||
5476 | class UserBookmark(Base, BaseModel): |
|
5469 | class UserBookmark(Base, BaseModel): | |
@@ -5518,8 +5511,8 b' class UserBookmark(Base, BaseModel):' | |||||
5518 |
|
5511 | |||
5519 | return bookmarks.all() |
|
5512 | return bookmarks.all() | |
5520 |
|
5513 | |||
5521 |
def __ |
|
5514 | def __str__(self): | |
5522 |
return |
|
5515 | return f'<UserBookmark({self.position} @ {self.redirect_url!r})>' | |
5523 |
|
5516 | |||
5524 |
|
5517 | |||
5525 | class FileStore(Base, BaseModel): |
|
5518 | class FileStore(Base, BaseModel): | |
@@ -5672,8 +5665,8 b' class FileStore(Base, BaseModel):' | |||||
5672 |
|
5665 | |||
5673 | return data |
|
5666 | return data | |
5674 |
|
5667 | |||
5675 |
def __ |
|
5668 | def __str__(self): | |
5676 |
return '<FileStore({ |
|
5669 | return f'<FileStore({self.file_store_id})>' | |
5677 |
|
5670 | |||
5678 |
|
5671 | |||
5679 | class FileStoreMetadata(Base, BaseModel): |
|
5672 | class FileStoreMetadata(Base, BaseModel): | |
@@ -5687,7 +5680,7 b' class FileStoreMetadata(Base, BaseModel)' | |||||
5687 | SETTINGS_TYPES = { |
|
5680 | SETTINGS_TYPES = { | |
5688 | 'str': safe_str, |
|
5681 | 'str': safe_str, | |
5689 | 'int': safe_int, |
|
5682 | 'int': safe_int, | |
5690 |
'unicode': safe_ |
|
5683 | 'unicode': safe_str, | |
5691 | 'bool': str2bool, |
|
5684 | 'bool': str2bool, | |
5692 | 'list': functools.partial(aslist, sep=',') |
|
5685 | 'list': functools.partial(aslist, sep=',') | |
5693 | } |
|
5686 | } | |
@@ -5753,7 +5746,7 b' class FileStoreMetadata(Base, BaseModel)' | |||||
5753 | # decode the encrypted value if it's encrypted field type |
|
5746 | # decode the encrypted value if it's encrypted field type | |
5754 | if '.encrypted' in self._file_store_meta_value_type: |
|
5747 | if '.encrypted' in self._file_store_meta_value_type: | |
5755 | cipher = EncryptedTextValue() |
|
5748 | cipher = EncryptedTextValue() | |
5756 |
val = safe_ |
|
5749 | val = safe_str(cipher.process_result_value(val, None)) | |
5757 | # do final type conversion |
|
5750 | # do final type conversion | |
5758 | converter = self.SETTINGS_TYPES.get(_type) or self.SETTINGS_TYPES['unicode'] |
|
5751 | converter = self.SETTINGS_TYPES.get(_type) or self.SETTINGS_TYPES['unicode'] | |
5759 | val = converter(val) |
|
5752 | val = converter(val) | |
@@ -5762,11 +5755,11 b' class FileStoreMetadata(Base, BaseModel)' | |||||
5762 |
|
5755 | |||
5763 | @file_store_meta_value.setter |
|
5756 | @file_store_meta_value.setter | |
5764 | def file_store_meta_value(self, val): |
|
5757 | def file_store_meta_value(self, val): | |
5765 |
val = safe_ |
|
5758 | val = safe_str(val) | |
5766 | # encode the encrypted value |
|
5759 | # encode the encrypted value | |
5767 | if '.encrypted' in self.file_store_meta_value_type: |
|
5760 | if '.encrypted' in self.file_store_meta_value_type: | |
5768 | cipher = EncryptedTextValue() |
|
5761 | cipher = EncryptedTextValue() | |
5769 |
val = safe_ |
|
5762 | val = safe_str(cipher.process_bind_param(val, None)) | |
5770 | self._file_store_meta_value = val |
|
5763 | self._file_store_meta_value = val | |
5771 |
|
5764 | |||
5772 | @hybrid_property |
|
5765 | @hybrid_property | |
@@ -5789,7 +5782,7 b' class FileStoreMetadata(Base, BaseModel)' | |||||
5789 |
|
5782 | |||
5790 | return data |
|
5783 | return data | |
5791 |
|
5784 | |||
5792 |
def __ |
|
5785 | def __str__(self): | |
5793 | return '<%s[%s]%s=>%s]>' % (self.__class__.__name__, self.file_store_meta_section, |
|
5786 | return '<%s[%s]%s=>%s]>' % (self.__class__.__name__, self.file_store_meta_section, | |
5794 | self.file_store_meta_key, self.file_store_meta_value) |
|
5787 | self.file_store_meta_key, self.file_store_meta_value) | |
5795 |
|
5788 | |||
@@ -5820,8 +5813,8 b' class DbSession(Base, BaseModel):' | |||||
5820 | base_table_args, |
|
5813 | base_table_args, | |
5821 | ) |
|
5814 | ) | |
5822 |
|
5815 | |||
5823 |
def __ |
|
5816 | def __str__(self): | |
5824 |
return '<DB:DbSession({ |
|
5817 | return f'<DB:DbSession({self.id})>' | |
5825 |
|
5818 | |||
5826 | id = Column('id', Integer()) |
|
5819 | id = Column('id', Integer()) | |
5827 | namespace = Column('namespace', String(255), primary_key=True) |
|
5820 | namespace = Column('namespace', String(255), primary_key=True) |
General Comments 0
You need to be logged in to leave comments.
Login now