class Incident(models.Model): class Meta: db_table = 'monitor_incident' ordering = ['-last_dttm'] class StatusChoices(DjangoChoices): NORMAL = ChoiceItem("Normal", "Normal", 1) WARNING = ChoiceItem("Warning", 'Warning', 2) CRITICAL = ChoiceItem("Critical", "Critical", 3) BLACKOUT = ChoiceItem("Blackout", "Blackout", 4) UNKNOWN = ChoiceItem("Unknown", "Unknown", 5) WATCHING = ChoiceItem("Watching", "Watching", 6) server = ForeignKey(Server, on_delete=deletion.CASCADE, null=False) threshold_test = ForeignKey(ThresholdTest, on_delete=deletion.ProtectedError, null=False, default='') start_dttm = DateTimeField(editable=False, auto_now_add=True, null=False) last_dttm = DateTimeField() closed_dttm = DateTimeField(null=True, blank=True) closed_sw = BooleanField(default=False) min_value = DecimalField(null=False, max_digits=6, decimal_places=2, default=0) cur_value = DecimalField(null=False, max_digits=6, decimal_places=2, default=0) max_value = DecimalField(null=False, max_digits=6, decimal_places=2, default=0) cur_test_w_values = CharField(max_length=500, null=False, default='') pending_status = CharField(max_length=15, null=False, default='', choices=StatusChoices.choices) current_status = CharField(max_length=15, null=False, choices=StatusChoices.choices, default=StatusChoices.WATCHING) max_status = CharField(max_length=15, null=False, choices=StatusChoices.choices, default=StatusChoices.WATCHING) detail_element = CharField(max_length=25, null=False, default='') critical_ticks = IntegerField(validators=[MinValueValidator(0), MaxValueValidator(3)], null=False, default=0) warning_ticks = IntegerField(validators=[MinValueValidator(0), MaxValueValidator(3)], null=False, default=0) normal_ticks = IntegerField(validators=[MinValueValidator(0), MaxValueValidator(3)], null=False, default=0) note = CharField(max_length=4000, null=True, blank=True) note_by = CharField(max_length=30, null=True, blank=True) ticket = CharField(max_length=30, null=True, blank=True) created_dttm = DateTimeField(editable=False, auto_now_add=True) updated_dttm = DateTimeField(auto_now=True)
class Metrics_CpuLoad(models.Model): class Meta: db_table = 'metrics_cpu_load' server = ForeignKey(Server, on_delete=deletion.CASCADE, null=False) created_dttm = DateTimeField(editable=False, auto_now_add=True, null=False) load_1min = DecimalField(validators=[MinValueValidator(0)], decimal_places=2, max_digits=4, null=False, default=0) load_5min = DecimalField(validators=[MinValueValidator(0)], decimal_places=2, max_digits=4, null=False, default=0) load_15min = DecimalField(validators=[MinValueValidator(0)], decimal_places=2, max_digits=4, null=False, default=0) error_cnt = IntegerField(validators=[MinValueValidator(0)], null=False, default=0) error_msg = CharField(max_length=2000, null=False, default='')
class GamePlayerEventSerializer(serializers.Serializer): game = serializers.IntegerField(required=True, validators=[MinValueValidator(0)]) player = serializers.IntegerField(required=True, validators=[MinValueValidator(0)]) minute = serializers.IntegerField(required=True, validators=[MinValueValidator(0)])
class SnippetSerializer(serializers.Serializer): """SnippetSerializer classdoc create: docstring for create from serializer classdoc """ id = serializers.IntegerField(read_only=True, help_text="id serializer help text") created = UnixTimestampField(read_only=True) owner = serializers.PrimaryKeyRelatedField( queryset=get_user_model().objects.all(), default=serializers.CurrentUserDefault(), help_text="The ID of the user that created this snippet; if none is provided, " "defaults to the currently logged in user." ) owner_as_string = serializers.PrimaryKeyRelatedField( help_text="The ID of the user that created this snippet.", pk_field=serializers.CharField(help_text="this help text should not show up"), read_only=True, source='owner', ) title = serializers.CharField(required=False, allow_blank=True, max_length=100) code = serializers.CharField(style={'base_template': 'textarea.html'}) tags = serializers.ListField(child=serializers.CharField(min_length=2), min_length=3, max_length=15) linenos = serializers.BooleanField(required=False) language = LanguageSerializer(help_text="Sample help text for language") styles = serializers.MultipleChoiceField(choices=STYLE_CHOICES, default=['solarized-dark']) lines = serializers.ListField(child=serializers.IntegerField(), allow_empty=True, allow_null=True, required=False) example_projects = serializers.ListSerializer(child=ExampleProjectSerializer(), read_only=True, validators=[MaxLengthValidator(100)]) difficulty_factor = serializers.FloatField(help_text="this is here just to test FloatField", read_only=True, default=lambda: 6.9) rate_as_string = serializers.DecimalField(max_digits=6, decimal_places=3, default=Decimal('0.0'), validators=[MinValueValidator(Decimal('0.0'))]) rate = serializers.DecimalField(max_digits=6, decimal_places=3, default=Decimal('0.0'), coerce_to_string=False, validators=[MinValueValidator(Decimal('0.0'))]) def create(self, validated_data): """ Create and return a new `Snippet` instance, given the validated data. """ del validated_data['styles'] del validated_data['lines'] del validated_data['difficulty_factor'] return Snippet.objects.create(**validated_data) def update(self, instance, validated_data): """ Update and return an existing `Snippet` instance, given the validated data. """ instance.title = validated_data.get('title', instance.title) instance.code = validated_data.get('code', instance.code) instance.linenos = validated_data.get('linenos', instance.linenos) instance.language = validated_data.get('language', instance.language) instance.style = validated_data.get('style', instance.style) instance.save() return instance
class GameStatusSerializer(serializers.Serializer): shots = serializers.IntegerField(required=True, validators=[MinValueValidator(0)]) ball_possession = serializers.IntegerField( required=True, validators=[MaxValueValidator(100), MinValueValidator(0)]) corners = serializers.IntegerField(required=True, validators=[MinValueValidator(0)]) goals = serializers.IntegerField(required=True, validators=[MinValueValidator(0)])
class BookingSerializer(Serializer): row_number = IntegerField(validators=( MinValueValidator(1), DynamicMaxValueValidator( lambda context: context['movie_session'].hall.rows_number, ), )) seat_number = IntegerField(validators=( MinValueValidator(1), DynamicMaxValueValidator( lambda context: context['movie_session'].hall.seats_per_row, ), ))
class Process(models.Model): owner = models.ForeignKey('auth.User', related_name='process_list', on_delete=models.CASCADE) service = models.CharField(max_length=15, choices=SERVICE_CHOICES) income = models.IntegerField(default=0) discount = models.IntegerField(default=0) tax_percent = models.PositiveIntegerField( default=1, validators=[MinValueValidator(1), MaxValueValidator(25)]) unit = models.PositiveIntegerField(default=1, validators=[MinValueValidator(1)]) bulk = models.BooleanField(default=False) stage = models.PositiveIntegerField( default=1, validators=[MinValueValidator(1), MaxValueValidator(10)]) created = models.DateTimeField(auto_now_add=True) def grand_total(self): return (self.income - self.discount + (self.tax_percent * self.income) / 100) def clean(self): # Don't allow Hardware services to have stages more than 5. if self.service == 'Hardware' and self.stage > 5: raise ValidationError( {'service': _('Hardware service has no more than 5 stages.')}) if self.bulk == 0 and self.stage > 1: raise ValidationError({ 'bulk': _('Items not purchased in bulk but Unit is defined more than 1.' ) }) if self.bulk == 1 and self.stage == 1: raise ValidationError( {'bulk': _('Items purchased in bulk but unit is equal to 1.')}) #To call the model clean method we will override save method. def save(self, *args, **kwargs): self.clean() return super(Process, self).save(*args, **kwargs) def __str__(self): return "{} at stage {}".format(self.service, self.stage) class Meta: ordering = ('-created', )
class EducationalOpportunity(models.Model): id = models.UUIDField(default=uuid.uuid4, primary_key=True) scales = ArrayField(size=6, validators=[MinLengthValidator(6), MinLengthValidator(6)], base_field=models.IntegerField(validators=[MinValueValidator(0), MaxValueValidator(100)])) activity = models.CharField(max_length=50) objects = EducationalOpportunityManager()
class Submission(models.Model): filename = models.FileField(upload_to='submissions/') info = models.TextField(default='None') timeTaken = models.DecimalField(null=False, default=0, decimal_places=4, max_digits=4) late = models.BooleanField(default=False) status = EnumField(choices=['start', 'in_progress', 'complete', 'late']) result = EnumField(choices=['pass', 'fail', 'error']) language = EnumField( choices=['python2', 'python3', 'java', 'cpp', 'c', 'ruby'], default='python2') marks = models.IntegerField( validators=[MinValueValidator(0), MaxValueValidator(100)]) output = models.TextField def __str__(self): return 'Submission: ' + str(self.id) + ' ' + str(self.filename) user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=False) assessment = models.ForeignKey(Assessment, on_delete=models.CASCADE, null=False, related_name="submissions") created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True)
def __init__(self, max_digits, decimal_places, coerce_to_string=None, max_value=None, min_value=None, **kwargs): self.max_digits = max_digits self.decimal_places = decimal_places self.coerce_to_string = coerce_to_string if ( coerce_to_string is not None) else self.coerce_to_string self.max_value = max_value self.min_value = min_value super(DecimalField, self).__init__(**kwargs) if self.max_value is not None: message = self.error_messages['max_value'].format( max_value=self.max_value) self.validators.append( MaxValueValidator(self.max_value, message=message)) if self.min_value is not None: message = self.error_messages['min_value'].format( min_value=self.min_value) self.validators.append( MinValueValidator(self.min_value, message=message))
class Submission(models.Model): filename = models.FileField(upload_to="submissions/") info = models.TextField(default="None") timeTaken = models.DecimalField(null=False, default=0, decimal_places=4, max_digits=6) late = models.BooleanField(default=False) status = EnumField(choices=["start", "in_progress", "complete", "late"]) result = EnumField(choices=["pass", "fail", "error", "overtime"]) language = EnumField( choices=["python2", "python3", "java", "cpp", "c", "ruby"], default="python2") marks = models.IntegerField( validators=[MinValueValidator(0), MaxValueValidator(100)]) output = models.TextField def __str__(self): return "Submission: " + str(self.id) + " " + str(self.filename) user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=False) assessment = models.ForeignKey(Assessment, on_delete=models.CASCADE, null=False, related_name="submissions") created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True)
class Movie(models.Model): title = models.CharField(max_length=256) price = models.DecimalField(decimal_places=2, max_digits=5) genre = models.PositiveSmallIntegerField(null=True, choices=choices.GENRE_CHOICES) score = models.IntegerField( default=0, validators=[MinValueValidator(0), MaxValueValidator(10)])
class ThresholdTest(models.Model): class Meta: db_table = 'monitor_threshold_test' threshold_metric = ForeignKey(ThresholdMetricLookup, on_delete=CASCADE, default='') detail_element = CharField(max_length=50, null=True, blank=True) normal_ticks = IntegerField(validators=[MinValueValidator(1), MaxValueValidator(5)], null=False, default=3) warning_ticks = IntegerField(validators=[MinValueValidator(1), MaxValueValidator(5)], null=False, default=3) warning_predicate_type = CharField(max_length=15, null=False, choices=PredicateTypeChoices.choices, default=PredicateTypeChoices.GTE) warning_value = CharField(max_length=100, null=False, default='') critical_ticks = IntegerField(validators=[MinValueValidator(1), MaxValueValidator(5)], null=False, default=3) critical_predicate_type = CharField(max_length=15, null=False, choices=PredicateTypeChoices.choices, default=PredicateTypeChoices.GTE) critical_value = CharField(max_length=100, null=False, default='') notification_method = ForeignKey(ThresholdNotificationMethodLookup, on_delete=CASCADE, default='') active_sw = BooleanField(default=True, null=False) created_dttm = DateTimeField(editable=False, auto_now_add=True) updated_dttm = DateTimeField(auto_now=True)
class IncidentDetail(models.Model): class Meta: db_table = 'monitor_incident_details' ordering = ['-created_dttm'] incident = ForeignKey(Incident, on_delete=deletion.CASCADE, null=False) cur_value = DecimalField(null=False, max_digits=6, decimal_places=2, default=0) min_value = DecimalField(null=False, max_digits=6, decimal_places=2, default=0) max_value = DecimalField(null=False, max_digits=6, decimal_places=2, default=0) cur_test_w_values = CharField(max_length=500, null=False, default='') max_status = CharField(max_length=15, null=False, choices=Incident.StatusChoices.choices, default=Incident.StatusChoices.WATCHING) pending_status = CharField(max_length=15, null=False, choices=Incident.StatusChoices.choices, default=Incident.StatusChoices.WATCHING) current_status = CharField(max_length=15, null=False, choices=Incident.StatusChoices.choices, default=Incident.StatusChoices.WATCHING) critical_ticks = IntegerField(validators=[MinValueValidator(0), MaxValueValidator(3)], null=False, default=0) warning_ticks = IntegerField(validators=[MinValueValidator(0), MaxValueValidator(3)], null=False, default=0) normal_ticks = IntegerField(validators=[MinValueValidator(0), MaxValueValidator(3)], null=False, default=0) created_dttm = DateTimeField(editable=False, auto_now_add=True)
class GameMinimalSerializer(serializers.Serializer): date = serializers.DateField(required=True) journey = serializers.IntegerField(required=True, validators=[ MaxValueValidator(MAX_JOURNEY), MinValueValidator(MIN_JOURNEY) ]) stadium = serializers.CharField(required=True, max_length=200)
class OrderItem(models.Model): order = models.ForeignKey( # NOTE: naming a relation makes it easier to reference on a parent object Order, related_name="items", on_delete=models.CASCADE, null=False) product = models.ForeignKey(Product, on_delete=models.DO_NOTHING, null=False) quantity = models.PositiveIntegerField(null=False, validators=[MinValueValidator(1)]) unit_price = models.DecimalField( null=False, decimal_places=2, max_digits=12, validators=[MinValueValidator(Decimal('0.01'))])
class StadiumSerializer(serializers.Serializer): name = serializers.CharField(required=True, max_length=200) address = serializers.CharField(required=True, max_length=200) number_seats = serializers.IntegerField(required=True, validators=[MinValueValidator(0)]) picture = serializers.ImageField(required=False, allow_empty_file=True, allow_null=True)
class ExamPaperCreateRuleSerializer(serializers.ModelSerializer): grade = serializers.DecimalField(max_digits=5, decimal_places=2, default=1.00, validators=[ MinValueValidator(Decimal((0, (0, 0, 1), -2))), MaxValueValidator(Decimal(100))]) class Meta: model = ExamPaperCreateRule fields = ('section_name', 'problem_section_id', 'problem_type', 'problem_num', 'grade')
class Product(models.Model): name = models.TextField(null=False, blank=False) unit_price = models.DecimalField( null=False, decimal_places=2, max_digits=12, # NOTE: in validator context a decimal object must be declared (0.01 can't be inferred) validators=[MinValueValidator(Decimal('0.01'))]) multiplier = models.PositiveIntegerField(null=True)
def __init__(self, **kwargs): self.max_value = kwargs.pop('max_value', None) self.min_value = kwargs.pop('min_value', None) super(FloatField, self).__init__(**kwargs) if self.max_value is not None: message = self.error_messages['max_value'].format(max_value=self.max_value) self.validators.append(MaxValueValidator(self.max_value, message=message)) if self.min_value is not None: message = self.error_messages['min_value'].format(min_value=self.min_value) self.validators.append(MinValueValidator(self.min_value, message=message))
class ExamPaperProblemsSerializer(serializers.ModelSerializer): content = serializers.JSONField(required=True) grade = serializers.DecimalField(max_digits=5, decimal_places=2, validators=[ MinValueValidator(Decimal((0, (0, 0, 1), -2))), MaxValueValidator(Decimal(100))]) class Meta: model = ExamPaperProblems fields = ('sequence', 'problem_id', 'grade', 'problem_type', 'content')
class Metrics_CollectionError(models.Model): class Meta: db_table = 'metrics_collections_error' server = ForeignKey(Server, on_delete=deletion.CASCADE, null=False) created_dttm = DateTimeField(editable=False, null=False) metric_name = CharField(max_length=40, null=False, blank=True) error_cnt = IntegerField(validators=[MinValueValidator(0)], null=False, default=0) error_msg = CharField(max_length=2000, null=False, default='')
class Ingestor(models.Model): value = models.IntegerField(null=False, blank=False, validators=[MinValueValidator(0)]) msd = models.IntegerField(null=True, blank=True) def save(self, force_insert=False, force_update=False, using=None, update_fields=None): self.msd = self.get_msd(self.value) super().save() @staticmethod def get_msd(num): return num // (10 ** floor(log10(num)))
class ExamPaperFixedSerializer(serializers.ModelSerializer): problems = ExamPaperProblemsSerializer(many=True, required=False) description = serializers.CharField(required=False, allow_blank=True) passing_ratio = serializers.IntegerField( default=60, validators=[MinValueValidator(1), MaxValueValidator(100)]) class Meta: model = ExamPaper fields = ( 'name', 'description', 'create_type', 'creator', 'passing_ratio', 'problems', ) def create(self, validated_data): if 'problems' in validated_data: problems_data = validated_data.pop('problems') else: problems_data = [] exam_paper = ExamPaper.objects.create(**validated_data) with transaction.atomic(): for problem_data in problems_data: problem_serializer = ExamPaperProblemsSerializer( data=problem_data) problem_serializer.is_valid(raise_exception=True) ExamPaperProblems.objects.create( exam_paper=exam_paper, **problem_serializer.validated_data) return exam_paper def update(self, exam_paper, validated_data): if 'problems' in validated_data: problems_data = validated_data.pop('problems') else: problems_data = [] with transaction.atomic(): exam_paper.__dict__.update(**validated_data) exam_paper.save() exam_paper.problems.all().delete() for problem_data in problems_data: if problem_data.get('id'): problem_data.pop('id') problem_serializer = ExamPaperProblemsSerializer( data=problem_data) problem_serializer.is_valid(raise_exception=True) ExamPaperProblems.objects.create( exam_paper=exam_paper, **problem_serializer.validated_data) return exam_paper
class Ingredient(models.Model): recipe = models.ForeignKey(Recipe, related_name='ingredient_recipe', on_delete=models.CASCADE) number = models.FloatField(default=0, validators=[ MinValueValidator(0), ]) unit = models.ForeignKey(Unit, related_name='ingredient_unit', on_delete=models.PROTECT) ingredient = models.CharField(max_length=100) comment = models.CharField(max_length=300, blank=True)
class GetQuestionValidateSerializer(serializers.Serializer): """問題取得用シリアライザー""" group_id = serializers.UUIDField(required=True) limit = serializers.IntegerField(required=False) degree = serializers.IntegerField( required=True, validators=[MinValueValidator(1), MaxValueValidator(3)]) def validate_group_id(self, value): if not Question.objects.filter(group=value).values().exists(): raise ValidationError( detail="group_id is not found. group_id={}".format(value)) return value
class Book(models.Model): category_id = models.ForeignKey(Category, blank=True) author_id = models.ForeignKey(Author, blank=False) name = models.CharField(max_length=30, blank=False) price = models.FloatField(blank=False) author_percentage = models.IntegerField(blank=False, validators=[MinValueValidator(1), MaxValueValidator(100)]) description = models.TextField(blank=True) class Meta: db_table = 'book' def __str__(self): return self.name
class Comment(models.Model): name = models.CharField(max_length=128, blank=False) description = models.CharField(max_length=255, blank=True) image = models.ImageField(upload_to='img', null=True) stars = models.IntegerField( blank=False, null=False, validators=[MinValueValidator(1), MaxValueValidator(5)]) pub = models.ForeignKey(Pub, null=False, on_delete=models.CASCADE, related_name="comments")
class Metrics_HostDetail(models.Model): class Meta: db_table = 'metrics_host_detail' server = ForeignKey(Server, on_delete=deletion.CASCADE, null=False) created_dttm = DateTimeField(editable=False, auto_now_add=True, null=False) ipAddress = CharField(max_length=20, null=True, blank=True) last_reboot = DateTimeField(null=True, blank=True) cpu = IntegerField(validators=[MinValueValidator(0)], null=True, blank=True) ram_gb = IntegerField(validators=[MinValueValidator(0)], null=True, blank=True) os_version = CharField(max_length=40, null=True, blank=True) db_version = CharField(max_length=30, null=True, blank=True) db_version_number = IntegerField(validators=[MinValueValidator(0)], null=True, blank=True) error_cnt = IntegerField(validators=[MinValueValidator(0)], null=True, blank=True) error_msg = CharField(max_length=2000, null=False, default='')
class GameSerializer(serializers.Serializer): # TODO -> EXTENDER DO GameSerializer date = serializers.DateField(required=True) journey = serializers.IntegerField(required=True, validators=[ MaxValueValidator(MAX_JOURNEY), MinValueValidator(MIN_JOURNEY) ]) stadium = serializers.CharField(required=True, max_length=200) teams = serializers.ListField(required=True, min_length=2, max_length=2, child=serializers.CharField(max_length=200)) goals = serializers.ListField( required=True, min_length=2, max_length=2, child=serializers.IntegerField(validators=[MinValueValidator(0)])) shots = serializers.ListField( required=True, min_length=2, max_length=2, child=serializers.IntegerField(validators=[MinValueValidator(0)])) ball_possessions = serializers.ListField( required=True, min_length=2, max_length=2, child=serializers.IntegerField( required=True, validators=[MaxValueValidator(100), MinValueValidator(0)])) corners = serializers.ListField( required=True, min_length=2, max_length=2, child=serializers.IntegerField(validators=[MinValueValidator(0)]))