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] |     s = [x for x in s if x] | ||||||
|     return s |     return s | ||||||
| 
 | 
 | ||||||
| def edit_params(original, modifications): | def dict_to_params(d): | ||||||
|     ''' |     ''' | ||||||
|     Given a dictionary representing URL parameters, |     Given a dictionary representing URL parameters, return a URL parameter string. | ||||||
|     apply the modifications and 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() |     if not d: | ||||||
|     new_params.update(modifications) |  | ||||||
|     if not new_params: |  | ||||||
|         return '' |         return '' | ||||||
|     new_params = ['%s=%s' % (k, v) for (k, v) in new_params.items() if v] |     params = ['%s=%s' % (k, v) for (k, v) in d.items() if v] | ||||||
|     new_params = '&'.join(new_params) |     params = '&'.join(params) | ||||||
|     if new_params: |     if params: | ||||||
|         new_params = '?' + new_params |         params = '?' + params | ||||||
|     return new_params |     return params | ||||||
| 
 | 
 | ||||||
| def fit_into_bounds(image_width, image_height, frame_width, frame_height): | def fit_into_bounds(image_width, image_height, frame_width, frame_height): | ||||||
|     ''' |     ''' | ||||||
|  |  | ||||||
|  | @ -516,13 +516,19 @@ def get_search_core(): | ||||||
|     # PREV-NEXT PAGE URLS |     # PREV-NEXT PAGE URLS | ||||||
|     offset = search_kwargs['offset'] or 0 |     offset = search_kwargs['offset'] or 0 | ||||||
|     original_params = request.args.to_dict() |     original_params = request.args.to_dict() | ||||||
|  |     original_params['limit'] = limit | ||||||
|     if len(photos) == 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 |         next_page_url = '/search' + next_params | ||||||
|     else: |     else: | ||||||
|         next_page_url = None |         next_page_url = None | ||||||
|  | 
 | ||||||
|     if offset > 0: |     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 |         prev_page_url = '/search' + prev_params | ||||||
|     else: |     else: | ||||||
|         prev_page_url = None |         prev_page_url = None | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue