File size: 1,972 Bytes
13c805c
 
 
1ae15f5
13c805c
1ae15f5
13c805c
833b984
 
 
 
 
 
 
 
 
 
 
 
 
13c805c
 
1ae15f5
13c805c
252fc68
833b984
13c805c
 
 
 
 
 
1ae15f5
 
 
 
 
13c805c
 
 
 
 
 
13198fd
13c805c
 
 
1ae15f5
 
 
 
 
 
 
 
 
 
 
 
 
13198fd
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
from django.db import models
import datetime
from django.utils import timezone
from django.contrib.auth import get_user_model

User=get_user_model()
# Create your models here.

class ThemeColor(models.Model):
    
    title           = models.CharField(max_length=200,primary_key=True)
    primary_color   = models.CharField(max_length=7)
    secondary_color = models.CharField(max_length=7)

    def __str__(self):
        return self.pk
    



class Question(models.Model):
    
    author        = models.ForeignKey(User,on_delete=models.CASCADE)
    question_text = models.CharField(max_length=300)
    pub_date      = models.DateTimeField("date published",default=timezone.now)
    theme_color    = models.ForeignKey(ThemeColor,on_delete=models.SET_NULL,blank=True,null=True)
    
    def __str__(self):
        return self.question_text
    
    @property
    def total_votes(self):
        return len(Vote.objects.filter(choice__question__pk=self.pk))
    
    def has_user_voted(self,user):
        return len(Vote.objects.filter(choice__question__pk=self.pk,user=user))>0

    def was_recently_pub(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)


class Choice(models.Model):
    
    question    = models.ForeignKey(Question, on_delete=models.CASCADE,related_name="choice_set")
    choice_text = models.CharField(max_length=200)
    
    def __str__(self):
        return self.question.question_text+"-"*5+self.choice_text
    
    @property
    def vote_count(self):
        return len(Vote.objects.filter(choice=self.pk))
    @property
    def vote_percent(self):
        return "{:.2f}".format(((self.vote_count/(self.question.total_votes))*100))
        
    

class Vote(models.Model):
    user     = models.ForeignKey(User, on_delete=models.CASCADE)
    choice   = models.ForeignKey(Choice, on_delete=models.CASCADE,related_name="vote_set")

    
    # def user_voted_questions(self,user):
    #     return self.objects