Skip to content

Commit

Permalink
Merge pull request #30 from animorphcoop/change/even-more-responsiven…
Browse files Browse the repository at this point in the history
…ess-plus-fixes

More responsiveness, design tweaks, and various bug fixes
  • Loading branch information
nicksellen authored Dec 7, 2023
2 parents 9d64b85 + 4434331 commit a6ee9af
Show file tree
Hide file tree
Showing 69 changed files with 694 additions and 456 deletions.
51 changes: 51 additions & 0 deletions apps/core/management/commands/update_avatars.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import filecmp
import json
from os.path import join, basename, splitext

from django.core.files.images import ImageFile
from django.core.management import BaseCommand

from core.management.commands.loaddevdata import DATA_DIR
from userauth.models import UserAvatar


class Command(BaseCommand):
help = "update already imported avatars"

def add_arguments(self, parser):
parser.add_argument("datafile", nargs="?", type=str)

def handle(self, *args, **options):
with open(options["datafile"]) as f:
data = json.load(f)
avatars_data = data["User Avatars"]
for avatar_data in avatars_data:
update_avatar(avatar_data)


def update_avatar(avatar_data):
user_avatars = list(UserAvatar.objects.all())
avatar_path = join(DATA_DIR, avatar_data["avatar"])
with open(avatar_path, "rb") as f:
avatar_filename = basename(avatar_data["avatar"])
avatar_basename = splitext(avatar_filename)[0]
existing_avatar = None
for user_avatar in user_avatars:
# Check for a matching existing one, they have filenames like
# avatarname_OI3nqeM.png and we need to match without the random bit
user_avatar_basename = splitext(basename(user_avatar.avatar.name))[0]
if user_avatar_basename.startswith(avatar_basename):
existing_avatar = user_avatar
break
if existing_avatar:
if filecmp.cmp(avatar_path, existing_avatar.avatar.path):
print("nochange", avatar_filename)
else:
existing_avatar.avatar = ImageFile(f)
existing_avatar.save()
print("updated", avatar_filename)
else:
new_avatar = UserAvatar.objects.create()
new_avatar.avatar = ImageFile(f)
new_avatar.save()
print("added", avatar_filename)
43 changes: 43 additions & 0 deletions apps/core/templatetags/custom_tags.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import uuid

from django import template
from django.conf import settings
from django.utils.safestring import mark_safe
Expand All @@ -7,6 +9,47 @@
DJANGO_VITE_DEV_MODE = getattr(settings, "DJANGO_VITE_DEV_MODE", False)


@register.simple_tag
def generate_id(*args):
return uuid.uuid4()


@register.simple_tag(takes_context=True)
def active_link(context, text, *view_names, **view_params):
"""Use to output text when the specified view is active
Using it for CSS classnames would be class, but not limited to that.
Usage examples:
When we are on the home page have pink text:
<a class="{% active_link 'text-pink' 'homepage' %}">homepage</a>
When we are on the homepage OR the dashboard, have pink text:
<a class="{% active_link 'text-pink' 'homepage' 'dashboard'%}">homepage</a>
When we are on user "nick"'s profile, have green text:
<a class="{% active_link 'text-green' 'profile' username="nick" %}">homepage</a>
"""
request = context.get("request")
if request is None:
return ""

# Fetch our resolved route
current_view_name = request.resolver_match.view_name

# Match on route name
if current_view_name not in view_names:
return ""

# If provided, match on the params too
if view_params and view_params != request.resolver_match.kwargs:
return ""

# It passed! Give 'em the text
return text


@register.simple_tag
@mark_safe
def sfs_vite_prevent_unstyled_flash(*args):
Expand Down
9 changes: 0 additions & 9 deletions apps/core/urls.py

This file was deleted.

4 changes: 0 additions & 4 deletions apps/core/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,6 @@
from django.shortcuts import render


def check_url_nav(request: WSGIRequest) -> HttpResponse:
return render(request, "partials/nav.html")


class HTMXMixin:
"""Mixin to allow specifying separate templates for htmx requests"""

Expand Down
Loading

0 comments on commit a6ee9af

Please sign in to comment.