forked from rc/aircox
		
	work on player
This commit is contained in:
		
							
								
								
									
										55
									
								
								aircox/serializers.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								aircox/serializers.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,55 @@
 | 
			
		||||
from rest_framework import serializers
 | 
			
		||||
 | 
			
		||||
from .models import Diffusion, Log
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
__all__ = ['LogInfo', 'LogInfoSerializer']
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class LogInfo:
 | 
			
		||||
    obj = None
 | 
			
		||||
    start, end = None, None
 | 
			
		||||
    title, artist = '', ''
 | 
			
		||||
    url, cover = None, None
 | 
			
		||||
    info = None
 | 
			
		||||
 | 
			
		||||
    def __init__(self, obj):
 | 
			
		||||
        self.obj = obj
 | 
			
		||||
        if isinstance(obj, Diffusion):
 | 
			
		||||
            self.from_diffusion(obj)
 | 
			
		||||
        elif isinstance(obj, Log):
 | 
			
		||||
            self.from_log(obj)
 | 
			
		||||
        else:
 | 
			
		||||
            raise ValueError('`obj` must be a Diffusion or a track Log.')
 | 
			
		||||
 | 
			
		||||
    @property
 | 
			
		||||
    def type(self):
 | 
			
		||||
        return 'track' if isinstance(self.obj, Log) else 'diffusion'
 | 
			
		||||
 | 
			
		||||
    def from_diffusion(self, obj):
 | 
			
		||||
        episode = obj.episode
 | 
			
		||||
        self.start, self.end = obj.start, obj.end
 | 
			
		||||
        self.title, self.url = episode.title, episode.get_absolute_url()
 | 
			
		||||
        self.cover = episode.cover.icons['64']
 | 
			
		||||
        self.info = episode.category.title
 | 
			
		||||
        self.obj = obj
 | 
			
		||||
 | 
			
		||||
    def from_log(self, obj):
 | 
			
		||||
        track = obj.track
 | 
			
		||||
        self.start = obj.date
 | 
			
		||||
        self.title, self.artist = track.title, track.artist
 | 
			
		||||
        self.info = track.info
 | 
			
		||||
        self.obj = obj
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class LogInfoSerializer(serializers.Serializer):
 | 
			
		||||
    type = serializers.CharField(max_length=10)
 | 
			
		||||
    start = serializers.DateTimeField()
 | 
			
		||||
    end = serializers.DateTimeField(required=False)
 | 
			
		||||
    title = serializers.CharField(max_length=200)
 | 
			
		||||
    artist = serializers.CharField(max_length=200, required=False)
 | 
			
		||||
    info = serializers.CharField(max_length=200, required=False)
 | 
			
		||||
    url = serializers.URLField(required=False)
 | 
			
		||||
    cover = serializers.URLField(required=False)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user