mirror of
https://github.com/plausible/analytics.git
synced 2024-12-22 17:11:36 +03:00
Re enable accept traffic until notifications (#3737)
* Revert "Remove 0-sized queue" This reverts commit6d229b3f70
. * Revert "Temporarily remove notification cron worker (#3732)" This reverts commit447e3929cb
. * Revert "Temporarily disable accept_traffic_until actions (#3730)" This reverts commit58afe3376f
. * Send accept_traffic_until notifications at 8 UTC rather than 5 * Add option for dry-run * Expose dry_run in a dedicated function
This commit is contained in:
parent
ee6d16d44f
commit
18ddf1e7a0
@ -508,7 +508,9 @@ cloud_cron = [
|
||||
# Daily at 15
|
||||
{"0 15 * * *", Plausible.Workers.NotifyAnnualRenewal},
|
||||
# Every midnight
|
||||
{"0 0 * * *", Plausible.Workers.LockSites}
|
||||
{"0 0 * * *", Plausible.Workers.LockSites},
|
||||
# Daily at 8
|
||||
{"0 8 * * *", Plausible.Workers.AcceptTrafficUntil}
|
||||
]
|
||||
|
||||
crontab = if(is_selfhost, do: base_cron, else: base_cron ++ cloud_cron)
|
||||
@ -524,7 +526,8 @@ base_queues = [
|
||||
# NOTE: to be removed once #3700 is released
|
||||
google_analytics_imports: 1,
|
||||
analytics_imports: 1,
|
||||
domain_change_transition: 1
|
||||
domain_change_transition: 1,
|
||||
check_accept_traffic_until: 1
|
||||
]
|
||||
|
||||
cloud_queues = [
|
||||
|
@ -43,10 +43,17 @@ defmodule Plausible.Site.GateKeeper do
|
||||
end
|
||||
|
||||
defp policy(domain, opts) when is_binary(domain) do
|
||||
if site = Cache.get(domain, Keyword.get(opts, :cache_opts, [])) do
|
||||
check_rate_limit(site, opts)
|
||||
with from_cache <- Cache.get(domain, Keyword.get(opts, :cache_opts, [])),
|
||||
site = %Site{owner: %{accept_traffic_until: accept_traffic_until}} <- from_cache do
|
||||
if not is_nil(accept_traffic_until) and
|
||||
Date.after?(Date.utc_today(), accept_traffic_until) do
|
||||
:payment_required
|
||||
else
|
||||
check_rate_limit(site, opts)
|
||||
end
|
||||
else
|
||||
@policy_for_non_existing_sites
|
||||
_ ->
|
||||
@policy_for_non_existing_sites
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -16,8 +16,12 @@ defmodule Plausible.Workers.AcceptTrafficUntil do
|
||||
alias Plausible.Repo
|
||||
alias Plausible.ClickhouseRepo
|
||||
|
||||
def dry_run(date) do
|
||||
perform(nil, date, true)
|
||||
end
|
||||
|
||||
@impl Oban.Worker
|
||||
def perform(_job, today \\ Date.utc_today()) do
|
||||
def perform(_job, today \\ Date.utc_today(), dry_run? \\ false) do
|
||||
tomorrow = today |> Date.add(+1)
|
||||
next_week = today |> Date.add(+7)
|
||||
|
||||
@ -49,16 +53,24 @@ defmodule Plausible.Workers.AcceptTrafficUntil do
|
||||
for notification <- notifications do
|
||||
case {has_stats?(notification.site_ids, today), notification.deadline} do
|
||||
{true, ^tomorrow} ->
|
||||
notification
|
||||
|> store_sent(today)
|
||||
|> PlausibleWeb.Email.approaching_accept_traffic_until_tomorrow()
|
||||
|> Plausible.Mailer.send()
|
||||
if dry_run? do
|
||||
IO.puts("Will send final notification to #{notification.email}")
|
||||
else
|
||||
notification
|
||||
|> store_sent(today)
|
||||
|> PlausibleWeb.Email.approaching_accept_traffic_until_tomorrow()
|
||||
|> Plausible.Mailer.send()
|
||||
end
|
||||
|
||||
{true, ^next_week} ->
|
||||
notification
|
||||
|> store_sent(today)
|
||||
|> PlausibleWeb.Email.approaching_accept_traffic_until()
|
||||
|> Plausible.Mailer.send()
|
||||
if dry_run? do
|
||||
IO.puts("Will send weekly notification to #{notification.email}")
|
||||
else
|
||||
notification
|
||||
|> store_sent(today)
|
||||
|> PlausibleWeb.Email.approaching_accept_traffic_until()
|
||||
|> Plausible.Mailer.send()
|
||||
end
|
||||
|
||||
_ ->
|
||||
nil
|
||||
|
@ -117,7 +117,6 @@ defmodule Plausible.Ingestion.EventTest do
|
||||
assert dropped.drop_reason == :dc_ip
|
||||
end
|
||||
|
||||
@tag :skip
|
||||
test "event pipeline drops events for site with accept_trafic_until in the past" do
|
||||
yesterday = Date.add(Date.utc_today(), -1)
|
||||
|
||||
|
@ -14,7 +14,6 @@ defmodule Plausible.Site.GateKeeperTest do
|
||||
assert {:deny, :not_found} = GateKeeper.check("example.com", opts)
|
||||
end
|
||||
|
||||
@tag :skip
|
||||
test "sites with accepted_traffic_until < now are denied", %{test: test, opts: opts} do
|
||||
domain = "expired.example.com"
|
||||
yesterday = Date.utc_today() |> Date.add(-1)
|
||||
|
Loading…
Reference in New Issue
Block a user