diff --git a/seahub/templates/search_results.html b/seahub/templates/search_results.html deleted file mode 100644 index 01a1879240..0000000000 --- a/seahub/templates/search_results.html +++ /dev/null @@ -1,115 +0,0 @@ -{% extends base_template %} - -{% load seahub_tags avatar_tags i18n %} -{% load url from future %} - -{% block right_panel %} -
-
- - -
- -
- -
- {% if not error %} -{% if not results %} -

{% trans 'No result found' %}

-{% else %} -

{% blocktrans count counter=total %}{{ total }} result{% plural %}{{ total }} results{% endblocktrans%}

- - {% if total > per_page %} -
- {% if current_page != 1 %} - {% trans "Previous"%} - {% endif %} - {% if has_more %} - {% trans "Next"%} - {% endif %} - {% if current_page != 1 or has_more %} - | - {% endif %} - {% trans "Per page: "%} - {% if per_page == 25 %} - 25 - {% else %} - 25 - {% endif %} - {% if per_page == 50 %} - 50 - {% else %} - 50 - {% endif %} - {% if per_page == 100 %} - 100 - {% else %} - 100 - {% endif %} -
- {% endif %} -{% endif %} -{% endif %} -
-{% endblock %} -{% block extra_script %} - -{% endblock %} diff --git a/seahub/urls.py b/seahub/urls.py index 82fb027b24..7598ace354 100644 --- a/seahub/urls.py +++ b/seahub/urls.py @@ -6,7 +6,6 @@ from seahub.views import * from seahub.views.file import view_file, view_history_file, view_trash_file,\ view_snapshot_file, file_edit from seahub.views.repo import RepoView, RepoHistoryView -from seahub.views.search import search from notifications.views import notification_list from group.views import group_list from seahub.views.wiki import personal_wiki, personal_wiki_pages, \ @@ -144,6 +143,7 @@ else: ) if getattr(settings, 'ENABLE_FILE_SEARCH', False): + from seahub_extra.search.views import search urlpatterns += patterns('', url(r'^search/$', search, name='search'), ) diff --git a/seahub/utils/search.py b/seahub/utils/search.py deleted file mode 100644 index 7132b7fcdd..0000000000 --- a/seahub/utils/search.py +++ /dev/null @@ -1,79 +0,0 @@ -from django.conf import settings - -from seahub.utils import get_user_repos, get_file_last_modified - -if getattr(settings, 'ENABLE_FILE_SEARCH', False): - from seafes import es_get_conn, es_search - - es_conn = None - def search_file_by_name(request, keyword, suffixes, start, size): - owned_repos, shared_repos, groups_repos, pub_repo_list = get_user_repos(request.user) - - # unify the repo.owner property - for repo in owned_repos: - repo.owner = request.user.username - for repo in shared_repos: - repo.owner = repo.user - for repo in pub_repo_list: - repo.owner = repo.user - - pubrepo_id_map = {} - for repo in pub_repo_list: - # fix pub repo obj attr name mismatch in seafile/lib/repo.vala - repo.id = repo.repo_id - repo.name = repo.repo_name - pubrepo_id_map[repo.id] = repo - - # remove duplicates from non-pub repos - nonpub_repo_list = [] - for repo in owned_repos + shared_repos + groups_repos: - if repo.id not in nonpub_repo_list: - nonpub_repo_list.append(repo) - - nonpub_repo_ids = [ repo.id for repo in nonpub_repo_list ] - - global es_conn - if es_conn is None: - es_conn = es_get_conn() - files_found, total = es_search(es_conn, nonpub_repo_ids, keyword, suffixes, start, size) - - if len(files_found) > 0: - # construt a (id, repo) hash table for fast lookup - repo_id_map = {} - for repo in nonpub_repo_list: - repo_id_map[repo.id] = repo - - repo_id_map.update(pubrepo_id_map) - - for f in files_found: - repo = repo_id_map.get(f['repo_id'].encode('UTF-8'), None) - if repo: - f['repo'] = repo - f['exists'] = True - f['last_modified_by'], f['last_modified'] = get_file_last_modified(f['repo_id'], f['fullpath']) - else: - f['exists'] = False - - files_found = filter(lambda f: f['exists'], files_found) - - return files_found, total - - - def search_repo_file_by_name(request, repo, keyword, suffixes, start, size): - global es_conn - if es_conn is None: - es_conn = es_get_conn() - - files_found, total = es_search(es_conn, [repo.id], keyword, suffixes, start, size) - - for f in files_found: - f['repo'] = repo - - return files_found, total - -else: - def search_file_by_name(*args): - pass - - def search_repo_file_by_name(*args): - pass diff --git a/seahub/views/search.py b/seahub/views/search.py deleted file mode 100644 index 4eee919e9d..0000000000 --- a/seahub/views/search.py +++ /dev/null @@ -1,79 +0,0 @@ -from django.shortcuts import render_to_response -from django.template import RequestContext - -from seaserv import get_repo -from seahub.auth.decorators import login_required -from seahub.utils import PREVIEW_FILEEXT -from seahub.utils.search import search_file_by_name, search_repo_file_by_name - -@login_required -def search(request): - template = 'search_results.html' - error = False - - keyword = request.GET.get('q', None) - if not keyword: - return render_to_response(template, { - 'error': True, - }, context_instance=RequestContext(request)) - - # advanced search - search_repo = request.GET.get('search_repo', None) # val: 'all' or 'search_repo_id' - search_ftypes = request.GET.get('search_ftypes', None) # val: 'all' or 'custom' - custom_ftypes = request.GET.getlist('ftype') # types like 'Image', 'Video'... same in utils/file_types.py - input_fileexts = request.GET.get('input_fexts', '') # file extension input by the user - - suffixes = None - if search_ftypes == 'custom': - suffixes = [] - if len(custom_ftypes) > 0: - for ftp in custom_ftypes: - if PREVIEW_FILEEXT.has_key(ftp): - for ext in PREVIEW_FILEEXT[ftp]: - suffixes.append(ext) - - if input_fileexts: - input_fexts = input_fileexts.split(',') - for i_ext in input_fexts: - i_ext = i_ext.strip() - if i_ext: - suffixes.append(i_ext) - - current_page = int(request.GET.get('page', '1')) - per_page= int(request.GET.get('per_page', '25')) - - start = (current_page - 1) * per_page - size = per_page - - repo = None - if search_repo and search_repo != 'all': - repo_id = search_repo - repo = get_repo(repo_id) - if repo: - results, total = search_repo_file_by_name(request, repo, keyword, suffixes, start, size) - else: - results, total = [], 0 - else: - results, total = search_file_by_name(request, keyword, suffixes, start, size) - - if total > current_page * per_page: - has_more = True - else: - has_more = False - - return render_to_response(template, { - 'repo': repo, - 'keyword': keyword, - 'results': results, - 'total': total, - 'has_more': has_more, - 'current_page': current_page, - 'prev_page': current_page - 1, - 'next_page': current_page + 1, - 'per_page': per_page, - 'search_repo': search_repo, - 'search_ftypes': search_ftypes, - 'custom_ftypes': custom_ftypes, - 'input_fileexts': input_fileexts, - 'error': error, - }, context_instance=RequestContext(request))