Merge remote-tracking branch 'remotes/origin/develop' into feature/object-hashtags...
authorIvan Tashkinov <ivantashkinov@gmail.com>
Thu, 11 Feb 2021 16:31:57 +0000 (19:31 +0300)
committerIvan Tashkinov <ivantashkinov@gmail.com>
Thu, 11 Feb 2021 16:31:57 +0000 (19:31 +0300)
# Conflicts:
# CHANGELOG.md
# lib/mix/tasks/pleroma/database.ex
# lib/pleroma/web/templates/feed/feed/_activity.rss.eex

1  2 
CHANGELOG.md
config/config.exs
config/description.exs
lib/mix/tasks/pleroma/database.ex
lib/pleroma/application.ex
lib/pleroma/web/activity_pub/activity_pub.ex
lib/pleroma/web/templates/feed/feed/_activity.rss.eex

diff --cc CHANGELOG.md
index f9a32f430d6faaaf489f4435d5c3c00f322f84c0,bbd898bdfc978fdfdfbbb25b3876ba63de47204c..23567a97c8a839d2854c6c6651a535da6df127a8
@@@ -21,8 -18,21 +18,22 @@@ The format is based on [Keep a Changelo
  - Deprecated `Pleroma.Uploaders.S3, :public_endpoint`. Now `Pleroma.Upload, :base_url` is the standard configuration key for all uploaders.
  - Improved Apache webserver support: updated sample configuration, MediaProxy cache invalidation verified with the included sample script
  - Improve OAuth 2.0 provider support. A missing `fqn` field was added to the response, but does not expose the user's email address.
+ - Provide redirect of external posts from `/notice/:id` to their original URL
+ - Admins no longer receive notifications for reports if they are the actor making the report.
+ - Improved Mailer configuration setting descriptions for AdminFE.
+ <details>
+   <summary>API Changes</summary>
+ - **Breaking:** AdminAPI changed User field `confirmation_pending` to `is_confirmed`
+ - **Breaking:** AdminAPI changed User field `approval_pending` to `is_approved`
+ - **Breaking**: AdminAPI changed User field `deactivated` to `is_active`
+ - **Breaking:** AdminAPI `GET /api/pleroma/admin/users/:nickname_or_id/statuses` changed response format and added the number of total users posts.
+ - **Breaking:** AdminAPI `GET /api/pleroma/admin/instances/:instance/statuses` changed response format and added the number of total users posts.
+ - Admin API: Reports now ordered by newest
+ </details>
 +- Extracted object hashtags into separate table in order to improve hashtag timeline performance (via background migration in `Pleroma.Migrators.HashtagsTableMigrator`). 
  
  ### Added
  
Simple merge
Simple merge
index 7c4f54141bc39ce16b43974c653fb5cae750f936,2403ed5813f40c6a311669f6b82fafe8f7aee184..2136ddb0243a4d414066663ad0405cc3567694a8
@@@ -171,32 -168,50 +171,79 @@@ defmodule Mix.Tasks.Pleroma.Database d
      |> Stream.run()
    end
  
+   def run(["set_text_search_config", tsconfig]) do
+     start_pleroma()
+     %{rows: [[tsc]]} = Ecto.Adapters.SQL.query!(Pleroma.Repo, "SHOW default_text_search_config;")
+     shell_info("Current default_text_search_config: #{tsc}")
+     %{rows: [[db]]} = Ecto.Adapters.SQL.query!(Pleroma.Repo, "SELECT current_database();")
+     shell_info("Update default_text_search_config: #{tsconfig}")
+     %{messages: msg} =
+       Ecto.Adapters.SQL.query!(
+         Pleroma.Repo,
+         "ALTER DATABASE #{db} SET default_text_search_config = '#{tsconfig}';"
+       )
+     # non-exist config will not raise excpetion but only give >0 messages
+     if length(msg) > 0 do
+       shell_info("Error: #{inspect(msg, pretty: true)}")
+     else
+       rum_enabled = Pleroma.Config.get([:database, :rum_enabled])
+       shell_info("Recreate index, RUM: #{rum_enabled}")
+       # Note SQL below needs to be kept up-to-date with latest GIN or RUM index definition in future
+       if rum_enabled do
+         Ecto.Adapters.SQL.query!(
+           Pleroma.Repo,
+           "CREATE OR REPLACE FUNCTION objects_fts_update() RETURNS trigger AS $$ BEGIN
+           new.fts_content := to_tsvector(new.data->>'content');
+           RETURN new;
+           END
+           $$ LANGUAGE plpgsql"
+         )
+         shell_info("Refresh RUM index")
+         Ecto.Adapters.SQL.query!(Pleroma.Repo, "UPDATE objects SET updated_at = NOW();")
+       else
+         Ecto.Adapters.SQL.query!(Pleroma.Repo, "DROP INDEX IF EXISTS objects_fts;")
+         Ecto.Adapters.SQL.query!(
+           Pleroma.Repo,
+           "CREATE INDEX objects_fts ON objects USING gin(to_tsvector('#{tsconfig}', data->>'content')); "
+         )
+       end
+       shell_info('Done.')
+     end
+   end
++
 +  # Rolls back a specific migration (leaving subsequent migrations applied).
 +  # WARNING: imposes a risk of unrecoverable data loss — proceed at your own responsibility.
 +  # Based on https://stackoverflow.com/a/53825840
 +  def run(["rollback", version]) do
 +    prompt = "SEVERE WARNING: this operation may result in unrecoverable data loss. Continue?"
 +
 +    if shell_prompt(prompt, "n") in ~w(Yn Y y) do
 +      {_, result, _} =
 +        Ecto.Migrator.with_repo(Pleroma.Repo, fn repo ->
 +          version = String.to_integer(version)
 +          re = ~r/^#{version}_.*\.exs/
 +          path = Ecto.Migrator.migrations_path(repo)
 +
 +          with {:find, "" <> file} <- {:find, Enum.find(File.ls!(path), &String.match?(&1, re))},
 +               {:compile, [{mod, _} | _]} <- {:compile, Code.compile_file(Path.join(path, file))},
 +               {:rollback, :ok} <- {:rollback, Ecto.Migrator.down(repo, version, mod)} do
 +            {:ok, "Reversed migration: #{file}"}
 +          else
 +            {:find, _} -> {:error, "No migration found with version prefix: #{version}"}
 +            {:compile, e} -> {:error, "Problem compiling migration module: #{inspect(e)}"}
 +            {:rollback, e} -> {:error, "Problem reversing migration: #{inspect(e)}"}
 +            e -> {:error, "Something unexpected happened: #{inspect(e)}"}
 +          end
 +        end)
 +
 +      IO.inspect(result)
 +    end
 +  end
  end
Simple merge
index fc6d74b42f1d9aab417d6e99f5eb9a57085c106d,947bbb09970fa6f01788cf813414a1554eaf44a4..592b9dcdc4331b86ab4ee5c2c2c52203c0745593
@@@ -21,7 -20,9 +20,9 @@@
      <link><%= @data["external_url"] %></link>
    <% end %>
  
 -  <%= for tag <- @data["tag"] || [] do %>
+   <link rel="ostatus:conversation"><%= activity_context(@activity) %></link>
 +  <%= for tag <- Pleroma.Object.hashtags(@object) do %>
      <category term="<%= tag %>"></category>
    <% end %>