[#502] Fixed `user_count` in `/api/v1/instance` to include only active local users.
authorIvan Tashkinov <ivantashkinov@gmail.com>
Thu, 17 Jan 2019 16:16:02 +0000 (19:16 +0300)
committerIvan Tashkinov <ivantashkinov@gmail.com>
Thu, 17 Jan 2019 16:16:02 +0000 (19:16 +0300)
lib/pleroma/stats.ex
lib/pleroma/user.ex
test/web/mastodon_api/mastodon_api_controller_test.exs

index 65a6d58b5a583b958c2d9aa3b7ddc59fc3e81abb..b3566ceb63d686a818bdccb4cdff17c9cf9b3131 100644 (file)
@@ -46,7 +46,7 @@ defmodule Pleroma.Stats do
       from(u in User.local_user_query(), select: fragment("sum((?->>'note_count')::int)", u.info))
 
     status_count = Repo.one(status_query)
-    user_count = Repo.aggregate(User.local_user_query(), :count, :id)
+    user_count = Repo.aggregate(User.active_local_user_query(), :count, :id)
 
     Agent.update(__MODULE__, fn _ ->
       {peers, %{domain_count: domain_count, status_count: status_count, user_count: user_count}}
index a52e536d3397f1e96e43ae46fb4b31128894e981..c91f2d31a2eeeced0895b6a8cb1c002c8ae93993 100644 (file)
@@ -796,7 +796,7 @@ defmodule Pleroma.User do
     update_and_set_cache(cng)
   end
 
-  def local_user_query() do
+  def local_user_query do
     from(
       u in User,
       where: u.local == true,
@@ -804,7 +804,14 @@ defmodule Pleroma.User do
     )
   end
 
-  def moderator_user_query() do
+  def active_local_user_query do
+    from(
+      u in local_user_query(),
+      where: fragment("?->'deactivated' @> 'false'", u.info)
+    )
+  end
+
+  def moderator_user_query do
     from(
       u in User,
       where: u.local == true,
index c83bb5bc8db3bae6595df007143fc2840eab5b59..dd84052a37c9820608c8d39a948c7a56758d2d85 100644 (file)
@@ -1473,8 +1473,11 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
   end
 
   test "get instance information", %{conn: conn} do
-    insert(:user, %{local: true})
     user = insert(:user, %{local: true})
+
+    user2 = insert(:user, %{local: true})
+    {:ok, _user2} = User.deactivate(user2, !user2.info.deactivated)
+
     insert(:user, %{local: false, nickname: "u@peer1.com"})
     insert(:user, %{local: false, nickname: "u@peer2.com"})
 
@@ -1489,7 +1492,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
     stats = result["stats"]
 
     assert stats
-    assert stats["user_count"] == 2
+    assert stats["user_count"] == 1
     assert stats["status_count"] == 1
     assert stats["domain_count"] == 2
   end