Skip to content
Snippets Groups Projects
Commit 5d99133c authored by jan.bednarik's avatar jan.bednarik
Browse files

Merge branch 'test' into 'main'

Release

See merge request !8
parents 33237465 7753df9a
No related branches found
No related tags found
1 merge request!8Release
Pipeline #13543 passed
Showing
with 297 additions and 1 deletion
......@@ -17,6 +17,8 @@ RUN DATABASE_URL=postgres://x/x \
SECRET_KEY=x \
ALLOWED_HOSTS=x \
CHOBOTNICE_RV_GID=x \
INSTAGRAM_CLIENT_ID=x \
INSTAGRAM_CLIENT_SECRET=x \
python manage.py collectstatic --noinput --settings=rybicka.settings.production
RUN bash -c "adduser --disabled-login --quiet --gecos app app && \
......
......@@ -27,7 +27,6 @@ venv: .venv/bin/python
install: venv
${VENV}/bin/pip install -r requirements/base.txt -r requirements/production.txt
${VENV}/bin/nodeenv --python-virtualenv --node=19.3.0
${VENV}/bin/npm install
......
from django.contrib import admin
# Register your models here.
from django.apps import AppConfig
class AutoServerResizeConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'asset_server_resize'
from django.db import models
# Create your models here.
{% extends "shared/base.html" %}
{% load render_bundle from webpack_loader %}
{% block title %}Generátor škálovaných odkazů na obrázky v Asset Serveru{% endblock %}
{% block header_name %}Škálované obrázky{% endblock %}
{% block description %}Vyplněním získáš odkaz na zmenšený obrázek z asset serveru, který se dá použít pro embedování.{% endblock %}
{% block head %}
<link
rel="stylesheet"
href="https://styleguide.pirati.cz/2.12.x/css/styles.css"
>
{% render_bundle "asset_server_resize" %}
{% endblock %}
{% block content %}
<main>
<h1 class="text-6xl font-bebas mb-5">Generátor škálovaných odkazů na obrázky v Asset Serveru</h1>
<div class="grid grid-cols-2 gap-4">
<div class="flex flex-col gap-2">
<form class="flex flex-col gap-2 mb-4" id="asset-info-form">
<input
id="path"
name="path"
type="text"
pattern="[^ :]+\.(jpg|jpeg|png|webp|gif)"
class="text-input form-field__control"
placeholder="Cesta k souboru"
required
>
<small class="prose text-sm">
<p>
Například <code>/jihomoravsky/img/flags/gb.png</code>, pro soubor
<a href="https://mrak.pirati.cz/f/475789" target="_blank">zde na
Mraku</a>. Cestu najdeš nahoře, vynechej z ní <code>Assets</code>.
Na konec dodej název souboru, na který chceš odkázat.
</p>
</small>
<input
id="height"
name="height"
type="number"
min="0"
class="text-input form-field__control"
placeholder="Výška"
>
<input
id="width"
name="width"
type="number"
min="0"
class="text-input form-field__control"
placeholder="Šírka"
>
<small class="prose text-sm my-2">
<p>
Stačí vyplnit pouze jeden rozměr. Obrázek se mu přizpůsobí.
</p>
</small>
<div>
<button
type="submit"
class="btn btn--icon"
id="generate-url"
>
<div class="btn__body-wrap">
<div class="btn__body">Vygenerovat</div>
<div class="btn__icon">
<i class="ico--chevron-right"></i>
</div>
</div>
</button>
</div>
</form>
<small class="prose text-sm">
<p>
Další informace o Asset serveru najdeš na <a
href="https://wiki.pirati.cz/to/navody/asset-server" target="_blank">
Wiki v návodu</a>.
</p>
</small>
</div>
<div id="result-wrapper" class="flex flex-col gap-2 hidden">
<h3 class="head-alt-sm">Vygenerovaný odkaz</h3>
<a href="" id="result"></a>
</div>
</div>
</main>
{% endblock %}
from django.test import TestCase
# Create your tests here.
from django.urls import path
from . import views
app_name = "asset_server_resize"
urlpatterns = [
path("", views.index, name="index"),
]
from django.conf import settings
from django.shortcuts import render
from django_http_exceptions import HTTPExceptions
# Create your views here.
def index(request):
return render(
request,
"asset_server_resize/index.html",
{}
)
......@@ -5,5 +5,8 @@ SECRET_KEY="%@=^sip3=tqn6d_-xvvidc1@-t0t3&*kab@vr4c4"
CHOBOTNICE_API_URL="https://chobotnice.pirati.cz/graphql/"
CHOBOTNICE_RV_GID="R3JvdXBUeXBlOjYyNQ=="
INSTAGRAM_CLIENT_ID=3828083077418467
INSTAGRAM_CLIENT_SECRET=da7ea1af344e60ccd2bfcfa0f296b808
# Production settings
ALLOWED_HOSTS="tools.pirati.cz"
from django.contrib import admin
# Register your models here.
from django.apps import AppConfig
class InstagramTokenConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'instagram_token'
from django.db import models
# Create your models here.
{% extends "shared/base.html" %}
{% load render_bundle from webpack_loader %}
{% block title %}Kalkulačka přístupových tokenů do Instagramu{% endblock %}
{% block header_name %}Instagram{% endblock %}
{% block description %}Přihlášením svým účtem získáš přístupové údaje, které můžeš využít pro synchronizaci obsahu na domovské stránce pirati.cz.{% endblock %}
{% block head %}
<link
rel="stylesheet"
href="https://styleguide.pirati.cz/2.12.x/css/styles.css"
>
{% endblock %}
{% block content %}
<main>
<h1 class="text-6xl font-bebas mb-5">Kalkulačka přístupových tokenů do Instagramu</h1>
<div class="prose max-w-none mb-8">
<p>
Výsledky níže můžeš zkopírovat do Majáku. <strong>Pozor, tato stránka se zobrazí pouze jednou!</strong>
</p>
</div>
<div class="prose max-w-none">
<p>
<strong>Uživatelské ID:</strong>
<pre>{{ user_id }}</pre>
</p>
<p>
<strong>Přístupový token:</strong>
<pre>{{ access_token }}</pre>
</p>
</div>
</main>
{% endblock %}
{% extends "shared/base.html" %}
{% load render_bundle from webpack_loader %}
{% block title %}Kalkulačka přístupových tokenů do Instagramu{% endblock %}
{% block header_name %}Instagram{% endblock %}
{% block description %}Přihlášením svým účtem získáš přístupové údaje, které můžeš využít pro synchronizaci obsahu na domovské stránce pirati.cz.{% endblock %}
{% block head %}
<link
rel="stylesheet"
href="https://styleguide.pirati.cz/2.12.x/css/styles.css"
>
{% endblock %}
{% block content %}
<main>
<h1 class="text-6xl font-bebas mb-5">Kalkulačka přístupových tokenů do Instagramu</h1>
<div class="prose max-w-none mb-8">
<p>
Přihlášením svým účtem získáš přístupové údaje, které můžeš využít pro
<a href="https://majak.pirati.cz/admin" target="_blank">synchronizaci obsahu</a>
na domovské stránce pirati.cz.
</p>
</div>
<a class="btn btn--icon" href="{{ authorization_url }}">
<div class="btn__body-wrap">
<div class="btn__body">Přihlásit se</div>
<div class="btn__icon">
<i class="ico--chevron-right"></i>
</div>
</div>
</a>
</main>
{% endblock %}
from django.test import TestCase
# Create your tests here.
from django.urls import path
from . import views
app_name = "instagram_token"
urlpatterns = [
path("", views.index, name="index"),
path("exchange", views.exchange, name="exchange"),
]
import requests
from django.conf import settings
from django.shortcuts import render
from django.urls import reverse
from django_http_exceptions import HTTPExceptions
# Create your views here.
def index(request):
redirect_uri = request.build_absolute_uri(reverse("instagram_token:exchange"))
authorization_url = (
"https://api.instagram.com/oauth/authorize"
f"?client_id={settings.INSTAGRAM_CLIENT_ID}"
f"&redirect_uri={redirect_uri}"
"&scope=user_profile,user_media"
"&response_type=code"
)
return render(
request,
"instagram_token/index.html",
{
"authorization_url": authorization_url
}
)
def exchange(request):
code = request.GET.get("code")
if code is None:
return reverse("instagram_token:index")
exchange_request = requests.post(
"https://api.instagram.com/oauth/access_token",
data={
"client_id": settings.INSTAGRAM_CLIENT_ID,
"client_secret": settings.INSTAGRAM_CLIENT_SECRET,
"code": code,
"grant_type": "authorization_code",
"redirect_uri": request.build_absolute_uri(reverse("instagram_token:exchange")),
}
)
if not exchange_request.ok:
raise HTTPExceptions.BAD_REQUEST
exchange_request = exchange_request.json()
return render(
request,
"instagram_token/exchange.html",
{
"access_token": exchange_request["access_token"],
"user_id": exchange_request["user_id"],
}
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment