Skip to content

Commit 9bd37b2

Browse files
authored
Merge pull request #193 from PROCOLLAB-github/feature/trajectories
Оптимизация административной панели
2 parents 921e157 + 2a039c5 commit 9bd37b2

5 files changed

Lines changed: 38 additions & 12 deletions

File tree

apps/courses/admin.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class SkillAdmin(admin.ModelAdmin):
1717
"status",
1818
"free_access",
1919
)
20+
search_fields = ("name",)
2021

2122

2223
@admin.register(Task)
@@ -75,6 +76,7 @@ def question_type(self, obj):
7576

7677
def has_popups(self, obj):
7778
return obj.popup.exists()
79+
7880
has_popups.boolean = True
7981

8082

apps/trajectories/admin.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,15 @@ class TrajectoryAdmin(admin.ModelAdmin):
1111
"company",
1212
"start_date",
1313
"duration_months",
14-
"background_color",
15-
"button_color",
16-
"select_button_color",
17-
"text_color",
1814
)
19-
list_filter = ["company", "start_date"]
20-
search_fields = ["name", "company"]
15+
list_filter = ("company", "start_date",)
16+
search_fields = ("name", "company",)
17+
autocomplete_fields = ("mentors",)
18+
19+
def get_mentors(self, obj):
20+
return ", ".join([mentor.email for mentor in obj.mentors.all()])
21+
22+
get_mentors.short_description = "Наставники"
2123

2224

2325
@admin.register(Month)
@@ -27,7 +29,9 @@ class MonthAdmin(admin.ModelAdmin):
2729
"trajectory",
2830
"skills_list",
2931
)
30-
search_fields = ["trajectory__name"]
32+
list_filter = ("trajectory",)
33+
search_fields = ("trajectory__name",)
34+
autocomplete_fields = ("skills",)
3135

3236
def skills_list(self, obj):
3337
return ", ".join(skill.name for skill in obj.skills.all())
@@ -45,8 +49,9 @@ class UserTrajectoryAdmin(admin.ModelAdmin):
4549
"is_active",
4650
"mentor",
4751
)
48-
list_filter = ["is_active", "trajectory"]
49-
search_fields = ["user__email", "trajectory__name"]
52+
list_filter = ("is_active", "trajectory",)
53+
search_fields = ("user__email", "trajectory__name",)
54+
autocomplete_fields = ("mentor",)
5055

5156
def trajectory_name(self, obj):
5257
return obj.trajectory.name
@@ -62,8 +67,9 @@ class MeetingAdmin(admin.ModelAdmin):
6267
"initial_meeting",
6368
"final_meeting",
6469
)
65-
list_filter = ["initial_meeting", "final_meeting"]
66-
search_fields = ["user_trajectory__user__email"]
70+
readonly_fields = ("user_trajectory",)
71+
list_filter = ("initial_meeting", "final_meeting",)
72+
search_fields = ("user_trajectory__user__email",)
6773

6874
def user_trajectory_user_email(self, obj):
6975
return obj.user_trajectory.user.email

apps/trajectories/apps.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,6 @@ class TrajectoriesConfig(AppConfig):
55
default_auto_field = "django.db.models.BigAutoField"
66
name = "trajectories"
77
verbose_name = "Траектории"
8+
9+
def ready(self):
10+
import trajectories.signals # noqa

apps/trajectories/serializers.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,12 @@
1212

1313

1414
class TrajectoryIdSerializer(serializers.Serializer):
15-
user_trajectory_id = serializers.IntegerField(source="id")
15+
trajectory_id = serializers.IntegerField(source="trajectory.id", write_only=True)
16+
user_trajectory_id = serializers.IntegerField(source="id", read_only=True)
17+
18+
class Meta:
19+
model = Trajectory
20+
fields = ["user_trajectory_id", "trajectory_id"]
1621

1722

1823
class TrajectoryStudentSerializer(serializers.ModelSerializer):

apps/trajectories/signals.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from django.db.models.signals import post_save
2+
from django.dispatch import receiver
3+
4+
from trajectories.models import Meeting, UserTrajectory
5+
6+
7+
@receiver(post_save, sender=UserTrajectory)
8+
def create_meeting_for_new_trajectory(sender, instance, created, **kwargs):
9+
if created:
10+
Meeting.objects.create(user_trajectory=instance)

0 commit comments

Comments
 (0)