Skip to content

Commit 115b095

Browse files
authored
Merge pull request #24 from Zamua/zamua/add-partinstrumentsample-model
Add PartInstrumentSample model and serializer
2 parents 2cbeb40 + e9891bf commit 115b095

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

Diff for: teleband/musics/api/serializers.py

+12-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
from rest_framework import serializers
22

3-
from teleband.musics.models import Piece, Part, PartTransposition, Composer, PartType
4-
5-
from teleband.musics.models import PartTransposition, EnsembleType
3+
from teleband.musics.models import (
4+
Piece, Part, PartTransposition, Composer, PartType,
5+
PartInstrumentSample, EnsembleType
6+
)
67
from teleband.instruments.models import Transposition
78
from teleband.utils.serializers import GenericNameSerializer
89

@@ -45,9 +46,16 @@ class Meta:
4546
fields = ["part", "transposition", "flatio"]
4647

4748

49+
class PartInstrumentSampleSerializer(serializers.ModelSerializer):
50+
class Meta:
51+
model = PartInstrumentSample
52+
fields = ['id', 'part', 'instrument', 'sample_audio']
53+
54+
4855
class PartSerializer(serializers.ModelSerializer):
4956
piece = PieceSerializer()
5057
transpositions = PartTranspositionSimpleSerializer(many=True)
58+
instrument_samples = PartInstrumentSampleSerializer(many=True)
5159

5260
class Meta:
5361
model = Part
@@ -57,6 +65,7 @@ class Meta:
5765
"transpositions",
5866
"sample_audio",
5967
"chord_scale_pattern",
68+
"instrument_samples",
6069
]
6170

6271

Diff for: teleband/musics/models.py

+14
Original file line numberDiff line numberDiff line change
@@ -93,3 +93,17 @@ class Meta:
9393

9494
def __str__(self):
9595
return f"{self.part.piece}: {self.part} [{self.transposition}]"
96+
97+
98+
class PartInstrumentSample(models.Model):
99+
part = models.ForeignKey(Part, related_name="instrument_samples", on_delete=models.PROTECT)
100+
instrument = models.ForeignKey('instruments.Instrument', on_delete=models.PROTECT)
101+
sample_audio = models.FileField(upload_to="instrument_samples/")
102+
103+
class Meta:
104+
unique_together = ['part', 'instrument']
105+
verbose_name = "Part Instrument Sample"
106+
verbose_name_plural = "Part Instrument Samples"
107+
108+
def __str__(self):
109+
return f"{self.part} - {self.instrument} Sample"

0 commit comments

Comments
 (0)