Separate concerns: updating given parameters vs rendering dict to param string
This commit is contained in:
		
							parent
							
								
									8856a2fe69
								
							
						
					
					
						commit
						73835e2a7a
					
				
					 2 changed files with 17 additions and 14 deletions
				
			
		|  | @ -103,22 +103,19 @@ def comma_split(s): | |||
|     s = [x for x in s if x] | ||||
|     return s | ||||
| 
 | ||||
| def edit_params(original, modifications): | ||||
| def dict_to_params(d): | ||||
|     ''' | ||||
|     Given a dictionary representing URL parameters, | ||||
|     apply the modifications and return a URL parameter string. | ||||
|     Given a dictionary representing URL parameters, return a URL parameter string. | ||||
| 
 | ||||
|     {'a':1, 'b':2}, {'b':3} => ?a=1&b=3 | ||||
|     {'a':1, 'b':2} => ?a=1&b=2 | ||||
|     ''' | ||||
|     new_params = original.copy() | ||||
|     new_params.update(modifications) | ||||
|     if not new_params: | ||||
|     if not d: | ||||
|         return '' | ||||
|     new_params = ['%s=%s' % (k, v) for (k, v) in new_params.items() if v] | ||||
|     new_params = '&'.join(new_params) | ||||
|     if new_params: | ||||
|         new_params = '?' + new_params | ||||
|     return new_params | ||||
|     params = ['%s=%s' % (k, v) for (k, v) in d.items() if v] | ||||
|     params = '&'.join(params) | ||||
|     if params: | ||||
|         params = '?' + params | ||||
|     return params | ||||
| 
 | ||||
| def fit_into_bounds(image_width, image_height, frame_width, frame_height): | ||||
|     ''' | ||||
|  |  | |||
|  | @ -516,13 +516,19 @@ def get_search_core(): | |||
|     # PREV-NEXT PAGE URLS | ||||
|     offset = search_kwargs['offset'] or 0 | ||||
|     original_params = request.args.to_dict() | ||||
|     original_params['limit'] = limit | ||||
|     if len(photos) == limit: | ||||
|         next_params = helpers.edit_params(original_params, {'offset': offset + limit}) | ||||
|         next_params = original_params.copy() | ||||
|         next_params['offset'] = offset + limit | ||||
|         next_params = helpers.dict_to_params(next_params) | ||||
|         next_page_url = '/search' + next_params | ||||
|     else: | ||||
|         next_page_url = None | ||||
| 
 | ||||
|     if offset > 0: | ||||
|         prev_params = helpers.edit_params(original_params, {'offset': max(0, offset - limit)}) | ||||
|         prev_params = original_params.copy() | ||||
|         prev_params['offset'] = max(0, offset - limit) | ||||
|         prev_params = helpers.dict_to_params(prev_params) | ||||
|         prev_page_url = '/search' + prev_params | ||||
|     else: | ||||
|         prev_page_url = None | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue