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

gcivil-nyu-org / INT2-Monday-Spring2024-Team-1 / 1130

29 Apr 2024 09:15PM UTC coverage: 29.816% (-60.7%) from 90.503%
1130

cron

travis-pro

web-flow
Merge pull request #267 from gcivil-nyu-org/develop

Release 10: 04/29/2024

503 of 1687 relevant lines covered (29.82%)

0.3 hits per line

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

22.86
/healthScore/homepage_and_auth.py
1
from django.shortcuts import render, redirect
1✔
2
from django.contrib.auth import authenticate, login
1✔
3
from django.contrib.auth.decorators import login_required
1✔
4
from .user_utils import get_health_history_details
1✔
5
from .models import (
1✔
6
    Post,
7
    HealthHistoryAccessRequest,
8
)
9

10

11
# To overcame issues with regards to permissions (POST calls will give CSRF errors if the below tag is not used)
12
from django.views.decorators.csrf import csrf_exempt
1✔
13

14
from .models import (
1✔
15
    Hospital,
16
    User,
17
    HospitalStaff,
18
)
19

20
from .file_upload import file_upload
1✔
21
from django.views.decorators.cache import never_cache
1✔
22

23

24
def homepage(request):
1✔
25
    return render(request, "homepage.html")
×
26

27

28
@csrf_exempt
1✔
29
def registration(request):
1✔
30
    if request.method == "POST":
×
31
        role = request.POST.get("role")
×
32
        email = request.POST.get("email")
×
33
        password = request.POST.get("password")
×
34
        fullname = request.POST.get("fullname")
×
35
        phone_number = request.POST.get("contactInfo")
×
36
        context = {"error_message:": ""}
×
37

38
        if User.objects.filter(email=email).exists():
×
39
            user = User.objects.get(email=email)
×
40
            if user.is_patient:
×
41
                context["error_message"] = (
×
42
                    "A patient account already exists with this email"
43
                )
44
            elif user.is_staff:
×
45
                context["error_message"] = (
×
46
                    "An admin account already exists with this email"
47
                )
48
            else:
49
                context["error_message"] = (
×
50
                    "A healthcare worker account already exists with this email"
51
                )
52

53
            return render(request, "registration.html", context)
×
54

55
        common_fields = {
×
56
            "email": email,
57
            "password": password,
58
            "name": fullname,
59
            "contactInfo": phone_number,
60
            "profilePic": "https://elasticbeanstalk-us-east-1-992382724291.s3.amazonaws.com/documents-health-score/userProfile/default/default-pic.png",
61
        }
62

63
        if role == "User":
×
64
            file_url = file_upload(request, "identityProof")
×
65
            user_specific_fields = {
×
66
                "dob": request.POST.get("dob"),
67
                "gender": request.POST.get("gender"),
68
                "address": f"{request.POST.get('street_address')}, {request.POST.get('city')}, {request.POST.get('state')}, {request.POST.get('zipcode')}",
69
                "proofOfIdentity": file_url,  # This needs handling for file upload
70
            }
71
            User.objects.create_patient(**common_fields, **user_specific_fields)
×
72

73
        elif role == "Healthcare Admin":
×
74
            hospital_name = request.POST.get("hospital_name")
×
75
            hospital_address = f"{request.POST.get('facility_street_address')}, {request.POST.get('facility_city')}, {request.POST.get('facility_state')}, {request.POST.get('facility_zipcode')}"
×
76

77
            user = User.objects.create_staff(**common_fields)
×
78

79
            hospital, created = Hospital.objects.get_or_create(
×
80
                name=hospital_name,
81
                defaults={"address": hospital_address, "contactInfo": phone_number},
82
            )
83

84
            HospitalStaff.objects.create(
×
85
                hospitalID=hospital,
86
                admin=True,
87
                name=fullname,
88
                contactInfo=phone_number,
89
                userID=user.id,
90
            )
91

92
        return redirect("homepage")
×
93

94
    return render(request, "registration.html")
×
95

96

97
@never_cache
1✔
98
def login_view(request):
1✔
99
    if request.user.is_authenticated:
×
100
        return redirect("user_dashboard")
×
101

102
    if request.method == "POST":
×
103
        email = request.POST.get("email")
×
104
        password = request.POST.get("password")
×
105

106
        user = authenticate(request, email=email, password=password, is_active=True)
×
107

108
        if user is not None:
×
109
            login(request, user)
×
110
            return redirect("user_dashboard")
×
111
        else:
112
            return render(
×
113
                request,
114
                "login.html",
115
                {"error_message": "Invalid email or password. Please try again."},
116
            )
117
    return render(request, "login.html")
×
118

119

120
@login_required(login_url="/")
1✔
121
def user_dashboard(request):
1✔
122
    if not request.user.is_patient:
×
123
        return redirect("homepage")
×
124

125
    posts = Post.objects.filter(user=request.user).order_by("-createdAt")[:5]
×
126

127
    updated_params = request.GET.copy()
×
128
    updated_params["record_status"] = "approved"
×
129

130
    request.GET = updated_params
×
131

132
    zipped_details = get_health_history_details(request=request)
×
133

134
    filtered_details = [
×
135
        details
136
        for details in zipped_details
137
        if details[0]["record_status"] == "approved"
138
    ]
139
    sorted_details = sorted(
×
140
        filtered_details, key=lambda x: x[0]["createdAt"], reverse=True
141
    )[:5]
142

143
    all_access_requests = HealthHistoryAccessRequest.objects.filter(
×
144
        userID=request.user
145
    ).order_by("-createdAt")
146

147
    total_requests = all_access_requests.count()
×
148

149
    recent_requests = all_access_requests[:5]
×
150

151
    context = {
×
152
        "posts": posts,
153
        "zipped_details": sorted_details,
154
        "access_requests": recent_requests,
155
        "total_requests": total_requests,
156
    }
157
    return render(request, "user_dashboard.html", context)
×
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

© 2025 Coveralls, Inc