Пример #1
0
class LootSerializer(CommonModelSerializer):
    """
    Serializer des butins
    """
    campaign = create_model_serializer(Campaign)(read_only=True,
                                                 label=_("campagne"))
    item = create_model_serializer(Item)(read_only=True, label=_("objet"))
Пример #2
0
class CharacterEffectSerializer(CommonModelSerializer):
    """
    Serializer des butins
    """
    character = SimpleCharacterSerializer(read_only=True,
                                          label=_("personnage"))
    effect = create_model_serializer(Effect)(read_only=True, label=_("effet"))
    damages = create_model_serializer(DamageHistory)(read_only=True,
                                                     many=True,
                                                     label=_("dégâts"))
Пример #3
0
class CampaignEffectSerializer(CommonModelSerializer):
    """
    Serializer des butins
    """
    campaign = create_model_serializer(Campaign)(read_only=True,
                                                 label=_("campagne"))
    effect = create_model_serializer(Effect)(read_only=True, label=_("effet"))
    damages = create_model_serializer(DamageHistory)(read_only=True,
                                                     many=True,
                                                     label=_("dégâts"))
Пример #4
0
class UserInfosSerializer(CommonModelSerializer):
    """
    Serializer de la synthèse des informations utilisateur (groupes, permissions et métadonnées)
    """
    username = serializers.CharField(required=False)
    password = serializers.CharField(required=False,
                                     write_only=True,
                                     style={'input_type': 'password'})

    groups = create_model_serializer(Group, exclude=['permissions'])(many=True)
    permissions = serializers.SerializerMethodField()

    def get_permissions(self, user):
        permissions = {}
        permission_serializer_class = create_model_serializer(
            Permission, fields=['id', 'codename', 'name'])
        for group in user.groups.all():
            for permission in group.permissions.all():
                if permission.id not in permissions:
                    permissions[permission.id] = permission_serializer_class(
                        permission).data
        for permission in user.user_permissions.all():
            if permission.id not in permissions:
                permissions[permission.id] = permission_serializer_class(
                    permission).data
        return sorted(permissions.values(), key=itemgetter('id'))

    def get_metadata(self, user):
        return user.get_metadata()
Пример #5
0
class FightHistorySerializer(CommonModelSerializer):
    """
    Serializer de sortie pour les attaques
    """
    attacker = SimpleCharacterSerializer(read_only=True, label=_("attaquant"))
    defender = SimpleCharacterSerializer(read_only=True, label=_("défenseur"))
    damage = create_model_serializer(DamageHistory)(read_only=True,
                                                    label=_("dégâts"))
Пример #6
0
class EquipmentSerializer(CommonModelSerializer):
    """
    Serializer de sortie pour afficher des équipements
    """
    character = SimpleCharacterSerializer(read_only=True,
                                          label=_("personnage"))
    item = create_model_serializer(Item,
                                   exclude=('effects',
                                            'ammunitions'))(read_only=True,
                                                            label=_("objet"))
Пример #7
0
class ClaimSerializer(CommonModelSerializer):
    power = serializers.IntegerField()
    points = serializers.IntegerField()
    claims = serializers.IntegerField()
    player = create_model_serializer(Player,
                                     exclude=(
                                         'password',
                                         'groups',
                                         'user_permissions',
                                     ))()
Пример #8
0
class NextTurnSerializer(BaseCustomSerializer):
    """
    Serializer des données de fin de tour
    """
    campaign = create_model_serializer(Campaign)(read_only=True,
                                                 label=_("campagne"))
    character = SimpleCharacterSerializer(read_only=True,
                                          label=_("personnage"))
    damages = DamageHistorySerializer(read_only=True,
                                      many=True,
                                      label=_("dégâts"))
Пример #9
0
 def get_permissions(self, user):
     permissions = {}
     permission_serializer_class = create_model_serializer(
         Permission, fields=['id', 'codename', 'name'])
     for group in user.groups.all():
         for permission in group.permissions.all():
             if permission.id not in permissions:
                 permissions[permission.id] = permission_serializer_class(
                     permission).data
     for permission in user.user_permissions.all():
         if permission.id not in permissions:
             permissions[permission.id] = permission_serializer_class(
                 permission).data
     return sorted(permissions.values(), key=itemgetter('id'))
Пример #10
0
 def _setUpClass(cls):
     """
     Ajout de l'admin user et des schémas d'url pour les actions de detail & list
     """
     super(APITestCase, cls).setUpClass()
     cls.user_admin = User.objects.filter(username='******').first()
     if not cls.user_admin:
         cls.user_admin = User.objects.create_superuser(
             'admin', '*****@*****.**', 'admin')
     if not namespace:
         cls.url_list_api = '{}-list'.format(model_name)
         cls.url_detail_api = '{}-detail'.format(model_name)
     else:
         cls.url_list_api = '{}:{}-list'.format(namespace, model_name)
         cls.url_detail_api = '{}:{}-detail'.format(namespace, model_name)
     cls.serializer = serializer or create_model_serializer(
         model, hyperlinked=False)
Пример #11
0
 def _setUpClass(cls):
     """
     Added admin user and url schematics for detail and list actions
     """
     super(APITestCase, cls).setUpClass()
     cls.user_admin = User.objects.filter(username='******').first()
     if not cls.user_admin:
         cls.user_admin = User.objects.create_superuser(
             'admin', '*****@*****.**', 'admin')
     if not namespace:
         cls.url_list_api = '{}-list'.format(model_name)
         cls.url_detail_api = '{}-detail'.format(model_name)
     else:
         cls.url_list_api = '{}:{}-list'.format(namespace, model_name)
         cls.url_detail_api = '{}:{}-detail'.format(namespace, model_name)
     cls.serializer = serializer or create_model_serializer(
         model, hyperlinked=False)
Пример #12
0
from django.utils.translation import gettext_lazy as _
from rest_framework import serializers
from rest_framework.exceptions import PermissionDenied, ValidationError
from rest_framework.generics import get_object_or_404

from fallout.enums import *  # noqa
from fallout.models import *  # noqa

# Désactive les listes déroulantes sur les champs de relations
disable_relation_fields(*MODELS)

# Création des APIs REST standard pour les modèles de cette application
router, all_serializers, all_viewsets = create_api(*MODELS)

# Serializer sans statistiques pour le personnage
BaseCharacterSerializer = create_model_serializer(
    Character, exclude=tuple(LIST_EDITABLE_STATS))


class SimpleCharacterSerializer(BaseCharacterSerializer):
    """
    Serializer simplifié pour les personnages
    """
    current_charge = serializers.FloatField()
    used_skill_points = serializers.FloatField()
    next_required_experience = serializers.IntegerField()
    previous_required_experience = serializers.IntegerField()
    required_experience = serializers.IntegerField()
    labels = serializers.DictField()


def is_authorized(request, campaign):
Пример #13
0
from fmv.models import MODELS, Choice, Save, Scenario, Scene


DEFAULT_CONFIG.update(permissions=(IsAuthenticatedOrReadOnly, ))

# Surcharge des options de base
CONFIGS.update({
    Save: dict(many_to_many=True, depth=1, exclude=('scenes', )),
})

# Création des APIs REST standard pour les modèles de cette application
router, all_serializers, all_viewsets = create_api(*MODELS)

# Serializers
ChoiceSerializer = create_model_serializer(Choice)
SceneSerializer = create_model_serializer(Scene)


class SaveWithChoicesSerializer(all_serializers[Save]):
    """
    Serializer de la sauvegarde avec les choix possibles
    """
    choices = serializers.SerializerMethodField()

    def get_choices(self, save):
        choices = []
        query = Choice.objects.filter(scene_from_id=save.scene_id).prefetch_related('conditions').order_by('order')
        for choice in query:
            if choice.check_save(save):
                choices.append(choice)