post updates on mastodon
This commit is contained in:
parent
0b7d568a46
commit
3165e50b9f
7 changed files with 71 additions and 85 deletions
6
flake.lock
generated
6
flake.lock
generated
|
|
@ -2,11 +2,11 @@
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1743597898,
|
"lastModified": 1746524425,
|
||||||
"narHash": "sha256-b5vow3e30Y/gQud8P65d36KEnF56ukED46bJYB5QVGI=",
|
"narHash": "sha256-gCxWQCeQXYKDCW3y18HDo/aWbAtbjvljAkmyJBGRLOk=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "3d9f74651d01b73e9c46d89bf17d5103e48ab307",
|
"rev": "1032a46ffe4ba4f56919a9643443a9a6791811ed",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
||||||
80
flake.nix
80
flake.nix
|
|
@ -1,80 +0,0 @@
|
||||||
{
|
|
||||||
description = "Invoiceplane invoice template development shell";
|
|
||||||
|
|
||||||
inputs.nixpkgs.url = "nixpkgs/master";
|
|
||||||
|
|
||||||
outputs = { self, nixpkgs, ... }@inputs:
|
|
||||||
let
|
|
||||||
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
|
||||||
start =
|
|
||||||
pkgs.writeShellScriptBin "start" ''
|
|
||||||
set -e
|
|
||||||
export NIXPKGS_ALLOW_INSECURE=1
|
|
||||||
export QEMU_NET_OPTS="hostfwd=tcp::8080-:80"
|
|
||||||
${pkgs.nixos-shell}/bin/nixos-shell --flake .
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
nixosConfigurations.vm = nixpkgs.lib.nixosSystem {
|
|
||||||
system = "x86_64-linux";
|
|
||||||
specialArgs.inputs = inputs;
|
|
||||||
pkgs = import nixpkgs {
|
|
||||||
overlays = [
|
|
||||||
(self: super: {
|
|
||||||
froide-govplan = super.froide-govplan.overrideAttrs (oldAttrs: rec {
|
|
||||||
src = ./.;
|
|
||||||
#pkgs.fetchFromGitHub {
|
|
||||||
# owner = "onny";
|
|
||||||
# repo = "froide-govplan";
|
|
||||||
# rev = "81697ce37cfdee7b5d0f667c50b13062ed9786c3";
|
|
||||||
# hash = "sha256-ooHGlCKgZL+TMh6OtopKtbkV0MhT4udLCOIC+C3Ytdw=";
|
|
||||||
#};
|
|
||||||
postInstall = oldAttrs.postInstall + ''
|
|
||||||
rm -r $out/${pkgs.python3.sitePackages}/froide_govplan/templates
|
|
||||||
ln -sf /var/lib/froide-govplan/templates $out/${pkgs.python3.sitePackages}/froide_govplan/templates
|
|
||||||
cp -r froide_govplan/static $out/${pkgs.python3.sitePackages}/froide_govplan/
|
|
||||||
'';
|
|
||||||
});
|
|
||||||
})
|
|
||||||
];
|
|
||||||
};
|
|
||||||
modules = [
|
|
||||||
({ lib, config, pkgs, ... }: {
|
|
||||||
|
|
||||||
virtualisation = {
|
|
||||||
memorySize = 8000;
|
|
||||||
diskSize = 4096;
|
|
||||||
cores = 4;
|
|
||||||
};
|
|
||||||
|
|
||||||
disabledModules = [ "services/web-apps/froide-govplan.nix" ];
|
|
||||||
|
|
||||||
imports = [ ./froide-govplan.nix ];
|
|
||||||
|
|
||||||
services.froide-govplan = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.froide-govplan;
|
|
||||||
settings = {
|
|
||||||
DEBUG = lib.mkForce true;
|
|
||||||
CSRF_TRUSTED_ORIGINS = [ "http://localhost:8080" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
nixos-shell.mounts.extraMounts = {
|
|
||||||
"/var/lib/froide-govplan/templates" = {
|
|
||||||
target = /home/onny/projects/froide-govplan/froide_govplan/templates;
|
|
||||||
cache = "none";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
system.stateVersion = "25.05";
|
|
||||||
services.getty.autologinUser = "root";
|
|
||||||
})
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
packages = { inherit start; };
|
|
||||||
defaultPackage.x86_64-linux = start;
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -12,6 +12,7 @@ let
|
||||||
|
|
||||||
pkg = cfg.package.overridePythonAttrs (old: {
|
pkg = cfg.package.overridePythonAttrs (old: {
|
||||||
src = ./.;
|
src = ./.;
|
||||||
|
dependencies = old.dependencies ++ [ cfg.package.python.pkgs.mastodon-py ];
|
||||||
postInstall =
|
postInstall =
|
||||||
old.postInstall
|
old.postInstall
|
||||||
+ ''
|
+ ''
|
||||||
|
|
@ -196,7 +197,36 @@ in
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
environment =
|
environment =
|
||||||
{
|
{
|
||||||
PYTHONPATH = pkg.pythonPath;
|
PYTHONPATH = pkg.python.pkgs.makePythonPath (with pkg.python.pkgs; [
|
||||||
|
|
||||||
|
bleach
|
||||||
|
django-admin-sortable2
|
||||||
|
django-cms
|
||||||
|
django-filer
|
||||||
|
django-mfa3
|
||||||
|
django-mptt
|
||||||
|
django-oauth-toolkit
|
||||||
|
django-sekizai
|
||||||
|
django-tinymce
|
||||||
|
django-treebeard
|
||||||
|
djangocms-alias
|
||||||
|
# Downgrade to last working version
|
||||||
|
(toPythonModule (
|
||||||
|
pkgs.froide.overridePythonAttrs (prev: {
|
||||||
|
nativeBuildInputs = [ pkgs.makeBinaryWrapper ];
|
||||||
|
postBuild = "";
|
||||||
|
doCheck = false;
|
||||||
|
pnpmDeps = null;
|
||||||
|
src = prev.src.override {
|
||||||
|
rev = "a78a4054f9f37b0a5109a6d8cfbbda742f86a8ca";
|
||||||
|
hash = "sha256-gtOssbsVf3nG+pmLPgvh4685vHh2x+jlXiTjU+JhQa8=";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
))
|
||||||
|
psycopg
|
||||||
|
mastodon-py
|
||||||
|
(toPythonModule (pkg))
|
||||||
|
]);
|
||||||
GDAL_LIBRARY_PATH = "${pkgs.gdal}/lib/libgdal.so";
|
GDAL_LIBRARY_PATH = "${pkgs.gdal}/lib/libgdal.so";
|
||||||
GEOS_LIBRARY_PATH = "${pkgs.geos}/lib/libgeos_c.so";
|
GEOS_LIBRARY_PATH = "${pkgs.geos}/lib/libgeos_c.so";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
from django.apps import AppConfig
|
from django.apps import AppConfig
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class FroideGovPlanConfig(AppConfig):
|
class FroideGovPlanConfig(AppConfig):
|
||||||
name = "froide_govplan"
|
name = "froide_govplan"
|
||||||
verbose_name = _("GovPlan App")
|
verbose_name = _("GovPlan App")
|
||||||
|
|
@ -18,3 +17,5 @@ class FroideGovPlanConfig(AppConfig):
|
||||||
api_router.register(
|
api_router.register(
|
||||||
r"governmentplan", GovernmentPlanViewSet, basename="governmentplan"
|
r"governmentplan", GovernmentPlanViewSet, basename="governmentplan"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
from . import signals
|
||||||
35
froide_govplan/signals.py
Normal file
35
froide_govplan/signals.py
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
from django.db.models.signals import post_save
|
||||||
|
from django.dispatch import receiver
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import transaction
|
||||||
|
from mastodon import Mastodon
|
||||||
|
from .models import GovernmentPlanUpdate, GovernmentPlan
|
||||||
|
import re
|
||||||
|
|
||||||
|
def strip_html_tags(text):
|
||||||
|
tag_re = re.compile(r'<[^>]+>')
|
||||||
|
return tag_re.sub('', text)
|
||||||
|
|
||||||
|
def post_to_mastodon(text):
|
||||||
|
mastodon = Mastodon(
|
||||||
|
access_token=settings.MASTODON_ACCESS_TOKEN,
|
||||||
|
api_base_url=settings.MASTODON_API_BASE_URL
|
||||||
|
)
|
||||||
|
mastodon.status_post(text)
|
||||||
|
|
||||||
|
@receiver(post_save, sender=GovernmentPlanUpdate)
|
||||||
|
def send_mastodon_toot_update(sender, instance, created, **kwargs):
|
||||||
|
if created and instance.public:
|
||||||
|
transaction.on_commit(lambda: post_to_mastodon(
|
||||||
|
f"Neue Entwicklung im Verwaltungsvorhaben: {instance.plan.title}!\n\n"
|
||||||
|
f"{instance.title}: {strip_html_tags(instance.content)}\n\n"
|
||||||
|
f"Mehr Informationen: {instance.plan.reference} #karlsruhe"
|
||||||
|
))
|
||||||
|
|
||||||
|
@receiver(post_save, sender=GovernmentPlan)
|
||||||
|
def send_mastodon_toot_plan(sender, instance, created, **kwargs):
|
||||||
|
if created and instance.public:
|
||||||
|
transaction.on_commit(lambda: post_to_mastodon(
|
||||||
|
f"Neues Verwaltungsvorhaben '{instance.title}' wurde aufgenommen.\n\n"
|
||||||
|
f"Mehr Informationen: {instance.reference} #karlsruhe"
|
||||||
|
))
|
||||||
BIN
froide_govplan/static/froide_govplan/images/avatar.webp
Normal file
BIN
froide_govplan/static/froide_govplan/images/avatar.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
BIN
froide_govplan/static/froide_govplan/images/header.webp
Normal file
BIN
froide_govplan/static/froide_govplan/images/header.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 446 KiB |
Loading…
Add table
Add a link
Reference in a new issue