Skip to content

Commit ff209dc

Browse files
author
ninjadev999
committed
Merge pull request #113 from goldenstar999/backend
added sub-skill video function on admin part
2 parents cb17667 + abbe0eb commit ff209dc

File tree

101 files changed

+1377
-406
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

101 files changed

+1377
-406
lines changed

backend/talent_picture/admin.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ class TalentPictureAdmin(admin.ModelAdmin):
1313
'path',
1414
'size',
1515
'file_type',
16-
'updated'
16+
'updated',
17+
'approved',
18+
'approved_date',
19+
'approved_by'
1720
)
1821
list_display_links = ('id', 'caption')
1922
list_per_page = 25

backend/talent_video_greeting/admin.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,25 @@ class TalentVideoGreetingAdmin(admin.ModelAdmin):
1212
'priority',
1313
'file_type',
1414
'size',
15-
'url')
15+
'url',
16+
'approved',
17+
'approved_date',
18+
'approved_by'
19+
)
20+
1621
list_display_links = (
1722
'id',
1823
'user_email_display',
1924
'priority',
2025
'language',
2126
'file_type',
2227
'size',
23-
'url')
28+
'url',
29+
'approved',
30+
'approved_date',
31+
'approved_by'
32+
)
33+
2434
list_per_page = 25
2535

2636
def user_email_display(self, obj):
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Generated by Django 2.0.5 on 2019-02-15 17:21
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('talent_video_greeting', '0003_auto_20181129_0153'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='talentvideogreeting',
15+
name='approved',
16+
field=models.BooleanField(default=False),
17+
),
18+
migrations.AddField(
19+
model_name='talentvideogreeting',
20+
name='approved_by',
21+
field=models.CharField(blank=True, max_length=50, null=True),
22+
),
23+
migrations.AddField(
24+
model_name='talentvideogreeting',
25+
name='approved_date',
26+
field=models.DateTimeField(blank=True, null=True),
27+
),
28+
]

backend/talent_video_greeting/models.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ class TalentVideoGreeting(models.Model):
1515
active = models.BooleanField(default=True)
1616
language = models.CharField(max_length=50, null=True, blank=True)
1717
priority = models.IntegerField(blank=True, default=100)
18+
approved = models.BooleanField(default=False)
19+
approved_date = models.DateTimeField(blank=True, null=True)
20+
approved_by = models.CharField(max_length=50, null=True, blank=True)
1821

1922
def __str__(self):
2023
return 'talent: {user_email}, language: {language}, video: {video_url}, {video_size}'.format(

backend/talent_video_greeting/serializers.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,8 @@ class Meta:
2020
'uploaded',
2121
'active',
2222
'language',
23-
'priority'
23+
'priority',
24+
'approved',
25+
'approved_date',
26+
'approved_by'
2427
)

backend/talent_video_greeting/views.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from .serializers import TalentVideoGreetingSerializer
1717
from talent.models import Talent
1818
from authentication.models import User
19+
from user_note.models import UserNoteManager
1920

2021

2122
class GreetingVideoFileUploadPolicy(APIView):
@@ -146,6 +147,17 @@ def post(self, request, *args, **kwargs):
146147
obj.save()
147148
data['id'] = obj.id
148149
data['saved'] = True
150+
151+
# Logging
152+
talent_user = obj.talent.user
153+
UserNoteManager.profile_logger(
154+
None, None, talent_user,
155+
'{user} uploaded a greetings video ({language}).'.format(
156+
user=talent_user.first_name,
157+
language=obj.language
158+
),
159+
obj
160+
)
149161
return Response(data, status=status.HTTP_200_OK)
150162

151163

@@ -184,10 +196,45 @@ def put(self, request, pk, format=None):
184196
serializer = TalentVideoGreetingSerializer(talent_greeting_video_item, data=request.data)
185197
if serializer.is_valid():
186198
serializer.save()
199+
200+
user = request.user
201+
if user and 'approved' in serializer.data:
202+
talent_user = talent_greeting_video_item.talent.user
203+
UserNoteManager.profile_logger(
204+
None, user, talent_user,
205+
'Greetings video ({language}) {status} by {user}.'.format(
206+
language=talent_greeting_video_item.language,
207+
status='Approved' if serializer.data['approved'] else 'Rejected',
208+
user=user.first_name
209+
),
210+
talent_greeting_video_item
211+
)
212+
187213
return Response(serializer.data)
188214
return Response({'error': serializer.errors}, status=status.HTTP_400_BAD_REQUEST)
189215

190216
def delete(self, request, pk, format=None):
191217
talent_greeting_video_item = self.get_object(pk)
218+
219+
user = request.user
220+
if user:
221+
talent_user = talent_greeting_video_item.talent.user
222+
note = ''
223+
if user.type == 'agency':
224+
note = 'Greeting video ({language}) {status} by {user}. Comment: {comment}'.format(
225+
language=talent_greeting_video_item.language,
226+
status='Rejected',
227+
user=user.first_name,
228+
comment= request.data['comment'] if request.data and ('comment' in request.data) else ''
229+
)
230+
elif user.type == 'talent':
231+
note = '{user} removed a greeing video ({language}).'.format(
232+
user=user.first_name,
233+
language=talent_greeting_video_item.language,
234+
)
235+
236+
UserNoteManager.profile_logger(None, user, talent_user, note, talent_greeting_video_item)
237+
192238
talent_greeting_video_item.delete()
239+
193240
return Response(status=status.HTTP_204_NO_CONTENT)

backend/talent_video_sub_skill/admin.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,25 @@ class TalentVideoSubSkillAdmin(admin.ModelAdmin):
1212
'priority',
1313
'file_type',
1414
'size',
15-
'url')
15+
'url',
16+
'approved',
17+
'approved_date',
18+
'approved_by'
19+
)
20+
1621
list_display_links = (
1722
'id',
1823
'user_email_display',
1924
'sub_skill_display',
2025
'priority',
2126
'file_type',
2227
'size',
23-
'url')
28+
'url',
29+
'approved',
30+
'approved_date',
31+
'approved_by'
32+
)
33+
2434
list_per_page = 25
2535

2636
def sub_skill_display(self, obj):
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Generated by Django 2.0.5 on 2019-02-17 19:31
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('talent_video_sub_skill', '0003_auto_20181129_0153'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='talentvideosubskill',
15+
name='approved',
16+
field=models.BooleanField(default=False),
17+
),
18+
migrations.AddField(
19+
model_name='talentvideosubskill',
20+
name='approved_by',
21+
field=models.CharField(blank=True, max_length=50, null=True),
22+
),
23+
migrations.AddField(
24+
model_name='talentvideosubskill',
25+
name='approved_date',
26+
field=models.DateTimeField(blank=True, null=True),
27+
),
28+
]

backend/talent_video_sub_skill/models.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ class TalentVideoSubSkill(models.Model):
1616
updated = models.DateTimeField(auto_now=True)
1717
uploaded = models.BooleanField(default=False)
1818
active = models.BooleanField(default=True)
19+
approved = models.BooleanField(default=False)
20+
approved_date = models.DateTimeField(blank=True, null=True)
21+
approved_by = models.CharField(max_length=50, null=True, blank=True)
1922

2023
def __str__(self):
2124
return 'talent: {user_email}, sub_skill: {sub_skill}, video: {video_url}, {video_size}'.format(

backend/talent_video_sub_skill/serializers.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@ class Meta:
2020
'timestamp',
2121
'updated',
2222
'uploaded',
23-
'active'
23+
'active',
24+
'approved',
25+
'approved_date',
26+
'approved_by'
2427
)
2528

2629

backend/talent_video_sub_skill/views.py

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@
1717
from talent.models import Talent
1818
from authentication.models import User
1919
from sub_skill.models import SubSkill
20+
from user_note.models import UserNoteManager
2021
from drf_yasg.utils import swagger_auto_schema
2122
from drf_yasg import openapi
2223
from rest_framework.decorators import api_view
2324

25+
2426
class SubSkillVideoFileUploadPolicy(APIView):
2527
"""
2628
This view is to get the AWS Upload Policy for images to s3 bucket.
@@ -143,7 +145,6 @@ def post(self, request, *args, **kwargs):
143145
course_obj = None
144146
data = {}
145147
type_ = request.data.get('fileType')
146-
print(file_id, size, type_)
147148
if file_id:
148149
obj = TalentVideoSubSkill.objects.get(id=int(file_id))
149150
obj.size = int(size)
@@ -152,6 +153,18 @@ def post(self, request, *args, **kwargs):
152153
obj.save()
153154
data['id'] = obj.id
154155
data['saved'] = True
156+
157+
# Logging
158+
talent_user = obj.talent.user
159+
UserNoteManager.profile_logger(
160+
None, None, talent_user,
161+
'{user} uploaded a sub skill video ({sub_skill_name}).'.format(
162+
user=talent_user.first_name,
163+
sub_skill_name=obj.sub_skill.name
164+
),
165+
obj
166+
)
167+
155168
return Response(data, status=status.HTTP_200_OK)
156169

157170

@@ -173,7 +186,7 @@ def get(self, request, pk, format=None):
173186

174187
class SubSkillVideoDetail(APIView):
175188
"""
176-
Retrieve a greeting video instance.
189+
Retrieve a subskill video instance.
177190
"""
178191
def get_object(self, pk):
179192
try:
@@ -191,12 +204,47 @@ def put(self, request, pk, format=None):
191204
serializer = TalentVideoSubSkillSerializer(talent_sub_skill_video_item, data=request.data)
192205
if serializer.is_valid():
193206
serializer.save()
207+
208+
user = request.user
209+
if user and 'approved' in serializer.data:
210+
talent_user = talent_sub_skill_video_item.talent.user
211+
UserNoteManager.profile_logger(
212+
None, user, talent_user,
213+
'A subskill video ({sub_skill_name}) {status} by {user}.'.format(
214+
sub_skill_name=talent_sub_skill_video_item.sub_skill.name,
215+
status='Approved' if serializer.data['approved'] else 'Rejected',
216+
user=user.first_name
217+
),
218+
talent_sub_skill_video_item
219+
)
220+
194221
return Response(serializer.data)
195222
return Response({'error': serializer.errors}, status=status.HTTP_400_BAD_REQUEST)
196223

197224
def delete(self, request, pk, format=None):
198225
talent_sub_skill_video_item = self.get_object(pk)
226+
227+
user = request.user
228+
if user:
229+
talent_user = talent_sub_skill_video_item.talent.user
230+
note = ''
231+
if user.type == 'agency':
232+
note = 'Greeting video ({sub_skill_name}) {status} by {user}. Comment: {comment}'.format(
233+
sub_skill_name=talent_sub_skill_video_item.sub_skill.name,
234+
status='Rejected',
235+
user=user.first_name,
236+
comment= request.data['comment'] if request.data and ('comment' in request.data) else ''
237+
)
238+
elif user.type == 'talent':
239+
note = '{user} removed a greeing video ({sub_skill_name}).'.format(
240+
user=user.first_name,
241+
sub_skill_name=talent_sub_skill_video_item.sub_skill.name,
242+
)
243+
244+
UserNoteManager.profile_logger(None, user, talent_user, note, talent_sub_skill_video_item)
245+
199246
talent_sub_skill_video_item.delete()
247+
200248
return Response(status=status.HTTP_204_NO_CONTENT)
201249

202250

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 2.0.5 on 2019-02-15 17:21
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('user_note', '0003_auto_20190214_0209'),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name='usernote',
15+
name='note_type',
16+
field=models.CharField(choices=[('Profile', 'Profile'), ('CastingRequest', 'CastingRequest'), ('CastingRequestTalent', 'CastingRequestTalent'), ('Search', 'Search'), ('View', 'View'), ('Favorite', 'Favorite'), ('Share', 'Share'), ('Block', 'Block'), ('MedicalCondition', 'MedicalCondition'), ('Medical', 'Medical'), ('Login', 'Login'), ('Logout', 'Logout'), ('TID', 'TID'), ('ChangePassword', 'ChangePassword'), ('Rating', 'Rating'), ('PersonalInfo', 'PersonalInfo'), ('Immigration', 'Immigration'), ('Language', 'Language')], default='Profile', max_length=30),
17+
),
18+
]

frontend/src/apis/adminAPIs.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,5 +112,20 @@ class AdminAPI {
112112
this.processRequestWithToken(`agency/casting_request/set_status/${castingRequestId}`, 'put', data, handleResponse);
113113
}
114114

115+
static saveGreetingVideo(videoId, data, handleResponse) {
116+
this.processRequestWithToken(`talent_video_greetings/${videoId}`, 'put', data, handleResponse);
117+
}
118+
119+
static deleteGreetingVideo(videoId, data, handleResponse) {
120+
this.processRequestWithToken(`talent_video_greetings/${videoId}`, 'delete', data, handleResponse);
121+
}
122+
123+
static saveSubSkillVideo(videoId, data, handleResponse) {
124+
this.processRequestWithToken(`talent_video_sub_skills/${videoId}`, 'put', data, handleResponse);
125+
}
126+
127+
static deleteSubSkillVideo(videoId, data, handleResponse) {
128+
this.processRequestWithToken(`talent_video_sub_skills/${videoId}`, 'delete', data, handleResponse);
129+
}
115130
}
116131
export default AdminAPI

0 commit comments

Comments
 (0)