Add /userid/id redirect to /user/name
This commit is contained in:
		
							parent
							
								
									f61570acfb
								
							
						
					
					
						commit
						57355cb032
					
				
					 2 changed files with 19 additions and 7 deletions
				
			
		|  | @ -18,7 +18,7 @@ Documentation is still a work in progress. In general, I use: | ||||||
| - Improve the "tags on this page" list. Maybe add separate buttons for must/may/forbid on each. | - Improve the "tags on this page" list. Maybe add separate buttons for must/may/forbid on each. | ||||||
| - Some way for the database to re-identify a file that was moved / renamed (lost & found). Maybe file hash of the first few mb is good enough. | - Some way for the database to re-identify a file that was moved / renamed (lost & found). Maybe file hash of the first few mb is good enough. | ||||||
| - Debate whether the `UserMixin.login` method should accept usernames or I should standardize the usage of IDs only internally. | - Debate whether the `UserMixin.login` method should accept usernames or I should standardize the usage of IDs only internally. | ||||||
| - Ability to access user page and user photos by user's ID, not just username. | - Ability to access user photos by user's ID, not just username. | ||||||
| - Should album size be cached on disk? | - Should album size be cached on disk? | ||||||
| - Replace columns like area, ratio, bitrate by using expression indices or views (`width * height` etc). | - Replace columns like area, ratio, bitrate by using expression indices or views (`width * height` etc). | ||||||
| - Add some way to support large image albums without flooding the search results. Considering a "hidden" property so that a handful of representative images can appear in the search results, and the rest can be found on the actual Album page. | - Add some way to support large image albums without flooding the search results. Considering a "hidden" property so that a handful of representative images can appear in the search results, and the rest can be found on the actual Album page. | ||||||
|  |  | ||||||
|  | @ -118,6 +118,10 @@ def P_tag(tagname): | ||||||
| def P_user(username): | def P_user(username): | ||||||
|     return P.get_user(username=username) |     return P.get_user(username=username) | ||||||
| 
 | 
 | ||||||
|  | @P_wrapper | ||||||
|  | def P_user_id(userid): | ||||||
|  |     return P.get_user(id=userid) | ||||||
|  | 
 | ||||||
| def send_file(filepath, override_mimetype=None): | def send_file(filepath, override_mimetype=None): | ||||||
|     ''' |     ''' | ||||||
|     Range-enabled file sending. |     Range-enabled file sending. | ||||||
|  | @ -347,10 +351,6 @@ def get_tags_core(specific_tag=None): | ||||||
|     tags.sort(key=lambda x: x.qualified_name()) |     tags.sort(key=lambda x: x.qualified_name()) | ||||||
|     return tags |     return tags | ||||||
| 
 | 
 | ||||||
| def get_user_core(username): |  | ||||||
|     user = P_user(username) |  | ||||||
|     return user |  | ||||||
| 
 |  | ||||||
| def post_photo_add_remove_tag_core(photoid, tagname, add_or_remove): | def post_photo_add_remove_tag_core(photoid, tagname, add_or_remove): | ||||||
|     photo = P_photo(photoid, response_type='json') |     photo = P_photo(photoid, response_type='json') | ||||||
|     tag = P_tag(tagname, response_type='json') |     tag = P_tag(tagname, response_type='json') | ||||||
|  | @ -833,17 +833,29 @@ def get_thumbnail(photoid): | ||||||
| @site.route('/user/<username>', methods=['GET']) | @site.route('/user/<username>', methods=['GET']) | ||||||
| @session_manager.give_token | @session_manager.give_token | ||||||
| def get_user_html(username): | def get_user_html(username): | ||||||
|     user = get_user_core(username) |     user = P_user(username, response_type='html') | ||||||
|     session = session_manager.get(request) |     session = session_manager.get(request) | ||||||
|     return flask.render_template('user.html', user=user, session=session) |     return flask.render_template('user.html', user=user, session=session) | ||||||
| 
 | 
 | ||||||
| @site.route('/user/<username>.json', methods=['GET']) | @site.route('/user/<username>.json', methods=['GET']) | ||||||
| @session_manager.give_token | @session_manager.give_token | ||||||
| def get_user_json(username): | def get_user_json(username): | ||||||
|     user = get_user_core(username) |     user = P_user(username, response_type='json') | ||||||
|     user = etiquette.jsonify.user(user) |     user = etiquette.jsonify.user(user) | ||||||
|     return jsonify.make_json_response(user) |     return jsonify.make_json_response(user) | ||||||
| 
 | 
 | ||||||
|  | @site.route('/userid/<userid>') | ||||||
|  | @site.route('/userid/<userid>.json') | ||||||
|  | def get_user_id_redirect(userid): | ||||||
|  |     if request.url.endswith('.json'): | ||||||
|  |         user = P_user_id(userid, response_type='json') | ||||||
|  |     else: | ||||||
|  |         user = P_user_id(userid, response_type='html') | ||||||
|  |     url_from = '/userid/' + userid | ||||||
|  |     url_to = '/user/' + user.username | ||||||
|  |     url = request.url.replace(url_from, url_to) | ||||||
|  |     return flask.redirect(url) | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| @site.route('/apitest') | @site.route('/apitest') | ||||||
| @session_manager.give_token | @session_manager.give_token | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue