Skip to content
Snippets Groups Projects
Commit a0d9012f authored by Samuel GAIST's avatar Samuel GAIST
Browse files

[reports][serializers] Pre-commit cleanup

parent ebbaa257
No related branches found
No related tags found
No related merge requests found
This commit is part of merge request !327. Comments created here will be created in the context of that merge request.
...@@ -25,21 +25,18 @@ ...@@ -25,21 +25,18 @@
# # # #
############################################################################### ###############################################################################
from django.contrib.auth.models import User, AnonymousUser
from rest_framework import serializers from rest_framework import serializers
from .models import Report from .models import Report
from ..common.models import Contribution from ..common.models import Contribution
from ..common.fields import JSONSerializerField
from ..experiments.models import Experiment
from ..ui.templatetags.markup import restructuredtext from ..ui.templatetags.markup import restructuredtext
from ..common.utils import validate_restructuredtext from ..common.utils import validate_restructuredtext
import simplejson as json import simplejson as json
#---------------------------------------------------------- # ----------------------------------------------------------
class BasicReportSerializer(serializers.ModelSerializer): class BasicReportSerializer(serializers.ModelSerializer):
...@@ -58,10 +55,10 @@ class BasicReportSerializer(serializers.ModelSerializer): ...@@ -58,10 +55,10 @@ class BasicReportSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = Report model = Report
fields = ['short_description', 'status', 'is_owner', 'accessibility'] fields = ["short_description", "status", "is_owner", "accessibility"]
def get_name(self, obj): def get_name(self, obj):
return '{}/{}'.format(obj.author.username, obj.name) return "{}/{}".format(obj.author.username, obj.name)
def get_author(self, obj): def get_author(self, obj):
return obj.author.username return obj.author.username
...@@ -77,25 +74,26 @@ class BasicReportSerializer(serializers.ModelSerializer): ...@@ -77,25 +74,26 @@ class BasicReportSerializer(serializers.ModelSerializer):
def get_status(self, obj): def get_status(self, obj):
if obj.status == Report.EDITABLE: if obj.status == Report.EDITABLE:
return 'editable' return "editable"
elif obj.status == Report.LOCKED: elif obj.status == Report.LOCKED:
return 'locked' return "locked"
elif obj.status == Report.PUBLISHED: elif obj.status == Report.PUBLISHED:
return 'published' return "published"
else: else:
return 'editable' return "editable"
def get_experiments(self, obj): def get_experiments(self, obj):
return map(lambda x: x.fullname(), obj.experiments.iterator()) return map(lambda x: x.fullname(), obj.experiments.iterator())
def get_experiment_access_map(self, obj): def get_experiment_access_map(self, obj):
user = self.context['request'].user user = self.context["request"].user
access_map = list(map(lambda x: x.accessibility_for(user)[0], access_map = list(
obj.experiments.iterator())) map(lambda x: x.accessibility_for(user)[0], obj.experiments.iterator())
)
return access_map return access_map
def get_analyzers_access_map(self, obj): def get_analyzers_access_map(self, obj):
user = self.context['request'].user user = self.context["request"].user
access_map = list() access_map = list()
for exp in obj.experiments.iterator(): for exp in obj.experiments.iterator():
# find analyzer # find analyzer
...@@ -114,99 +112,136 @@ class BasicReportSerializer(serializers.ModelSerializer): ...@@ -114,99 +112,136 @@ class BasicReportSerializer(serializers.ModelSerializer):
d = obj.description d = obj.description
if len(d) > 0: if len(d) > 0:
return restructuredtext(d) return restructuredtext(d)
return '' return ""
def get_add_url(self, obj): def get_add_url(self, obj):
return obj.get_api_add_url() return obj.get_api_add_url()
#---------------------------------------------------------- # ----------------------------------------------------------
class SimpleReportSerializer(BasicReportSerializer): class SimpleReportSerializer(BasicReportSerializer):
class Meta(BasicReportSerializer.Meta): class Meta(BasicReportSerializer.Meta):
fields = ['name', 'number', 'short_description', 'is_owner', 'author','status', 'description', 'creation_date', 'html_description', 'add_url', 'content'] fields = [
"name",
"number",
"short_description",
"is_owner",
"author",
"status",
"description",
"creation_date",
"html_description",
"add_url",
"content",
]
#---------------------------------------------------------- # ----------------------------------------------------------
class FullReportSerializer(BasicReportSerializer): class FullReportSerializer(BasicReportSerializer):
class Meta(BasicReportSerializer.Meta): class Meta(BasicReportSerializer.Meta):
fields = ['name', 'number', 'short_description', 'description', 'is_owner', 'author','status', 'creation_date', 'publication_date', 'experiments', 'analyzer', 'content', 'html_description', 'experiment_access_map', 'analyzers_access_map'] fields = [
"name",
"number",
#---------------------------------------------------------- "short_description",
"description",
"is_owner",
"author",
"status",
"creation_date",
"publication_date",
"experiments",
"analyzer",
"content",
"html_description",
"experiment_access_map",
"analyzers_access_map",
]
# ----------------------------------------------------------
class CreatedReportSerializer(BasicReportSerializer): class CreatedReportSerializer(BasicReportSerializer):
class Meta(BasicReportSerializer.Meta): class Meta(BasicReportSerializer.Meta):
fields = ['name', 'short_description', 'experiments'] fields = ["name", "short_description", "experiments"]
#---------------------------------------------------------- # ----------------------------------------------------------
class UpdatedReportSerializer(BasicReportSerializer): class UpdatedReportSerializer(BasicReportSerializer):
class Meta(BasicReportSerializer.Meta): class Meta(BasicReportSerializer.Meta):
fields = ['short_description', 'description', 'experiments', 'content'] fields = ["short_description", "description", "experiments", "content"]
#---------------------------------------------------------- # ----------------------------------------------------------
class ReportCreationFailedException(Exception): class ReportCreationFailedException(Exception):
pass pass
#---------------------------------------------------------- # ----------------------------------------------------------
class ReportCreationSerializer(serializers.ModelSerializer): class ReportCreationSerializer(serializers.ModelSerializer):
content = JSONSerializerField() content = serializers.JSONField()
experiments = serializers.ListField(child=serializers.CharField()) experiments = serializers.ListField(child=serializers.CharField())
class Meta: class Meta:
model = Report model = Report
fields = ['name', 'short_description', 'description', 'content', 'experiments'] fields = ["name", "short_description", "description", "content", "experiments"]
def create(self, validated_data): def create(self, validated_data):
report = None report = None
if 'name' not in validated_data: if "name" not in validated_data:
raise serializers.ValidationError('No name provided') raise serializers.ValidationError("No name provided")
try: try:
report = Report.objects.get(author=self.context['request'].user, name=validated_data['name']) report = Report.objects.get(
except: author=self.context["request"].user, name=validated_data["name"]
)
except Report.DoesNotExist:
pass pass
if report is not None: if report is not None:
raise serializers.ValidationError('A report with this name already exists') raise serializers.ValidationError("A report with this name already exists")
(report, self.details) = self.Meta.model.objects.create_object(author=self.context['request'].user, **validated_data) (report, self.details) = self.Meta.model.objects.create_object(
author=self.context["request"].user, **validated_data
)
if report is None: if report is None:
raise ReportCreationFailedException() raise ReportCreationFailedException()
return report return report
def update(self, instance, validated_data): def update(self, instance, validated_data):
instance.short_description = validated_data.get('short_description', instance.short_description) instance.short_description = validated_data.get(
instance.description = validated_data.get('description', instance.description) "short_description", instance.short_description
instance.content = validated_data.get('content', instance.content) )
instance.publication_date = validated_data.get('publication_date', instance.publication_date) instance.description = validated_data.get("description", instance.description)
instance.content = validated_data.get("content", instance.content)
instance.publication_date = validated_data.get(
"publication_date", instance.publication_date
)
instance.save() instance.save()
if 'experiments' in validated_data: if "experiments" in validated_data:
experiments = validated_data.get('experiments', []) experiments = validated_data.get("experiments", [])
current_experiments = map(lambda x: x.fullname(), instance.experiments.iterator()) current_experiments = map(
lambda x: x.fullname(), instance.experiments.iterator()
)
experiments_to_remove = filter(lambda x: x not in experiments, current_experiments) experiments_to_remove = filter(
experiments_to_add = filter(lambda x: x not in current_experiments, experiments) lambda x: x not in experiments, current_experiments
)
experiments_to_add = filter(
lambda x: x not in current_experiments, experiments
)
instance.remove_experiments(experiments_to_remove) instance.remove_experiments(experiments_to_remove)
...@@ -234,13 +269,12 @@ class ReportCreationSerializer(serializers.ModelSerializer): ...@@ -234,13 +269,12 @@ class ReportCreationSerializer(serializers.ModelSerializer):
return serializer.data return serializer.data
#---------------------------------------------------------- # ----------------------------------------------------------
class ReportUpdateSerializer(ReportCreationSerializer): class ReportUpdateSerializer(ReportCreationSerializer):
class Meta(ReportCreationSerializer.Meta): class Meta(ReportCreationSerializer.Meta):
fields = ['short_description', 'description', 'content', 'experiments'] fields = ["short_description", "description", "content", "experiments"]
def to_representation(self, obj): def to_representation(self, obj):
serializer = UpdatedReportSerializer(obj) serializer = UpdatedReportSerializer(obj)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment