# Path: phylocommons/get_treestore.py
# def get_treestore():
#     return Treestore(**settings.TREESTORE_KWARGS)
# 
# def tree_id_from_uri(uri):
#     return Treestore.id_from_uri(uri, base_uri=settings.TREE_URI)
# 
# def uri_from_tree_id(tree_id):
#     return Treestore.uri_from_id(tree_id, base_uri=settings.TREE_URI)


from django.shortcuts import render_to_response, redirect
from django.http import HttpResponse
from django.core.context_processors import csrf
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.template import RequestContext
from phylocommons.get_treestore import get_treestore, tree_id_from_uri, uri_from_tree_id
from forms import SearchForm
from cStringIO import StringIO
from phylocommons import settings
from django.forms.forms import NON_FIELD_ERRORS
from django.forms.util import ErrorList
from django.http import Http404
import Bio.Phylo as bp
import urllib
                filter = form.cleaned_data['filter']
                params = [(x, y) for x, y in form.cleaned_data.items()]
                return redirect('/trees/?' + urllib.urlencode(params))
        else:    
            taxa = request.GET.get('taxa')
            filter = request.GET.get('filter')
            filter = filter if filter else None

            form = SearchForm(initial=request.GET)
            form.full_clean()

        taxa = [x.strip() for x in taxa.split(',')] if taxa else []
        
        params = {'form': form, 'taxonomy':settings.DEFAULT_TAXONOMY}
        params.update(csrf(request))
        
        try:
            trees = list(treestore.list_trees_containing_taxa(contains=taxa, filter=filter, 
                            taxonomy=settings.DEFAULT_TAXONOMY, show_counts=True))
        except Exception as e:
            errors = form._errors.setdefault(NON_FIELD_ERRORS, ErrorList())
            err_msg = "There was a problem with your search: %s" % e
            errors.append(err_msg)
            
            return render_to_response(
                'list.html',
                params,
                context_instance=RequestContext(request)
            )
            

# Path: phylocommons/get_treestore.py
# def get_treestore():
#     return Treestore(**settings.TREESTORE_KWARGS)
# 
# def tree_id_from_uri(uri):
#     return Treestore.id_from_uri(uri, base_uri=settings.TREE_URI)
# 
# def uri_from_tree_id(tree_id):
#     return Treestore.uri_from_id(tree_id, base_uri=settings.TREE_URI)


# Path: treeview/views.py
from django.shortcuts import render_to_response, redirect
from django.http import HttpResponse
from django.core.context_processors import csrf
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.template import RequestContext
from phylocommons.get_treestore import get_treestore, tree_id_from_uri, uri_from_tree_id
from forms import SearchForm
from cStringIO import StringIO
from phylocommons import settings
from django.forms.forms import NON_FIELD_ERRORS
from django.forms.util import ErrorList
from django.http import Http404
import Bio.Phylo as bp
import urllib

                filter = form.cleaned_data['filter']
                params = [(x, y) for x, y in form.cleaned_data.items()]
                return redirect('/trees/?' + urllib.urlencode(params))
        else:    
            taxa = request.GET.get('taxa')
            filter = request.GET.get('filter')
            filter = filter if filter else None

            form = SearchForm(initial=request.GET)
            form.full_clean()

        taxa = [x.strip() for x in taxa.split(',')] if taxa else []
        
        params = {'form': form, 'taxonomy':settings.DEFAULT_TAXONOMY}
        params.update(csrf(request))
        
        try:
            trees = list(treestore.list_trees_containing_taxa(contains=taxa, filter=filter, 
                            taxonomy=settings.DEFAULT_TAXONOMY, show_counts=True))
        except Exception as e:
            errors = form._errors.setdefault(NON_FIELD_ERRORS, ErrorList())
            err_msg = "There was a problem with your search: %s" % e
            errors.append(err_msg)
            
            return render_to_response(
                'list.html',
                params,
                context_instance=RequestContext(request)
            )
            

        trees = [(tree_id_from_uri(m[0]), int(m[1])) for m in trees]