From 02afd8a32edb13ea7fc2266ac80092ea15c0930c Mon Sep 17 00:00:00 2001 From: Alvin Li Date: Wed, 9 Oct 2013 15:52:53 +0800 Subject: * treat 'apps/utils' as regular django app; which used to store general tools for used in other apps * moved 'templatetags' from 'apps/indicator' to 'apps/utils' * '.gitignore' to ignore 'fixtures_bak' * moved js plugins from 'apps/indicator/static/plugins' to 'staticfiles/plugins' apps/recommend: * updated 'recommend.models'; o commented 'recommend.models.ResearchCombination' (not used) * implemented views 'add_edit_blog_info' and 'ajax_add_edit_configs'; * added pages 'templates/recommend/add_edit_blog_info.html', 'add_edit_blog_info_error.html'; o related css and javascripts files * added 'tools.py'; * added 'utils/tools.py' for placing generic functions; * deleted 'initial_data.json' (mv 'fixtures' to 'fixtures_bak'); * small fixes to 'indicator.models', 'sciblog.models' and 'sfaccount.views' * fixed automatically show 'proper_nouns' annotation in blog: recovered the line 'import signals' in 'sciblog.models' * added 'is_ok()' method for 'recommend.models.ResearchConfig'; --- 97suifangqa/apps/utils/templatetags/__init__.py | 0 97suifangqa/apps/utils/templatetags/dict_get.py | 14 ++++++++++ .../apps/utils/templatetags/divisible_by.py | 30 ++++++++++++++++++++++ 97suifangqa/apps/utils/tools.py | 30 ++++++++++++++++++++++ 4 files changed, 74 insertions(+) create mode 100644 97suifangqa/apps/utils/templatetags/__init__.py create mode 100644 97suifangqa/apps/utils/templatetags/dict_get.py create mode 100644 97suifangqa/apps/utils/templatetags/divisible_by.py create mode 100644 97suifangqa/apps/utils/tools.py (limited to '97suifangqa/apps/utils') diff --git a/97suifangqa/apps/utils/templatetags/__init__.py b/97suifangqa/apps/utils/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/97suifangqa/apps/utils/templatetags/dict_get.py b/97suifangqa/apps/utils/templatetags/dict_get.py new file mode 100644 index 0000000..49de3cd --- /dev/null +++ b/97suifangqa/apps/utils/templatetags/dict_get.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- + +from django import template + +register = template.Library() + +@register.filter +def dict_get(dict, key): + """ + filter to get the value of key in the dict: + return dict[key] + """ + return dict.get(key) + diff --git a/97suifangqa/apps/utils/templatetags/divisible_by.py b/97suifangqa/apps/utils/templatetags/divisible_by.py new file mode 100644 index 0000000..96638e7 --- /dev/null +++ b/97suifangqa/apps/utils/templatetags/divisible_by.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- + +from django import template + +register = template.Library() + +@register.filter +def divisible_by(dividend, divisor): + """ + if 'dividend' can be *exactly* divided by 'divisor', + return True; + else, return False. + + input parameters: + dividend: + divisor: + """ + if not isinstance(dividend, int): + raise ValueError(u'Error: dividend="%s" not int type' % dividend) + try: + divisor = int(divisor) + except ValueError, TypeError: + raise ValueError(u'Error: divisor="%s" cannot convert to int' + % divisor) + # + if dividend % divisor == 0: + return True + else: + return False + diff --git a/97suifangqa/apps/utils/tools.py b/97suifangqa/apps/utils/tools.py new file mode 100644 index 0000000..33cf012 --- /dev/null +++ b/97suifangqa/apps/utils/tools.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# +# generic tools for apps +# + + +def format_float(number): # {{{ + """ + format the display style of a float number + """ + threshold_min = 0.001 + threshold_max = 9999.9 + fix_fmt = '{:,.1f}' # comma as a thousands separator + exp_fmt = '{:.1e}' + # + if isinstance(number, int) or isinstance(number, float): + #return type(number) + pass + else: + return False + # + if (number > threshold_max) or (number < threshold_min): + str = exp_fmt.format(number) + else: + str = fix_fmt.format(number) + # + return str +# }}} + + -- cgit v1.2.2