Skip to content

Commit

Permalink
Merge 62b0251 into cc3009e
Browse files Browse the repository at this point in the history
  • Loading branch information
wanshot committed Jan 31, 2018
2 parents cc3009e + 62b0251 commit 72bb947
Show file tree
Hide file tree
Showing 6 changed files with 47 additions and 3 deletions.
2 changes: 1 addition & 1 deletion modelsdoc/templates/modelsdoc/models.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
{% autoescape off %}

{% for model in models %}
## {{ model.name }}({{ model.class_fullname }})
## {{ model.display_name }}

```
{{ model.doc }}
Expand Down
4 changes: 2 additions & 2 deletions modelsdoc/templates/modelsdoc/models.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
:local:

{% for model in models %}
{{ model.name }}({{ model.class_fullname }})
-----------------------------------------------------------------------------------------
{{ model.display_name }}
{{ model.display_name_length|str_repeat:'-' }}

::

Expand Down
5 changes: 5 additions & 0 deletions modelsdoc/templatetags/modelsdoc_tags.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,8 @@ def emptylineless(parser, token):
@register.filter
def get_attr(obj, attr):
return getattr(obj, attr, '')


@register.filter
def str_repeat(times, string):
return string * times
10 changes: 10 additions & 0 deletions modelsdoc/wrappers.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

from sphinx.pycode import ModuleAnalyzer
import django
from django.utils.encoding import force_bytes

from modelsdoc.utils import (
class_to_string, get_foreignkey,
Expand Down Expand Up @@ -67,6 +68,15 @@ def class_fullname(self):
def class_name(self):
return self._model._model.__name__

@property
def display_name(self):
return '{}({})'.format(self.name, self.class_fullname)

@property
def display_name_length(self):
""" Return length of byte string. for reST section """
return len(force_bytes(self.display_name))

@property
def doc(self):
return self._model.__doc__
Expand Down
13 changes: 13 additions & 0 deletions tests/tests/test_templatetags.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,16 @@ class Dummy(object):

self.assertEqual('test', self._callFUT(Dummy(), 'test'))
self.assertEqual('', self._callFUT(Dummy(), 'non_exists_attr'))


class TestStrRepeat(TestCase):

def _getTargetTags(self):
return "{% load modelsdoc_tags %}{{ length|str_repeat:'-' }}"

def _callFUT(self, length):
t = Template(self._getTargetTags())
return t.render(Context({'length': length}))

def test_str_repeat(self):
self.assertEqual('-----', self._callFUT(5))
16 changes: 16 additions & 0 deletions tests/tests/test_wrappers.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,22 @@ def test_class_name(self):
)
self.assertEqual('DummyModel', target.class_name)

@mock.patch('modelsdoc.wrappers.class_to_string', return_value='dummy')
def test_display_name(self, mock):
target = self._makeOne(
self._getDummyModel(self._getDummyModel()),
'connection'
)
self.assertEqual('name(dummy)', target.display_name)

@mock.patch('modelsdoc.wrappers.class_to_string', return_value='dummy')
def test_display_name_length(self, mock):
target = self._makeOne(
self._getDummyModel(self._getDummyModel()),
'connection'
)
self.assertEqual(11, target.display_name_length)

def test_doc(self):
target = self._makeOne(self._getDummyModel(), 'connection')
self.assertEqual(' TEST DOC STRING ', target.doc)
Expand Down

0 comments on commit 72bb947

Please sign in to comment.