1
0
Fork 0

Replace django-avatar with Gravatar requests

Remove the dependency on django-avatar and use simple urls pointing
to Gravatar avatar images.

This replacement will require manual changes:
1. Remove from database the django-avatar table
2. Remove images directory that hosts old avatar images

Signed-off-by: Alfredos-Panagiotis Damkalis <fredy@fredy.gr>
spacecruft
Alfredos-Panagiotis Damkalis 2022-04-27 14:49:47 +03:00
parent 56255a0ad5
commit 842a6b3d77
10 changed files with 19 additions and 46 deletions

View File

@ -1,4 +1,6 @@
"""Django template tags for SatNOGS DB""" """Django template tags for SatNOGS DB"""
from hashlib import md5
from django import template from django import template
from django.urls import reverse from django.urls import reverse
from django.utils.html import format_html from django.utils.html import format_html
@ -6,6 +8,15 @@ from django.utils.html import format_html
register = template.Library() register = template.Library()
# TEMPLATE USE: {{ email|gravatar_url:150 }}
@register.filter
def gravatar_url(email, size=40):
"""Returns the Gravatar URL based on user's email address"""
return "https://www.gravatar.com/avatar/%s?s=%s" % (
md5(email.lower().encode('utf-8')).hexdigest(), str(size)
)
@register.simple_tag @register.simple_tag
def active(request, urls): def active(request, urls):
"""Returns if this is an active URL""" """Returns if this is an active URL"""

View File

@ -32,7 +32,6 @@ DJANGO_APPS = (
'django.contrib.admin', 'django.contrib.admin',
) )
THIRD_PARTY_APPS = ( THIRD_PARTY_APPS = (
'avatar',
'bootstrap_modal_forms', 'bootstrap_modal_forms',
'rest_framework', 'rest_framework',
'rest_framework.authtoken', 'rest_framework.authtoken',

View File

@ -1 +0,0 @@
{% extends "avatar/change.html" %}

View File

@ -1 +0,0 @@
<img src="{{ url }}" class="user-image m-1" alt="User Image"><i class="nav-icon fas fa-sm fa-caret-down"></i>

View File

@ -1,4 +0,0 @@
{% extends "base.html" %}
{% block title %} - Avatar{% endblock %}
{% block content %}{% endblock %}

View File

@ -1,31 +0,0 @@
{% extends "avatar/base.html" %}
{% load avatar_tags %}
{% block content %}
<h2>Avatar</h2>
<div class="row">
<div class="col-md-1">
{% avatar user %}
</div>
<div class="col-md-9">
{% if not avatars %}
<p>You haven't uploaded an avatar yet. Showing what found at Gravatar.</p>
{% endif %}
<form class="form-avatar" enctype="multipart/form-data" method="POST" action="{% url 'avatar_add' %}">
{% csrf_token %}
{{ upload_avatar_form.as_p }}
<input type="submit" class="btn btn-sm btn-primary" value="Upload New Image">
</form>
{% if avatars %}
<form class="form-avatar" method="POST" action="{% url 'avatar_delete' %}">
{% csrf_token %}
{% for avatar in avatars %}
<input name="choices" value="{{ avatar.id }}" type="hidden">
{% endfor %}
<input type="submit" class="btn btn-sm btn-danger" value="Delete Current Avatar">
</form>
{% endif %}
</div>
</div>
{% endblock %}

View File

@ -1,6 +1,6 @@
{% load static %} {% load static %}
{% load avatar_tags %}
{% load tags %} {% load tags %}
{% load cache %}
{% load compress %} {% load compress %}
<!DOCTYPE html> <!DOCTYPE html>
@ -46,7 +46,9 @@
<ul class="nav navbar-nav ml-1"> <ul class="nav navbar-nav ml-1">
<li class="user user-menu"> <li class="user user-menu">
<a href="#" id="control-sidebar-toggle" data-widget="control-sidebar" role="button" data-slide="true"> <a href="#" id="control-sidebar-toggle" data-widget="control-sidebar" role="button" data-slide="true">
{% avatar request.user %} {% cache 3600 sidebar_avatar request.user.email %}
<img src="{{ request.user.email|gravatar_url:80 }}" class="user-image m-1" alt="User Avatar"/><i class="nav-icon fas fa-sm fa-caret-down"></i>
{% endcache %}
</a> </a>
</li> </li>
</ul> </ul>

View File

@ -17,7 +17,7 @@ mock==4.0.3
platformdirs==2.5.2 platformdirs==2.5.2
pluggy==1.0.0 pluggy==1.0.0
py==1.11.0 py==1.11.0
pytest==7.1.1 pytest==7.1.2
pytest-celery==0.0.0 pytest-celery==0.0.0
pytest-cov==3.0.0 pytest-cov==3.0.0
pytest-django==4.5.2 pytest-django==4.5.2

View File

@ -17,14 +17,13 @@ click==8.1.2
click-didyoumean==0.3.0 click-didyoumean==0.3.0
click-plugins==1.1.1 click-plugins==1.1.1
click-repl==0.2.0 click-repl==0.2.0
cryptography==36.0.2 cryptography==37.0.0
defusedxml==0.7.1 defusedxml==0.7.1
Deprecated==1.2.13 Deprecated==1.2.13
dj-database-url==0.5.0 dj-database-url==0.5.0
Django==4.0.4 Django==4.0.4
django-allauth==0.50.0 django-allauth==0.50.0
django-appconf==1.0.5 django-appconf==1.0.5
django-avatar @ git+https://github.com/ntoll/django-avatar@68340e8ac603401cfbf05b71bd3f6ad6232fe66c
django-bootstrap-modal-forms==2.2.0 django-bootstrap-modal-forms==2.2.0
django-compressor==4.0 django-compressor==4.0
django-cors-headers==3.11.0 django-cors-headers==3.11.0
@ -37,7 +36,7 @@ django-shortuuidfield==0.1.3
django-widget-tweaks==1.4.12 django-widget-tweaks==1.4.12
djangorestframework==3.13.1 djangorestframework==3.13.1
dnspython==1.16.0 dnspython==1.16.0
drf-spectacular==0.22.0 drf-spectacular==0.22.1
ecdsa==0.17.0 ecdsa==0.17.0
enum34==1.1.10 enum34==1.1.10
eventlet==0.30.2 eventlet==0.30.2

View File

@ -27,6 +27,7 @@ install_requires =
Django~=4.0.0 Django~=4.0.0
django-shortuuidfield~=0.1.0 django-shortuuidfield~=0.1.0
celery~=5.2.0 celery~=5.2.0
Pillow~=9.1.0
# Deployment # Deployment
mysqlclient~=2.1.0 mysqlclient~=2.1.0
# pinning for https://github.com/benoitc/gunicorn/pull/2581 # pinning for https://github.com/benoitc/gunicorn/pull/2581
@ -46,8 +47,6 @@ install_requires =
django-cors-headers~=3.11.0 django-cors-headers~=3.11.0
# Users # Users
django-allauth~=0.50.0 django-allauth~=0.50.0
# pinning until https://github.com/grantmcconnaughey/django-avatar/pull/204 is merged
django-avatar @ git+https://github.com/ntoll/django-avatar@68340e8ac603401cfbf05b71bd3f6ad6232fe66c
django-crispy-forms~=1.14.0 django-crispy-forms~=1.14.0
social-auth-app-django~=5.0.0 social-auth-app-django~=5.0.0
# Needed by Auth0, https://auth0.com/blog/django-authentication/#Adding-Authentication # Needed by Auth0, https://auth0.com/blog/django-authentication/#Adding-Authentication