| Conditions | 1 |
| Total Lines | 127 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 2 | ||
| Bugs | 0 | Features | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | # -*- coding: utf-8 -*- |
||
| 103 | def __init__(self, **kwargs): |
||
| 104 | super(GeocompleteField, self).__init__(**kwargs) |
||
| 105 | self.resources = [ |
||
| 106 | select2_persistence_js, |
||
| 107 | twc.JSSource( |
||
| 108 | src=''' |
||
| 109 | function format_name(name, complement, postal_code, country) { |
||
| 110 | var display_name = name; |
||
| 111 | display_name += ' '; |
||
| 112 | |||
| 113 | if(complement) { |
||
| 114 | display_name += complement; |
||
| 115 | } |
||
| 116 | |||
| 117 | display_name += ' - '; |
||
| 118 | display_name += postal_code; |
||
| 119 | display_name += ', '; |
||
| 120 | display_name += country; |
||
| 121 | |||
| 122 | return display_name.toUpperCase(); |
||
| 123 | } |
||
| 124 | ''' |
||
| 125 | ) |
||
| 126 | ] |
||
| 127 | self.options = [] |
||
| 128 | self.ondemand = True |
||
| 129 | self.validator = self.validator or Validator() |
||
| 130 | |||
| 131 | self.opts.copy() |
||
| 132 | self.opts['minimumInputLength'] = 1 |
||
| 133 | self.opts['maximumInputLength'] = 125 |
||
| 134 | self.opts['allowClear'] = True |
||
| 135 | self.opts['dropdownAutoWidth'] = True |
||
| 136 | |||
| 137 | self.opts['initSelection'] = twc.js_callback( |
||
| 138 | """ |
||
| 139 | function (element, callback) { |
||
| 140 | var init_data; |
||
| 141 | |||
| 142 | param = params['%(name)s']; |
||
| 143 | |||
| 144 | if(typeof param !== "undefined" && param) { |
||
| 145 | var elem = {}; |
||
| 146 | param_dict = JSON.parse(param); |
||
| 147 | elem.id = param; |
||
| 148 | |||
| 149 | name = format_name( |
||
| 150 | param_dict['name'], |
||
| 151 | param_dict['complement'], |
||
| 152 | param_dict['postal_code'], |
||
| 153 | param_dict['country'] |
||
| 154 | ); |
||
| 155 | |||
| 156 | elem.name = name; |
||
| 157 | elem.value = name; |
||
| 158 | |||
| 159 | init_data = elem; |
||
| 160 | } |
||
| 161 | |||
| 162 | callback(init_data); |
||
| 163 | } |
||
| 164 | """ % dict(name=self.name) |
||
| 165 | ) |
||
| 166 | self.opts['escapeMarkup'] = twc.js_callback( |
||
| 167 | """ |
||
| 168 | function(markup) { |
||
| 169 | return markup; |
||
| 170 | } |
||
| 171 | """ |
||
| 172 | ) |
||
| 173 | self.opts['formatResult'] = twc.js_callback( |
||
| 174 | """ |
||
| 175 | function(location) { |
||
| 176 | var markup = '<option value="' + location.value + '">' |
||
| 177 | + location.name |
||
| 178 | + '</option>'; |
||
| 179 | return markup; |
||
| 180 | } |
||
| 181 | """ |
||
| 182 | ) |
||
| 183 | self.opts['formatSelection'] = twc.js_callback( |
||
| 184 | """ |
||
| 185 | function(location) { |
||
| 186 | if(typeof location !== "undefined") { |
||
| 187 | return location.value || location.text; |
||
| 188 | } |
||
| 189 | } |
||
| 190 | """ |
||
| 191 | ) |
||
| 192 | |||
| 193 | self.opts['ajax'] = dict( |
||
| 194 | url='/geocomplete', |
||
| 195 | dataType='json', |
||
| 196 | type='POST', |
||
| 197 | quietMillis=100, |
||
| 198 | cache=True, |
||
| 199 | data=twc.js_callback( |
||
| 200 | """ |
||
| 201 | function(term) { |
||
| 202 | return {address: term}; |
||
| 203 | } |
||
| 204 | """ |
||
| 205 | ), |
||
| 206 | results=twc.js_callback( |
||
| 207 | """ |
||
| 208 | function(data) { |
||
| 209 | var results = []; |
||
| 210 | |||
| 211 | if ('results' in data) { |
||
| 212 | $.each(data['results'], function(i, v) { |
||
| 213 | var o = {}; |
||
| 214 | o.id = JSON.stringify(v); |
||
| 215 | name = format_name( |
||
| 216 | v['name'], |
||
| 217 | v['complement'], |
||
| 218 | v['postal_code'], |
||
| 219 | v['country'] |
||
| 220 | ); |
||
| 221 | o.name = name; |
||
| 222 | o.value = name; |
||
| 223 | results.push(o); |
||
| 224 | }); |
||
| 225 | } |
||
| 226 | |||
| 227 | return {results: results}; |
||
| 228 | } |
||
| 229 | """ |
||
| 230 | ) |
||
| 248 |