fccn / nau-richie-site-factory

Site factory to build NAU web sites based on https://github.com/openfun/richie
https://www.nau.edu.pt/
GNU Affero General Public License v3.0
0 stars 1 forks source link

Add new logos to Richie's Footer #238

Closed sandroscosta closed 3 months ago

sandroscosta commented 4 months ago

With the identity changes in course, we need to update our footer to have two new logos on a second row.

Image

FCCN logo

Image

República Portuguesa logo

Image

sandroscosta commented 4 months ago

Needs additional testing for mobile media queries.

igobranco commented 3 months ago

During the deployment of the STAGE environment, the site didn't start ok. Nevertheless, I removed manually the duplicate information from a Python script on the shell and the site recovers:

Stack trace:

2024-06-21T15:01:27.854950993+01:00 During handling of the above exception, another exception occurred:
2024-06-21T15:01:27.854960501+01:00
2024-06-21T15:01:27.854971051+01:00 Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/gunicorn/workers/sync.py", line 135, in handle
  self.handle_request(listener, req, client, addr)
File "/usr/local/lib/python3.11/site-packages/gunicorn/workers/sync.py", line 178, in handle_request
  respiter = self.wsgi(environ, resp.start_response)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/core/handlers/wsgi.py", line 124, in __call__
  response = self.get_response(request)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/core/handlers/base.py", line 140, in get_response
  response = self._middleware_chain(request)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/core/handlers/exception.py", line 57, in inner
  response = response_for_exception(request, exc)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/core/handlers/exception.py", line 140, in response_for_exception
  response = handle_uncaught_exception(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/core/handlers/exception.py", line 185, in handle_uncaught_exception
  return callback(request)
         ^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/richie/apps/core/views/error.py", line 67, in error_500_view_handler
  return error_view_handler(request, exception, 500)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/richie/apps/core/views/error.py", line 37, in error_view_handler
  return render(
         ^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/shortcuts.py", line 24, in render
  content = loader.render_to_string(template_name, context, request, using=using)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/loader.py", line 62, in render_to_string
  return template.render(context, request)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/backends/django.py", line 61, in render
  return self.template.render(context)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 175, in render
  return self._render(context)
         ^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 167, in _render
  return self.nodelist.render(context)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 1005, in render
  return SafeString("".join([node.render_annotated(context) for node in self]))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
  return SafeString("".join([node.render_annotated(context) for node in self]))
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
  return self.render(context)
         ^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/loader_tags.py", line 157, in render
  return compiled_parent._render(context)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 167, in _render
  return self.nodelist.render(context)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 1005, in render
  return SafeString("".join([node.render_annotated(context) for node in self]))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
  return SafeString("".join([node.render_annotated(context) for node in self]))
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
  return self.render(context)
         ^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/loader_tags.py", line 157, in render
  return compiled_parent._render(context)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 167, in _render
  return self.nodelist.render(context)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 1005, in render
  return SafeString("".join([node.render_annotated(context) for node in self]))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
  return SafeString("".join([node.render_annotated(context) for node in self]))
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
  return self.render(context)
         ^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/classytags/core.py", line 142, in render
  return str(self.render_tag(context, **kwargs))
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sekizai/templatetags/sekizai_tags.py", line 87, in render_tag
  rendered_contents = nodelist.render(context)
                      ^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 1005, in render
  return SafeString("".join([node.render_annotated(context) for node in self]))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
  return SafeString("".join([node.render_annotated(context) for node in self]))
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
  return self.render(context)
         ^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/classytags/core.py", line 142, in render
  return str(self.render_tag(context, **kwargs))
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/cms/templatetags/cms_tags.py", line 433, in render_tag
  return nodelist.render(context)
         ^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 1005, in render
  return SafeString("".join([node.render_annotated(context) for node in self]))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
  return SafeString("".join([node.render_annotated(context) for node in self]))
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
  return self.render(context)
         ^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/loader_tags.py", line 63, in render
  result = block.nodelist.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 1005, in render
  return SafeString("".join([node.render_annotated(context) for node in self]))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
  return SafeString("".join([node.render_annotated(context) for node in self]))
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
  return self.render(context)
         ^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/loader_tags.py", line 208, in render
  return template.render(context)
         ^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 177, in render
  return self._render(context)
         ^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 167, in _render
  return self.nodelist.render(context)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 1005, in render
  return SafeString("".join([node.render_annotated(context) for node in self]))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
  return SafeString("".join([node.render_annotated(context) for node in self]))
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
  return self.render(context)
         ^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/loader_tags.py", line 54, in render
  result = self.nodelist.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 1005, in render
  return SafeString("".join([node.render_annotated(context) for node in self]))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
  return SafeString("".join([node.render_annotated(context) for node in self]))
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
  return self.render(context)
         ^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/classytags/core.py", line 142, in render
  return str(self.render_tag(context, **kwargs))
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/cms/templatetags/cms_tags.py", line 869, in render_tag
  static_placeholder = StaticPlaceholder.objects.get_or_create(**kwargs)[0]
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/models/manager.py", line 87, in manager_method
  return getattr(self.get_queryset(), name)(*args, **kwargs)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/models/query.py", line 916, in get_or_create
  return self.get(**kwargs), False
         ^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/models/query.py", line 640, in get
  raise self.model.MultipleObjectsReturned(2024-06-21T15:01:27.857779245+01:00 cms.models.static_placeholder.StaticPlaceholder.MultipleObjectsReturned: get() returned more than one StaticPlaceholder -- it returned 2!

Python script that fixed the issue:

>>> from cms.models.static_placeholder import StaticPlaceholder
>>> StaticPlaceholder.objects.all()
<QuerySet [<StaticPlaceholder: footer>, <StaticPlaceholder: static_blogpost_headline>, <StaticPlaceholder: footer-support-entities>, <StaticPlaceholder: logos>, <StaticPlaceholder: logos>]>
>>> StaticPlaceholder.objects.last().delete()

FYI @sandroscosta

igobranco commented 3 months ago

The deployment of this change on DEV using Kubernetes was ok.

igobranco commented 3 months ago

The original logos: