From 27d3dfe5c8d5af0fbef773f1f5517a1084e02e7c Mon Sep 17 00:00:00 2001 From: Arnaud Fabre Date: Wed, 22 Jul 2015 13:43:40 +0200 Subject: [PATCH] Design improvements Adds-flag icons Adds fluid containers Adds a memopolVote proxy model --- bower.json | 3 +- core/templates/base.html | 2 +- core/templates/core/blocks/footer.haml | 2 +- core/templates/core/blocks/header.haml | 5 +- legislature/models.py | 24 +- ..._header.haml => representative_block.haml} | 11 +- .../legislature/representative_detail.haml | 39 +- .../legislature/representative_list.haml | 10 +- .../templatetags/representatives_extras.py | 72 + static/less/base.less | 2 +- static/less/legislature.less | 12 + static/less/libs.less | 6 + static/less/table.less | 6 +- static/stylesheets/base.css | 17 +- static/stylesheets/libs.css | 1514 +++++++++++++++++ votes/models.py | 24 +- votes/templates/votes/dossier_index.haml | 2 +- 17 files changed, 1693 insertions(+), 58 deletions(-) rename legislature/templates/legislature/blocks/{representative_header.haml => representative_block.haml} (76%) create mode 100644 legislature/templatetags/representatives_extras.py diff --git a/bower.json b/bower.json index d32512b..95711fc 100644 --- a/bower.json +++ b/bower.json @@ -2,7 +2,8 @@ "name": "Memopol", "version": "3.0.0", "dependencies": { - "bootstrap": "~3.3.5" + "bootstrap": "~3.3.5", + "flag-icon-css": "~0.7.1" }, "devDependencies": { "fontawesome": "~4.3.0" diff --git a/core/templates/base.html b/core/templates/base.html index 3abcb44..db14e60 100644 --- a/core/templates/base.html +++ b/core/templates/base.html @@ -22,7 +22,7 @@ {% include "core/blocks/header.html" %} -
+
{% block content %} {% endblock %}
diff --git a/core/templates/core/blocks/footer.haml b/core/templates/core/blocks/footer.haml index 52b9519..b44bdff 100644 --- a/core/templates/core/blocks/footer.haml +++ b/core/templates/core/blocks/footer.haml @@ -1,6 +1,6 @@ - load i18n -#footer.container +#footer.container-fluid - blocktrans Memopol is free software released diff --git a/core/templates/core/blocks/header.haml b/core/templates/core/blocks/header.haml index d8c3ff6..4e775a4 100644 --- a/core/templates/core/blocks/header.haml +++ b/core/templates/core/blocks/header.haml @@ -3,7 +3,7 @@ - load cache - load staticfiles -#header.container +#header.container-fluid %a{href: "/", id: 'logo'} %img{src: '{% static "images/logo.png" %}'} %h1 @@ -12,6 +12,5 @@ %p.organization =config.ORGANIZATION_NAME -#nav.container +#nav.container-fluid -include "core/blocks/navigation.html" - diff --git a/legislature/models.py b/legislature/models.py index 0e1beed..229e37a 100644 --- a/legislature/models.py +++ b/legislature/models.py @@ -24,10 +24,10 @@ from django.db import models from django.core.exceptions import ObjectDoesNotExist from django.db.models.signals import post_save from django.dispatch import receiver -from django.utils.functional import cached_property +# from django.utils.functional import cached_property from representatives.models import Representative, Mandate, Country -from representatives_votes.models import Vote +from votes.models import MemopolVote from core.utils import create_child_instance_from_parent @@ -39,21 +39,7 @@ class MemopolRepresentative(Representative): def update_score(self): score = 0 for vote in self.votes.all(): - proposal = vote.proposal - try: - if proposal.recommendation: - recommendation = proposal.recommendation - if ( vote.position != recommendation.recommendation - and ( - vote.position == 'abstain' or - recommendation.recommendation == 'abstain' )): - score -= (recommendation.weight / 2) - elif vote.position != recommendation.recommendation: - score -= recommendation.weight - else: - score += recommendation.weight - except Exception: - pass + score += vote.absolute_score self.score = score self.save() @@ -102,10 +88,10 @@ class MemopolRepresentative(Representative): ) def votes_with_proposal(self): - return self.votes.select_related( + return MemopolVote.objects.select_related( 'proposal', 'proposal__recommendation' - ) + ).filter(representative=self) @receiver(post_save, sender=Representative) diff --git a/legislature/templates/legislature/blocks/representative_header.haml b/legislature/templates/legislature/blocks/representative_block.haml similarity index 76% rename from legislature/templates/legislature/blocks/representative_header.haml rename to legislature/templates/legislature/blocks/representative_block.haml index 16b65fb..66cca23 100644 --- a/legislature/templates/legislature/blocks/representative_header.haml +++ b/legislature/templates/legislature/blocks/representative_block.haml @@ -1,9 +1,9 @@ -- load by_group_url +- load representatives_extras .representative %h1.name - ={representative.full_name} + ={representative.full_name} .row .col-md-4 @@ -15,12 +15,11 @@ %tr.score %th Score %td - %span.label.label-success - %a{:href => '#votes'} - = representative.score + = representative.score|score_label %tr %th Country - %td= representative.country.name + %td + = representative.country|country_flag %tr %th Party %td diff --git a/legislature/templates/legislature/representative_detail.haml b/legislature/templates/legislature/representative_detail.haml index 631db7f..1d7dfc0 100644 --- a/legislature/templates/legislature/representative_detail.haml +++ b/legislature/templates/legislature/representative_detail.haml @@ -3,29 +3,38 @@ - extends 'base.html' - load humanize -- load by_group_url +- load representatives_extras - load bootstrap3 - block head {{ position_form.media }} - block content - - include 'legislature/blocks/representative_header.html' with representative=representative - %h2#votes Votes + .row + .col-md-6 + - include 'legislature/blocks/representative_block.html' with representative=representative + .col-md-6 + %h2#votes Votes - %table.table.table-condensed.votes - %tr - %th Title - %th Position - %th Recommendation - %th Score + %table.table.table-condensed.votes + %tr + %th Title + %th.icon-cell + Memopol recommendation + %th.icon-cell + Representative vote + %th.icon-cell + Score - - for vote in representative.votes_with_proposal.all - %tr - %td= vote.proposal.recommendation.title - %td= vote.position - %td= vote.proposal.recommendation.recommendation - %td= vote.proposal.recommendation.weight + - for vote in representative.votes_with_proposal.all + %tr + %td= vote.proposal.recommendation.title + %td.icon-cell + = vote.proposal.recommendation.recommendation|position_icon + %td.icon-cell + = vote.position|position_icon + %td.icon-cell + = vote.absolute_score|score_label %h2 Mandates diff --git a/legislature/templates/legislature/representative_list.haml b/legislature/templates/legislature/representative_list.haml index 95c914a..09c7a07 100644 --- a/legislature/templates/legislature/representative_list.haml +++ b/legislature/templates/legislature/representative_list.haml @@ -1,6 +1,6 @@ - extends 'base.html' -- load by_group_url +- load representatives_extras - block content @@ -27,16 +27,16 @@ %td %a{'href': "{% url 'legislature:representative-detail' name=representative.slug %}"} - ={representative.full_name} + = representative.full_name %td %a{'href': "{% url 'legislature:representative-index' group_kind='country' group=representative.country.code %}"} - ={representative.country.name} + = representative.country|country_flag %td %a{'href': "{{ representative.main_mandate|by_group_url }}"} - ={representative.main_mandate.group.abbreviation} + = representative.main_mandate.group.abbreviation %td - ={representative.score} + = representative.score|score_label - include "core/blocks/pagination.html" diff --git a/legislature/templatetags/representatives_extras.py b/legislature/templatetags/representatives_extras.py new file mode 100644 index 0000000..b1ce3d2 --- /dev/null +++ b/legislature/templatetags/representatives_extras.py @@ -0,0 +1,72 @@ +from django import template +from django.core.urlresolvers import reverse +from django.utils.safestring import mark_safe + +from representatives.models import Mandate, Group + +register = template.Library() + +@register.filter +def position_icon(position): + if position == 'for': + return mark_safe( + '') + elif position == 'against': + return mark_safe( + '') + else: + return mark_safe( + '') + + +@register.filter +def score_label(score): + if score > 0: + return mark_safe('{}'.format(score)) + elif score < 0: + return mark_safe('{}'.format(score)) + else: + return mark_safe('{}'.format(score)) + + +@register.filter +def country_flag(country): + return mark_safe('{} '.format( + country.name, + country.code.lower() + )) + + +@register.filter +def by_group_url(group): + if isinstance(group, Mandate): + group = group.group + + if not isinstance(group, Group): + return '' + + kwargs = {'group_kind': group.kind} + + if group.abbreviation: + kwargs['group'] = group.abbreviation + else: + kwargs['group'] = group.name + + # kwargs['group_id'] = group.id + + return reverse( + 'legislature:representative-index', + kwargs=kwargs + ) diff --git a/static/less/base.less b/static/less/base.less index 4c956b7..b192960 100644 --- a/static/less/base.less +++ b/static/less/base.less @@ -10,7 +10,7 @@ body { background: #E5E5E5; } -.container { +.container, .container-fluid { background: white; } diff --git a/static/less/legislature.less b/static/less/legislature.less index 9e7da83..1ff8ee9 100644 --- a/static/less/legislature.less +++ b/static/less/legislature.less @@ -23,3 +23,15 @@ width: 50%; margin: auto; } + +.vote_negative { + color: red; +} + +.vote_positive { + color: green; +} + +.vote_abstain { + color: #333; +} \ No newline at end of file diff --git a/static/less/libs.less b/static/less/libs.less index 33cb189..a381520 100644 --- a/static/less/libs.less +++ b/static/less/libs.less @@ -1,2 +1,8 @@ @import '../libs/bootstrap/less/bootstrap'; @import '../libs/fontawesome/less/font-awesome'; + +// Flag icons +@import '../libs/flag-icon-css/less/variabless'; +@flag-icon-css-path: '../libs/flag-icon-css/flags'; +@import '../libs/flag-icon-css/less/flag-icon-base'; +@import '../libs/flag-icon-css/less/flag-icon-list'; diff --git a/static/less/table.less b/static/less/table.less index bc83fdc..40a2d71 100644 --- a/static/less/table.less +++ b/static/less/table.less @@ -7,6 +7,10 @@ table.detail-view { text-align: right; } th:after{ - content: ' :'; + content: ' :'; } } + +.icon-cell { + text-align: center; +} \ No newline at end of file diff --git a/static/stylesheets/base.css b/static/stylesheets/base.css index dc4d90c..f6c1317 100644 --- a/static/stylesheets/base.css +++ b/static/stylesheets/base.css @@ -79,7 +79,10 @@ table.detail-view th { text-align: right; } table.detail-view th:after { - content: ' :'; + content: ' :'; +} +.icon-cell { + text-align: center; } .representative h1 { text-align: center; @@ -100,6 +103,15 @@ table.detail-view th:after { width: 50%; margin: auto; } +.vote_negative { + color: red; +} +.vote_positive { + color: green; +} +.vote_abstain { + color: #333; +} .quote { width: 70%; margin: auto; @@ -123,7 +135,8 @@ table.detail-view th:after { body { background: #E5E5E5; } -.container { +.container, +.container-fluid { background: white; } .main-container { diff --git a/static/stylesheets/libs.css b/static/stylesheets/libs.css index 6248d19..b85932e 100644 --- a/static/stylesheets/libs.css +++ b/static/stylesheets/libs.css @@ -8567,3 +8567,1517 @@ button.close { .fa-medium:before { content: "\f23a"; } +.flag-icon-background { + background-size: contain; + background-position: 50%; + background-repeat: no-repeat; +} +.flag-icon { + background-size: contain; + background-position: 50%; + background-repeat: no-repeat; + position: relative; + display: inline-block; + width: 1.33333333em; + line-height: 1em; +} +.flag-icon:before { + content: "\00a0"; +} +.flag-icon.flag-icon-squared { + width: 1em; +} +.flag-icon-ad { + background-image: url(../libs/flag-icon-css/flags/4x3/ad.svg); +} +.flag-icon-ad.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ad.svg); +} +.flag-icon-ae { + background-image: url(../libs/flag-icon-css/flags/4x3/ae.svg); +} +.flag-icon-ae.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ae.svg); +} +.flag-icon-af { + background-image: url(../libs/flag-icon-css/flags/4x3/af.svg); +} +.flag-icon-af.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/af.svg); +} +.flag-icon-ag { + background-image: url(../libs/flag-icon-css/flags/4x3/ag.svg); +} +.flag-icon-ag.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ag.svg); +} +.flag-icon-ai { + background-image: url(../libs/flag-icon-css/flags/4x3/ai.svg); +} +.flag-icon-ai.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ai.svg); +} +.flag-icon-al { + background-image: url(../libs/flag-icon-css/flags/4x3/al.svg); +} +.flag-icon-al.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/al.svg); +} +.flag-icon-am { + background-image: url(../libs/flag-icon-css/flags/4x3/am.svg); +} +.flag-icon-am.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/am.svg); +} +.flag-icon-ao { + background-image: url(../libs/flag-icon-css/flags/4x3/ao.svg); +} +.flag-icon-ao.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ao.svg); +} +.flag-icon-aq { + background-image: url(../libs/flag-icon-css/flags/4x3/aq.svg); +} +.flag-icon-aq.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/aq.svg); +} +.flag-icon-ar { + background-image: url(../libs/flag-icon-css/flags/4x3/ar.svg); +} +.flag-icon-ar.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ar.svg); +} +.flag-icon-as { + background-image: url(../libs/flag-icon-css/flags/4x3/as.svg); +} +.flag-icon-as.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/as.svg); +} +.flag-icon-at { + background-image: url(../libs/flag-icon-css/flags/4x3/at.svg); +} +.flag-icon-at.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/at.svg); +} +.flag-icon-au { + background-image: url(../libs/flag-icon-css/flags/4x3/au.svg); +} +.flag-icon-au.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/au.svg); +} +.flag-icon-aw { + background-image: url(../libs/flag-icon-css/flags/4x3/aw.svg); +} +.flag-icon-aw.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/aw.svg); +} +.flag-icon-ax { + background-image: url(../libs/flag-icon-css/flags/4x3/ax.svg); +} +.flag-icon-ax.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ax.svg); +} +.flag-icon-az { + background-image: url(../libs/flag-icon-css/flags/4x3/az.svg); +} +.flag-icon-az.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/az.svg); +} +.flag-icon-ba { + background-image: url(../libs/flag-icon-css/flags/4x3/ba.svg); +} +.flag-icon-ba.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ba.svg); +} +.flag-icon-bb { + background-image: url(../libs/flag-icon-css/flags/4x3/bb.svg); +} +.flag-icon-bb.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/bb.svg); +} +.flag-icon-bd { + background-image: url(../libs/flag-icon-css/flags/4x3/bd.svg); +} +.flag-icon-bd.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/bd.svg); +} +.flag-icon-be { + background-image: url(../libs/flag-icon-css/flags/4x3/be.svg); +} +.flag-icon-be.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/be.svg); +} +.flag-icon-bf { + background-image: url(../libs/flag-icon-css/flags/4x3/bf.svg); +} +.flag-icon-bf.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/bf.svg); +} +.flag-icon-bg { + background-image: url(../libs/flag-icon-css/flags/4x3/bg.svg); +} +.flag-icon-bg.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/bg.svg); +} +.flag-icon-bh { + background-image: url(../libs/flag-icon-css/flags/4x3/bh.svg); +} +.flag-icon-bh.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/bh.svg); +} +.flag-icon-bi { + background-image: url(../libs/flag-icon-css/flags/4x3/bi.svg); +} +.flag-icon-bi.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/bi.svg); +} +.flag-icon-bj { + background-image: url(../libs/flag-icon-css/flags/4x3/bj.svg); +} +.flag-icon-bj.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/bj.svg); +} +.flag-icon-bl { + background-image: url(../libs/flag-icon-css/flags/4x3/bl.svg); +} +.flag-icon-bl.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/bl.svg); +} +.flag-icon-bm { + background-image: url(../libs/flag-icon-css/flags/4x3/bm.svg); +} +.flag-icon-bm.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/bm.svg); +} +.flag-icon-bn { + background-image: url(../libs/flag-icon-css/flags/4x3/bn.svg); +} +.flag-icon-bn.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/bn.svg); +} +.flag-icon-bo { + background-image: url(../libs/flag-icon-css/flags/4x3/bo.svg); +} +.flag-icon-bo.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/bo.svg); +} +.flag-icon-bq { + background-image: url(../libs/flag-icon-css/flags/4x3/bq.svg); +} +.flag-icon-bq.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/bq.svg); +} +.flag-icon-br { + background-image: url(../libs/flag-icon-css/flags/4x3/br.svg); +} +.flag-icon-br.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/br.svg); +} +.flag-icon-bs { + background-image: url(../libs/flag-icon-css/flags/4x3/bs.svg); +} +.flag-icon-bs.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/bs.svg); +} +.flag-icon-bt { + background-image: url(../libs/flag-icon-css/flags/4x3/bt.svg); +} +.flag-icon-bt.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/bt.svg); +} +.flag-icon-bv { + background-image: url(../libs/flag-icon-css/flags/4x3/bv.svg); +} +.flag-icon-bv.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/bv.svg); +} +.flag-icon-bw { + background-image: url(../libs/flag-icon-css/flags/4x3/bw.svg); +} +.flag-icon-bw.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/bw.svg); +} +.flag-icon-by { + background-image: url(../libs/flag-icon-css/flags/4x3/by.svg); +} +.flag-icon-by.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/by.svg); +} +.flag-icon-bz { + background-image: url(../libs/flag-icon-css/flags/4x3/bz.svg); +} +.flag-icon-bz.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/bz.svg); +} +.flag-icon-ca { + background-image: url(../libs/flag-icon-css/flags/4x3/ca.svg); +} +.flag-icon-ca.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ca.svg); +} +.flag-icon-cc { + background-image: url(../libs/flag-icon-css/flags/4x3/cc.svg); +} +.flag-icon-cc.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/cc.svg); +} +.flag-icon-cd { + background-image: url(../libs/flag-icon-css/flags/4x3/cd.svg); +} +.flag-icon-cd.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/cd.svg); +} +.flag-icon-cf { + background-image: url(../libs/flag-icon-css/flags/4x3/cf.svg); +} +.flag-icon-cf.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/cf.svg); +} +.flag-icon-cg { + background-image: url(../libs/flag-icon-css/flags/4x3/cg.svg); +} +.flag-icon-cg.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/cg.svg); +} +.flag-icon-ch { + background-image: url(../libs/flag-icon-css/flags/4x3/ch.svg); +} +.flag-icon-ch.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ch.svg); +} +.flag-icon-ci { + background-image: url(../libs/flag-icon-css/flags/4x3/ci.svg); +} +.flag-icon-ci.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ci.svg); +} +.flag-icon-ck { + background-image: url(../libs/flag-icon-css/flags/4x3/ck.svg); +} +.flag-icon-ck.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ck.svg); +} +.flag-icon-cl { + background-image: url(../libs/flag-icon-css/flags/4x3/cl.svg); +} +.flag-icon-cl.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/cl.svg); +} +.flag-icon-cm { + background-image: url(../libs/flag-icon-css/flags/4x3/cm.svg); +} +.flag-icon-cm.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/cm.svg); +} +.flag-icon-cn { + background-image: url(../libs/flag-icon-css/flags/4x3/cn.svg); +} +.flag-icon-cn.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/cn.svg); +} +.flag-icon-co { + background-image: url(../libs/flag-icon-css/flags/4x3/co.svg); +} +.flag-icon-co.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/co.svg); +} +.flag-icon-cr { + background-image: url(../libs/flag-icon-css/flags/4x3/cr.svg); +} +.flag-icon-cr.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/cr.svg); +} +.flag-icon-cu { + background-image: url(../libs/flag-icon-css/flags/4x3/cu.svg); +} +.flag-icon-cu.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/cu.svg); +} +.flag-icon-cv { + background-image: url(../libs/flag-icon-css/flags/4x3/cv.svg); +} +.flag-icon-cv.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/cv.svg); +} +.flag-icon-cw { + background-image: url(../libs/flag-icon-css/flags/4x3/cw.svg); +} +.flag-icon-cw.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/cw.svg); +} +.flag-icon-cx { + background-image: url(../libs/flag-icon-css/flags/4x3/cx.svg); +} +.flag-icon-cx.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/cx.svg); +} +.flag-icon-cy { + background-image: url(../libs/flag-icon-css/flags/4x3/cy.svg); +} +.flag-icon-cy.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/cy.svg); +} +.flag-icon-cz { + background-image: url(../libs/flag-icon-css/flags/4x3/cz.svg); +} +.flag-icon-cz.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/cz.svg); +} +.flag-icon-de { + background-image: url(../libs/flag-icon-css/flags/4x3/de.svg); +} +.flag-icon-de.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/de.svg); +} +.flag-icon-dj { + background-image: url(../libs/flag-icon-css/flags/4x3/dj.svg); +} +.flag-icon-dj.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/dj.svg); +} +.flag-icon-dk { + background-image: url(../libs/flag-icon-css/flags/4x3/dk.svg); +} +.flag-icon-dk.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/dk.svg); +} +.flag-icon-dm { + background-image: url(../libs/flag-icon-css/flags/4x3/dm.svg); +} +.flag-icon-dm.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/dm.svg); +} +.flag-icon-do { + background-image: url(../libs/flag-icon-css/flags/4x3/do.svg); +} +.flag-icon-do.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/do.svg); +} +.flag-icon-dz { + background-image: url(../libs/flag-icon-css/flags/4x3/dz.svg); +} +.flag-icon-dz.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/dz.svg); +} +.flag-icon-ec { + background-image: url(../libs/flag-icon-css/flags/4x3/ec.svg); +} +.flag-icon-ec.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ec.svg); +} +.flag-icon-ee { + background-image: url(../libs/flag-icon-css/flags/4x3/ee.svg); +} +.flag-icon-ee.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ee.svg); +} +.flag-icon-eg { + background-image: url(../libs/flag-icon-css/flags/4x3/eg.svg); +} +.flag-icon-eg.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/eg.svg); +} +.flag-icon-eh { + background-image: url(../libs/flag-icon-css/flags/4x3/eh.svg); +} +.flag-icon-eh.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/eh.svg); +} +.flag-icon-er { + background-image: url(../libs/flag-icon-css/flags/4x3/er.svg); +} +.flag-icon-er.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/er.svg); +} +.flag-icon-es { + background-image: url(../libs/flag-icon-css/flags/4x3/es.svg); +} +.flag-icon-es.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/es.svg); +} +.flag-icon-et { + background-image: url(../libs/flag-icon-css/flags/4x3/et.svg); +} +.flag-icon-et.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/et.svg); +} +.flag-icon-fi { + background-image: url(../libs/flag-icon-css/flags/4x3/fi.svg); +} +.flag-icon-fi.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/fi.svg); +} +.flag-icon-fj { + background-image: url(../libs/flag-icon-css/flags/4x3/fj.svg); +} +.flag-icon-fj.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/fj.svg); +} +.flag-icon-fk { + background-image: url(../libs/flag-icon-css/flags/4x3/fk.svg); +} +.flag-icon-fk.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/fk.svg); +} +.flag-icon-fm { + background-image: url(../libs/flag-icon-css/flags/4x3/fm.svg); +} +.flag-icon-fm.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/fm.svg); +} +.flag-icon-fo { + background-image: url(../libs/flag-icon-css/flags/4x3/fo.svg); +} +.flag-icon-fo.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/fo.svg); +} +.flag-icon-fr { + background-image: url(../libs/flag-icon-css/flags/4x3/fr.svg); +} +.flag-icon-fr.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/fr.svg); +} +.flag-icon-ga { + background-image: url(../libs/flag-icon-css/flags/4x3/ga.svg); +} +.flag-icon-ga.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ga.svg); +} +.flag-icon-gb { + background-image: url(../libs/flag-icon-css/flags/4x3/gb.svg); +} +.flag-icon-gb.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/gb.svg); +} +.flag-icon-gd { + background-image: url(../libs/flag-icon-css/flags/4x3/gd.svg); +} +.flag-icon-gd.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/gd.svg); +} +.flag-icon-ge { + background-image: url(../libs/flag-icon-css/flags/4x3/ge.svg); +} +.flag-icon-ge.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ge.svg); +} +.flag-icon-gf { + background-image: url(../libs/flag-icon-css/flags/4x3/gf.svg); +} +.flag-icon-gf.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/gf.svg); +} +.flag-icon-gg { + background-image: url(../libs/flag-icon-css/flags/4x3/gg.svg); +} +.flag-icon-gg.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/gg.svg); +} +.flag-icon-gh { + background-image: url(../libs/flag-icon-css/flags/4x3/gh.svg); +} +.flag-icon-gh.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/gh.svg); +} +.flag-icon-gi { + background-image: url(../libs/flag-icon-css/flags/4x3/gi.svg); +} +.flag-icon-gi.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/gi.svg); +} +.flag-icon-gl { + background-image: url(../libs/flag-icon-css/flags/4x3/gl.svg); +} +.flag-icon-gl.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/gl.svg); +} +.flag-icon-gm { + background-image: url(../libs/flag-icon-css/flags/4x3/gm.svg); +} +.flag-icon-gm.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/gm.svg); +} +.flag-icon-gn { + background-image: url(../libs/flag-icon-css/flags/4x3/gn.svg); +} +.flag-icon-gn.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/gn.svg); +} +.flag-icon-gp { + background-image: url(../libs/flag-icon-css/flags/4x3/gp.svg); +} +.flag-icon-gp.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/gp.svg); +} +.flag-icon-gq { + background-image: url(../libs/flag-icon-css/flags/4x3/gq.svg); +} +.flag-icon-gq.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/gq.svg); +} +.flag-icon-gr { + background-image: url(../libs/flag-icon-css/flags/4x3/gr.svg); +} +.flag-icon-gr.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/gr.svg); +} +.flag-icon-gs { + background-image: url(../libs/flag-icon-css/flags/4x3/gs.svg); +} +.flag-icon-gs.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/gs.svg); +} +.flag-icon-gt { + background-image: url(../libs/flag-icon-css/flags/4x3/gt.svg); +} +.flag-icon-gt.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/gt.svg); +} +.flag-icon-gu { + background-image: url(../libs/flag-icon-css/flags/4x3/gu.svg); +} +.flag-icon-gu.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/gu.svg); +} +.flag-icon-gw { + background-image: url(../libs/flag-icon-css/flags/4x3/gw.svg); +} +.flag-icon-gw.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/gw.svg); +} +.flag-icon-gy { + background-image: url(../libs/flag-icon-css/flags/4x3/gy.svg); +} +.flag-icon-gy.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/gy.svg); +} +.flag-icon-hk { + background-image: url(../libs/flag-icon-css/flags/4x3/hk.svg); +} +.flag-icon-hk.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/hk.svg); +} +.flag-icon-hm { + background-image: url(../libs/flag-icon-css/flags/4x3/hm.svg); +} +.flag-icon-hm.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/hm.svg); +} +.flag-icon-hn { + background-image: url(../libs/flag-icon-css/flags/4x3/hn.svg); +} +.flag-icon-hn.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/hn.svg); +} +.flag-icon-hr { + background-image: url(../libs/flag-icon-css/flags/4x3/hr.svg); +} +.flag-icon-hr.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/hr.svg); +} +.flag-icon-ht { + background-image: url(../libs/flag-icon-css/flags/4x3/ht.svg); +} +.flag-icon-ht.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ht.svg); +} +.flag-icon-hu { + background-image: url(../libs/flag-icon-css/flags/4x3/hu.svg); +} +.flag-icon-hu.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/hu.svg); +} +.flag-icon-id { + background-image: url(../libs/flag-icon-css/flags/4x3/id.svg); +} +.flag-icon-id.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/id.svg); +} +.flag-icon-ie { + background-image: url(../libs/flag-icon-css/flags/4x3/ie.svg); +} +.flag-icon-ie.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ie.svg); +} +.flag-icon-il { + background-image: url(../libs/flag-icon-css/flags/4x3/il.svg); +} +.flag-icon-il.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/il.svg); +} +.flag-icon-im { + background-image: url(../libs/flag-icon-css/flags/4x3/im.svg); +} +.flag-icon-im.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/im.svg); +} +.flag-icon-in { + background-image: url(../libs/flag-icon-css/flags/4x3/in.svg); +} +.flag-icon-in.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/in.svg); +} +.flag-icon-io { + background-image: url(../libs/flag-icon-css/flags/4x3/io.svg); +} +.flag-icon-io.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/io.svg); +} +.flag-icon-iq { + background-image: url(../libs/flag-icon-css/flags/4x3/iq.svg); +} +.flag-icon-iq.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/iq.svg); +} +.flag-icon-ir { + background-image: url(../libs/flag-icon-css/flags/4x3/ir.svg); +} +.flag-icon-ir.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ir.svg); +} +.flag-icon-is { + background-image: url(../libs/flag-icon-css/flags/4x3/is.svg); +} +.flag-icon-is.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/is.svg); +} +.flag-icon-it { + background-image: url(../libs/flag-icon-css/flags/4x3/it.svg); +} +.flag-icon-it.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/it.svg); +} +.flag-icon-je { + background-image: url(../libs/flag-icon-css/flags/4x3/je.svg); +} +.flag-icon-je.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/je.svg); +} +.flag-icon-jm { + background-image: url(../libs/flag-icon-css/flags/4x3/jm.svg); +} +.flag-icon-jm.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/jm.svg); +} +.flag-icon-jo { + background-image: url(../libs/flag-icon-css/flags/4x3/jo.svg); +} +.flag-icon-jo.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/jo.svg); +} +.flag-icon-jp { + background-image: url(../libs/flag-icon-css/flags/4x3/jp.svg); +} +.flag-icon-jp.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/jp.svg); +} +.flag-icon-ke { + background-image: url(../libs/flag-icon-css/flags/4x3/ke.svg); +} +.flag-icon-ke.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ke.svg); +} +.flag-icon-kg { + background-image: url(../libs/flag-icon-css/flags/4x3/kg.svg); +} +.flag-icon-kg.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/kg.svg); +} +.flag-icon-kh { + background-image: url(../libs/flag-icon-css/flags/4x3/kh.svg); +} +.flag-icon-kh.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/kh.svg); +} +.flag-icon-ki { + background-image: url(../libs/flag-icon-css/flags/4x3/ki.svg); +} +.flag-icon-ki.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ki.svg); +} +.flag-icon-km { + background-image: url(../libs/flag-icon-css/flags/4x3/km.svg); +} +.flag-icon-km.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/km.svg); +} +.flag-icon-kn { + background-image: url(../libs/flag-icon-css/flags/4x3/kn.svg); +} +.flag-icon-kn.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/kn.svg); +} +.flag-icon-kp { + background-image: url(../libs/flag-icon-css/flags/4x3/kp.svg); +} +.flag-icon-kp.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/kp.svg); +} +.flag-icon-kr { + background-image: url(../libs/flag-icon-css/flags/4x3/kr.svg); +} +.flag-icon-kr.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/kr.svg); +} +.flag-icon-kw { + background-image: url(../libs/flag-icon-css/flags/4x3/kw.svg); +} +.flag-icon-kw.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/kw.svg); +} +.flag-icon-ky { + background-image: url(../libs/flag-icon-css/flags/4x3/ky.svg); +} +.flag-icon-ky.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ky.svg); +} +.flag-icon-kz { + background-image: url(../libs/flag-icon-css/flags/4x3/kz.svg); +} +.flag-icon-kz.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/kz.svg); +} +.flag-icon-la { + background-image: url(../libs/flag-icon-css/flags/4x3/la.svg); +} +.flag-icon-la.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/la.svg); +} +.flag-icon-lb { + background-image: url(../libs/flag-icon-css/flags/4x3/lb.svg); +} +.flag-icon-lb.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/lb.svg); +} +.flag-icon-lc { + background-image: url(../libs/flag-icon-css/flags/4x3/lc.svg); +} +.flag-icon-lc.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/lc.svg); +} +.flag-icon-li { + background-image: url(../libs/flag-icon-css/flags/4x3/li.svg); +} +.flag-icon-li.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/li.svg); +} +.flag-icon-lk { + background-image: url(../libs/flag-icon-css/flags/4x3/lk.svg); +} +.flag-icon-lk.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/lk.svg); +} +.flag-icon-lr { + background-image: url(../libs/flag-icon-css/flags/4x3/lr.svg); +} +.flag-icon-lr.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/lr.svg); +} +.flag-icon-ls { + background-image: url(../libs/flag-icon-css/flags/4x3/ls.svg); +} +.flag-icon-ls.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ls.svg); +} +.flag-icon-lt { + background-image: url(../libs/flag-icon-css/flags/4x3/lt.svg); +} +.flag-icon-lt.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/lt.svg); +} +.flag-icon-lu { + background-image: url(../libs/flag-icon-css/flags/4x3/lu.svg); +} +.flag-icon-lu.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/lu.svg); +} +.flag-icon-lv { + background-image: url(../libs/flag-icon-css/flags/4x3/lv.svg); +} +.flag-icon-lv.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/lv.svg); +} +.flag-icon-ly { + background-image: url(../libs/flag-icon-css/flags/4x3/ly.svg); +} +.flag-icon-ly.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ly.svg); +} +.flag-icon-ma { + background-image: url(../libs/flag-icon-css/flags/4x3/ma.svg); +} +.flag-icon-ma.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ma.svg); +} +.flag-icon-mc { + background-image: url(../libs/flag-icon-css/flags/4x3/mc.svg); +} +.flag-icon-mc.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/mc.svg); +} +.flag-icon-md { + background-image: url(../libs/flag-icon-css/flags/4x3/md.svg); +} +.flag-icon-md.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/md.svg); +} +.flag-icon-me { + background-image: url(../libs/flag-icon-css/flags/4x3/me.svg); +} +.flag-icon-me.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/me.svg); +} +.flag-icon-mf { + background-image: url(../libs/flag-icon-css/flags/4x3/mf.svg); +} +.flag-icon-mf.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/mf.svg); +} +.flag-icon-mg { + background-image: url(../libs/flag-icon-css/flags/4x3/mg.svg); +} +.flag-icon-mg.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/mg.svg); +} +.flag-icon-mh { + background-image: url(../libs/flag-icon-css/flags/4x3/mh.svg); +} +.flag-icon-mh.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/mh.svg); +} +.flag-icon-mk { + background-image: url(../libs/flag-icon-css/flags/4x3/mk.svg); +} +.flag-icon-mk.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/mk.svg); +} +.flag-icon-ml { + background-image: url(../libs/flag-icon-css/flags/4x3/ml.svg); +} +.flag-icon-ml.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ml.svg); +} +.flag-icon-mm { + background-image: url(../libs/flag-icon-css/flags/4x3/mm.svg); +} +.flag-icon-mm.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/mm.svg); +} +.flag-icon-mn { + background-image: url(../libs/flag-icon-css/flags/4x3/mn.svg); +} +.flag-icon-mn.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/mn.svg); +} +.flag-icon-mo { + background-image: url(../libs/flag-icon-css/flags/4x3/mo.svg); +} +.flag-icon-mo.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/mo.svg); +} +.flag-icon-mp { + background-image: url(../libs/flag-icon-css/flags/4x3/mp.svg); +} +.flag-icon-mp.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/mp.svg); +} +.flag-icon-mq { + background-image: url(../libs/flag-icon-css/flags/4x3/mq.svg); +} +.flag-icon-mq.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/mq.svg); +} +.flag-icon-mr { + background-image: url(../libs/flag-icon-css/flags/4x3/mr.svg); +} +.flag-icon-mr.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/mr.svg); +} +.flag-icon-ms { + background-image: url(../libs/flag-icon-css/flags/4x3/ms.svg); +} +.flag-icon-ms.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ms.svg); +} +.flag-icon-mt { + background-image: url(../libs/flag-icon-css/flags/4x3/mt.svg); +} +.flag-icon-mt.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/mt.svg); +} +.flag-icon-mu { + background-image: url(../libs/flag-icon-css/flags/4x3/mu.svg); +} +.flag-icon-mu.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/mu.svg); +} +.flag-icon-mv { + background-image: url(../libs/flag-icon-css/flags/4x3/mv.svg); +} +.flag-icon-mv.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/mv.svg); +} +.flag-icon-mw { + background-image: url(../libs/flag-icon-css/flags/4x3/mw.svg); +} +.flag-icon-mw.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/mw.svg); +} +.flag-icon-mx { + background-image: url(../libs/flag-icon-css/flags/4x3/mx.svg); +} +.flag-icon-mx.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/mx.svg); +} +.flag-icon-my { + background-image: url(../libs/flag-icon-css/flags/4x3/my.svg); +} +.flag-icon-my.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/my.svg); +} +.flag-icon-mz { + background-image: url(../libs/flag-icon-css/flags/4x3/mz.svg); +} +.flag-icon-mz.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/mz.svg); +} +.flag-icon-na { + background-image: url(../libs/flag-icon-css/flags/4x3/na.svg); +} +.flag-icon-na.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/na.svg); +} +.flag-icon-nc { + background-image: url(../libs/flag-icon-css/flags/4x3/nc.svg); +} +.flag-icon-nc.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/nc.svg); +} +.flag-icon-ne { + background-image: url(../libs/flag-icon-css/flags/4x3/ne.svg); +} +.flag-icon-ne.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ne.svg); +} +.flag-icon-nf { + background-image: url(../libs/flag-icon-css/flags/4x3/nf.svg); +} +.flag-icon-nf.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/nf.svg); +} +.flag-icon-ng { + background-image: url(../libs/flag-icon-css/flags/4x3/ng.svg); +} +.flag-icon-ng.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ng.svg); +} +.flag-icon-ni { + background-image: url(../libs/flag-icon-css/flags/4x3/ni.svg); +} +.flag-icon-ni.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ni.svg); +} +.flag-icon-nl { + background-image: url(../libs/flag-icon-css/flags/4x3/nl.svg); +} +.flag-icon-nl.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/nl.svg); +} +.flag-icon-no { + background-image: url(../libs/flag-icon-css/flags/4x3/no.svg); +} +.flag-icon-no.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/no.svg); +} +.flag-icon-np { + background-image: url(../libs/flag-icon-css/flags/4x3/np.svg); +} +.flag-icon-np.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/np.svg); +} +.flag-icon-nr { + background-image: url(../libs/flag-icon-css/flags/4x3/nr.svg); +} +.flag-icon-nr.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/nr.svg); +} +.flag-icon-nu { + background-image: url(../libs/flag-icon-css/flags/4x3/nu.svg); +} +.flag-icon-nu.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/nu.svg); +} +.flag-icon-nz { + background-image: url(../libs/flag-icon-css/flags/4x3/nz.svg); +} +.flag-icon-nz.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/nz.svg); +} +.flag-icon-om { + background-image: url(../libs/flag-icon-css/flags/4x3/om.svg); +} +.flag-icon-om.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/om.svg); +} +.flag-icon-pa { + background-image: url(../libs/flag-icon-css/flags/4x3/pa.svg); +} +.flag-icon-pa.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/pa.svg); +} +.flag-icon-pe { + background-image: url(../libs/flag-icon-css/flags/4x3/pe.svg); +} +.flag-icon-pe.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/pe.svg); +} +.flag-icon-pf { + background-image: url(../libs/flag-icon-css/flags/4x3/pf.svg); +} +.flag-icon-pf.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/pf.svg); +} +.flag-icon-pg { + background-image: url(../libs/flag-icon-css/flags/4x3/pg.svg); +} +.flag-icon-pg.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/pg.svg); +} +.flag-icon-ph { + background-image: url(../libs/flag-icon-css/flags/4x3/ph.svg); +} +.flag-icon-ph.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ph.svg); +} +.flag-icon-pk { + background-image: url(../libs/flag-icon-css/flags/4x3/pk.svg); +} +.flag-icon-pk.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/pk.svg); +} +.flag-icon-pl { + background-image: url(../libs/flag-icon-css/flags/4x3/pl.svg); +} +.flag-icon-pl.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/pl.svg); +} +.flag-icon-pm { + background-image: url(../libs/flag-icon-css/flags/4x3/pm.svg); +} +.flag-icon-pm.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/pm.svg); +} +.flag-icon-pn { + background-image: url(../libs/flag-icon-css/flags/4x3/pn.svg); +} +.flag-icon-pn.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/pn.svg); +} +.flag-icon-pr { + background-image: url(../libs/flag-icon-css/flags/4x3/pr.svg); +} +.flag-icon-pr.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/pr.svg); +} +.flag-icon-ps { + background-image: url(../libs/flag-icon-css/flags/4x3/ps.svg); +} +.flag-icon-ps.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ps.svg); +} +.flag-icon-pt { + background-image: url(../libs/flag-icon-css/flags/4x3/pt.svg); +} +.flag-icon-pt.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/pt.svg); +} +.flag-icon-pw { + background-image: url(../libs/flag-icon-css/flags/4x3/pw.svg); +} +.flag-icon-pw.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/pw.svg); +} +.flag-icon-py { + background-image: url(../libs/flag-icon-css/flags/4x3/py.svg); +} +.flag-icon-py.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/py.svg); +} +.flag-icon-qa { + background-image: url(../libs/flag-icon-css/flags/4x3/qa.svg); +} +.flag-icon-qa.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/qa.svg); +} +.flag-icon-re { + background-image: url(../libs/flag-icon-css/flags/4x3/re.svg); +} +.flag-icon-re.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/re.svg); +} +.flag-icon-ro { + background-image: url(../libs/flag-icon-css/flags/4x3/ro.svg); +} +.flag-icon-ro.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ro.svg); +} +.flag-icon-rs { + background-image: url(../libs/flag-icon-css/flags/4x3/rs.svg); +} +.flag-icon-rs.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/rs.svg); +} +.flag-icon-ru { + background-image: url(../libs/flag-icon-css/flags/4x3/ru.svg); +} +.flag-icon-ru.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ru.svg); +} +.flag-icon-rw { + background-image: url(../libs/flag-icon-css/flags/4x3/rw.svg); +} +.flag-icon-rw.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/rw.svg); +} +.flag-icon-sa { + background-image: url(../libs/flag-icon-css/flags/4x3/sa.svg); +} +.flag-icon-sa.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/sa.svg); +} +.flag-icon-sb { + background-image: url(../libs/flag-icon-css/flags/4x3/sb.svg); +} +.flag-icon-sb.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/sb.svg); +} +.flag-icon-sc { + background-image: url(../libs/flag-icon-css/flags/4x3/sc.svg); +} +.flag-icon-sc.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/sc.svg); +} +.flag-icon-sd { + background-image: url(../libs/flag-icon-css/flags/4x3/sd.svg); +} +.flag-icon-sd.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/sd.svg); +} +.flag-icon-se { + background-image: url(../libs/flag-icon-css/flags/4x3/se.svg); +} +.flag-icon-se.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/se.svg); +} +.flag-icon-sg { + background-image: url(../libs/flag-icon-css/flags/4x3/sg.svg); +} +.flag-icon-sg.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/sg.svg); +} +.flag-icon-sh { + background-image: url(../libs/flag-icon-css/flags/4x3/sh.svg); +} +.flag-icon-sh.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/sh.svg); +} +.flag-icon-si { + background-image: url(../libs/flag-icon-css/flags/4x3/si.svg); +} +.flag-icon-si.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/si.svg); +} +.flag-icon-sj { + background-image: url(../libs/flag-icon-css/flags/4x3/sj.svg); +} +.flag-icon-sj.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/sj.svg); +} +.flag-icon-sk { + background-image: url(../libs/flag-icon-css/flags/4x3/sk.svg); +} +.flag-icon-sk.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/sk.svg); +} +.flag-icon-sl { + background-image: url(../libs/flag-icon-css/flags/4x3/sl.svg); +} +.flag-icon-sl.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/sl.svg); +} +.flag-icon-sm { + background-image: url(../libs/flag-icon-css/flags/4x3/sm.svg); +} +.flag-icon-sm.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/sm.svg); +} +.flag-icon-sn { + background-image: url(../libs/flag-icon-css/flags/4x3/sn.svg); +} +.flag-icon-sn.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/sn.svg); +} +.flag-icon-so { + background-image: url(../libs/flag-icon-css/flags/4x3/so.svg); +} +.flag-icon-so.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/so.svg); +} +.flag-icon-sr { + background-image: url(../libs/flag-icon-css/flags/4x3/sr.svg); +} +.flag-icon-sr.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/sr.svg); +} +.flag-icon-ss { + background-image: url(../libs/flag-icon-css/flags/4x3/ss.svg); +} +.flag-icon-ss.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ss.svg); +} +.flag-icon-st { + background-image: url(../libs/flag-icon-css/flags/4x3/st.svg); +} +.flag-icon-st.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/st.svg); +} +.flag-icon-sv { + background-image: url(../libs/flag-icon-css/flags/4x3/sv.svg); +} +.flag-icon-sv.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/sv.svg); +} +.flag-icon-sx { + background-image: url(../libs/flag-icon-css/flags/4x3/sx.svg); +} +.flag-icon-sx.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/sx.svg); +} +.flag-icon-sy { + background-image: url(../libs/flag-icon-css/flags/4x3/sy.svg); +} +.flag-icon-sy.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/sy.svg); +} +.flag-icon-sz { + background-image: url(../libs/flag-icon-css/flags/4x3/sz.svg); +} +.flag-icon-sz.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/sz.svg); +} +.flag-icon-tc { + background-image: url(../libs/flag-icon-css/flags/4x3/tc.svg); +} +.flag-icon-tc.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/tc.svg); +} +.flag-icon-td { + background-image: url(../libs/flag-icon-css/flags/4x3/td.svg); +} +.flag-icon-td.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/td.svg); +} +.flag-icon-tf { + background-image: url(../libs/flag-icon-css/flags/4x3/tf.svg); +} +.flag-icon-tf.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/tf.svg); +} +.flag-icon-tg { + background-image: url(../libs/flag-icon-css/flags/4x3/tg.svg); +} +.flag-icon-tg.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/tg.svg); +} +.flag-icon-th { + background-image: url(../libs/flag-icon-css/flags/4x3/th.svg); +} +.flag-icon-th.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/th.svg); +} +.flag-icon-tj { + background-image: url(../libs/flag-icon-css/flags/4x3/tj.svg); +} +.flag-icon-tj.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/tj.svg); +} +.flag-icon-tk { + background-image: url(../libs/flag-icon-css/flags/4x3/tk.svg); +} +.flag-icon-tk.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/tk.svg); +} +.flag-icon-tl { + background-image: url(../libs/flag-icon-css/flags/4x3/tl.svg); +} +.flag-icon-tl.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/tl.svg); +} +.flag-icon-tm { + background-image: url(../libs/flag-icon-css/flags/4x3/tm.svg); +} +.flag-icon-tm.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/tm.svg); +} +.flag-icon-tn { + background-image: url(../libs/flag-icon-css/flags/4x3/tn.svg); +} +.flag-icon-tn.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/tn.svg); +} +.flag-icon-to { + background-image: url(../libs/flag-icon-css/flags/4x3/to.svg); +} +.flag-icon-to.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/to.svg); +} +.flag-icon-tr { + background-image: url(../libs/flag-icon-css/flags/4x3/tr.svg); +} +.flag-icon-tr.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/tr.svg); +} +.flag-icon-tt { + background-image: url(../libs/flag-icon-css/flags/4x3/tt.svg); +} +.flag-icon-tt.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/tt.svg); +} +.flag-icon-tv { + background-image: url(../libs/flag-icon-css/flags/4x3/tv.svg); +} +.flag-icon-tv.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/tv.svg); +} +.flag-icon-tw { + background-image: url(../libs/flag-icon-css/flags/4x3/tw.svg); +} +.flag-icon-tw.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/tw.svg); +} +.flag-icon-tz { + background-image: url(../libs/flag-icon-css/flags/4x3/tz.svg); +} +.flag-icon-tz.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/tz.svg); +} +.flag-icon-ua { + background-image: url(../libs/flag-icon-css/flags/4x3/ua.svg); +} +.flag-icon-ua.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ua.svg); +} +.flag-icon-ug { + background-image: url(../libs/flag-icon-css/flags/4x3/ug.svg); +} +.flag-icon-ug.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ug.svg); +} +.flag-icon-um { + background-image: url(../libs/flag-icon-css/flags/4x3/um.svg); +} +.flag-icon-um.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/um.svg); +} +.flag-icon-us { + background-image: url(../libs/flag-icon-css/flags/4x3/us.svg); +} +.flag-icon-us.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/us.svg); +} +.flag-icon-uy { + background-image: url(../libs/flag-icon-css/flags/4x3/uy.svg); +} +.flag-icon-uy.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/uy.svg); +} +.flag-icon-uz { + background-image: url(../libs/flag-icon-css/flags/4x3/uz.svg); +} +.flag-icon-uz.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/uz.svg); +} +.flag-icon-va { + background-image: url(../libs/flag-icon-css/flags/4x3/va.svg); +} +.flag-icon-va.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/va.svg); +} +.flag-icon-vc { + background-image: url(../libs/flag-icon-css/flags/4x3/vc.svg); +} +.flag-icon-vc.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/vc.svg); +} +.flag-icon-ve { + background-image: url(../libs/flag-icon-css/flags/4x3/ve.svg); +} +.flag-icon-ve.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ve.svg); +} +.flag-icon-vg { + background-image: url(../libs/flag-icon-css/flags/4x3/vg.svg); +} +.flag-icon-vg.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/vg.svg); +} +.flag-icon-vi { + background-image: url(../libs/flag-icon-css/flags/4x3/vi.svg); +} +.flag-icon-vi.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/vi.svg); +} +.flag-icon-vn { + background-image: url(../libs/flag-icon-css/flags/4x3/vn.svg); +} +.flag-icon-vn.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/vn.svg); +} +.flag-icon-vu { + background-image: url(../libs/flag-icon-css/flags/4x3/vu.svg); +} +.flag-icon-vu.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/vu.svg); +} +.flag-icon-wf { + background-image: url(../libs/flag-icon-css/flags/4x3/wf.svg); +} +.flag-icon-wf.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/wf.svg); +} +.flag-icon-ws { + background-image: url(../libs/flag-icon-css/flags/4x3/ws.svg); +} +.flag-icon-ws.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ws.svg); +} +.flag-icon-ye { + background-image: url(../libs/flag-icon-css/flags/4x3/ye.svg); +} +.flag-icon-ye.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/ye.svg); +} +.flag-icon-yt { + background-image: url(../libs/flag-icon-css/flags/4x3/yt.svg); +} +.flag-icon-yt.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/yt.svg); +} +.flag-icon-za { + background-image: url(../libs/flag-icon-css/flags/4x3/za.svg); +} +.flag-icon-za.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/za.svg); +} +.flag-icon-zm { + background-image: url(../libs/flag-icon-css/flags/4x3/zm.svg); +} +.flag-icon-zm.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/zm.svg); +} +.flag-icon-zw { + background-image: url(../libs/flag-icon-css/flags/4x3/zw.svg); +} +.flag-icon-zw.flag-icon-squared { + background-image: url(../libs/flag-icon-css/flags/1x1/zw.svg); +} diff --git a/votes/models.py b/votes/models.py index 2d92861..d850ae2 100644 --- a/votes/models.py +++ b/votes/models.py @@ -23,9 +23,9 @@ from django.utils.functional import cached_property from django.db.models.signals import post_save from django.dispatch import receiver -from representatives.models import Representative +# from representatives.models import Representative from representatives_votes.models import Vote, Proposal, Dossier -from legislature.models import MemopolRepresentative +# from legislature.models import MemopolRepresentative from core.utils import create_child_instance_from_parent @@ -72,3 +72,23 @@ class MemopolDossier(Dossier): @receiver(post_save, sender=Dossier) def create_memopolrepresentative_from_representative(instance, **kwargs): create_child_instance_from_parent(MemopolDossier, instance) + + +class MemopolVote(Vote): + class Meta: + proxy = True + + @cached_property + def absolute_score(self): + if self.proposal.recommendation: + recommendation = self.proposal.recommendation + weight = recommendation.weight + if (self.position == 'abstain' or + recommendation.recommendation == 'abstain'): + weight = weight / 2 + if self.position == recommendation.recommendation: + return weight + else: + return -weight + else: + return 0 diff --git a/votes/templates/votes/dossier_index.haml b/votes/templates/votes/dossier_index.haml index b915777..8d9b5e2 100644 --- a/votes/templates/votes/dossier_index.haml +++ b/votes/templates/votes/dossier_index.haml @@ -9,7 +9,7 @@ - for dossier in object_list %tr %td - %a{'href': "{% url 'votes:dossier_detail' pk=dossier.id %}"} + %a{'href': "{% url 'votes:dossier-detail' pk=dossier.id %}"} {{ dossier.name }} %td= dossier.reference %td= dossier.proposals.count -- GitLab