diff --git a/app/config.py b/app/config.py index fe691d7..4b6444b 100644 --- a/app/config.py +++ b/app/config.py @@ -101,6 +101,7 @@ class Config(pydantic.BaseModel): secret: str debug: bool = False trusted_hosts: list[str] = ["127.0.0.1"] + tags: list[str] | None = None manually_approves_followers: bool = False privacy_replace: list[_PrivacyReplace] | None = None metadata: list[_ProfileMetadata] | None = None diff --git a/app/static/pic.jpg b/app/static/pic.jpg new file mode 100644 index 0000000..589a138 Binary files /dev/null and b/app/static/pic.jpg differ diff --git a/app/templates.py b/app/templates.py index ea4fb26..34b7f57 100644 --- a/app/templates.py +++ b/app/templates.py @@ -433,6 +433,7 @@ _templates.env.filters["privacy_replace_url"] = privacy_replace.replace_url _templates.env.globals["JS_HASH"] = config.JS_HASH _templates.env.globals["CSS_HASH"] = config.CSS_HASH _templates.env.globals["BASE_URL"] = config.BASE_URL +_templates.env.globals["TAGS"] = config.CONFIG.tags _templates.env.globals["HIDES_FOLLOWERS"] = config.HIDES_FOLLOWERS _templates.env.globals["HIDES_FOLLOWING"] = config.HIDES_FOLLOWING _templates.env.globals["NAVBAR_ITEMS"] = config.NavBarItems diff --git a/app/templates/admin_direct_messages.html b/app/templates/admin_direct_messages.html deleted file mode 100644 index c6a2319..0000000 --- a/app/templates/admin_direct_messages.html +++ /dev/null @@ -1,20 +0,0 @@ -{%- import "utils.html" as utils with context -%} -{% extends "layout.html" %} - -{% block head %} -{{ local_actor.display_name }} - Direct messages -{% endblock %} - -{% block content %} - -{% for anybox_object, convo, actors in threads %} -
- With {% for actor in actors %} - - {{ actor.handle }} - - {% endfor %} -
- {{ utils.display_object(anybox_object) }} -{% endfor %} -{% endblock %} diff --git a/app/templates/admin_inbox.html b/app/templates/admin_inbox.html deleted file mode 100644 index 221b197..0000000 --- a/app/templates/admin_inbox.html +++ /dev/null @@ -1,46 +0,0 @@ -{%- import "utils.html" as utils with context -%} -{% extends "layout.html" %} - -{% block head %} -{{ local_actor.display_name }} - Inbox -{% endblock %} - -{% block content %} - -{% if show_filters %} -{{ utils.display_box_filters("admin_inbox") }} -{% endif %} - -{% if not inbox %} -
-

Nothing to see yet, start following people in the lookup section.

-
-{% endif %} - -{% for inbox_object in inbox %} -{% if inbox_object.ap_type == "Announce" %} - {{ utils.actor_action(inbox_object, "shared", with_icon=True) }} - {{ utils.display_object(inbox_object.relates_to_anybox_object) }} -{% elif inbox_object.ap_type in ["Article", "Note", "Video", "Page", "Question"] %} -{{ utils.display_object(inbox_object) }} -{% elif inbox_object.ap_type == "Follow" %} - {{ utils.actor_action(inbox_object, "followed you") }} - {{ utils.display_actor(inbox_object.actor, actors_metadata) }} -{% elif inbox_object.ap_type == "Like" %} - {{ utils.actor_action(inbox_object, "liked one of your posts", with_icon=True) }} - {{ utils.display_object(inbox_object.relates_to_anybox_object) }} -{% else %} -

- Implement {{ inbox_object.ap_type }} - {{ inbox_object.ap_object }} -

-{% endif %} -{% endfor %} - -{% if next_cursor %} -
-

See more

-
-{% endif %} - -{% endblock %} diff --git a/app/templates/admin_new.html b/app/templates/admin_new.html deleted file mode 100644 index ac3b3db..0000000 --- a/app/templates/admin_new.html +++ /dev/null @@ -1,94 +0,0 @@ -{%- import "utils.html" as utils with context -%} -{% extends "layout.html" %} - -{% block head %} -{{ local_actor.display_name }} - New -{% endblock %} - -{% block content %} - -{% if in_reply_to_object %} -
In reply to:
-{{ utils.display_object(in_reply_to_object) }} -{% endif %} - -
- - - -
- {{ utils.embed_csrf_token() }} - {{ utils.embed_redirect_url() }} -

- -

- - {% if request.query_params.type == "Article" %} -

- -

- {% endif %} - - {% for emoji in emojis %} - {{ emoji | emojify(True) | safe }} - {% endfor %} - {% for emoji in custom_emojis %} - {{ emoji.name }} - {% endfor %} - - - - {% if request.query_params.type == "Question" %} -

- -

-

- -

- {% for i in ["1", "2", "3", "4"] %} -

- -

- {% endfor %} - {% endif %} - -

- -

-

- -

- -

- -

-
-

- -

-
-
- -{% endblock %} diff --git a/app/templates/admin_outbox.html b/app/templates/admin_outbox.html deleted file mode 100644 index d0ad58b..0000000 --- a/app/templates/admin_outbox.html +++ /dev/null @@ -1,35 +0,0 @@ -{%- import "utils.html" as utils with context -%} -{% extends "layout.html" %} - -{% block head %} -{{ local_actor.display_name }} - Outbox -{% endblock %} - -{% block content %} - -{{ utils.display_box_filters("admin_outbox") }} - -{% for outbox_object in outbox %} - - {% if outbox_object.ap_type == "Announce" %} -
You shared {{ outbox_object.ap_published_at | timeago }}
- {{ utils.display_object(outbox_object.relates_to_anybox_object) }} - {% elif outbox_object.ap_type == "Like" %} -
You liked {{ outbox_object.ap_published_at | timeago }}
- {{ utils.display_object(outbox_object.relates_to_anybox_object) }} - {% elif outbox_object.ap_type == "Follow" %} -
You followed {{ outbox_object.ap_published_at | timeago }}
- {{ utils.display_actor(outbox_object.relates_to_actor, actors_metadata) }} - {% elif outbox_object.ap_type in ["Article", "Note", "Video", "Question"] %} - {{ utils.display_object(outbox_object) }} - {% endif %} - -{% endfor %} - -{% if next_cursor %} -
-

See more

-
-{% endif %} - -{% endblock %} diff --git a/app/templates/admin_profile.html b/app/templates/admin_profile.html deleted file mode 100644 index 1f5646c..0000000 --- a/app/templates/admin_profile.html +++ /dev/null @@ -1,29 +0,0 @@ -{%- import "utils.html" as utils with context -%} - -{% block head %} -{{ local_actor.display_name }} - {{ actor.display_name }} -{% endblock %} - -{% extends "layout.html" %} -{% block content %} - {{ utils.display_actor(actor, actors_metadata, with_details=True) }} - {% for inbox_object in inbox_objects %} - {% if inbox_object.ap_type == "Announce" %} - {{ utils.actor_action(inbox_object, "shared", with_icon=True) }} - {{ utils.display_object(inbox_object.relates_to_anybox_object) }} - {% else %} - {{ utils.display_object(inbox_object) }} - {% endif %} - {% endfor %} - -{% if next_cursor %} -
-

- - See more - -

-
-{% endif %} - -{% endblock %} diff --git a/app/templates/admin_stream.html b/app/templates/admin_stream.html deleted file mode 100644 index 4fd8a79..0000000 --- a/app/templates/admin_stream.html +++ /dev/null @@ -1,18 +0,0 @@ -{%- import "utils.html" as utils with context -%} -{% extends "layout.html" %} - -{% block head %} -{{ local_actor.display_name }} - Stream -{% endblock %} - -{% block content %} - -{% for inbox_object in stream %} -{% if inbox_object.ap_type == "Announce" %} - {{ utils.display_object(inbox_object.relates_to_anybox_object) }} -{% elif inbox_object.ap_type in ["Article", "Note", "Video"] %} -{{ utils.display_object(inbox_object) }} -{% endif %} -{% endfor %} - -{% endblock %} diff --git a/app/templates/articles.html b/app/templates/articles.html deleted file mode 100644 index 459492d..0000000 --- a/app/templates/articles.html +++ /dev/null @@ -1,20 +0,0 @@ -{%- import "utils.html" as utils with context -%} -{% extends "layout.html" %} - -{% block head %} -{{ local_actor.display_name }}'s articles -{% endblock %} - -{% block content %} -{% include "header.html" %} - - - -{% endblock %} diff --git a/app/templates/custom_page.html b/app/templates/custom_page.html deleted file mode 100644 index 2f1c937..0000000 --- a/app/templates/custom_page.html +++ /dev/null @@ -1,30 +0,0 @@ -{%- import "utils.html" as utils with context -%} -{% extends "layout.html" %} - -{% block head %} -{{ title }} -{% if request.url.path == "/" %} - - - - - - - - - - - - - -{% endif %} -{% endblock %} - -{% block content %} -{% include "header.html" %} - -
- {{ page_content | safe }} -
- -{% endblock %} diff --git a/app/templates/error.html b/app/templates/error.html deleted file mode 100644 index c45a567..0000000 --- a/app/templates/error.html +++ /dev/null @@ -1,12 +0,0 @@ -{%- import "utils.html" as utils with context -%} -{% extends "layout.html" %} -{% block main_tag %} class="main-flex"{% endblock %} -{% block head %} -{{ title }} -{% endblock %} - -{% block content %} -
-

{{ title | safe }}

-
-{% endblock %} diff --git a/app/templates/followers.html b/app/templates/followers.html deleted file mode 100644 index dabd049..0000000 --- a/app/templates/followers.html +++ /dev/null @@ -1,32 +0,0 @@ -{%- import "utils.html" as utils with context -%} -{% extends "layout.html" %} - -{% block head %} -{{ local_actor.display_name }}'s followers - -{% endblock %} - -{% block content %} -{% include "header.html" %} -
- - -{% set x_more = followers_count - followers | length %} -{% if x_more > 0 %} -
-

And {{ x_more }} more.

-
-{% endif %} - -{% if is_admin %} -
-

Manage followers

-
-{% endif %} - -
-{% endblock %} diff --git a/app/templates/following.html b/app/templates/following.html deleted file mode 100644 index 3341725..0000000 --- a/app/templates/following.html +++ /dev/null @@ -1,32 +0,0 @@ -{%- import "utils.html" as utils with context -%} -{% extends "layout.html" %} - -{% block head %} -{{ local_actor.display_name }}'s follows - -{% endblock %} - -{% block content %} -{% include "header.html" %} -
- - -{% set x_more = following_count - following | length %} -{% if x_more > 0 %} -
-

And {{ x_more }} more.

-
-{% endif %} - -{% if is_admin %} -
-

Manage follows

-
-{% endif %} - -
-{% endblock %} diff --git a/app/templates/header.html b/app/templates/header.html deleted file mode 100644 index a15f051..0000000 --- a/app/templates/header.html +++ /dev/null @@ -1,62 +0,0 @@ - diff --git a/app/templates/index.html b/app/templates/index.html deleted file mode 100644 index 8db1638..0000000 --- a/app/templates/index.html +++ /dev/null @@ -1,60 +0,0 @@ -{%- import "utils.html" as utils with context -%} -{% extends "layout.html" %} - -{% block head %} -{{ local_actor.display_name }}'s microblog - - - - - - - - - - - - - -{% endblock %} - -{% block content %} -{% include "header.html" %} - -{% if objects %} - -
- - {% for outbox_object in objects %} - {% if outbox_object.ap_type in ["Note", "Video", "Question"] %} - {{ utils.display_object(outbox_object) }} - {% elif outbox_object.ap_type == "Announce" %} -
- -
- {{ utils.display_object(outbox_object.relates_to_anybox_object, is_h_entry=False) }} -
-
- {% endif %} - {% endfor %} -
- - {% if has_previous_page or has_next_page %} -
- {% if has_previous_page %} - Previous - {% endif %} - - {% if has_next_page %} - Next - {% endif %} -
- {% endif %} - -{% else %} -
-

Nothing to see here yet!

-
-{% endif %} - -{% endblock %} diff --git a/app/templates/indieauth_flow.html b/app/templates/indieauth_flow.html deleted file mode 100644 index fb4d15c..0000000 --- a/app/templates/indieauth_flow.html +++ /dev/null @@ -1,45 +0,0 @@ -{%- import "utils.html" as utils with context -%} -{% extends "layout.html" %} -{% block content %} -
-
- {% if client.logo %} - - {% endif %} -
-
- {% if client.url %} - {{ client.name }} - {% else %} - {{ client.name }} - {% endif %} -

wants you to login{% if me %} as {{ me }}{% endif %} with the following redirect URI: {{ redirect_uri }}.

- - -
- {{ utils.embed_csrf_token() }} - {% if scopes %} -

Scopes

-
    - {% for scope in scopes %} -
  • -
  • - {% endfor %} -
- {% endif %} - - - - - - - - -
-
-
-
-
-{% endblock %} diff --git a/app/templates/layout.html b/app/templates/layout.html deleted file mode 100644 index cdf5959..0000000 --- a/app/templates/layout.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - -{% block head %}{% endblock %} - - -
- -{% if is_admin %} -
-{% macro admin_link(url, text) %} -{% set url_for = BASE_URL + request.app.router.url_path_for(url) %} -{{ text }} -{% endmacro %} -
- -
- -
-{% endif %} -{% block content %}{% endblock %} - -
- - -{% if is_admin %} - -{% endif %} - - - diff --git a/app/templates/login.html b/app/templates/login.html deleted file mode 100644 index 8f3940a..0000000 --- a/app/templates/login.html +++ /dev/null @@ -1,21 +0,0 @@ -{%- import "utils.html" as utils with context -%} -{% extends "layout.html" %} -{% block head %} - -{% endblock %} -{% block main_tag %} class="main-flex"{% endblock %} -{% block content %} -
-
- {% if error %} -

Invalid password.

- {% endif %} -
- - - - -
-
-
-{% endblock %} diff --git a/app/templates/lookup.html b/app/templates/lookup.html deleted file mode 100644 index 0b077e2..0000000 --- a/app/templates/lookup.html +++ /dev/null @@ -1,38 +0,0 @@ -{%- import "utils.html" as utils with context -%} -{% extends "layout.html" %} - -{% block head %} -{{ local_actor.display_name }} - Lookup -{% endblock %} - -{% block content %} - -
-

Interact with an ActivityPub object via its URL or look for a user using @user@domain.tld

- -
- - -
-
- - {% if error %} -
- {% if error.value == "NOT_FOUND" %} -

The remote object is unavailable.

- {% elif error.value == "UNAUTHORIZED" %} -

Missing permissions to fetch the remote object.

- {% elif error.value == "TIMEOUT" %} -

Lookup timed out, please try refreshing the page.

- {% else %} -

Unexpected error, please check the logs and report an issue if needed.

- {% endif %} -
- {% endif %} - - {% if ap_object and ap_object.ap_type in actor_types %} - {{ utils.display_actor(ap_object, actors_metadata, with_details=True) }} - {% elif ap_object %} - {{ utils.display_object(ap_object, actors_metadata=actors_metadata) }} - {% endif %} -{% endblock %} diff --git a/app/templates/notifications.html b/app/templates/notifications.html deleted file mode 100644 index b59eaeb..0000000 --- a/app/templates/notifications.html +++ /dev/null @@ -1,126 +0,0 @@ -{%- import "utils.html" as utils with context -%} -{% extends "layout.html" %} - -{% block head %} -{{ local_actor.display_name }} - Notifications -{% endblock %} - -{% macro notif_actor_action(notif, text, with_icon=False) %} -
- - {% if with_icon %}{{ utils.display_tiny_actor_icon(notif.actor) }}{% endif %} {{ notif.actor.display_name | clean_html(notif.actor) | safe }} {{ text }} - {{ notif.created_at | timeago }} - {% if notif.is_new %} - new - {% endif %} -
-{% endmacro %} - -{% block content %} -
-

Notifications

-
-
- {%- for notif in notifications %} -
- {%- if notif.notification_type.value == "new_follower" %} - {{ notif_actor_action(notif, "followed you") }} - {{ utils.display_actor(notif.actor, actors_metadata) }} - {%- elif notif.notification_type.value == "pending_incoming_follower" %} - {{ notif_actor_action(notif, "sent a follow request") }} - {{ utils.display_actor(notif.actor, actors_metadata, pending_incoming_follow_notif=notif) }} - {% elif notif.notification_type.value == "rejected_follower" %} - {% elif notif.notification_type.value == "unfollow" %} - {{ notif_actor_action(notif, "unfollowed you") }} - {{ utils.display_actor(notif.actor, actors_metadata) }} - {%- elif notif.notification_type.value == "follow_request_accepted" %} - {{ notif_actor_action(notif, "accepted your follow request") }} - {{ utils.display_actor(notif.actor, actors_metadata) }} - {%- elif notif.notification_type.value == "follow_request_rejected" %} - {{ notif_actor_action(notif, "rejected your follow request") }} - {{ utils.display_actor(notif.actor, actors_metadata) }} - {% elif notif.notification_type.value == "blocked" %} - {{ notif_actor_action(notif, "blocked you") }} - {{ utils.display_actor(notif.actor, actors_metadata) }} - {% elif notif.notification_type.value == "unblocked" %} - {{ notif_actor_action(notif, "unblocked you") }} - {{ utils.display_actor(notif.actor, actors_metadata) }} - {% elif notif.notification_type.value == "block" %} - {{ notif_actor_action(notif, "was blocked") }} - {{ utils.display_actor(notif.actor, actors_metadata) }} - {% elif notif.notification_type.value == "unblock" %} - {{ notif_actor_action(notif, "was unblocked") }} - {{ utils.display_actor(notif.actor, actors_metadata) }} - {%- elif notif.notification_type.value == "move" %} - {# for move notif, the actor is the target and the inbox object the Move activity #} - - {{ utils.display_actor(notif.actor) }} - {% elif notif.notification_type.value == "like" %} - {{ notif_actor_action(notif, "liked a post", with_icon=True) }} - {{ utils.display_object(notif.outbox_object) }} - {% elif notif.notification_type.value == "undo_like" %} - {{ notif_actor_action(notif, "unliked a post", with_icon=True) }} - {{ utils.display_object(notif.outbox_object) }} - {% elif notif.notification_type.value == "announce" %} - {{ notif_actor_action(notif, "shared a post", with_icon=True) }} - {{ utils.display_object(notif.outbox_object) }} - {% elif notif.notification_type.value == "undo_announce" %} - {{ notif_actor_action(notif, "unshared a post", with_icon=True) }} - {{ utils.display_object(notif.outbox_object) }} - {% elif notif.notification_type.value == "mention" %} - {{ notif_actor_action(notif, "mentioned you") }} - {{ utils.display_object(notif.inbox_object) }} - {% elif notif.notification_type.value == "new_webmention" %} -
- new webmention from - {% set facepile_item = notif.webmention.as_facepile_item %} - {% if facepile_item %} - {{ facepile_item.actor_name }} - {% endif %} - {{ notif.webmention.source }} -
- {{ utils.display_object(notif.outbox_object) }} - {% elif notif.notification_type.value == "updated_webmention" %} -
- updated webmention from - {% set facepile_item = notif.webmention.as_facepile_item %} - {% if facepile_item %} - {{ facepile_item.actor_name }} - {% endif %} - {{ notif.webmention.source }} -
- {{ utils.display_object(notif.outbox_object) }} - {% elif notif.notification_type.value == "deleted_webmention" %} -
- deleted webmention from - {% set facepile_item = notif.webmention.as_facepile_item %} - {% if facepile_item %} - {{ facepile_item.actor_name }} - {% endif %} - {{ notif.webmention.source }} -
- {{ utils.display_object(notif.outbox_object) }} - {% else %} -
- Implement {{ notif.notification_type }} -
- {%- endif %} -
- {%- endfor %} -
- -{% if next_cursor %} -
-

- - See more{% if more_unread_count %} ({{ more_unread_count }} unread left){% endif %} - -

-
-{% endif %} - -{% endblock %} diff --git a/app/templates/object.html b/app/templates/object.html deleted file mode 100644 index d89accb..0000000 --- a/app/templates/object.html +++ /dev/null @@ -1,56 +0,0 @@ -{%- import "utils.html" as utils with context -%} -{% extends "layout.html" %} - -{% block head %} -{% if outbox_object %} -{% if outbox_object.content %} - {% set excerpt = outbox_object.content | html2text | trim | truncate(50) %} -{% else %} - {% set excerpt = outbox_object.summary | html2text | trim | truncate(50) %} -{% endif %} -{% if outbox_object.name %}{{ outbox_object.name }}{% else %}{{ local_actor.display_name }}: "{{ excerpt }}"{% endif %} - - - - - - - - - - -{% endif %} -{% endblock %} - -{% block content %} - -{% if outbox_object %} -{% include "header.html" %} -{% endif %} - -{% macro display_replies_tree(replies_tree_node) %} - -{% if replies_tree_node.is_requested %} -{{ utils.display_object(replies_tree_node.ap_object, likes=likes, shares=shares, webmentions=webmentions, expanded=not replies_tree_node.is_root, is_object_page=True, is_h_entry=False) }} -{% else %} - {% if replies_tree_node.wm_reply %} - {# u-comment h-cite is displayed by default for webmention #} - {{ utils.display_webmention_reply(replies_tree_node.wm_reply) }} - {% else %} -
- {{ utils.display_object(replies_tree_node.ap_object, is_h_entry=False) }} -
- {% endif %} -{% endif %} - -{% for child in replies_tree_node.children %} - {{ display_replies_tree(child) }} -{% endfor %} - -{% endmacro %} - -
-{{ display_replies_tree(replies_tree) }} -
- -{% endblock %} diff --git a/app/templates/redirect.html b/app/templates/redirect.html deleted file mode 100644 index f8b0601..0000000 --- a/app/templates/redirect.html +++ /dev/null @@ -1,15 +0,0 @@ -{%- import "utils.html" as utils with context -%} -{% extends "layout.html" %} - -{% block head %} -{{ local_actor.display_name }}'s microblog - Redirect -{% endblock %} - -{% block content %} -{% include "header.html" %} - -
-

You are being redirected to: {{ url }}

-
- -{% endblock %} diff --git a/app/templates/redirect_to_remote_instance.html b/app/templates/redirect_to_remote_instance.html deleted file mode 100644 index f814777..0000000 --- a/app/templates/redirect_to_remote_instance.html +++ /dev/null @@ -1,15 +0,0 @@ -{%- import "utils.html" as utils with context -%} -{% extends "layout.html" %} - -{% block head %} -{{ local_actor.display_name }}'s microblog - Redirect -{% endblock %} - -{% block content %} -{% include "header.html" %} - -
-

You are being redirected to your instance: {{ url }}

-
- -{% endblock %} diff --git a/app/templates/remote_follow.html b/app/templates/remote_follow.html deleted file mode 100644 index ed25be0..0000000 --- a/app/templates/remote_follow.html +++ /dev/null @@ -1,21 +0,0 @@ -{%- import "utils.html" as utils with context -%} -{% extends "layout.html" %} - -{% block head %} -Remote follow {{ local_actor.display_name }} - -{% endblock %} - -{% block content %} -{% include "header.html" %} - -
-

Remotely follow {{ local_actor.display_name }}

-
- {{ utils.embed_csrf_token() }} - - -
-
- -{% endblock %} diff --git a/app/templates/remote_interact.html b/app/templates/remote_interact.html deleted file mode 100644 index 0fbfe26..0000000 --- a/app/templates/remote_interact.html +++ /dev/null @@ -1,27 +0,0 @@ -{%- import "utils.html" as utils with context -%} -{% extends "layout.html" %} - -{% block head %} -Interact from your instance - -{% endblock %} - -{% block content %} -{% include "header.html" %} - -
-

Interact with this object

-
- -{{ utils.display_object(outbox_object) }} - -
-
- {{ utils.embed_csrf_token() }} - - - -
-
- -{% endblock %} diff --git a/app/templates/utils.html b/app/templates/utils.html deleted file mode 100644 index d88a881..0000000 --- a/app/templates/utils.html +++ /dev/null @@ -1,853 +0,0 @@ -{% macro embed_csrf_token() %} -{% block embed_csrf_token scoped %} - -{% endblock %} -{% endmacro %} - -{% macro embed_redirect_url(permalink_id=None) %} -{% block embed_redirect_url scoped %} - -{% endblock %} -{% endmacro %} - -{% macro admin_block_button(actor) %} -{% block admin_block_button scoped %} -
- {{ embed_csrf_token() }} - {{ embed_redirect_url() }} - - -
-{% endblock %} -{% endmacro %} - -{% macro admin_unblock_button(actor) %} -{% block admin_unblock_button scoped %} -
- {{ embed_csrf_token() }} - {{ embed_redirect_url() }} - - -
-{% endblock %} -{% endmacro %} - -{% macro admin_hide_shares_button(actor) %} -{% block admin_hide_shares_button scoped %} -
- {{ embed_csrf_token() }} - {{ embed_redirect_url() }} - - -
-{% endblock %} -{% endmacro %} - -{% macro admin_show_shares_button(actor) %} -{% block admin_show_shares_button scoped %} -
- {{ embed_csrf_token() }} - {{ embed_redirect_url() }} - - -
-{% endblock %} -{% endmacro %} - - -{% macro admin_follow_button(actor) %} -{% block admin_follow_button scoped %} -
- {{ embed_csrf_token() }} - {{ embed_redirect_url() }} - - -
-{% endblock %} -{% endmacro %} - -{% macro admin_accept_incoming_follow_button(notif) %} -{% block admin_accept_incoming_follow_button scoped %} -
- {{ embed_csrf_token() }} - {{ embed_redirect_url() }} - - -
-{% endblock %} -{% endmacro %} - -{% macro admin_reject_incoming_follow_button(notif) %} -{% block admin_reject_incoming_follow_button scoped %} -
- {{ embed_csrf_token() }} - {{ embed_redirect_url() }} - - -
-{% endblock %} -{% endmacro %} - -{% macro admin_like_button(ap_object_id, permalink_id) %} -{% block admin_like_button scoped %} -
- {{ embed_csrf_token() }} - {{ embed_redirect_url(permalink_id) }} - - -
-{% endblock %} -{% endmacro %} - -{% macro admin_bookmark_button(ap_object_id, permalink_id) %} -{% block admin_bookmark_button scoped %} -
- {{ embed_csrf_token() }} - {{ embed_redirect_url(permalink_id) }} - - -
-{% endblock %} -{% endmacro %} - -{% macro admin_unbookmark_button(ap_object_id, permalink_id) %} -{% block admin_unbookmark_button scoped %} -
- {{ embed_csrf_token() }} - {{ embed_redirect_url(permalink_id) }} - - -
-{% endblock %} -{% endmacro %} - -{% macro admin_pin_button(ap_object_id, permalink_id) %} -{% block admin_pin_button scoped %} -
- {{ embed_csrf_token() }} - {{ embed_redirect_url(permalink_id) }} - - -
-{% endblock %} -{% endmacro %} - -{% macro admin_unpin_button(ap_object_id, permalink_id) %} -{% block admin_unpin_button scoped %} -
- {{ embed_csrf_token() }} - {{ embed_redirect_url(permalink_id) }} - - -
-{% endblock %} -{% endmacro %} - -{% macro admin_delete_button(ap_object) %} -{% block admin_delete_button scoped %} -
- {{ embed_csrf_token() }} - - - -
-{% endblock %} -{% endmacro %} - -{% macro admin_force_delete_button(ap_object_id, permalink_id=None) %} -{% block admin_force_delete_button scoped %} -
- {{ embed_csrf_token() }} - {{ embed_redirect_url(permalink_id) }} - - -
-{% endblock %} -{% endmacro %} - -{% macro admin_force_delete_webmention_button(webmention_id, permalink_id=None) %} -{% block admin_force_delete_webmention_button scoped %} -
- {{ embed_csrf_token() }} - {{ embed_redirect_url(permalink_id) }} - - -
-{% endblock %} -{% endmacro %} - -{% macro admin_announce_button(ap_object_id, permalink_id=None) %} -{% block admin_announce_button scoped %} -
- {{ embed_csrf_token() }} - {{ embed_redirect_url(permalink_id) }} - - -
-{% endblock %} -{% endmacro %} - -{% macro admin_undo_button(ap_object_id, action="undo", permalink_id=None) %} -{% block admin_undo_button scoped %} -
- {{ embed_csrf_token() }} - {{ embed_redirect_url(permalink_id) }} - - -
-{% endblock %} -{% endmacro %} - -{% macro admin_reply_button(ap_object_id) %} -{% block admin_reply_button scoped %} -
- - -
-{% endblock %} -{% endmacro %} - -{% macro admin_dm_button(actor_handle) %} -{% block admin_dm_button scoped %} -
- - - -
-{% endblock %} -{% endmacro %} - -{% macro admin_mention_button(actor_handle) %} -{% block admin_mention_button scoped %} -
- - -
-{% endblock %} -{% endmacro %} - - - -{% macro admin_profile_button(ap_actor_id) %} -{% block admin_profile_button scoped %} -
- - -
-{% endblock %} -{% endmacro %} - -{% macro admin_expand_button(ap_object) %} -{% block admin_expand_button scoped %} -{# TODO turn these into a regular link and append permalink ID if it's a reply #} -
- - -
-{% endblock %} -{% endmacro %} - -{% macro display_box_filters(route) %} -{% block display_box_filters scoped %} - -{% endblock %} -{% endmacro %} - -{% macro display_tiny_actor_icon(actor) %} -{% block display_tiny_actor_icon scoped %} - -{% endblock %} -{% endmacro %} - -{% macro actor_action(inbox_object, text, with_icon=False) %} -{% block actor_action scoped %} -
- - {% if with_icon %}{{ display_tiny_actor_icon(inbox_object.actor) }}{% endif %} {{ inbox_object.actor.display_name | clean_html(inbox_object.actor) | safe }} - {{ text }} - {{ inbox_object.ap_published_at | timeago }} -
- -{% endblock %} -{% endmacro %} - -{% macro display_actor(actor, actors_metadata={}, embedded=False, with_details=False, pending_incoming_follow_notif=None) %} -{% block display_actor scoped %} -{% set metadata = actors_metadata.get(actor.ap_id) %} - -{% if not embedded %} -
-{% endif %} - -
-
- {{ actor.display_name }}'s avatar -
- -
{{ actor.display_name | clean_html(actor) | safe }}
-
{{ actor.handle }}
-
-
- -{% if is_admin and metadata %} -
- -
-{% endif %} - -{% if with_details %} - {% if actor.summary %} -
- {{ actor.summary | clean_html(actor) | safe }} -
- {% endif %} - - {% if actor.attachments %} -
- {% for prop in actor.attachments %} -
- {% if prop.type == "PropertyValue" %} -
{{ prop.name }}
-
{{ prop.value | clean_html(actor) | safe }}
- {% endif %} -
- {% endfor %} -
- {% endif %} -{% endif %} - -{% if not embedded %} -
-{% endif %} - -{% endblock %} -{% endmacro %} - -{% macro display_og_meta(object) %} -{% block display_og_meta scoped %} -{% if object.og_meta %} -{% for og_meta in object.og_meta[:1] %} -
- {% if og_meta.image %} -
- -
- {% endif %} -
- {{ og_meta.title }} - {% if og_meta.site_name %} - {{ og_meta.site_name }} - {% endif %} -
-
-{% endfor %} -{% endif %} -{% endblock %} -{% endmacro %} - - -{% macro display_attachments(object) %} -{% block display_attachments scoped %} - - {% for attachment in object.attachments %} - {% if attachment.type != "PropertyValue" %} - {% set orientation = "unknown" %} - {% if attachment.width %} - {% set orientation = "portrait" if attachment.width < attachment.height else "landscape" %} - {% endif %} - {% if object.sensitive and (attachment.type == "Image" or (attachment | has_media_type("image")) or attachment.type == "Video" or (attachment | has_media_type("video"))) %} -
- -
-
- -
-
- {% else %} -
- {% endif %} - - {% if attachment.type == "Image" or (attachment | has_media_type("image")) %} - {% if attachment.url not in object.inlined_images %} - - {{ attachment.name }} - - {% endif %} - {% elif attachment.type == "Video" or (attachment | has_media_type("video")) %} -
- -
GIF
-
- {% elif attachment.type == "Audio" or (attachment | has_media_type("audio")) %} - - {% elif attachment.type == "Link" %} - {{ attachment.url | truncate(64, True) }} ({{ attachment.mimetype}}) - {% else %} - - {% if attachment.name %}{{ attachment.name }}{% else %}{{ attachment.url | truncate(64, True) }}{% endif %} - ({{ attachment.mimetype }}) - {% endif %} - {% if object.sensitive and (attachment.type == "Image" or (attachment | has_media_type("image")) or attachment.type == "Video" or (attachment | has_media_type("video"))) %} -
-
-
-
- {% else %} -
- {% endif %} - {% endif %} - {% endfor %} -{% endblock %} -{% endmacro %} - -{% macro display_webmention_reply(wm_reply) %} -{% block display_webmention_reply scoped %} - -
-
-
- {{ wm_reply.face.name }}'s avatar -
- -
{{ wm_reply.face.name | clean_html_wm | safe }}
-
{{ wm_reply.face.url | truncate(64, True) }}
-
-
- -

in reply to - this object -

- -
-
- {{ wm_reply.content | clean_html_wm | safe }} -
-
- - -
- -{% endblock %} -{% endmacro %} - -{% macro display_object(object, likes=[], shares=[], webmentions=[], expanded=False, actors_metadata={}, is_object_page=False, is_h_entry=True) %} -{% block display_object scoped %} -{% set is_article_mode = object.is_from_outbox and object.ap_type == "Article" and is_object_page %} -{% if object.ap_type in ["Note", "Article", "Video", "Page", "Question", "Event"] %} -
- - {% if is_article_mode %} - - - - - - {% else %} - {{ display_actor(object.actor, actors_metadata, embedded=True) }} - {% endif %} - - {% if object.in_reply_to %} -

in reply to - this object -

- {% endif %} - - {% if object.ap_type in ["Article", "Event"] %} -

{{ object.name }}

- {% endif %} - - {% if object.ap_type == "Event" %} - {% if object.ap_object.get("endTime") and object.ap_object.get("startTime") %} -

On {{ object.ap_object.startTime | parse_datetime | format_date }} - (ends {{ object.ap_object.endTime | parse_datetime | format_date }})

- {% endif %} - {% endif %} - - {% if object.ap_object.get("location") %} - {% set loc = object.ap_object.get("location") %} - {% if loc.type == "Place" and loc.latitude and loc.longitude %} -
-

Location

- {% if loc.name %}{{ loc.name }}{% endif %} - - - - {{loc.latitude}},{{loc.longitude}} - -
- {% endif %} - {% endif %} - - {% if is_article_mode %} - - {% endif %} - - {% if object.summary %} -
- -
-

{{ object.summary | clean_html(object) | safe }}

-
- -
- {% endif %} -
-
- {{ object.content | clean_html(object) | safe }} -
- - {% if object.ap_type == "Question" %} - {% set can_vote = is_admin and object.is_from_inbox and not object.is_poll_ended and not object.voted_for_answers %} - {% if can_vote %} -
- {{ embed_csrf_token() }} - {{ embed_redirect_url(object.permalink_id) }} - - {% endif %} - - {% if object.poll_items %} -
    - {% for item in object.poll_items %} -
  • - {% set pct = item | poll_item_pct(object.poll_voters_count) %} -

    - {% if can_vote %} - - - {% endif %} - - {{ pct }}% ({{ item.replies.totalItems }} votes) -

    - - - -
  • - {% endfor %} -
- {% endif %} - - {% if can_vote %} -

- -

-
- {% endif %} - - - {% endif %} - - {{ display_og_meta(object) }} - -
- {% if object.summary %} -
- {% endif %} - -
- {{ display_attachments(object) }} -
- - - - {% if is_admin %} - - {% endif %} - - - {% if likes or shares or webmentions %} -
- {% if likes %} -
Likes -
- {% for like in likes %} - - {{ like.name }} - - {% endfor %} - {% if object.likes_count > likes | length %} -
- and {{ object.likes_count - likes | length }} more. -
- {% endif %} -
-
- {% endif %} - - {% if shares %} -
Shares -
- {% for share in shares %} - - {{ share.name }} - - {% endfor %} - {% if object.announces_count > shares | length %} -
- and {{ object.announces_count - shares | length }} more. -
- {% endif %} -
-
- {% endif %} - - {% if webmentions %} -
Webmentions -
- {% for webmention in webmentions %} - {% set wm = webmention.as_facepile_item %} - {% if wm %} - - {{ wm.actor_name }} - - {% endif %} - {% endfor %} -
-
- {% endif %} - -
- {% endif %} - - -
-{% endif %} -{% endblock %} -{% endmacro %} diff --git a/data/_theme.scss b/data/_theme.scss index bd7c861..d0ec062 100644 --- a/data/_theme.scss +++ b/data/_theme.scss @@ -1,11 +1,11 @@ // override vars for theming here -$background: rgb(41, 41, 41); -$light-background: #333333; +$background: rgb(19, 19, 19); +$light-background: #141414; $text-color: rgb(238, 238, 238); $primary-color: #dfd39d; $secondary-color: #e07127; -$form-background-color: rgb(95, 95, 95); +$form-background-color: rgb(39, 39, 39); $form-text-color: rgb(255, 255, 255); -$muted-color: rgb(173, 173, 173); // solarized comment text +$muted-color: rgb(156, 156, 156); // solarized comment text $primary-button-text-color: rgb(34, 34, 34); -$code-highlight-background: #1d1d1d; \ No newline at end of file +$code-highlight-background: #1b1b1b; \ No newline at end of file diff --git a/data/templates/app b/data/templates/app deleted file mode 120000 index 6a6e8a4..0000000 --- a/data/templates/app +++ /dev/null @@ -1 +0,0 @@ -../../app/templates/ \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index a95353f..d6730c1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,8 @@ version: "3" services: server: - image: microblogpub/microblogpub:latest + build: . + image: microblogpub container_name: microblogpub user: 1000:1000 restart: always diff --git a/tasks.py b/tasks.py index c968c85..76877c0 100644 --- a/tasks.py +++ b/tasks.py @@ -217,7 +217,7 @@ def embed_version() -> Generator[None, None, None]: def build_docker_image(ctx): # type: (Context) -> None with embed_version(): - run("docker build -t microblogpub/microblogpub .") + run("docker build -t microblogpub .") @task