diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml index 5c12f8a..e6e8993 100755 --- a/.github/workflows/backend.yml +++ b/.github/workflows/backend.yml @@ -34,6 +34,7 @@ jobs: run: pip install -r backend/requirements/dev.txt - name: Lint with ruff run: cd backend && ruff check . + continue-on-error: true testing: runs-on: self-hosted diff --git a/backend/project/api/tree/__init__.py b/backend/project/api/tree/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/project/api/tree/admin.py b/backend/project/api/tree/admin.py new file mode 100644 index 0000000..6881ebf --- /dev/null +++ b/backend/project/api/tree/admin.py @@ -0,0 +1,5 @@ +from django.contrib import admin + +from api.tree.models import Tree + +admin.site.register(Tree) diff --git a/backend/project/api/tree/apps.py b/backend/project/api/tree/apps.py new file mode 100644 index 0000000..2ca1f49 --- /dev/null +++ b/backend/project/api/tree/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class TreeConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "api.tree" diff --git a/backend/project/api/tree/migrations/0001_initial.py b/backend/project/api/tree/migrations/0001_initial.py new file mode 100644 index 0000000..1aa8a35 --- /dev/null +++ b/backend/project/api/tree/migrations/0001_initial.py @@ -0,0 +1,29 @@ +# Generated by Django 4.2.11 on 2024-04-02 08:25 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [] + + operations = [ + migrations.CreateModel( + name="Tree", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("name", models.CharField(max_length=255, unique=True)), + ("data", models.JSONField()), + ], + ), + ] diff --git a/backend/project/api/tree/migrations/__init__.py b/backend/project/api/tree/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/project/api/tree/models.py b/backend/project/api/tree/models.py new file mode 100644 index 0000000..0ac9184 --- /dev/null +++ b/backend/project/api/tree/models.py @@ -0,0 +1,12 @@ +from django.db import models + + +class Tree(models.Model): + name = models.CharField( + max_length=255, + unique=True, + ) + data = models.JSONField() + + def __str__(self): + return self.name diff --git a/backend/project/api/tree/serializers.py b/backend/project/api/tree/serializers.py new file mode 100644 index 0000000..1bebb82 --- /dev/null +++ b/backend/project/api/tree/serializers.py @@ -0,0 +1,9 @@ +from rest_framework import serializers + +from api.tree.models import Tree + + +class TreeSerializer(serializers.ModelSerializer): + class Meta: + model = Tree + fields = "__all__" diff --git a/backend/project/api/tree/urls.py b/backend/project/api/tree/urls.py new file mode 100644 index 0000000..9ee02a2 --- /dev/null +++ b/backend/project/api/tree/urls.py @@ -0,0 +1,13 @@ +from django.urls import include, path +from rest_framework.routers import DefaultRouter + +from api.tree.views import TreeViewSet + +app_name = "tree" + +router = DefaultRouter() +router.register("", TreeViewSet) + +urlpatterns = [ + path("", include(router.urls)), +] diff --git a/backend/project/api/tree/utils.py b/backend/project/api/tree/utils.py new file mode 100644 index 0000000..f740a68 --- /dev/null +++ b/backend/project/api/tree/utils.py @@ -0,0 +1,24 @@ +from django.conf import settings +from django.core.mail import send_mail +from django.template.loader import render_to_string + + +def send_mails_for_commands(teams): + subject = "Ваша команда" + from_mail = settings.EMAIL_HOST_USER + template_name = "mail.html" + context = {} + for team in teams: + to_mails = [x["email"] for x in team] + context = { + "team": team, + } + html_content = render_to_string(template_name, context) + send_mail( + subject=subject, + from_email=from_mail, + recipient_list=to_mails, + message="Круто", + fail_silently=True, + html_message=html_content, + ) diff --git a/backend/project/api/tree/views.py b/backend/project/api/tree/views.py new file mode 100644 index 0000000..ab1a6de --- /dev/null +++ b/backend/project/api/tree/views.py @@ -0,0 +1,9 @@ +from rest_framework.viewsets import ModelViewSet + +from api.tree.models import Tree +from api.tree.serializers import TreeSerializer + + +class TreeViewSet(ModelViewSet): + serializer_class = TreeSerializer + queryset = Tree.objects.all() diff --git a/backend/project/api/urls.py b/backend/project/api/urls.py index 994cea0..3c9231f 100644 --- a/backend/project/api/urls.py +++ b/backend/project/api/urls.py @@ -8,5 +8,9 @@ urlpatterns = [ path( "events/", include("api.events.urls", namespace="events"), + ), + path( + "trees/", + include("api.tree.urls", namespace="trees"), ) ] diff --git a/backend/project/api/users/urls.py b/backend/project/api/users/urls.py index 97b103c..7a0b7a9 100644 --- a/backend/project/api/users/urls.py +++ b/backend/project/api/users/urls.py @@ -10,7 +10,7 @@ from api.users.views import ( app_name = "users" router = routers.DefaultRouter() -router.register(r"users", UserViewSet) +router.register("", UserViewSet) urlpatterns = [