Skip to content

Commit 4acbb06

Browse files
committed
[m] Version bump to 0.10
[m] Fixed comments in fr-FR [-] Removed useless functions in util
1 parent 9cc29e2 commit 4acbb06

File tree

3 files changed

+15
-165
lines changed

3 files changed

+15
-165
lines changed

approval/util/shortcuts.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,15 @@
22

33

44
def addattr(**kwargs):
5-
""" Définir des attributs à une méthode ou fonction """
5+
"""
6+
Add attributes to a function.
7+
8+
Eliminates the need to write things such as
9+
10+
def func():
11+
pass
12+
func.short_description = "This func does this"
13+
"""
614

715
def decorator(func):
816
for key in kwargs:

approval/util/types.py

Lines changed: 5 additions & 163 deletions
Original file line numberDiff line numberDiff line change
@@ -1,177 +1,19 @@
11
# coding: utf-8
2-
import math
32

4-
from django.db.models.base import Model
53
from django.db.models.query import QuerySet
64

75

8-
SI_PREFIXES = ['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y']
9-
10-
11-
# Arithmétique
12-
def subtract(value, amount):
13-
""" Soustraire """
14-
return value - amount
15-
16-
17-
def delta(value, amount):
18-
"""
19-
Renvoyer le cardinal de la soustraction
20-
21-
:returns: la valeur positive de la différence entre value et amount
22-
"""
23-
return abs(value - amount)
24-
25-
26-
def round_multiple(x, base=1):
27-
"""
28-
Renvoyer le multiple de *base* le plus proche de *x**
29-
30-
:param base: un multiple de cette valeur doit être renvoyé
31-
:param x: nombre à arrondir
32-
:type base: float | int
33-
ex. :
34-
round_multiple(0, 25) == 0
35-
round_multiple(12, 25) == 0
36-
round_multiple(13, 25) == 25
37-
round_multiple(-12, 25) == 0
38-
39-
"""
40-
return (base * round(float(x) / base)) if type(base) in {int, float} and base > 0 else None
41-
42-
43-
def modulo(value, br):
44-
"""
45-
Renvoyer un modulo ou comparer un modulo
46-
47-
:param value: valeur
48-
:param br: int, float ou chaîne de 2 nombres b et r séparés par une virgule
49-
:returns: value % br si br est un nombre, sinon renvoie si value % b est égal à r
50-
"""
51-
try:
52-
if isinstance(br, str) and "," in br:
53-
b, r = br.split(",")
54-
return float(r) - 0.000000001 <= value % float(b) <= float(r) + 0.000000001
55-
else:
56-
b = float(br)
57-
if b > 0:
58-
result = value % b
59-
return result
60-
except ValueError:
61-
pass
62-
return False
63-
64-
65-
def to_percent(value, ratio=None):
66-
"""
67-
Convertir une valeur en pourcentage
68-
69-
:param ratio: définit quelle valeur de `value` correspond à 100%. 1.0 par défaut
70-
:type ratio: int | float
71-
"""
72-
return (value * 100.0) / (float(ratio or 1))
73-
74-
75-
def si_prefix(value):
76-
"""
77-
Renvoyer une représentation d'un nombre avec les unités du système international
78-
79-
Ex. 234 567 renvoie 234k, 123 567 890 renvoie 123M
80-
"""
81-
level = math.floor(math.log(value, 1000))
82-
unit_count = int(value / (1000 ** level))
83-
return "{count:d}{unit}".format(count=unit_count, unit=SI_PREFIXES[int(level)])
84-
85-
86-
def invert(value):
87-
""" Renvoyer le contraire d'un booléen """
88-
return not value
89-
90-
91-
def percent_status(value, asc=True):
92-
""" Renvoyer un statut de santé depuis un flottant entre 0 et 100 """
93-
if asc is True:
94-
if value < 33.33:
95-
return 'success'
96-
elif value < 66.67:
97-
return 'warning'
98-
else:
99-
return 'danger'
100-
else:
101-
if value > 66.67:
102-
return 'success'
103-
elif value > 33.33:
104-
return 'warning'
105-
else:
106-
return 'danger'
107-
108-
109-
def nestedsort(value, item_index=0):
110-
""" Trier un tuple de tuples en utilisant l'élément de tuple d'index *item_index* """
111-
try:
112-
item_index = int(item_index)
113-
value.sort(key=lambda item: item[item_index])
114-
return value
115-
except ValueError:
116-
return value
117-
118-
119-
def model_name(value):
120-
""" Renvoyer le nom du modèle de l'objet """
121-
if isinstance(value, Model):
122-
return value._meta.verbose_name
123-
return None
124-
125-
126-
def str_to(value, newtype, default=0):
127-
""" Renvoyer une chaîne convertie en un autre type ou une valeur par défaut (0) """
128-
try:
129-
return newtype(value)
130-
except ValueError:
131-
return default
132-
133-
134-
def string_to_dict(options):
135-
"""
136-
Convertir une chaîne d'options k=v en dictionnaire
137-
138-
:param options: chaîne du type 'a1 a2=v2 a3=v3'
139-
"""
140-
output = dict()
141-
tokens = (options or '').split()
142-
for token in tokens:
143-
if token.strip():
144-
if '=' in token:
145-
arg, value = token.split('=')
146-
output[arg] = value
147-
else:
148-
output[token] = True
149-
return output
150-
151-
1526
def make_iterable(value, output_type=list):
1537
"""
154-
Renvoyer un type d'itérable depuis un objet seul ou un itérable
8+
Return an iterable of provided type, starting from an object or an iterable
9+
10+
:type value: list|set|tuple|django.db.models.QuerySet
11+
:param output_type: list|tuple|set or any compatible iterable type
15512
156-
Renvoie un itérable vide si value est None
13+
If value is None, the function returns an empty iterable.
15714
"""
15815
if type(value) is output_type:
15916
return value
16017
if isinstance(value, (list, set, tuple, QuerySet)) and type(value) != output_type:
16118
return output_type(value)
16219
return output_type([value]) if value is not None else output_type()
163-
164-
165-
def list_contains(t, text):
166-
""" Renvoyer si un itérable de chaînes contient une sous-chaîne """
167-
for i in t:
168-
if text in i:
169-
return True
170-
return False
171-
172-
173-
def is_multi_dimensional(value):
174-
""" Renvoyer si une liste ou un tuple contient des listes ou des tuples """
175-
if isinstance(value, (list, tuple)) and value:
176-
return isinstance(value[0], (list, tuple))
177-
return False

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
setup(
88
name='django-approval',
9-
version='0.9.20160611',
9+
version='0.10.20161218',
1010
packages=find_packages('.'),
1111
include_package_data=True,
1212
url='',

0 commit comments

Comments
 (0)