Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into pdf
Browse files Browse the repository at this point in the history
  • Loading branch information
longhotsummer committed Aug 14, 2023
2 parents 18acb18 + a6ca940 commit 0496951
Show file tree
Hide file tree
Showing 33 changed files with 682 additions and 180 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,7 @@ jobs:
with:
fetch-depth: 0

- name: git push to obl.laws.africa
- name: git push to openbylaws.org.za
uses: dokku/github-action@master
with:
ssh_private_key: ${{ secrets.SSH_DEPLOYMENT_KEY }}
Expand Down
100 changes: 100 additions & 0 deletions africanlii/constants.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
LIIS = [
{
"name": "EswatiniLII",
"country": "Eswatini",
"url": "https://eswatinilii.org",
"logo": "images/liis/eswatinilii.png",
"domain": "eswatinilii.org",
},
{
"name": "GhaLII",
"country": "Ghana",
"url": "https://ghalii.org",
"logo": "images/liis/ghalii.png",
"domain": "ghalii.org",
},
{
"name": "Kenya Law",
"country": "Kenya",
"url": "http://kenyalaw.org",
"logo": "images/liis/kenyalaw.png",
"domain": "kenyalaw.org",
},
{
"name": "LesothoLII",
"country": "Lesotho",
"url": "https://lesotholii.org",
"logo": "images/liis/lesotholii.png",
"domain": "lesotholii.org",
},
{
"name": "MalawiLII",
"country": "Malawi",
"url": "https://malawilii.org",
"logo": "images/liis/malawilii.png",
"domain": "malawilii.org",
},
{
"name": "NamibLII",
"country": "Namibia",
"url": "https://namiblii.org",
"logo": "images/liis/namiblii.png",
"domain": "namiblii.org",
},
{
"name": "SierraLII",
"country": "Sierra Leone",
"url": "https://sierralii.org",
"logo": "images/liis/sierralii.png",
"domain": "sierralii.org",
},
{
"name": "SeyLII",
"country": "Seychelles",
"url": "https://seylii.org",
"logo": "images/liis/seylii.png",
"domain": "seylii.org",
},
{
"name": "LawLibrary",
"country": "South Africa",
"url": "https://lawlibrary.org.za",
"logo": "images/liis/lawlibrary.png",
"domain": "lawlibrary.org.za",
},
{
"name": "TanzLII",
"country": "Tanzania",
"url": "https://tanzlii.org",
"logo": "images/liis/tanzlii.png",
"domain": "tanzlii.org",
},
{
"name": "ULII",
"country": "Uganda",
"url": "https://ulii.org",
"logo": "images/liis/ulii.png",
"domain": "ulii.org",
},
{
"name": "ZambiaLII",
"country": "Zambia",
"url": "https://zambialii.org",
"logo": "images/liis/zambialii.png",
"domain": "zambialii.org",
},
{
"name": "ZanzibarLII",
"country": "Zanzibar",
"url": "https://zanzibarlii.org",
"logo": "images/liis/zanzibarlii.png",
"domain": "zanzibarlii.org",
},
{
"name": "ZimLII",
"country": "Zimbabwe",
"url": "https://zimlii.org",
"logo": "images/liis/zimlii.png",
"domain": "zimlii.org",
},
]
83 changes: 58 additions & 25 deletions africanlii/resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,41 +3,74 @@

from africanlii.models import Ratification, RatificationCountry
from peachjam.models import Work
from peachjam.resources import ForeignKeyRequiredWidget


class RatificationField(widgets.ForeignKeyWidget):
def clean(self, value, row=None, *args, **kwargs):
if not value:
raise ValueError("work frbr_uri is required")
work = Work.objects.filter(frbr_uri=value).first()
if not work:
raise ValueError(f'work with frbr_uri "{value}" not found')
ratification = Ratification.objects.update_or_create(
work=work,
defaults={
"source_url": row.get("source_url"),
"last_updated": row.get("last_updated"),
},
)[0]
return ratification


class CountryField(widgets.ForeignKeyWidget):
def clean(self, value, row=None, *args, **kwargs):
if not value:
raise ValueError("country code is required")
country = Country.objects.filter(iso=value.upper()).first()
if not country:
raise ValueError(f'country with iso "{value}" not found')
return country


class RatificationResource(resources.ModelResource):
work = fields.Field(
column_name="work",
attribute="work",
widget=ForeignKeyRequiredWidget(Work, field="frbr_uri"),
attribute="ratification",
widget=RatificationField(Ratification, field="work__frbr_uri"),
)
country = fields.Field(
attribute="country",
column_name="country",
widget=CountryField(Country, field="name"),
)
country = fields.Field(column_name="country", widget=widgets.CharWidget)
ratification_date = fields.Field(
column_name="ratification_date", widget=widgets.DateWidget
attribute="ratification_date",
column_name="ratification_date",
widget=widgets.DateWidget(),
)
deposit_date = fields.Field(
attribute="deposit_date",
column_name="deposit_date",
widget=widgets.DateWidget(),
)
deposit_date = fields.Field(column_name="deposit_date", widget=widgets.DateWidget)
signature_date = fields.Field(
column_name="signature_date", widget=widgets.DateWidget
attribute="signature_date",
column_name="signature_date",
widget=widgets.DateWidget(),
)
source_url = fields.Field(
attribute="source_url", column_name="source_url", widget=widgets.CharWidget()
)
last_updated = fields.Field(
attribute="last_updated",
column_name="last_updated",
widget=widgets.DateWidget(),
)

class Meta:
model = Ratification
exclude = ("id",)
import_id_fields = ("work",)

def before_import_row(self, row, row_number=None, **kwargs):
country_code = row.get("country")
row["country"] = Country.objects.filter(iso__iexact=country_code).first()
if not row["country"]:
raise ValueError(f'country with code "{country_code}" not found')

def after_import_row(self, row, row_result, row_number=None, **kwargs):
r = RatificationCountry(
ratification=Ratification.objects.get(pk=row_result.object_id),
country=row.get("country"),
ratification_date=row.get("ratification_date"),
signature_date=row.get("signature_date"),
deposit_date=row.get("deposit_date"),
model = RatificationCountry
exclude = ("id", "ratification")
import_id_fields = (
"work",
"country",
)
r.save()
13 changes: 13 additions & 0 deletions africanlii/templates/africanlii/_lii_info.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{% load i18n %}
{% for lii in liis %}
{% if lii.country == member_state.country.name %}
<div>
{% blocktrans trimmed with lii_name=lii.name %}
Visit {{ lii_name }} for more legal information.
{% endblocktrans %}
</div>
<div>
<a href="{{ lii.url }}" target="_blank">{{ lii.domain }}</a>
</div>
{% endif %}
{% endfor %}
29 changes: 18 additions & 11 deletions africanlii/templates/africanlii/au_detail_page.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{% extends "peachjam/layouts/main.html" %}
{% load i18n %}
{% load static i18n %}
{% block title %}
{% trans 'African Union (AU)' %}
{% endblock %}
Expand Down Expand Up @@ -75,16 +75,23 @@ <h3 class="mb-4 heading-underlined" id="au-institutions">{% trans 'African Union
</section>
<section class="container">
<div class="row">
<div class="col-sm-12">
<h3 class="mb-4 heading-underlined" id="member-states">{% trans 'Member States' %}</h3>
<ul class="list-unstyled">
{% for member_state in member_states %}
<li>
<a href="{% url 'member_state_detail_view' member_state.country.iso %}">{{ member_state.country }}</a>
</li>
{% endfor %}
</ul>
</div>
<h3 class="mb-4 heading-underlined" id="member-states">{% trans 'Member States' %}</h3>
{% for member_state in member_states %}
<div class="col-6 col-md-4 col-lg-3">
<div class="card lii-card mb-3">
<div class="card-body">
<img src="{% static 'lib/flag-icons/flags/4x3/'|add:member_state.country.iso|lower|add:".svg" %}"
alt="{{ member_state.name }}"
class="mb-3"/>
<h5 class="card-title">
<a href="{% url 'member_state_detail_view' member_state.country.iso %}"
target="_blank">{{ member_state.country }}</a>
</h5>
{% include 'africanlii/_lii_info.html' %}
</div>
</div>
</div>
{% endfor %}
</div>
</section>
{% endblock %}
1 change: 1 addition & 0 deletions africanlii/templates/africanlii/member_state_detail.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
{% endblock %}
{% block page-header %}
<h1 class="mt-4">{{ member_state }}</h1>
{% include 'africanlii/_lii_info.html' %}
{% include 'peachjam/_document_count.html' %}
{% endblock %}
{% block page-list-facets %}{% endblock %}
Expand Down
3 changes: 3 additions & 0 deletions africanlii/views/au.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from django.shortcuts import get_object_or_404
from django.views.generic import DetailView, TemplateView

from africanlii.constants import LIIS
from africanlii.models import (
AfricanUnionInstitution,
AfricanUnionOrgan,
Expand All @@ -27,6 +28,7 @@ def get_context_data(self, **kwargs):
context["au_institutions"] = AfricanUnionInstitution.objects.prefetch_related(
"author"
)
context["liis"] = LIIS
return context


Expand Down Expand Up @@ -67,5 +69,6 @@ def get_context_data(self, **kwargs):
country=self.get_object().country
)
context["doc_count"] = ratification_countries.count()
context["liis"] = LIIS

return context
90 changes: 2 additions & 88 deletions africanlii/views/home.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from django.utils.translation import get_language_from_request

from africanlii.constants import LIIS
from africanlii.models import (
AfricanUnionInstitution,
AfricanUnionOrgan,
Expand Down Expand Up @@ -39,94 +40,7 @@ def get_context_data(self, **kwargs):
context["taxonomies"] = Taxonomy.get_tree()
context["court_classes"] = CourtClass.objects.prefetch_related("courts")

context["liis"] = [
{
"name": "EswatiniLII",
"country": "Eswatini",
"url": "https://eswatinilii.org",
"logo": "images/liis/eswatinilii.png",
},
{
"name": "GhaLII",
"country": "Ghana",
"url": "https://ghalii.org",
"logo": "images/liis/ghalii.png",
},
{
"name": "Kenya Law",
"country": "Kenya",
"url": "http://kenyalaw.org",
"logo": "images/liis/kenyalaw.png",
},
{
"name": "LesothoLII",
"country": "Lesotho",
"url": "https://lesotholii.org",
"logo": "images/liis/lesotholii.png",
},
{
"name": "MalawiLII",
"country": "Malawi",
"url": "https://malawilii.org",
"logo": "images/liis/malawilii.png",
},
{
"name": "NamibLII",
"country": "Namibia",
"url": "https://namiblii.org",
"logo": "images/liis/namiblii.png",
},
{
"name": "SierraLII",
"country": "Sierra Leone",
"url": "https://sierralii.org",
"logo": "images/liis/sierralii.png",
},
{
"name": "SeyLII",
"country": "Seychelles",
"url": "https://seylii.org",
"logo": "images/liis/seylii.png",
},
{
"name": "LawLibrary",
"country": "South Africa",
"url": "https://lawlibrary.org.za",
"logo": "images/liis/lawlibrary.png",
},
{
"name": "TanzLII",
"country": "Tanzania",
"url": "https://tanzlii.org",
"logo": "images/liis/tanzlii.png",
},
{
"name": "ULII",
"country": "Uganda",
"url": "https://ulii.org",
"logo": "images/liis/ulii.png",
},
{
"name": "ZambiaLII",
"country": "Zambia",
"url": "https://zambialii.org",
"logo": "images/liis/zambialii.png",
},
{
"name": "ZanzibarLII",
"country": "Zanzibar",
"url": "https://zanzibarlii.org",
"logo": "images/liis/zanzibarlii.png",
},
{
"name": "ZimLII",
"country": "Zimbabwe",
"url": "https://zimlii.org",
"logo": "images/liis/zimlii.png",
},
]
for lii in context["liis"]:
lii["domain"] = lii["url"].split("/", 3)[2]
context["liis"] = LIIS

# check user's preferred language
current_language = get_language_from_request(self.request)
Expand Down
Loading

0 comments on commit 0496951

Please sign in to comment.