Skip to content

Commit

Permalink
Merge pull request #938 from akvo/848_filters
Browse files Browse the repository at this point in the history
[#848] Search and filtering
  • Loading branch information
KasperBrandt committed Dec 1, 2014
2 parents 86fb2d0 + 3fec0d9 commit c60626d
Show file tree
Hide file tree
Showing 827 changed files with 7,419 additions and 433 deletions.
225 changes: 93 additions & 132 deletions akvo/rsr/filters.py
Original file line number Diff line number Diff line change
@@ -1,144 +1,105 @@
# -*- coding: utf-8 -*-

# Akvo RSR is covered by the GNU Affero General Public License.
# See more details in the license.txt file located at the root folder of the Akvo RSR module.
# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >.
"""Akvo RSR is covered by the GNU Affero General Public License.
See more details in the license.txt file located at the root folder of the
Akvo RSR module. For additional details on the GNU license please
see < http://www.gnu.org/licenses/agpl.html >.
"""


import django_filters
import sys

from django.db.models.query_utils import Q
from django.forms import widgets, BooleanField
from django.forms.fields import MultipleChoiceField
from django.utils.translation import ugettext_lazy as _

from akvo.rsr.iso3166 import CONTINENTS

from .models import Organisation, Project

class CheckboxMultipleChoiceField(MultipleChoiceField):
widget = widgets.CheckboxSelectMultiple


class ProjectFilterSet(django_filters.FilterSet):
def filter_by_org(qs, org):
if org:
projs = org.published_projects().values_list('id', flat=True)
return qs.filter(pk__in=projs)
else:
return qs

def filter_by_project_title(qs, what):
if what:
bits = what.strip().split(' ')
if len(bits) == 1 and bits[0].isdigit():
query = Q(id__exact=int(bits[0]))
return qs.filter(query)
query = Q(title__icontains=bits[0]) | Q(subtitle__icontains=bits[0])
if len(bits) > 1:
for bit in bits[1:]:
query2 = Q(title__icontains=bit) | Q(subtitle__icontains=bit)
query = query & query2
return qs.filter(query)
return qs

def filter_by_status(qs, what):
if what:
q = Q(pk=0)
for bit in what:
q |= Q(status=bit)
qs = qs.filter(q)
return qs

def filter_andor(qs, what):
qs.filter_and = what
return qs

def check_test(cond):
if cond == u'on':
return True
return False

def filter_by_budget_range(qs, what):
if what:
return qs.filter(**{'total_budget__range': (int(what.start) if what.start else 0, int(what.stop) if what.stop else sys.maxint)})
return qs

title = django_filters.CharFilter(action=filter_by_project_title)
andor = django_filters.BooleanFilter(widget=widgets.CheckboxInput(check_test=check_test), action=filter_andor, label=_(u'All words'))
continent = django_filters.ChoiceFilter(name='locations__country__continent_code')
organisation = django_filters.ModelChoiceFilter(name='name', action=filter_by_org,)
status = django_filters.ChoiceFilter(choices=Project.STATUSES, action=filter_by_status)
budget_total = django_filters.RangeFilter(action=filter_by_budget_range)
currency = django_filters.ChoiceFilter()

def __init__(self, *args, **kwargs):
request = kwargs.pop('request', None)
super(ProjectFilterSet, self).__init__(*args, **kwargs)
projects = kwargs.pop('queryset', None)

self.filters['title'].field.widget.input_type = 'search'
self.filters['title'].field.widget.attrs = {'results': '5', 'autosave': 'project_search', 'placeholder': _(u'Project title or subtitle')}

choices = [('', _(u'All continents'))]
choices.extend(list(CONTINENTS))
self.filters['continent'].extra.update({'choices': choices})

# The request is sent when the call is made from a partner site view
if request:
partner_site = request.partner_site
organisation = partner_site.organisation

# Countries
countries = projects.countries()
self.filters['locations__country'].extra.update({'queryset': countries})
self.filters['locations__country'].extra.update({'empty_label': _(u'Active countries')})

# Continents
continents = [('', _(u'Active continents'))]
choices = []
for country in countries:
if not country.continent_code in [code[0] for code in choices]:
choices.append((country.continent_code, _(country.continent)))
continents.extend(sorted(choices))
self.filters['continent'].extra.update({'choices': continents})

# Partners (always show all partners)
organisations = Organisation.objects.all()
self.filters['organisation'].extra.update({'empty_label': _(u'All partners')})


# TODO: Filter the partners of projects. Organisation.partners() is too slow at the moment.
# if partner_site.partner_projects and partner_site.keywords == 0:
# organisations = organisation.partners()
# self.filters['organisation'].extra.update({'empty_label': _(u'Active partners')})
# else:
# organisations = Organisation.objects.all()
# self.filters['organisation'].extra.update({'empty_label': _(u'All partners')})

# No request (no partner site)
else:
organisations = Organisation.objects.all()
self.filters['locations__country'].extra.update({'empty_label': _(u'All countries')})
self.filters['organisation'].extra.update({'empty_label': _(u'All organisations')})

self.filters['organisation'].extra.update({'queryset': organisations})

self.filters['andor'].field_class = BooleanField
self.filters['status'].field_class = CheckboxMultipleChoiceField

choices = [('', '---------')]
choices.extend(list(Project.CURRENCY_CHOICES))
self.filters['currency'].extra.update({'choices': choices})
from .models import Project, Organisation, Category, FocusArea, ProjectUpdate
from .iso3166 import CONTINENTS

ANY_CHOICE = (('', 'All'), )

class Meta:
model = Project
fields = ['organisation', 'andor', 'title', 'locations__country', 'continent', 'status', 'budget_total', 'currency', 'categories',]

def remove_empty_querydict_items(request_get):
#querydicts are immutable
# querydicts are immutable
getvars = request_get.copy()
for k, v in getvars.items():
if not v:
getvars.pop(k, None)
return getvars


class ProjectFilter(django_filters.FilterSet):
category = django_filters.ChoiceFilter(
choices=([('', 'All')] +
list(Category.objects.all().values_list('id', 'name',
flat=False)) ),
label='category',
name='categories__id')

continent = django_filters.ChoiceFilter(
choices=ANY_CHOICE + CONTINENTS,
label='location',
name='primary_location__country__continent_code')

# Focus areas
focus_area = django_filters.ChoiceFilter(
choices=([('', 'All')] +
list(FocusArea.objects.all().values_list('id', 'name',
flat=False))[1:]),
label='focus area',
name='categories__focus_area__id',
initial='All')

status = django_filters.ChoiceFilter(
initial='All',
label='status',
choices=ANY_CHOICE + Project.STATUSES)

title = django_filters.CharFilter(
lookup_type='icontains',
label='Search',
name='title')

def get_orgs():
orgs = list(Organisation.objects.all().values_list('id', 'name',
flat=False))
return ([('', 'All')] + orgs)

organisation = django_filters.ChoiceFilter(
choices=get_orgs(),
label='partner',
name='partners__id')

class Meta:
model = Project
fields = ['status', 'continent', 'organisation', 'category',
'focus_area', 'title', ]


class ProjectUpdateFilter(django_filters.FilterSet):

continent = django_filters.ChoiceFilter(
choices=ANY_CHOICE + CONTINENTS,
label='location',
name='primary_location__country__continent_code')

title = django_filters.CharFilter(
lookup_type='icontains',
label='Search',
name='title')

class Meta:
model = ProjectUpdate
fields = ['continent', 'title', ]


class OrganisationFilter(django_filters.FilterSet):

continent = django_filters.ChoiceFilter(
choices=ANY_CHOICE + CONTINENTS,
label='location',
name='primary_location__country__continent_code')

name = django_filters.CharFilter(
lookup_type='icontains',
label='Search',
name='name')

class Meta:
model = ProjectUpdate
fields = ['continent', 'name', ]
155 changes: 155 additions & 0 deletions akvo/rsr/filters.py.old
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
# -*- coding: utf-8 -*-

# Akvo RSR is covered by the GNU Affero General Public License.
# See more details in the license.txt file located at the root folder of the Akvo RSR module.
# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >.

import django_filters
import sys

from django.db.models.query_utils import Q
from django.forms import widgets, BooleanField
from django.forms.fields import MultipleChoiceField
from django.utils.translation import ugettext_lazy as _

from akvo.rsr.iso3166 import CONTINENTS

from .models import Organisation, Project

class CheckboxMultipleChoiceField(MultipleChoiceField):
widget = widgets.CheckboxSelectMultiple


class ProjectFilter(django_filters.FilterSet):
class Meta:
model = Project
fields = ['primary_location__country__continent']

def __init__(self, *args, **kwargs):
super(ProjectFilter, self).__init__(*args, **kwargs)
# self.filters['primary_location__country__continent'].extra.update(
# {'empty_label': 'All Continents'})


class ProjectFilterSet(django_filters.FilterSet):
def filter_by_org(qs, org):
if org:
projs = org.published_projects().values_list('id', flat=True)
return qs.filter(pk__in=projs)
else:
return qs

def filter_by_project_title(qs, what):
if what:
bits = what.strip().split(' ')
if len(bits) == 1 and bits[0].isdigit():
query = Q(id__exact=int(bits[0]))
return qs.filter(query)
query = Q(title__icontains=bits[0]) | Q(subtitle__icontains=bits[0])
if len(bits) > 1:
for bit in bits[1:]:
query2 = Q(title__icontains=bit) | Q(subtitle__icontains=bit)
query = query & query2
return qs.filter(query)
return qs

def filter_by_status(qs, what):
if what:
q = Q(pk=0)
for bit in what:
q |= Q(status=bit)
qs = qs.filter(q)
return qs

def filter_andor(qs, what):
qs.filter_and = what
return qs

def check_test(cond):
if cond == u'on':
return True
return False

def filter_by_budget_range(qs, what):
if what:
return qs.filter(**{'total_budget__range': (int(what.start) if what.start else 0, int(what.stop) if what.stop else sys.maxint)})
return qs

title = django_filters.CharFilter(action=filter_by_project_title)
andor = django_filters.BooleanFilter(widget=widgets.CheckboxInput(check_test=check_test), action=filter_andor, label=_(u'All words'))
continent = django_filters.ChoiceFilter(name='locations__country__continent_code')
organisation = django_filters.ModelChoiceFilter(name='name', action=filter_by_org,)
status = django_filters.ChoiceFilter(choices=Project.STATUSES, action=filter_by_status)
budget_total = django_filters.RangeFilter(action=filter_by_budget_range)
currency = django_filters.ChoiceFilter()

def __init__(self, *args, **kwargs):
request = kwargs.pop('request', None)
super(ProjectFilterSet, self).__init__(*args, **kwargs)
projects = kwargs.pop('queryset', None)

self.filters['title'].field.widget.input_type = 'search'
self.filters['title'].field.widget.attrs = {'results': '5', 'autosave': 'project_search', 'placeholder': _(u'Project title or subtitle')}

choices = [('', _(u'All continents'))]
choices.extend(list(CONTINENTS))
self.filters['continent'].extra.update({'choices': choices})

# The request is sent when the call is made from a partner site view
if request:
partner_site = request.partner_site
organisation = partner_site.organisation

# Countries
countries = projects.countries()
self.filters['locations__country'].extra.update({'queryset': countries})
self.filters['locations__country'].extra.update({'empty_label': _(u'Active countries')})

# Continents
continents = [('', _(u'Active continents'))]
choices = []
for country in countries:
if not country.continent_code in [code[0] for code in choices]:
choices.append((country.continent_code, _(country.continent)))
continents.extend(sorted(choices))
self.filters['continent'].extra.update({'choices': continents})

# Partners (always show all partners)
organisations = Organisation.objects.all()
self.filters['organisation'].extra.update({'empty_label': _(u'All partners')})


# TODO: Filter the partners of projects. Organisation.partners() is too slow at the moment.
# if partner_site.partner_projects and partner_site.keywords == 0:
# organisations = organisation.partners()
# self.filters['organisation'].extra.update({'empty_label': _(u'Active partners')})
# else:
# organisations = Organisation.objects.all()
# self.filters['organisation'].extra.update({'empty_label': _(u'All partners')})

# No request (no partner site)
else:
organisations = Organisation.objects.all()
self.filters['locations__country'].extra.update({'empty_label': _(u'All countries')})
self.filters['organisation'].extra.update({'empty_label': _(u'All organisations')})

self.filters['organisation'].extra.update({'queryset': organisations})

self.filters['andor'].field_class = BooleanField
self.filters['status'].field_class = CheckboxMultipleChoiceField

choices = [('', '---------')]
choices.extend(list(Project.CURRENCY_CHOICES))
self.filters['currency'].extra.update({'choices': choices})

class Meta:
model = Project
fields = ['organisation', 'andor', 'title', 'locations__country', 'continent', 'status', 'budget_total', 'currency', 'categories',]

def remove_empty_querydict_items(request_get):
#querydicts are immutable
getvars = request_get.copy()
for k, v in getvars.items():
if not v:
getvars.pop(k, None)
return getvars
Empty file modified akvo/rsr/static/common/img/Akvo_RGB_tagline2_logo.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/Akvo_RGB_tagline2_logo_square.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/ajax-loader.gif
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/blueMarker.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/flags_128/_ASEAN.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/flags_128/_African-Union.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/flags_128/_Alderney.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/flags_128/_Arab-League.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/flags_128/_Basque-Country.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/flags_128/_CARICOM.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/flags_128/_CIS.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/flags_128/_Catalonia.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/flags_128/_Commonwealth.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/flags_128/_England.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/flags_128/_European-Union.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/flags_128/_FAO.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/flags_128/_Galicia.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/flags_128/_IAEA.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/flags_128/_IHO.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/flags_128/_Islamic-Conference.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/flags_128/_Kosovo.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/flags_128/_NATO.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/flags_128/_Northern-Cyprus.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/flags_128/_Northern-Ireland.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/flags_128/_OAS.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified akvo/rsr/static/common/img/flags_128/_OECD.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/_OPEC.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/_Olimpic-Movement.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/_Red-Cross.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/_Scotland.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/_Somaliland.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/_Tristan-da-Cunha.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/_UNESCO.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/_UNICEF.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/_United-Nations.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/_WHO.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/_WTO.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/_Wales.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ad.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ae.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/af.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ag.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ai.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/al.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/am.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/an.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ao.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/aq.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ar.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/as.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/at.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/au.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/aw.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ax.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/az.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ba.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/bb.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/bd.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/be.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/bf.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/bg.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/bh.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/bi.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/bj.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/bl.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/bm.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/bn.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/bo.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/br.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/bs.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/bt.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/bv.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/bw.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/by.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/bz.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ca.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/cc.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/cd.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/cf.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/cg.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ch.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ci.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ck.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/cl.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/cm.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/cn.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/co.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/cr.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/cu.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/cv.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/cw.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/cx.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/cy.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/cz.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/de.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/dj.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/dk.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/dm.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/do.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/dz.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ec.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ee.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/eg.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/eh.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/er.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/es.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/et.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/fi.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/fj.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/fk.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/fm.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/fo.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/fr.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ga.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/gb.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/gd.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ge.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/gf.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/gg.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/gh.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/gi.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/gl.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/gm.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/gn.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/gp.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/gq.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/gr.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/gs.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/gt.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/gu.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/gw.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/gy.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/hk.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/hm.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/hn.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/hr.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ht.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/hu.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/id.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ie.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/il.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/im.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/in.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/io.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/iq.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ir.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/is.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/it.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/je.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/jm.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/jo.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/jp.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ke.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/kg.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/kh.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ki.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/km.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/kn.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/kp.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/kr.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/kw.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ky.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/kz.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/la.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/lb.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/lc.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/li.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/lk.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/lr.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ls.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/lt.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/lu.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/lv.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ly.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ma.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/mc.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/md.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/me.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/mf.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/mg.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/mh.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/mk.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ml.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/mm.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/mn.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/mo.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/mp.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/mq.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/mr.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ms.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/mt.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/mu.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/mv.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/mw.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/mx.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/my.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/mz.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/na.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/nc.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ne.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/nf.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ng.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ni.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/nl.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/no.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/np.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/nr.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/nu.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/nz.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/om.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/pa.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/pe.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/pf.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/pg.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ph.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/pk.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/pl.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/pm.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/pn.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/pr.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ps.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/pt.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/pw.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/py.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/qa.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/re.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/rn.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ro.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/rs.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ru.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/rw.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/sa.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/sb.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/sc.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/sd.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/se.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/sg.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/sh.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/si.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/sj.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/sk.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/sl.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/sm.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/sn.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/so.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/sr.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ss.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/st.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/sv.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/sx.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/sy.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/sz.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/tc.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/td.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/tf.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/tg.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/th.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/tj.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/tk.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/tl.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/tm.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/to.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/tr.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/tt.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/tv.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/tw.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/tz.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ua.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ug.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/um.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/us.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/uy.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/uz.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/va.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/vc.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ve.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/vg.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/vi.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/vn.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/vu.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/wf.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ws.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/ye.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/yt.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/za.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/zm.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_128/zw.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_64/_ASEAN.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_64/_African-Union.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_64/_Alderney.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_64/_Arab League.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_64/_Basque Country.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_64/_CARICOM.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_64/_CIS.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_64/_Catalonia.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_64/_Commonwealth.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_64/_England.png
100644 → 100755
Empty file modified akvo/rsr/static/common/img/flags_64/_European Union.png
100644 → 100755
Loading

0 comments on commit c60626d

Please sign in to comment.