You've already forked hotpocket
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9f121a0ceb | |||
| d16f0cd957 | |||
| 98e5e1891a | |||
| 06343e6ed3 | |||
| 82a3b612ec |
@@ -1,4 +1,4 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import annotations
|
||||
|
||||
version = '25.11.26'
|
||||
version = '26.1.14'
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 96 KiB |
@@ -16,7 +16,7 @@
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="card-footer d-flex align-items-center">
|
||||
<a href="{{ association.target.url }}" target="_blank" rel="noopener noreferrer"><small>{{ association.target.url|render_url_domain }}</small></a>
|
||||
<a href="{{ association.target.url }}" target="_blank" rel="noopener noreferrer"><small>{{ association.target.url|render_url_domain }} <i class="bi bi-box-arrow-up-right"></i></small></a>
|
||||
<div class="ms-auto flex-shrink-0 d-flex align-items-center">
|
||||
{% if not association.archived_at %}
|
||||
<div class="spinner-border spinner-border-sm ui-htmx-indicator" role="status">
|
||||
|
||||
@@ -2,10 +2,24 @@
|
||||
|
||||
{% load i18n static ui %}
|
||||
|
||||
{% block title %}{{ association.title }}{% endblock %}
|
||||
{% block title %}{% if association.title %}{{ association.title }}{% else %}{{ association.target.url }}{% endif %}{% endblock %}
|
||||
|
||||
{% block button_bar_class %}d-none{% endblock %}
|
||||
|
||||
{% block page_head %}
|
||||
{{ block.super}}
|
||||
<meta property="og:title" content="{% if association.title %}{{ association.title }}{% else %}{{ association.target.url }}{% endif %}">
|
||||
{% if association.description %}
|
||||
<meta property="og:description" content="{{ association.description|truncatechars:125 }}">
|
||||
{% endif %}
|
||||
<meta property="og:image" content="{{ og_card_url }}">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:url" content="{{ share_url }}">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="{{ SITE_TITLE }}">
|
||||
{% endblock %}
|
||||
|
||||
{% block page_body %}
|
||||
<div id="ViewAssociationView" class="container pb-3">
|
||||
<p class="display-3 mt-3 mb-0 text-center">
|
||||
|
||||
@@ -3,11 +3,13 @@
|
||||
{% if save.is_youtube_video %}
|
||||
<div class="mb-0 d-flex justify-content-center">
|
||||
<iframe
|
||||
allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||
allow="accelerometer *; clipboard-write *; encrypted-media *; gyroscope *; picture-in-picture *; web-share *;"
|
||||
allowfullscreen
|
||||
class="ui-youtube-iframe"
|
||||
frameborder="0"
|
||||
height="200"
|
||||
referrerpolicy="strict-origin"
|
||||
scrolling="no"
|
||||
src="{{ save|render_youtube_embed_url }}"
|
||||
title="YouTube video player"
|
||||
width="320"
|
||||
|
||||
@@ -8,6 +8,7 @@ from django.contrib import messages
|
||||
import django.db
|
||||
from django.http import HttpRequest, HttpResponse, JsonResponse
|
||||
from django.shortcuts import redirect, render
|
||||
from django.templatetags.static import static
|
||||
from django.urls import reverse
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.views.generic import FormView, View
|
||||
@@ -198,12 +199,18 @@ def view(request: HttpRequest, pk: uuid.UUID) -> HttpResponse:
|
||||
if is_share is True:
|
||||
show_controls = show_controls and False
|
||||
|
||||
share_url = reverse(
|
||||
share_url = request.build_absolute_uri(
|
||||
reverse(
|
||||
'ui.associations.view',
|
||||
args=(association.pk,),
|
||||
query=[
|
||||
('share', 'true'),
|
||||
],
|
||||
),
|
||||
)
|
||||
|
||||
og_card_url = request.build_absolute_uri(
|
||||
static('ui/img/og-card.png'),
|
||||
)
|
||||
|
||||
return render(
|
||||
@@ -213,6 +220,12 @@ def view(request: HttpRequest, pk: uuid.UUID) -> HttpResponse:
|
||||
'association': association,
|
||||
'show_controls': show_controls,
|
||||
'share_url': share_url,
|
||||
'is_share': is_share,
|
||||
'og_card_url': (
|
||||
og_card_url
|
||||
if is_share is True
|
||||
else None
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ cat <<EOF
|
||||
|_|
|
||||
production
|
||||
|
||||
HotPocket v25.11.26 [${HOTPOCKET_BACKEND_IMAGE_ID}] (https://hotpocket.app/)
|
||||
HotPocket v26.1.14 [${HOTPOCKET_BACKEND_IMAGE_ID}] (https://hotpocket.app/)
|
||||
Copyright 2025-present by BTHLabs. All rights reserved. (https://bthlabs.pl/)
|
||||
Licensed under Apache-2.0
|
||||
EOF
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "hotpocket-backend",
|
||||
"version": "25.11.26",
|
||||
"version": "26.1.14",
|
||||
"description": "HotPocket Backend",
|
||||
"main": "hotpocket_backend/apps/frontend/src/index.js",
|
||||
"repository": "https://git.bthlabs.pl/tomekwojcik/hotpocket",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[tool.poetry]
|
||||
name = "hotpocket-backend"
|
||||
version = "25.11.26"
|
||||
version = "26.1.14"
|
||||
description = "HotPocket Backend"
|
||||
authors = ["Tomek Wójcik <contact@bthlabs.pl>"]
|
||||
license = "Apache-2.0"
|
||||
|
||||
@@ -103,7 +103,7 @@ def ci(ctx: Context):
|
||||
@task
|
||||
def setup(ctx: Context):
|
||||
ctx.run('python manage.py migrate')
|
||||
ctx.run('python manage.py create_initial_account hotpocket hotpocketm4st3r')
|
||||
ctx.run('python manage.py create_initial_account -u hotpocket -p hotpocketm4st3r')
|
||||
|
||||
if WORKSPACE_MODE == WorkspaceMode.METAL:
|
||||
ctx.run('mkdir -p run/uploads')
|
||||
|
||||
@@ -28,13 +28,15 @@ def test_authenticated_ok(authenticated_client: Client,
|
||||
assert result.context['association'].target.pk == association_out.target.pk
|
||||
assert result.context['show_controls'] is True
|
||||
assert 'share_url' in result.context
|
||||
assert result.context['is_share'] is False
|
||||
assert result.context['og_card_url'] is None
|
||||
|
||||
expected_share_url = reverse(
|
||||
'ui.associations.view',
|
||||
args=(association_out.pk,),
|
||||
query=[('share', 'true')],
|
||||
)
|
||||
assert result.context['share_url'] == expected_share_url
|
||||
assert result.context['share_url'].endswith(expected_share_url)
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@@ -126,6 +128,16 @@ def test_authenticated_share_ok(authenticated_client: Client,
|
||||
assert hasattr(result.context['association'], 'target') is True
|
||||
assert result.context['association'].target.pk == other_account_association_out.target.pk
|
||||
assert result.context['show_controls'] is False
|
||||
assert 'share_url' in result.context
|
||||
assert result.context['is_share'] is True
|
||||
assert result.context['og_card_url'] is not None
|
||||
|
||||
expected_share_url = reverse(
|
||||
'ui.associations.view',
|
||||
args=(other_account_association_out.pk,),
|
||||
query=[('share', 'true')],
|
||||
)
|
||||
assert result.context['share_url'].endswith(expected_share_url)
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
|
||||
Reference in New Issue
Block a user