mirror of
https://github.com/boostorg/website-v2.git
synced 2026-01-19 04:42:17 +00:00
🚧 cleanup from rebases
This commit is contained in:
@@ -66,6 +66,7 @@ INSTALLED_APPS += [
|
||||
"health_check",
|
||||
"health_check.db",
|
||||
"health_check.contrib.celery",
|
||||
"imagekit",
|
||||
# Allauth dependencies:
|
||||
"allauth",
|
||||
"allauth.account",
|
||||
@@ -132,8 +133,6 @@ TEMPLATES = [
|
||||
"django.template.context_processors.request",
|
||||
"django.contrib.auth.context_processors.auth",
|
||||
"django.contrib.messages.context_processors.messages",
|
||||
# Our stuff (see core.context_processors.py)
|
||||
"core.context_processors.current_release",
|
||||
],
|
||||
"loaders": [
|
||||
"django.template.loaders.filesystem.Loader",
|
||||
|
||||
@@ -7,6 +7,7 @@ django-cors-headers
|
||||
django-db-geventpool
|
||||
django-extensions
|
||||
django-health-check
|
||||
django-imagekit
|
||||
django-redis
|
||||
django-rest-auth
|
||||
django-widget-tweaks
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
<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="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 '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>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
{% endif %}
|
||||
|
||||
{% 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" %}
|
||||
{% render_field field %}
|
||||
{% else %}
|
||||
|
||||
@@ -29,9 +29,7 @@
|
||||
</nav>
|
||||
<nav class="flex items-center space-x-3 lg:space-x-5 h-[30px]" x-data="{ 'searchOpen': false }">
|
||||
<span class="relative">
|
||||
{% if current_release %}
|
||||
<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 %}
|
||||
<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>
|
||||
<script>
|
||||
const geckoSearchButton = document.getElementById('gecko-search-button');
|
||||
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>
|
||||
{% else %}
|
||||
{% if user.image %}
|
||||
<span class="inline-block h-[30px] w-[30px] overflow-hidden rounded mt-1 border border-gray-400 dark:border-gray-500">
|
||||
<img src="{{ user.image.url }}" alt="user" class="h-full w-full cursor-pointer object-cover" @click="userOpen = !userOpen" />
|
||||
<span class="inline-block h-[30px] w-[30px] overflow-hidden rounded mt-1 bg-white dark:bt-slate">
|
||||
<img src="{{ user.image_thumbnail.url }}" alt="user" class="h-full w-full cursor-pointer object-cover" @click="userOpen = !userOpen" />
|
||||
</span>
|
||||
{% 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>
|
||||
</span>
|
||||
{% endif %}
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
<div class="space-x-2 mt-3 flex items-center">
|
||||
{% if entry.author.image %}
|
||||
<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>
|
||||
{% 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">
|
||||
|
||||
@@ -115,11 +115,11 @@
|
||||
</div>
|
||||
<div class="hidden pt-2 mt-4 text-xs text-left md:block min-w-[70px]">
|
||||
{% if entry.author.image %}
|
||||
<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" />
|
||||
<span class="inline-block h-[30px] w-[30px] overflow-hidden rounded bg-white dark:bg-slate">
|
||||
<img src="{{ entry.author.image_thumbnail.url }}" alt="{{ entry.author.get_full_name }}" class="h-full w-full object-cover" />
|
||||
</span>
|
||||
{% 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>
|
||||
</span>
|
||||
{% endif %}
|
||||
|
||||
@@ -80,7 +80,19 @@ class UserProfileForm(forms.ModelForm):
|
||||
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):
|
||||
image = forms.FileField(widget=CustomClearableFileInput, required=False)
|
||||
|
||||
class Meta:
|
||||
model = User
|
||||
fields = ["image"]
|
||||
|
||||
@@ -15,6 +15,8 @@ from django.db.models.signals import post_save
|
||||
from django.dispatch import receiver
|
||||
from django.utils import timezone
|
||||
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
|
||||
|
||||
@@ -211,6 +213,12 @@ class User(BaseUser):
|
||||
blank=True,
|
||||
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"),
|
||||
default=True,
|
||||
|
||||
8
users/templates/users/clearable_file_input.html
Normal file
8
users/templates/users/clearable_file_input.html
Normal 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" %}>
|
||||
Reference in New Issue
Block a user