diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-12-07 15:15:20 +0100 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-12-12 12:23:20 +0100 | 
| commit | 3415975a9974f1892d8c70c2a675c550b9af6737 (patch) | |
| tree | 97c52da4d0e79901a77254c809b5754e5eca63d3 | |
| parent | dd56c0880afc6a9246d7a598fc3e24c2d89aea83 (diff) | |
| download | Ishtar-3415975a9974f1892d8c70c2a675c550b9af6737.tar.bz2 Ishtar-3415975a9974f1892d8c70c2a675c550b9af6737.zip | |
Improve login page - force BS field attribute
| -rw-r--r-- | ishtar_common/templates/blocks/bs_field_snippet.html | 4 | ||||
| -rw-r--r-- | ishtar_common/templates/registration/login.html | 4 | ||||
| -rw-r--r-- | ishtar_common/templatetags/ishtar_helpers.py | 25 | 
3 files changed, 28 insertions, 5 deletions
| diff --git a/ishtar_common/templates/blocks/bs_field_snippet.html b/ishtar_common/templates/blocks/bs_field_snippet.html index d060e7b6a..07e6a5897 100644 --- a/ishtar_common/templates/blocks/bs_field_snippet.html +++ b/ishtar_common/templates/blocks/bs_field_snippet.html @@ -1,4 +1,4 @@ -{% load i18n %} +{% load i18n ishtar_helpers %}      <div id="main_div-{{field.auto_id}}" class="form-group{% if not field.label %} no-label{% endif %} {% if field.field.widget.attrs.bs_col_width %}{{field.field.widget.attrs.bs_col_width}}{% elif bs_col_width %}{{bs_col_width}}{% else %}{% if field.field.widget.attrs.cols or force_large_col %}col-lg-12{% else %}col-lg-6{% endif %}{% endif %}{% if field.errors %} is-invalid{% endif %}{% if field.field.required %} required{% endif %}{% if force_large_col %} full-width{% endif %}"           data-alt-name="{{field.field.alt_name}}">          {% if field.label %}{{ field.label_tag }}{% endif %} @@ -10,7 +10,7 @@          {% if field.help_text or field.field.unit %}          <div class="input-group">          {% endif %} -        {{field|safe}} +        {{field|bs_field|safe}}          {% if field.help_text or field.field.unit %}            <span class="input-group-append">              {% if field.field.unit %} diff --git a/ishtar_common/templates/registration/login.html b/ishtar_common/templates/registration/login.html index 452ef91ef..adefb3176 100644 --- a/ishtar_common/templates/registration/login.html +++ b/ishtar_common/templates/registration/login.html @@ -4,7 +4,7 @@  {% block content %}  <div class="container">      <div class="row justify-content-center"> -      <div class="col-md-3"> +      <div class="col-lg-4 col-md-6 col-sm-10">          <h3 class="text-center">{%trans "Log in"%}</h3>          <form method="post" action=".">{% csrf_token %}              <input type="hidden" name="next" value="{{ next }}" /> @@ -24,7 +24,7 @@            {% endwith %}            <div class="row justify-content-center"> -            <div class="col-md-4"> +            <div class="col-4">                 <button type="submit" class="btn btn-primary">{% trans 'Log in' %}</button>              </div>            </div> diff --git a/ishtar_common/templatetags/ishtar_helpers.py b/ishtar_common/templatetags/ishtar_helpers.py index 0ed114757..2189ea1eb 100644 --- a/ishtar_common/templatetags/ishtar_helpers.py +++ b/ishtar_common/templatetags/ishtar_helpers.py @@ -1,6 +1,7 @@ -#!/usr/bin/env python +#!/usr/bin/env python3  # -*- coding: utf-8 -*- +from bs4 import BeautifulSoup  from django.template import Library  from django.utils.safestring import mark_safe @@ -8,6 +9,28 @@ register = Library()  @register.filter +def bs_field(input_field): +    input_field = str(input_field) +    if not input_field.startswith("<input") or "form-control" in input_field: +        return input_field +    soup = BeautifulSoup(str(input_field), "lxml") +    for tag in ["input"]: +        field = getattr(soup, tag) +        if not field: +            continue +        if "class" in field.attrs.keys(): +            cls = field["class"] +            cls.append("form-control") +            cls = " ".join(field["class"]) +        else: +            cls = "form-control" +        field["class"] = cls +        input_field = str(field) +        break +    return input_field + + +@register.filter  def or_(value1, value2):      return value1 or value2 | 
