🚧 cleanup from rebases

This commit is contained in:
Greg Newman
2023-11-30 18:30:09 -05:00
parent 0eb8cffe23
commit c69b017770
10 changed files with 40 additions and 13 deletions

View File

@@ -66,6 +66,7 @@ INSTALLED_APPS += [
"health_check", "health_check",
"health_check.db", "health_check.db",
"health_check.contrib.celery", "health_check.contrib.celery",
"imagekit",
# Allauth dependencies: # Allauth dependencies:
"allauth", "allauth",
"allauth.account", "allauth.account",
@@ -132,8 +133,6 @@ TEMPLATES = [
"django.template.context_processors.request", "django.template.context_processors.request",
"django.contrib.auth.context_processors.auth", "django.contrib.auth.context_processors.auth",
"django.contrib.messages.context_processors.messages", "django.contrib.messages.context_processors.messages",
# Our stuff (see core.context_processors.py)
"core.context_processors.current_release",
], ],
"loaders": [ "loaders": [
"django.template.loaders.filesystem.Loader", "django.template.loaders.filesystem.Loader",

View File

@@ -7,6 +7,7 @@ django-cors-headers
django-db-geventpool django-db-geventpool
django-extensions django-extensions
django-health-check django-health-check
django-imagekit
django-redis django-redis
django-rest-auth django-rest-auth
django-widget-tweaks django-widget-tweaks

View File

@@ -3,6 +3,7 @@
<footer class="py-2 px-4 my-5 mx-auto max-w-full md:pb-11 md:mb-11"> <footer class="py-2 px-4 my-5 mx-auto max-w-full md:pb-11 md:mb-11">
<div class="items-center px-5 pt-4 mt-4 text-center"> <div class="items-center px-5 pt-4 mt-4 text-center">
<div class="justify-between pt-3 pb-3 sm:space-x-3 xl:space-x-6 border-dotted border-t-2 px-20 border-t-white/5 w-fit mx-auto"> <div class="justify-between pt-3 pb-3 sm:space-x-3 xl:space-x-6 border-dotted border-t-2 px-20 border-t-white/5 w-fit mx-auto">
<a class="block my-2 sm:inline hover:text-orange" href="/help/">Contact</a>
<a class="block my-2 sm:inline hover:text-orange" href="{% url 'privacy' %}">Privacy Policy</a> <a class="block my-2 sm:inline hover:text-orange" href="{% url 'privacy' %}">Privacy Policy</a>
<a class="block my-2 sm:inline hover:text-orange" href="{% url 'terms-of-use' %}">Terms of Use</a> <a class="block my-2 sm:inline hover:text-orange" href="{% url 'terms-of-use' %}">Terms of Use</a>
<a class="my-2 inline hover:text-orange" href="https://twitter.com/boost_libraries" target="_blank">Twitter</a> <a class="my-2 inline hover:text-orange" href="https://twitter.com/boost_libraries" target="_blank">Twitter</a>

View File

@@ -13,7 +13,7 @@
{% endif %} {% endif %}
{% if field.field.widget.input_type == "file" %} {% if field.field.widget.input_type == "file" %}
{% render_field field class="text-sm text-grey-500 !border-0 file:mr-5 file:py-2 file:px-6 file:rounded-lg file:border-0 file:text-sm file:font-medium file:bg-white file:text-slate hover:file:cursor-pointer hover:file:bg-orange hover:file:text-white" placeholder=field.label %} {% render_field field class="text-sm text-grey-500 !border-0 file:mr-5 file:py-2 file:px-6 file:rounded-lg file:border-0 file:text-sm file:font-medium file:bg-white file:text-slate hover:file:cursor-pointer hover:file:bg-orange hover:file:text-white"%}
{% elif field.field.widget.input_type == "checkbox" %} {% elif field.field.widget.input_type == "checkbox" %}
{% render_field field %} {% render_field field %}
{% else %} {% else %}

View File

@@ -29,9 +29,7 @@
</nav> </nav>
<nav class="flex items-center space-x-3 lg:space-x-5 h-[30px]" x-data="{ 'searchOpen': false }"> <nav class="flex items-center space-x-3 lg:space-x-5 h-[30px]" x-data="{ 'searchOpen': false }">
<span class="relative"> <span class="relative">
{% if current_release %} <i id="gecko-search-button" data-current-boost-version="1_83_0" data-theme-mode="light" data-font-family="Cairo, sans-serif" class="inline -mt-1 cursor-pointer text-slate fas fa-search dark:text-white/50 dark:hover:text-orange hover:text-orange"></i>
<i id="gecko-search-button" data-current-boost-version="{{ current_release.stripped_boost_url_slug }}" data-theme-mode="light" data-font-family="Cairo, sans-serif" class="inline -mt-1 cursor-pointer text-slate fas fa-search dark:text-white/50 dark:hover:text-orange hover:text-orange"></i>
{% endif %}
<script> <script>
const geckoSearchButton = document.getElementById('gecko-search-button'); const geckoSearchButton = document.getElementById('gecko-search-button');
geckoSearchButton.setAttribute('data-theme-mode', localStorage.getItem('colorMode') === 'dark' ? 'dark' : 'light'); geckoSearchButton.setAttribute('data-theme-mode', localStorage.getItem('colorMode') === 'dark' ? 'dark' : 'light');
@@ -173,11 +171,11 @@
<a href="{% url 'account_signup' %}" class="hover:no-underline inline font-medium dark:text-white dark:visited:text-white text-slate visited:text-slate dark:hover:text-orange hover:text-orange">Join</a> <a href="{% url 'account_signup' %}" class="hover:no-underline inline font-medium dark:text-white dark:visited:text-white text-slate visited:text-slate dark:hover:text-orange hover:text-orange">Join</a>
{% else %} {% else %}
{% if user.image %} {% if user.image %}
<span class="inline-block h-[30px] w-[30px] overflow-hidden rounded mt-1 border border-gray-400 dark:border-gray-500"> <span class="inline-block h-[30px] w-[30px] overflow-hidden rounded mt-1 bg-white dark:bt-slate">
<img src="{{ user.image.url }}" alt="user" class="h-full w-full cursor-pointer object-cover" @click="userOpen = !userOpen" /> <img src="{{ user.image_thumbnail.url }}" alt="user" class="h-full w-full cursor-pointer object-cover" @click="userOpen = !userOpen" />
</span> </span>
{% else %} {% else %}
<span class="inline-block h-[30px] w-[30px] bg-white rounded dark:text-white mt-1 dark:bg-slate border border-gray-400 dark:border-gray-500"> <span class="inline-block h-[30px] w-[30px] bg-white rounded dark:text-white mt-1 dark:bg-slate">
<i class="fas fa-user text-2xl ml-[4px]" @click="userOpen = !userOpen"></i> <i class="fas fa-user text-2xl ml-[4px]" @click="userOpen = !userOpen"></i>
</span> </span>
{% endif %} {% endif %}

View File

@@ -45,7 +45,7 @@
<div class="space-x-2 mt-3 flex items-center"> <div class="space-x-2 mt-3 flex items-center">
{% if entry.author.image %} {% if entry.author.image %}
<span class="inline-block h-[30px] w-[30px] overflow-hidden rounded border border-gray-400 dark:border-gray-500"> <span class="inline-block h-[30px] w-[30px] overflow-hidden rounded border border-gray-400 dark:border-gray-500">
<img src="{{ entry.author.image.url }}" alt="{{ entry.author.get_full_name }}" class="h-full w-full object-cover" /> <img src="{{ entry.author.image_thumbnail.url }}" alt="{{ entry.author.get_full_name }}" class="h-full w-full object-cover" />
</span> </span>
{% else %} {% else %}
<span class="inline-block h-[30px] w-[30px] bg-white rounded dark:text-white dark:bg-slate border border-gray-400 dark:border-gray-500"> <span class="inline-block h-[30px] w-[30px] bg-white rounded dark:text-white dark:bg-slate border border-gray-400 dark:border-gray-500">

View File

@@ -115,11 +115,11 @@
</div> </div>
<div class="hidden pt-2 mt-4 text-xs text-left md:block min-w-[70px]"> <div class="hidden pt-2 mt-4 text-xs text-left md:block min-w-[70px]">
{% if entry.author.image %} {% if entry.author.image %}
<span class="inline-block h-[30px] w-[30px] overflow-hidden rounded border border-gray-400 dark:border-gray-500"> <span class="inline-block h-[30px] w-[30px] overflow-hidden rounded bg-white dark:bg-slate">
<img src="{{ entry.author.image.url }}" alt="{{ entry.author.get_full_name }}" class="h-full w-full object-cover" /> <img src="{{ entry.author.image_thumbnail.url }}" alt="{{ entry.author.get_full_name }}" class="h-full w-full object-cover" />
</span> </span>
{% else %} {% else %}
<span class="inline-block h-[30px] w-[30px] bg-white rounded dark:text-white dark:bg-slate border border-gray-400 dark:border-gray-500"> <span class="inline-block h-[30px] w-[30px] bg-white rounded dark:text-white dark:bg-slate">
<i class="text-2xl fas fa-user ml-1" title="{{ entry.author.get_full_name }}"></i> <i class="text-2xl fas fa-user ml-1" title="{{ entry.author.get_full_name }}"></i>
</span> </span>
{% endif %} {% endif %}

View File

@@ -80,7 +80,19 @@ class UserProfileForm(forms.ModelForm):
fields = ["email", "first_name", "last_name"] fields = ["email", "first_name", "last_name"]
class CustomClearableFileInput(forms.ClearableFileInput):
"""
Overrides the template for clearable file input so that we can display
the widget without the filename/path displayed and change the checkbox
to clear the field.
"""
template_name = "users/clearable_file_input.html"
class UserProfilePhotoForm(forms.ModelForm): class UserProfilePhotoForm(forms.ModelForm):
image = forms.FileField(widget=CustomClearableFileInput, required=False)
class Meta: class Meta:
model = User model = User
fields = ["image"] fields = ["image"]

View File

@@ -15,6 +15,8 @@ from django.db.models.signals import post_save
from django.dispatch import receiver from django.dispatch import receiver
from django.utils import timezone from django.utils import timezone
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from imagekit.models import ImageSpecField
from imagekit.processors import ResizeToFill
from core.validators import image_validator, max_file_size_validator from core.validators import image_validator, max_file_size_validator
@@ -211,6 +213,12 @@ class User(BaseUser):
blank=True, blank=True,
validators=[image_validator, max_file_size_validator], validators=[image_validator, max_file_size_validator],
) )
image_thumbnail = ImageSpecField(
source="image",
processors=[ResizeToFill(100, 100)],
format="JPEG",
options={"quality": 90},
)
claimed = models.BooleanField( claimed = models.BooleanField(
_("claimed"), _("claimed"),
default=True, default=True,

View File

@@ -0,0 +1,8 @@
{% if widget.is_initial %}
{% if not widget.required %}
<input type="checkbox" class="!mr-0" name="{{ widget.checkbox_name }}" id="{{ widget.checkbox_id }}"{% if widget.attrs.disabled %} disabled{% endif %}>
<label class="-ml-3" for="{{ widget.checkbox_id }}">Delete</label>
{% endif %}
{% endif %}
<input type="{{ widget.type }}" name="{{ widget.name }}" {% include "django/forms/widgets/attrs.html" %}>