Skip to content

Commit

Permalink
new version default uppercase in values
Browse files Browse the repository at this point in the history
  • Loading branch information
Valder Gallo committed Apr 9, 2019
1 parent 9ed6b12 commit ebde879
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 25 deletions.
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ from company.const import (
...
)
from .const import (
USER_PERMISSIONS,
USER_PERMISSIONS,
ADD_USER
)
Expand All @@ -65,7 +65,7 @@ def my_example():

And think that you `USER_PERMISSIONS` could be bigger, with 30 permissions or more ...
`ADD_USER` no have any connection with `USER_PERMISSION`, I could have `ADD_USER` in a different
`constants` without connection with `USER_PERMISSION`, something like `ADMIN_DEFAULT_ACTIONS` or
`constants` without connection with `USER_PERMISSION`, something like `ADMIN_DEFAULT_ACTIONS` or
`MANAGER_CONSTANT`.

## The Solution (Morning Sun)
Expand All @@ -88,7 +88,7 @@ And `USER_PERMISSION` will have one new attribute by `permission`

```
In [5]: USER_PERMISSIONS.add_user
Out[5]: 'add_user'
Out[5]: 'ADD_USER'
In [6]: USER_PERMISSIONS.add_user.label
Out[6]: u'Add User'
Expand All @@ -115,7 +115,7 @@ USER_PERMISSIONS = Const(
)
class CustomUser(AbstractUser):
class Meta:
permissions = USER_PERMISSIONS
Expand Down Expand Up @@ -155,15 +155,15 @@ or
```
>>> c = Cont()
>>> c.add('First Item', 1)
>>> c._1
>>> c._1
'1'
```

or
or

```
>>> c = Cont()
>>> c.add(label='First Item',attr="my_attr", value=1)
>>> c.my_attr
>>> c.my_attr
'1'
```
12 changes: 8 additions & 4 deletions pyconst/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,14 @@

class PyConstString(str):

def __new__(cls, label=None, value=None):
def __new__(cls, label=None, value=None, to_upper=True):
if not value:
value = label
obj = str.__new__(cls, s(value))
if to_upper:
value = s(value).upper()
else:
value = s(value)
obj = str.__new__(cls, value)
obj.label = label
return obj

Expand Down Expand Up @@ -38,7 +42,7 @@ def __set_iter_value(self, iter_value):
label = iter_value[0]
return label, attr, value

def add(self, label, attr=None, value=None):
def add(self, label, attr=None, value=None, to_upper=True):
"Set values in constant"

if isinstance(label, tuple) or isinstance(label, list):
Expand All @@ -50,7 +54,7 @@ def add(self, label, attr=None, value=None):
if value is None:
value = attr

self.__data += (PyConstString(label=label, value=value),)
self.__data += (PyConstString(label=label, value=value, to_upper=to_upper),)
# set attribute as slugfiy
self.__dict__[s_attr(attr)] = self.__data[-1]

Expand Down
28 changes: 14 additions & 14 deletions tests/test_pycont.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,16 @@ def setUp(self):

def test_slugify(self):
self.const.add('caça vovó')
self.assertEqual(self.const.caca_vovo, 'caca_vovo')
self.assertEqual(self.const.caca_vovo, 'CACA_VOVO')

def test_add_item(self):
self.const.add('update item')
self.assertEqual(self.const.update_item, 'update_item')
self.assertEqual(self.const.update_item, 'UPDATE_ITEM')

def test_inter_pyconst(self):
self.const.add('update item')
for value in self.const:
self.assertEqual(value, ('update_item', 'update item'))
self.assertEqual(value, ('UPDATE_ITEM', 'update item'))

def test_set_init_values(self):
const = Const(
Expand All @@ -29,7 +29,7 @@ def test_set_init_values(self):
'delete user',
)

self.assertEqual(const.add_user, 'add_user')
self.assertEqual(const.add_user, 'ADD_USER')
self.assertEqual(len(const), 3)

def test_get_value(self):
Expand All @@ -45,11 +45,11 @@ def test_slug_stranger_characteres(self):
const = Const(
'Add - User',
)
self.assertEqual(const.add_user, 'add_user')
self.assertEqual(const.add_user, 'ADD_USER')

def test_add_attribute(self):
self.const.add('Update item (new)', 'update_item')
self.assertEqual(self.const.update_item, 'update_item')
self.assertEqual(self.const.update_item, 'UPDATE_ITEM')
self.assertEqual(self.const.update_item.label, 'Update item (new)')

def test_get_value_in_order(self):
Expand All @@ -59,7 +59,7 @@ def test_get_value_in_order(self):
'Delete User',
)

self.assertEqual(const[0], ('add_user', u'Add User'))
self.assertEqual(const[0], ('ADD_USER', u'Add User'))

def test_get_multiple_value_in_order(self):
const = Const(
Expand All @@ -68,16 +68,16 @@ def test_get_multiple_value_in_order(self):
('Delete User', 'delete_user'),
)

self.assertEqual(const[0], ('add_user', u'Add User'))
self.assertEqual(const[0], ('ADD_USER', u'Add User'))

def test_get_multiple_kwargs_value_in_order(self):
const = Const(**{'Add User': 'add_user'})
self.assertEqual(const[0], ('add_user', u'Add User'))
self.assertEqual(const[0], ('ADD_USER', u'Add User'))

def test_slug_index_error(self):
const = Const()
const.add(['Add User'])
self.assertEqual(const[0], ('add_user', u'Add User'))
self.assertEqual(const[0], ('ADD_USER', u'Add User'))

def test_number_attr(self):
const = Const()
Expand All @@ -95,15 +95,15 @@ def test_set_const_with_tuple_three_values(self):
const = Const(('Label Test', 'Attr test', 'Value test'),
('Label Test2', 'Attr test2', 'Value test2'),)

self.assertEqual(const[0], ('value_test', u'Label Test'))
self.assertEqual(const.attr_test, 'value_test')
self.assertEqual(const[0], ('VALUE_TEST', u'Label Test'))
self.assertEqual(const.attr_test, 'VALUE_TEST')

def test_set_const_with_tuple_four_values(self):
const = Const(('Label Test', 'Attr test', 'Value test', 'Ignore Value'),
('Label Test2', 'Attr test2', 'Value test2', 'Ignore Value'),)

self.assertEqual(const[0], ('value_test', u'Label Test'))
self.assertEqual(const.attr_test, 'value_test')
self.assertEqual(const[0], ('VALUE_TEST', u'Label Test'))
self.assertEqual(const.attr_test, 'VALUE_TEST')


if __name__ == '__main__':
Expand Down

0 comments on commit ebde879

Please sign in to comment.