Skip to content

Commit f432cbe

Browse files
committed
fixed the models, views and serializers to read challenge info
1 parent 28a8e18 commit f432cbe

File tree

3 files changed

+49
-4
lines changed

3 files changed

+49
-4
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 2.1.2 on 2018-10-07 16:35
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('challenges', '0001_initial'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='challenge',
15+
name='tags',
16+
field=models.ManyToManyField(related_name='challenges', to='challenges.Tag'),
17+
),
18+
]

challenges/models.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class Challenge(models.Model):
3535
technical_notes = models.TextField()
3636
procedure = models.TextField()
3737
code_tips = models.TextField()
38+
tags = models.ManyToManyField(Tag, related_name='challenges')
3839

3940
class Attachment(models.Model):
4041
def __str__(self):
@@ -56,4 +57,4 @@ def __str__(self):
5657
name = models.CharField(max_length=250,)
5758
url = models.TextField()
5859
active = models.BooleanField(default=True)
59-
challenge = models.ForeignKey(Challenge, on_delete=models.DO_NOTHING)
60+
challenge = models.ForeignKey(Challenge, related_name='sources', on_delete=models.DO_NOTHING)

challenges/serializers.py

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,49 @@
11
from rest_framework_json_api import serializers
2-
from .models import Challenge
2+
from .models import Challenge, Tag, Source
33
from accounts.models import User
44
from accounts.serializers import UserSerializer
55
from rest_framework_json_api.relations import ResourceRelatedField
66

7+
class TagsSerializer(serializers.ModelSerializer):
8+
class Meta:
9+
model = Tag
10+
fields = ('name',)
11+
12+
class SourcesSerializer(serializers.ModelSerializer):
13+
14+
queryset = Source.objects.filter(active=True,)
15+
16+
class Meta:
17+
model = Source
18+
fields = ('name', 'url')
19+
720
class ChallengeSerializer(serializers.ModelSerializer):
821
class Meta:
922
model = Challenge
10-
fields = ('user', 'created_at', 'updated_at', 'title', 'short_title', 'owner', 'difficulty',
23+
fields = ('user', 'tags', 'sources', 'created_at', 'updated_at', 'title', 'short_title', 'owner', 'difficulty',
1124
'challenge_type', 'priority', 'description', 'short_description',
1225
'extra_points', 'technical_notes', 'procedure', 'code_tips')
1326

1427
included_serializers = {
1528
'user': UserSerializer,
29+
'tags': TagsSerializer,
30+
'sources': SourcesSerializer,
1631
}
1732

1833
user = ResourceRelatedField(
1934
queryset=User.objects
2035
)
2136

37+
tags = ResourceRelatedField(
38+
queryset=Tag.objects,
39+
many=True,
40+
)
41+
42+
sources = ResourceRelatedField(
43+
queryset=Source.objects,
44+
many=True,
45+
)
46+
2247
class JSONAPIMeta:
23-
included_resources = ['user',]
48+
included_resources = ['user', 'tags', 'sources']
49+

0 commit comments

Comments
 (0)