From 630ca8f767318d4962366d817029f542ef67cf21 Mon Sep 17 00:00:00 2001 From: Dorian Pula Date: Tue, 15 Apr 2014 13:23:49 -0400 Subject: [PATCH] Extract models in separate modules. --- releases/__init__.py | 60 +++++--------------------------------------- releases/models.py | 52 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 54 deletions(-) create mode 100644 releases/models.py diff --git a/releases/__init__.py b/releases/__init__.py index d79f54d..021484b 100644 --- a/releases/__init__.py +++ b/releases/__init__.py @@ -6,6 +6,9 @@ from distutils.version import LooseVersion from docutils import nodes, utils +from .models import Issue, ISSUE_TYPES, Release + + def _log(txt, config): """ Log debug output if debug setting is on. @@ -17,17 +20,9 @@ def _log(txt, config): sys.stderr.flush() -# Issue type list (keys) + color values -issue_types = { - 'bug': 'A04040', - 'feature': '40A056', - 'support': '4070A0', -} - - def issue_nodelist(name, link=None): which = '[%s]' % ( - issue_types[name], name.capitalize() + ISSUE_TYPES[name], name.capitalize() ) signifier = [nodes.raw(text=which, format='html')] hyperlink = [nodes.inline(text=" "), link] if link else [] @@ -69,7 +64,7 @@ def issues_role(name, rawtext, text, lineno, inliner, options={}, content=[]): link = None issue_no = None # So it doesn't gum up dupe detection later # Additional 'new-style changelog' stuff - if name in issue_types: + if name in ISSUE_TYPES: nodelist = issue_nodelist(name, link) line = None # Sanity check @@ -139,49 +134,6 @@ def release_role(name, rawtext, text, lineno, inliner, options={}, content=[]): return [node], [] -class Issue(nodes.Element): - @property - def type(self): - return self['type_'] - - @property - def backported(self): - return self.get('backported', False) - - @property - def major(self): - return self.get('major', False) - - @property - def number(self): - return self.get('number', None) - - @property - def line(self): - return self.get('line', None) - - def __repr__(self): - flag = '' - if self.backported: - flag = 'backported' - elif self.major: - flag = 'major' - elif self.line: - flag = self.line + '+' - if flag: - flag = ' ({})'.format(flag) - return '<{issue.type} #{issue.number}{flag}>'.format(issue=self, flag=flag) - - -class Release(nodes.Element): - @property - def number(self): - return self['number'] - - def __repr__(self): - return ''.format(self.number) - - def get_line(obj): # 1.2.7 -> 1.2 return '.'.join(obj.number.split('.')[:-1]) @@ -449,7 +401,7 @@ def setup(app): # Debug output app.add_config_value(name='releases_debug', default=False, rebuild='html') # Register intermediate roles - for x in list(issue_types) + ['issue']: + for x in list(ISSUE_TYPES) + ['issue']: app.add_role(x, issues_role) app.add_role('release', release_role) # Hook in our changelog transmutation at appropriate step diff --git a/releases/models.py b/releases/models.py new file mode 100644 index 0000000..6654437 --- /dev/null +++ b/releases/models.py @@ -0,0 +1,52 @@ +from docutils import nodes + + +# Issue type list (keys) + color values +ISSUE_TYPES = { + 'bug': 'A04040', + 'feature': '40A056', + 'support': '4070A0', +} + + +class Issue(nodes.Element): + @property + def type(self): + return self['type_'] + + @property + def backported(self): + return self.get('backported', False) + + @property + def major(self): + return self.get('major', False) + + @property + def number(self): + return self.get('number', None) + + @property + def line(self): + return self.get('line', None) + + def __repr__(self): + flag = '' + if self.backported: + flag = 'backported' + elif self.major: + flag = 'major' + elif self.line: + flag = self.line + '+' + if flag: + flag = ' ({})'.format(flag) + return '<{issue.type} #{issue.number}{flag}>'.format(issue=self, flag=flag) + + +class Release(nodes.Element): + @property + def number(self): + return self['number'] + + def __repr__(self): + return ''.format(self.number)