Skip to content
Snippets Groups Projects
Commit a9709765 authored by Rafael László's avatar Rafael László :speech_balloon:
Browse files

added bits

parent bcecbe61
No related branches found
No related tags found
1 merge request!2Dev
from django.db import models from django.db import models
from django.contrib.auth.models import User from django.contrib.auth.models import User
from solo.models import SingletonModel from solo.models import SingletonModel
from django.db.models import Sum
from django.db.models.functions import Coalesce
class GroupChoice(models.Model): class GroupChoice(models.Model):
TEAMS = ( TEAMS = (
...@@ -47,9 +48,12 @@ class Profile(models.Model): ...@@ -47,9 +48,12 @@ class Profile(models.Model):
role = models.CharField(max_length=10, choices=ROLES, default='Applicant') role = models.CharField(max_length=10, choices=ROLES, default='Applicant')
@property @property
def score(self): def events_visited(self):
return self.events_visitor.all().count() * 10 + \ return self.events_visitor.all().count()
self.solution.filter(accepted=True).count() * 50
@property
def homework_bits(self):
return self.solution.filter(accepted=True).values('task__bits').aggregate(total_bits=Sum('task__bits')).get('total_bits')
@property @property
def full_name(self): def full_name(self):
......
...@@ -8,7 +8,6 @@ class ChoiceSerializer(serializers.ModelSerializer): ...@@ -8,7 +8,6 @@ class ChoiceSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = models.GroupChoice model = models.GroupChoice
fields = ('choice', 'profile') fields = ('choice', 'profile')
class ProfileSerializer_User(serializers.ModelSerializer): class ProfileSerializer_User(serializers.ModelSerializer):
groups = serializers.SlugRelatedField( groups = serializers.SlugRelatedField(
...@@ -17,6 +16,7 @@ class ProfileSerializer_User(serializers.ModelSerializer): ...@@ -17,6 +16,7 @@ class ProfileSerializer_User(serializers.ModelSerializer):
queryset=models.GroupChoice.objects.all()) queryset=models.GroupChoice.objects.all())
updated_at = serializers.DateTimeField(read_only=True) updated_at = serializers.DateTimeField(read_only=True)
full_name = serializers.SerializerMethodField() full_name = serializers.SerializerMethodField()
bits = serializers.SerializerMethodField()
class Meta: class Meta:
model = models.Profile model = models.Profile
...@@ -33,7 +33,7 @@ class ProfileSerializer_User(serializers.ModelSerializer): ...@@ -33,7 +33,7 @@ class ProfileSerializer_User(serializers.ModelSerializer):
'motivation_exercise', 'motivation_exercise',
'full_name', 'full_name',
'role', 'role',
'score', 'bits'
) )
def validate_updated_at(self, value): def validate_updated_at(self, value):
...@@ -66,6 +66,9 @@ class ProfileSerializer_User(serializers.ModelSerializer): ...@@ -66,6 +66,9 @@ class ProfileSerializer_User(serializers.ModelSerializer):
def get_full_name(self, obj): def get_full_name(self, obj):
return obj.full_name return obj.full_name
def get_bits(self, obj):
return obj.homework_bits + obj.events_visited
class ProfileSerializer_Staff(serializers.ModelSerializer): class ProfileSerializer_Staff(serializers.ModelSerializer):
...@@ -91,7 +94,8 @@ class ProfileSerializer_Staff(serializers.ModelSerializer): ...@@ -91,7 +94,8 @@ class ProfileSerializer_Staff(serializers.ModelSerializer):
'motivation_exercise', 'motivation_exercise',
'full_name', 'full_name',
'role', 'role',
'score', 'events_visited',
'homework_bits'
) )
def validate_updated_at(self, value): def validate_updated_at(self, value):
......
...@@ -7,6 +7,8 @@ from account.models import Profile ...@@ -7,6 +7,8 @@ from account.models import Profile
from homework.models import Solution from homework.models import Solution
from common.validators import FileSizeValidator from common.validators import FileSizeValidator
from common.middleware import CurrentUserMiddleware
def document_file_name(instance, filename): def document_file_name(instance, filename):
return '/'.join([ return '/'.join([
...@@ -18,7 +20,12 @@ def document_file_name(instance, filename): ...@@ -18,7 +20,12 @@ def document_file_name(instance, filename):
class Document(models.Model): class Document(models.Model):
uploaded_by = models.ForeignKey(Profile, on_delete=models.DO_NOTHING) uploaded_by = models.ForeignKey(
Profile,
on_delete=models.DO_NOTHING,
related_name='documents',
default=CurrentUserMiddleware.get_current_user_profile,
)
uploaded_at = models.DateTimeField(auto_now_add=True, editable=False) uploaded_at = models.DateTimeField(auto_now_add=True, editable=False)
name = models.CharField(max_length=150, blank=True, default='') name = models.CharField(max_length=150, blank=True, default='')
description = models.TextField(blank=True, default='') description = models.TextField(blank=True, default='')
......
...@@ -15,6 +15,7 @@ class Task(models.Model): ...@@ -15,6 +15,7 @@ class Task(models.Model):
title = models.CharField(max_length=150) title = models.CharField(max_length=150)
text = models.TextField() text = models.TextField()
deadline = models.DateTimeField() deadline = models.DateTimeField()
bits = models.IntegerField(default=1)
def __str__(self): def __str__(self):
return self.title return self.title
...@@ -34,5 +35,9 @@ class Solution(models.Model): ...@@ -34,5 +35,9 @@ class Solution(models.Model):
accepted = models.BooleanField(blank=True, default=False) accepted = models.BooleanField(blank=True, default=False)
corrected = models.BooleanField(blank=True, default=False) corrected = models.BooleanField(blank=True, default=False)
@property
def my_bits(self):
return 10
def __str__(self): def __str__(self):
return "[{}] {}".format(self.created_at, self.created_by.full_name) return "[{}] {}".format(self.created_at, self.created_by.full_name)
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