mirror of https://github.com/zulip/zulip.git
migrations: Fix 0301 to replace a Python loop with SQL.
The previous code is correctly flagged by semgrep 0.23 as a violation of our sql-format rule. Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
parent
f57196b1d0
commit
42d038f09b
|
@ -1,21 +1,6 @@
|
|||
from django.db import connection, migrations
|
||||
from django.db.backends.postgresql.schema import DatabaseSchemaEditor
|
||||
from django.db.migrations.state import StateApps
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
def mark_messages_read(apps: StateApps, schema_editor: DatabaseSchemaEditor) -> None:
|
||||
Stream = apps.get_model("zerver", "Stream")
|
||||
deactivated_stream_ids = list(Stream.objects.filter(deactivated=True).values_list('id', flat=True))
|
||||
with connection.cursor() as cursor:
|
||||
for i in deactivated_stream_ids:
|
||||
cursor.execute(f"""
|
||||
UPDATE zerver_usermessage SET flags = flags | 1
|
||||
FROM zerver_message
|
||||
INNER JOIN zerver_stream ON zerver_stream.recipient_id = zerver_message.recipient_id
|
||||
WHERE zerver_message.id = zerver_usermessage.message_id
|
||||
AND zerver_stream.id = {i};
|
||||
""")
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
"""
|
||||
We're changing the stream deactivation process to make it mark all messages
|
||||
|
@ -23,12 +8,19 @@ class Migration(migrations.Migration):
|
|||
deactivated before this change, we need a migration to fix those old streams,
|
||||
to have all messages marked as read.
|
||||
"""
|
||||
atomic = False
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0300_add_attachment_is_web_public'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(mark_messages_read, reverse_code=migrations.RunPython.noop),
|
||||
migrations.RunSQL(
|
||||
sql="""
|
||||
UPDATE zerver_usermessage SET flags = flags | 1
|
||||
FROM zerver_message
|
||||
INNER JOIN zerver_stream ON zerver_stream.recipient_id = zerver_message.recipient_id
|
||||
WHERE zerver_message.id = zerver_usermessage.message_id
|
||||
AND zerver_stream.deactivated;
|
||||
""",
|
||||
reverse_sql="",
|
||||
),
|
||||
]
|
||||
|
|
Loading…
Reference in New Issue