Introduce notifications app and integrate emails
Add a new notifications app (models, serializers, views, admin, tasks, consumers, routing, urls, tests) with Notification.notify for in-app websocket pushes and optional email delivery. Centralize email sending in notifications.tasks.send_email_with_context and re-export it from account.tasks for compatibility. Update account and commerce and advertisement tasks to use Notification.notify/_notify_order and the new email helper; adjust order/notification tasks to consolidate logic. Wire notifications into ASGI routing, settings and URL conf. Misc: handle OSError when importing weasyprint, add tmp/ to .gitignore, add local .claude PowerShell checks, add social.blog skeleton, and remove legacy ews-component test files.
This commit is contained in:
1
backend/social/blog/IDEA.md
Normal file
1
backend/social/blog/IDEA.md
Normal file
@@ -0,0 +1 @@
|
||||
# editorjs.io - základ
|
||||
0
backend/social/blog/__init__.py
Normal file
0
backend/social/blog/__init__.py
Normal file
3
backend/social/blog/admin.py
Normal file
3
backend/social/blog/admin.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
5
backend/social/blog/apps.py
Normal file
5
backend/social/blog/apps.py
Normal file
@@ -0,0 +1,5 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class BlogConfig(AppConfig):
|
||||
name = 'blog'
|
||||
0
backend/social/blog/migrations/__init__.py
Normal file
0
backend/social/blog/migrations/__init__.py
Normal file
16
backend/social/blog/models.py
Normal file
16
backend/social/blog/models.py
Normal file
@@ -0,0 +1,16 @@
|
||||
from django.db import models
|
||||
|
||||
# Create your models here.
|
||||
|
||||
|
||||
class Blog(models.Model):
|
||||
title = models.CharField(max_length=255)
|
||||
content = models.JsonField()
|
||||
|
||||
authors = models.ManyToManyField('Author', related_name='blogs')
|
||||
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
updated_at = models.DateTimeField(auto_now=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.title
|
||||
0
backend/social/blog/serializers.py
Normal file
0
backend/social/blog/serializers.py
Normal file
3
backend/social/blog/tests.py
Normal file
3
backend/social/blog/tests.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
3
backend/social/blog/views.py
Normal file
3
backend/social/blog/views.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
||||
Reference in New Issue
Block a user