• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

gcivil-nyu-org / INT2-Monday-Spring2024-Team-2 / 710

09 Apr 2024 08:28PM UTC coverage: 89.944%. Remained the same
710

cron

travis-pro

web-flow
Merge pull request #207 from gcivil-nyu-org/samkit/feature

Add prod zip (Hotfix)

1619 of 1800 relevant lines covered (89.94%)

1.22 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

99.02
/TutorRegister/models.py
1
from django.db import models
2✔
2
from django.contrib.auth.models import User
2✔
3
from django.db.models.signals import post_save
2✔
4
from django.dispatch import receiver
2✔
5

6

7
class Expertise(models.Model):
2✔
8
    user = models.ForeignKey(User, on_delete=models.CASCADE)
2✔
9
    subject = models.CharField(max_length=255)
2✔
10
    level = models.CharField(max_length=255)
2✔
11

12
    def human_readable_subject(self):
2✔
13
        return self.subject.replace("_", " ").capitalize()
1✔
14

15

16
# Two blank lines before the new class definition
17
class Availability(models.Model):
2✔
18
    user = models.ForeignKey(User, on_delete=models.CASCADE)
2✔
19
    day_of_week = models.CharField(max_length=255)
2✔
20
    start_time = models.TimeField()
2✔
21
    end_time = models.TimeField()
2✔
22

23

24
# Two blank lines before the new class definition
25
class ProfileS(models.Model):
2✔
26
    user = models.OneToOneField(User, on_delete=models.CASCADE)
2✔
27
    fname = models.CharField(max_length=255)
2✔
28
    mname = models.CharField(max_length=255, blank=True)
2✔
29
    lname = models.CharField(max_length=255)
2✔
30
    gender = models.CharField(max_length=255)
2✔
31
    school = models.CharField(max_length=255)
2✔
32
    zip = models.CharField(max_length=255)
2✔
33
    grade = models.CharField(max_length=255)
2✔
34
    preferred_mode = models.CharField(max_length=255)
2✔
35
    intro = models.TextField()
2✔
36
    image = models.ImageField(upload_to="images/", default="images/profile_icon.png")
2✔
37

38

39
# Two blank lines before the new class definition
40
class ProfileT(models.Model):
2✔
41
    user = models.OneToOneField(User, on_delete=models.CASCADE)
2✔
42
    fname = models.CharField(max_length=255)
2✔
43
    mname = models.CharField(max_length=255, blank=True)
2✔
44
    lname = models.CharField(max_length=255)
2✔
45
    gender = models.CharField(max_length=255)
2✔
46
    major = models.CharField(max_length=255)
2✔
47
    zip = models.CharField(max_length=255)
2✔
48
    grade = models.CharField(max_length=255)
2✔
49
    preferred_mode = models.CharField(max_length=255)
2✔
50
    intro = models.TextField()
2✔
51
    salary_min = models.IntegerField(default=0)
2✔
52
    salary_max = models.IntegerField(default=0)
2✔
53
    image = models.ImageField(upload_to="images/", default="images/profile_icon.png")
2✔
54
    transcript = models.FileField(upload_to="transcripts/", null=True, blank=True)
2✔
55
    qualified = models.BooleanField(default=False, null=True, blank=True)
2✔
56

57

58
# Two blank lines before the new class definition
59
class UserType(models.Model):
2✔
60
    user = models.OneToOneField(User, on_delete=models.CASCADE)
2✔
61
    user_type = models.CharField(max_length=100, null=True, blank=True)
2✔
62
    has_profile_complete = models.BooleanField(default=False, null=False)
2✔
63

64

65
class ChatSession(models.Model):
2✔
66
    tutor = models.ForeignKey(
2✔
67
        User, related_name="tutor_chats", on_delete=models.CASCADE
68
    )
69
    student = models.ForeignKey(
2✔
70
        User, related_name="student_chats", on_delete=models.CASCADE
71
    )
72
    created_at = models.DateTimeField(auto_now_add=True)
2✔
73

74

75
class Message(models.Model):
2✔
76
    chat_session = models.ForeignKey(
2✔
77
        ChatSession, related_name="messages", on_delete=models.CASCADE
78
    )
79
    author = models.ForeignKey(User, on_delete=models.CASCADE)
2✔
80
    message = models.TextField()
2✔
81
    timestamp = models.DateTimeField(auto_now_add=True)
2✔
82

83

84
class TutoringSession(models.Model):
2✔
85
    student_id = models.ForeignKey(
2✔
86
        User, on_delete=models.CASCADE, related_name="student_sessions"
87
    )
88
    tutor_id = models.ForeignKey(
2✔
89
        User, on_delete=models.CASCADE, related_name="tutor_sessions"
90
    )
91
    tutoring_mode = models.CharField(max_length=100)
2✔
92
    subject = models.CharField(max_length=100)
2✔
93
    date = models.DateField()
2✔
94
    start_time = models.TimeField(default="12:00:00")
2✔
95
    end_time = models.TimeField(default="12:00:00")
2✔
96
    offering_rate = models.DecimalField(max_digits=6, decimal_places=0)
2✔
97
    message = models.TextField()
2✔
98
    status = models.TextField(default="Pending")
2✔
99
    attachment = models.FileField(upload_to="attachments/", null=True, blank=True)
2✔
100
    reviewed_by_student = models.BooleanField(default=False)
2✔
101
    meeting_link = models.CharField(max_length=100, null=True, blank=True)
2✔
102

103
    def human_readable_subject(self):
2✔
104
        return self.subject.replace("_", " ")
1✔
105

106

107
class TutorReview(models.Model):
2✔
108
    student_id = models.ForeignKey(
2✔
109
        User, on_delete=models.CASCADE, related_name="student_reviews"
110
    )
111
    tutor_id = models.ForeignKey(
2✔
112
        User, on_delete=models.CASCADE, related_name="tutor_reviews"
113
    )
114
    tutoring_session = models.ForeignKey(
2✔
115
        TutoringSession,
116
        on_delete=models.CASCADE,
117
        related_name="session_reviews",
118
        null=True,
119
    )
120
    review_date = models.DateField(auto_now_add=True)
2✔
121
    rating = models.DecimalField(max_digits=2, decimal_places=1)
2✔
122
    review = models.TextField()
2✔
123

124
    def __str__(self):
2✔
125
        return f"Review by {self.student_id} for {self.tutor_id}"
×
126

127

128
class Favorite(models.Model):
2✔
129
    student = models.ForeignKey(
2✔
130
        User, on_delete=models.CASCADE, related_name="student_favorites"
131
    )
132
    tutor = models.ForeignKey(
2✔
133
        User, on_delete=models.CASCADE, related_name="tutor_favorites"
134
    )
135
    category = models.CharField(max_length=100, null=True, blank=True)
2✔
136

137

138
class Post(models.Model):
2✔
139
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="user_post")
2✔
140
    title = models.CharField(max_length=250)
2✔
141
    content = models.TextField()
2✔
142
    label = models.CharField(max_length=100)
2✔
143
    post_date = models.DateTimeField(auto_now_add=True)
2✔
144
    attachment = models.FileField(upload_to="attachments/", null=True, blank=True)
2✔
145

146

147
class Reply(models.Model):
2✔
148
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="user_reply")
2✔
149
    post = models.ForeignKey(
2✔
150
        Post, on_delete=models.CASCADE, related_name="post_replies"
151
    )
152
    content = models.TextField()
2✔
153
    reply_date = models.DateTimeField(auto_now_add=True)
2✔
154

155

156
# Two blank lines before the new function definition
157
# Signal to automatically create or update UserType when a User instance is saved
158
@receiver(post_save, sender=User)
2✔
159
def create_or_update_user_type(sender, instance, created, **kwargs):
2✔
160
    if created:
1✔
161
        UserType.objects.create(user=instance)
1✔
162
    instance.usertype.save()
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc