diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 29ea8e2..c9a3f05 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,6 +25,7 @@ variables: --destination "${IMAGE_NAME}:latest" --cache=true --registry-mirror=dockerhub.timeweb.cloud + retry: 2 build_frontend: <<: *build-template @@ -84,3 +85,4 @@ deploy: docker compose ps >> deploy.log 2>&1 EOF - ssh $SSH_ADDRESS "docker system prune -a --force" + retry: 2 diff --git a/services/backend/api/v1/user/views.py b/services/backend/api/v1/user/views.py index c4f8c15..6eb821b 100644 --- a/services/backend/api/v1/user/views.py +++ b/services/backend/api/v1/user/views.py @@ -1,5 +1,6 @@ from http import HTTPStatus as status +from django.contrib.auth.hashers import check_password from django.shortcuts import get_object_or_404 from ninja import Router from ninja.errors import AuthenticationError @@ -27,8 +28,6 @@ router = Router(tags=["user"]) ) def sign_up(request, data: RegisterSchema): user = User(**data.dict()) - user.password = user.make_password() - user.full_clean() user.save() token = BearerAuth.generate_jwt(user) @@ -46,9 +45,10 @@ def sign_up(request, data: RegisterSchema): ) def sign_in(request, data: LoginSchema): user = User.objects.filter(email=data.email).first() + print(check_password(data.password, user.password)) if not user: raise AuthenticationError - if not user.check_password(data.password): + if not check_password(data.password, user.password): raise AuthenticationError token = BearerAuth.generate_jwt(user) diff --git a/services/backend/apps/competition/models.py b/services/backend/apps/competition/models.py index f9d91ec..92bf05f 100644 --- a/services/backend/apps/competition/models.py +++ b/services/backend/apps/competition/models.py @@ -15,10 +15,16 @@ class Competition(BaseModel): EDU = "edu", "Образовательный" COMPETITIVE = "competitive", "Соревновательный" - title = models.CharField(max_length=100, verbose_name="аазвание") - description = HTMLField(verbose_name="описание") + def image_url_upload_to(instance, filename): + return f"/competitions/{instance.id}/image" + + title = models.CharField(max_length=100, verbose_name="название") + description = models.TextField(verbose_name="описание") image_url = models.FileField( - verbose_name="изображение соревнования", null=True, blank=True + verbose_name="изображение соревнования", + null=True, + blank=True, + upload_to=image_url_upload_to, ) end_date = models.DateTimeField( verbose_name="дедлайн участия", null=True, blank=True @@ -36,8 +42,9 @@ class Competition(BaseModel): choices=CompetitionParticipationType.choices, verbose_name="тип соревнования", ) - participants = models.ManyToManyField(User, related_name="participants", blank=True, - editable=False) + participants = models.ManyToManyField( + User, related_name="participants", blank=True, editable=False + ) def __str__(self): return self.title