From e0fd14751c993abae8a2f8f36cc706582877c517 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Valenta?= <git@imaniti.org> Date: Fri, 7 Apr 2023 22:38:09 +0200 Subject: [PATCH] add Instagram sync tool --- env.example | 3 + instagram_token/__init__.py | 0 instagram_token/admin.py | 3 + instagram_token/apps.py | 6 ++ instagram_token/migrations/__init__.py | 0 instagram_token/models.py | 3 + .../templates/instagram_token/exchange.html | 39 ++++++++++++ .../templates/instagram_token/index.html | 35 +++++++++++ instagram_token/tests.py | 3 + instagram_token/urls.py | 9 +++ instagram_token/views.py | 58 ++++++++++++++++++ rybicka/settings/base.py | 6 ++ rybicka/urls.py | 1 + shared/static/shared/instagram.webp | Bin 0 -> 38882 bytes shared/templates/shared/index.html | 33 ++++++++-- 15 files changed, 193 insertions(+), 6 deletions(-) create mode 100644 instagram_token/__init__.py create mode 100644 instagram_token/admin.py create mode 100644 instagram_token/apps.py create mode 100644 instagram_token/migrations/__init__.py create mode 100644 instagram_token/models.py create mode 100644 instagram_token/templates/instagram_token/exchange.html create mode 100644 instagram_token/templates/instagram_token/index.html create mode 100644 instagram_token/tests.py create mode 100644 instagram_token/urls.py create mode 100644 instagram_token/views.py create mode 100644 shared/static/shared/instagram.webp diff --git a/env.example b/env.example index 3b703be..6c528c0 100644 --- a/env.example +++ b/env.example @@ -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" diff --git a/instagram_token/__init__.py b/instagram_token/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/instagram_token/admin.py b/instagram_token/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/instagram_token/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/instagram_token/apps.py b/instagram_token/apps.py new file mode 100644 index 0000000..135a246 --- /dev/null +++ b/instagram_token/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class InstagramTokenConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'instagram_token' diff --git a/instagram_token/migrations/__init__.py b/instagram_token/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/instagram_token/models.py b/instagram_token/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/instagram_token/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/instagram_token/templates/instagram_token/exchange.html b/instagram_token/templates/instagram_token/exchange.html new file mode 100644 index 0000000..d13b75d --- /dev/null +++ b/instagram_token/templates/instagram_token/exchange.html @@ -0,0 +1,39 @@ +{% 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.11.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-5"> + <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> + + <div class="prose max-w-none"> + <p> + <strong>UĹľivatelskĂ© ID:</strong> <i>{{ user_id }}</i> + </p> + + <p> + <strong>PĹ™ĂstupovĂ˝ token:</strong> + <pre>{{ access_token }}</pre> + </p> + </div> + </main> +{% endblock %} diff --git a/instagram_token/templates/instagram_token/index.html b/instagram_token/templates/instagram_token/index.html new file mode 100644 index 0000000..99261ed --- /dev/null +++ b/instagram_token/templates/instagram_token/index.html @@ -0,0 +1,35 @@ +{% 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.11.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-5"> + <p> + VĂ˝sledky nĂĹľe mĹŻĹľeš zkopĂrovat do Majáku. + </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 %} diff --git a/instagram_token/tests.py b/instagram_token/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/instagram_token/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/instagram_token/urls.py b/instagram_token/urls.py new file mode 100644 index 0000000..85837f0 --- /dev/null +++ b/instagram_token/urls.py @@ -0,0 +1,9 @@ +from django.urls import path + +from . import views + +app_name = "instagram_token" +urlpatterns = [ + path("", views.index, name="index"), + path("exchange", views.exchange, name="exchange"), +] diff --git a/instagram_token/views.py b/instagram_token/views.py new file mode 100644 index 0000000..8cb892b --- /dev/null +++ b/instagram_token/views.py @@ -0,0 +1,58 @@ +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")), + } + ) + + exchange_request.raise_for_status() + exchange_request = exchange_request.json() + + return render( + request, + "instagram_token/exchange.html", + { + "access_token": exchange_request["access_token"], + "user_id": exchange_request["user_id"], + } + ) diff --git a/rybicka/settings/base.py b/rybicka/settings/base.py index 882e6cd..83b43c6 100644 --- a/rybicka/settings/base.py +++ b/rybicka/settings/base.py @@ -49,6 +49,7 @@ INSTALLED_APPS = [ "member_group_size_calc", "rv_voting_calc", "mail_signature", + "instagram_token", ] MIDDLEWARE = [ @@ -125,3 +126,8 @@ CHOBOTNICE_API_URL=env.str( "https://chobotnice.pirati.cz/graphql/" ) CHOBOTNICE_RV_GID=env.str("CHOBOTNICE_RV_GID") + +# Instagram + +INSTAGRAM_CLIENT_ID = env.str("INSTAGRAM_CLIENT_ID") +INSTAGRAM_CLIENT_SECRET = env.str("INSTAGRAM_CLIENT_SECRET") diff --git a/rybicka/urls.py b/rybicka/urls.py index 4ebfaab..85428a7 100644 --- a/rybicka/urls.py +++ b/rybicka/urls.py @@ -19,5 +19,6 @@ urlpatterns = [ path("vypocet-skupiny-clenu/", include("member_group_size_calc.urls")), path("hlasovani-rv/", include("rv_voting_calc.urls")), path("emailove-podpisy/", include("mail_signature.urls")), + path("instagram/", include("instagram_token.urls")), path("", include("shared.urls")), ] diff --git a/shared/static/shared/instagram.webp b/shared/static/shared/instagram.webp new file mode 100644 index 0000000000000000000000000000000000000000..014dc7e491ad8fc32c381fc2d5d907d15d52f1a3 GIT binary patch literal 38882 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ð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 literal 0 HcmV?d00001 diff --git a/shared/templates/shared/index.html b/shared/templates/shared/index.html index a42a285..2a62c24 100644 --- a/shared/templates/shared/index.html +++ b/shared/templates/shared/index.html @@ -15,7 +15,7 @@ <main class="flex flex-col gap-8"> <section> <h2 class="head-alt-md mb-5">ZabudovanĂ© nástroje</h2> - + <ul class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8"> <li class="card"> <a href="{% url "member_group_size_calc:index" %}"> @@ -36,7 +36,7 @@ </div> </div> </li> - + <li class="card"> <a href="{% url "rv_voting_calc:index" %}"> <img @@ -56,7 +56,7 @@ </div> </div> </li> - + <li class="card"> <a href="{% url "mail_signature:index" %}" target="_blank"> <img @@ -76,12 +76,33 @@ </div> </div> </li> + + <li class="card"> + <a href="{% url "instagram_token:index" %}" target="_blank"> + <img + src="{% static "shared/instagram.webp" %}" + alt="KalkulaÄŤka pĹ™ĂstupovĂ˝ch tokenĹŻ do Instagramu" + class="w-full h-48 object-cover" + > + </a> + <div class="p-4"> + <h2 class="mb-2 text-xl font-bold"> + <a href="{% url "instagram_token:index" %}" target="_blank"> + KalkulaÄŤka pĹ™ĂstupovĂ˝ch tokenĹŻ do Instagramu + </a> + </h2> + <div class="font-light text-sm break-words"> + 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. + </div> + </div> + </li> </ul> </section> - + <section> <h2 class="head-alt-md mb-5">ExternĂ nástroje</h2> - + <ul class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8"> <li class="card"> <a href="https://z.pirati.cz" target="_blank"> @@ -102,7 +123,7 @@ </div> </div> </li> - + <li class="card"> <a href="https://generator.pirati.cz" target="_blank"> <img -- GitLab