Skip to content

Commit 3700430

Browse files
authored
Merge pull request #141 from PROCOLLAB-github/dev
Update UserDetail serializer
2 parents d4d4aab + 49db88a commit 3700430

5 files changed

Lines changed: 66 additions & 25 deletions

File tree

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,5 +135,5 @@ dmypy.json
135135

136136
cache
137137

138-
staticfiles
138+
static
139139
/emails/

core/utils.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
1-
from django.core.mail import EmailMessage
1+
from django.core.mail import EmailMultiAlternatives
22

33

44
class Email:
55
@staticmethod
66
def send_email(data):
7-
email = EmailMessage(
8-
subject=data["email_subject"], body=data["email_body"], to=[data["to_email"]]
7+
email = EmailMultiAlternatives(
8+
subject=data["email_subject"],
9+
body=data["email_body"],
10+
to=[data["to_email"]],
911
)
12+
if data.get("html_content"):
13+
email.attach_alternative(data["html_content"], "text/html")
1014
email.send()
1115

1216

procollab/settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
)
6464

6565
INSTALLED_APPS = [
66-
# daphne is required for channels, should be installed before django.contrib.staticfiles
66+
# daphne is required for channels, should be installed before django.contrib.static
6767
"daphne",
6868
# django apps
6969
"django.contrib.admin",

users/helpers.py

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import os
2+
3+
from django.conf import settings
14
from django.contrib.auth import get_user_model
25
from rest_framework_simplejwt.tokens import RefreshToken
36
from django.contrib.sites.shortcuts import get_current_site
@@ -69,26 +72,29 @@ def verify_email(user, request):
6972

7073

7174
def send_verification_completed_email(user: User):
72-
# fixme
73-
email_body = (
74-
f"Поздравляю тебя, {user.first_name} {user.last_name}! Ты прошел верификацию и"
75-
f" стал частью сообщества PROCOLLAB!"
76-
f"Теперь ты сможешь пользоваться всем функционалом платформы, создавать проекты,"
77-
f" искать команду, находить нужные мероприятия."
78-
f"Следи за анонсами обновлений в нашей группе в ВК https://vk.com/PROCOLLAB "
79-
f"И скорее переходи на саму платформу, чтобы уже сегодня начать создавать свой проект."
80-
f"https://procollab.ru "
81-
f"С уважением, "
82-
f"Администрация PROCOLLAB"
83-
)
84-
85-
data = {
86-
"email_body": email_body,
87-
"email_subject": "Procollab | Верификация",
88-
"to_email": user.email,
89-
}
90-
91-
Email.send_email(data)
75+
fname = os.path.join(settings.STATIC_ROOT, "verification-succeed.html")
76+
with open(fname, "r", encoding="utf-8") as f:
77+
html_content = f.read()
78+
email_body = (
79+
f"Поздравляю тебя, {user.first_name} {user.last_name}! Ты прошел верификацию и"
80+
f" стал частью сообщества PROCOLLAB!"
81+
f"Теперь ты сможешь пользоваться всем функционалом платформы, создавать проекты,"
82+
f" искать команду, находить нужные мероприятия."
83+
f"Следи за анонсами обновлений в нашей группе в ВК https://vk.com/PROCOLLAB "
84+
f"И скорее переходи на саму платформу, чтобы уже сегодня начать создавать свой проект."
85+
f"https://procollab.ru "
86+
f"С уважением, "
87+
f"Администрация PROCOLLAB"
88+
)
89+
90+
data = {
91+
"email_body": email_body,
92+
"email_subject": "Procollab | Верификация",
93+
"to_email": user.email,
94+
"html_content": html_content,
95+
}
96+
97+
Email.send_email(data)
9298

9399

94100
def check_related_fields_update(data, pk):

users/serializers.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from django.core.cache import cache
44

55
from core.utils import get_user_online_cache_key
6+
from projects.models import Project
67
from .models import CustomUser, Expert, Investor, Member, Mentor, UserAchievement
78

89

@@ -85,6 +86,13 @@ class UserDetailSerializer(serializers.ModelSerializer):
8586
key_skills = KeySkillsField(required=False)
8687
links = serializers.SerializerMethodField()
8788
is_online = serializers.SerializerMethodField()
89+
projects = serializers.SerializerMethodField()
90+
91+
@classmethod
92+
def get_projects(cls, user: CustomUser):
93+
return UserProjectsSerializer(
94+
[collab.project for collab in user.collaborations.all()], many=True
95+
).data
8896

8997
@classmethod
9098
def get_links(cls, user: CustomUser):
@@ -122,6 +130,7 @@ class Meta:
122130
"achievements",
123131
"verification_date",
124132
"onboarding_stage",
133+
"projects",
125134
]
126135

127136
def update(self, instance, validated_data):
@@ -195,6 +204,28 @@ def update(self, instance, validated_data):
195204
return instance
196205

197206

207+
class UserProjectsSerializer(serializers.ModelSerializer):
208+
short_description = serializers.SerializerMethodField()
209+
210+
@classmethod
211+
def get_short_description(cls, project):
212+
return project.get_short_description()
213+
214+
class Meta:
215+
model = Project
216+
fields = [
217+
"id",
218+
"name",
219+
"leader",
220+
"short_description",
221+
"image_address",
222+
"industry",
223+
]
224+
read_only_fields = [
225+
"leader",
226+
]
227+
228+
198229
class UserListSerializer(serializers.ModelSerializer):
199230
member = MemberSerializer(required=False)
200231
key_skills = KeySkillsField(required=False)

0 commit comments

Comments
 (0)