File tree Expand file tree Collapse file tree 4 files changed +42
-1
lines changed Expand file tree Collapse file tree 4 files changed +42
-1
lines changed Original file line number Diff line number Diff line change @@ -198,3 +198,8 @@ class UserAchievementAdmin(admin.ModelAdmin):
198198class UserLinkAdmin (admin .ModelAdmin ):
199199 list_display = ("id" , "user" , "link" )
200200 list_display_links = ("id" , "user" , "link" )
201+
202+
203+ @admin .register (Expert )
204+ class ExpertAdmin (admin .ModelAdmin ):
205+ list_display = ("id" , "user" )
Original file line number Diff line number Diff line change 1+ # Generated by Django 4.2.3 on 2024-02-12 06:50
2+
3+ from django .db import migrations , models
4+
5+
6+ class Migration (migrations .Migration ):
7+
8+ dependencies = [
9+ ("partner_programs" , "0004_auto_20231230_0002" ),
10+ ("users" , "0044_auto_20240128_2236" ),
11+ ]
12+
13+ operations = [
14+ migrations .AddField (
15+ model_name = "expert" ,
16+ name = "programs" ,
17+ field = models .ManyToManyField (
18+ related_name = "experts" , to = "partner_programs.partnerprogram"
19+ ),
20+ ),
21+ ]
22+
Original file line number Diff line number Diff line change @@ -327,6 +327,10 @@ class Expert(AbstractUserWithRole):
327327 preferred_industries = models .CharField (max_length = 4096 , null = True , blank = True )
328328 useful_to_project = models .TextField (blank = True )
329329
330+ programs = models .ManyToManyField (
331+ "partner_programs.PartnerProgram" , related_name = "experts" , blank = True
332+ )
333+
330334 class Meta (TypedModelMeta ):
331335 verbose_name = "Эксперт"
332336 verbose_name_plural = "Эксперты"
Original file line number Diff line number Diff line change 1+ from rest_framework .exceptions import PermissionDenied
12from rest_framework .permissions import BasePermission , SAFE_METHODS
23
4+ from users .models import Expert
5+
36
47class IsAchievementOwnerOrReadOnly (BasePermission ):
58 """
@@ -18,4 +21,11 @@ class IsExpert(BasePermission):
1821 """
1922
2023 def has_permission (self , request , view ):
21- return request .user .user_type == 3
24+ user = request .user
25+ program_id = view .kwargs .get ("program_id" )
26+
27+ if not user .user_type == 3 :
28+ raise PermissionDenied ("User is not an expert" )
29+ if not Expert .objects .filter (programs__id = program_id , user = user ).exists ():
30+ raise PermissionDenied ("You don't have permission to rate this program" )
31+ return True
You can’t perform that action at this time.
0 commit comments