class FavoriteSpaceSerializer(ModelSerializer): space = ReadOnlyField(source='space.name') display = ReadOnlyField(source='space.display_name') class Meta: model = Favorite fields = ('time_date', 'space', 'display')
class SiteSerializer(ModelSerializer): client_name = ReadOnlyField(source="client.name") custom_fields = SiteCustomFieldSerializer(many=True, read_only=True) agent_count = ReadOnlyField() class Meta: model = Site fields = ( "id", "name", "server_policy", "workstation_policy", "alert_template", "client_name", "client", "custom_fields", "agent_count", "block_policy_inheritance", ) def validate(self, val): if "name" in val.keys() and "|" in val["name"]: raise ValidationError("Site name cannot contain the | character") return val
class ScriptSerializer(ModelSerializer): code = ReadOnlyField() filepath = ReadOnlyField() class Meta: model = Script fields = "__all__" def validate(self, val): if "filename" in val: # validate the filename if (not val["filename"].endswith(".py") and not val["filename"].endswith(".ps1") and not val["filename"].endswith(".bat")): raise ValidationError( "File types supported are .py, .ps1 and .bat") # make sure file doesn't already exist on server # but only if adding, not if editing since will overwrite if edit if not self.instance: script_path = os.path.join("/srv/salt/scripts/userdefined", val["filename"]) if os.path.exists(script_path): raise ValidationError( f"{val['filename']} already exists. Delete or edit the existing script first." ) return val
class PostSerializer(ModelSerializer): author = ReadOnlyField(source='author.username') group = ReadOnlyField(source='group.title') class Meta: fields = '__all__' model = Post
class ReglaDePreCategorizacionSerializer(ModelSerializer): condicion_descripcion = ReadOnlyField(source='condicion.descripcion') condicion_factorpc_descripcion = ReadOnlyField( source='condicion.factorDePreCategorizacion.descripcion') resultado_descripcion = ReadOnlyField(source='resultado.descripcion') class Meta: model = ReglaDePreCategorizacion fields = [ 'id', 'condicion', 'condicion_descripcion', 'condicion_factorpc_descripcion', 'resultado', 'resultado_descripcion', 'prioridad' ] extra_kwargs = { 'condicion': { 'style': { 'autofocus': True } }, 'resultado': { 'label': 'Categoría' }, 'prioridad': { 'min_value': 0 }, }
class ReglaDeAjusteSerializer(ModelSerializer): condicion_descripcion = ReadOnlyField(source='condicion.descripcion') condicion_factora_descripcion = ReadOnlyField( source='condicion.factorDeAjuste.descripcion') resultado_valor = ReadOnlyField(source='resultado.valor') class Meta: model = ReglaDeAjuste fields = [ 'id', 'condicion', 'condicion_descripcion', 'condicion_factora_descripcion', 'resultado', 'resultado_valor', 'prioridad' ] extra_kwargs = { 'condicion': { 'style': { 'autofocus': True } }, 'resultado': { 'label': 'Ajuste' }, 'prioridad': { 'min_value': 0 }, }
class ObjectSerializer(HyperlinkedModelSerializer): """Object serializer (showing URL to file and thumbnail)""" file_url = SerializerMethodField() thumbnail_url = SerializerMethodField() md5 = ReadOnlyField() sha256 = ReadOnlyField() sha512 = ReadOnlyField() mime_type = ReadOnlyField() def get_file_url(self, obj): """Build absolute URL based on sha512""" return self.context["request"].build_absolute_uri( reverse("view_sha512", kwargs={"file_hash": obj.sha512})) def get_thumbnail_url(self, obj): """Build absolute URL based on sha512""" return self.context["request"].build_absolute_uri( reverse("view_sha512", kwargs={"file_hash": obj.sha512}) + "?thumb") class Meta: model = Object fields = [ "pk", "file", "file_url", "thumbnail_url", "md5", "sha256", "sha512", "collection", "mime_type", ]
class RoleCreateSerializer(ModelSerializer): role_id = ReadOnlyField(source='id') id = IntegerField(source='player_id') first_name = ReadOnlyField(source='player.first_name') last_name = ReadOnlyField(source='player.last_name') img = ImageField(source='player.img', read_only=True) class Meta: model = Role fields = 'id', 'role', 'role_id', 'first_name', 'last_name', 'img' def to_representation(self, obj): data = super().to_representation(obj) request = self.context.get('request', None) if request and request.accepted_renderer.format == 'api': data['url'] = reverse('team-role-detail', (obj.team_id, obj.id), request=request) return data def create(self, validated_data): validated_data['team_id'] = self.context['view'].kwargs['team_pk'] try: return super().create(validated_data) except IntegrityError as e: raise RelationAlreadyExist(detail=e.args[0].split('DETAIL: ')[1])
class CategorySerializer(ModelSerializer): sub_categories = ReadOnlyField(source='get_sub_categories') products = ReadOnlyField(source='get_products') class Meta: model = Category fields = ('id', 'name', 'sub_categories', 'products')
class SiteTreeSerializer(ModelSerializer): maintenance_mode = ReadOnlyField(source="has_maintenanace_mode_agents") failing_checks = ReadOnlyField(source="has_failing_checks") class Meta: model = Site fields = "__all__"
class InvitationSerializer(ModelSerializer): id = ReadOnlyField() invited_by = ReadOnlyField(source='invited_by.get_display_name') class Meta: model = Invitation fields = ('id', 'team', 'email', 'role', 'invited_by', 'is_accepted')
class ReplaySerializer(HyperlinkedModelSerializer): id = ReadOnlyField() goal_set = GoalSerializer( many=True, read_only=True, ) player_set = PlayerSerializer( many=True, read_only=True, ) map = MapSerializer( many=False, read_only=True, ) season = SeasonSerializer( many=False, read_only=True, ) user_id = ReadOnlyField() class Meta: model = Replay exclude = ['user', 'crashed_heatmap_parser'] depth = 1
class ProductReactSerializer(ModelSerializer): title = ReadOnlyField(source='product.title') space = ReadOnlyField(source='product.space.name') class Meta: model = ProductReact fields = ('react', 'time_date', 'product', 'title', 'space')
class SetCardListSerializer(ModelSerializer): id = ReadOnlyField(source='card.id') name = ReadOnlyField(source='card.name') class Meta: model = CardSet fields = ('id', 'name', 'image')
class UniversityShortSerializer(ModelSerializer): city_name = ReadOnlyField() country_name = ReadOnlyField() class Meta: model = University fields = ('id', 'name', 'city_name', 'country_name', 'latitude', 'longitude')
class ProductSerializer(ModelSerializer): category = ReadOnlyField(source='get_category') subcategory_name = ReadOnlyField(source='get_subcategory') class Meta: model = Product fields = ('name', 'subcategory', 'category', 'subcategory_name') fields = ('name', 'subcategory', 'category', 'subcategory_name')
class ClientTreeSerializer(ModelSerializer): sites = SiteTreeSerializer(many=True, read_only=True) maintenance_mode = ReadOnlyField(source="has_maintenanace_mode_agents") failing_checks = ReadOnlyField(source="has_failing_checks") class Meta: model = Client fields = "__all__"
class ParkingSpotSerializer(ModelSerializer): # parking = ParkingSerializer() driver_name = ReadOnlyField() status_title = ReadOnlyField() class Meta: model = ParkingSpot fields = '__all__'
class DeviceSerializer(ModelSerializer): networks = StringRelatedField(many=True, read_only=True) zone_name = ReadOnlyField(source='pop.zone.name') pop_name = ReadOnlyField(source='pop.name') class Meta: model = PopDevice fields = ['name', 'zone_name', 'pop_name', 'id', 'pop', 'networks']
class CardExpansionSerializer(ModelSerializer): set_id = ReadOnlyField(source='set.id') set_name = ReadOnlyField(source='set.name') set_abbreviation = ReadOnlyField(source='set.abbreviation') class Meta: model = CardSet fields = ('set_id', 'set_name', 'set_abbreviation', 'info', 'image')
class OrderLineSerializer(ModelSerializer): product = ReadOnlyField(source='product.name') status = ChoiceField(choices=OrderLine.STATUSES) status_description = ReadOnlyField(source='get_status_display') class Meta: model = OrderLine fields = ('id', 'product', 'quantity', 'status', 'status_description')
class GoalSerializer(HyperlinkedModelSerializer): goal_time = ReadOnlyField() player_id = ReadOnlyField() class Meta: model = Goal
class MembershipSerializer(ModelSerializer): first_name = ReadOnlyField(source='user.first_name') last_name = ReadOnlyField(source='user.last_name') display_name = ReadOnlyField(source='user.get_display_name') class Meta: model = Membership fields = ('id', 'first_name', 'last_name', 'display_name', 'role')
class CalificacionSerializer(HyperlinkedModelSerializer): establecimiento_id = ReadOnlyField(source='establecimiento.id') establecimiento_nombre = ReadOnlyField(source='establecimiento.nombre') class Meta: model = Calificacion fields = ('id', 'url', 'puntaje', 'fecha', 'comentario', 'usuario', 'establecimiento', 'establecimiento_id', 'establecimiento_nombre')
class CreditSerializer(ModelSerializer): request = CreditRequestSerializer() manager_name = ReadOnlyField(source='manager.first_name') manager_lname = ReadOnlyField(source='manager.last_name') class Meta: model = Credit fields = ('id', 'installment_value', 'date', 'manager_name', 'manager_lname', 'request')
class DriverSerializer(ModelSerializer): # user = UserSerializer() name = ReadOnlyField() email = ReadOnlyField() phone = ReadOnlyField() class Meta: model = Driver fields = '__all__'
class ActividadSerializer(ModelSerializer): category = ReadOnlyField(source='category.title') salon = ReadOnlyField(source='salon.title') presentaciones = PresentacionSerializer(many=True) class Meta: model = models.Actividad fields = '__all__'
class OrderItemSerializer(ModelSerializer): catalog_text = ReadOnlyField() product_text = ReadOnlyField() class Meta: model = OrderItem fields = [ 'id', 'product', 'order', 'description', 'amount', 'price', 'is_ready', 'product_text', 'catalog_text' ]
class StudentSerializer(ModelSerializer): code = ReadOnlyField(source='user.code') fullname = ReadOnlyField(source='user.fullname') avatar = ReadOnlyField(source='user.photo') is_active = ReadOnlyField(source='user.is_active') registered = ReadOnlyField(source='user.registered') class Meta: model = models.Student fields = ('code','fullname','book_number','department','group_number','degree','is_active','registered', 'avatar')
class AlertSerializer(ModelSerializer): hostname = ReadOnlyField(source="agent.hostname") client = ReadOnlyField(source="agent.client") site = ReadOnlyField(source="agent.site") alert_time = DateTimeField(format="iso-8601") class Meta: model = Alert fields = "__all__"