Skip to content
Snippets Groups Projects
Commit 82c0cdd3 authored by Odin Johan Vatne's avatar Odin Johan Vatne
Browse files

Added header and base page template

parent 7f4c3994
No related branches found
No related tags found
No related merge requests found
* {
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}
.floating-header {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: solid darkslategray 1px;
}
#logo {
color: darkcyan;
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
display: inline;
margin: 0;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>{%block title%} {%endblock%} | PAS</title>
{% load static %}
<link
rel="stylesheet"
type="text/css"
href="{% static 'pasapp/style.css' %}"
/>
</head>
<body>
<div class="floating-header">
<h1 id="logo">PAS</h1>
{% if user.username %}
<div>
Logged in as {{user.username}}
<a href="/logout/"><button type="button">Sign out</button></a>
</div>
{% else %}
<div>
<form action="/login/" method="post">
{% csrf_token %} {{ loginForm }}
<input type="submit" value="Log In" />
</form>
</div>
{% endif %}
</div>
{% block content %} {% endblock %}
</body>
</html>
<!DOCTYPE html> {% extends 'pasapp/base_template.html' %}
<html>
<head> {% block title %} New Project {% endblock %}
<meta charset="utf-8" /> {% block content %}
<title>Create Project | PAS</title>
</head>
<body>
<form action="/project/create/" method="post"> <form action="/project/create/" method="post">
{% csrf_token %} {{ form }} {% csrf_token %} {{ form }}
<input type="submit" value="Create Project" /> <input type="submit" value="Create Project" />
</form> </form>
</body> {% endblock %}
</html>
<!DOCTYPE html> {% extends 'pasapp/base_template.html' %}
<html>
<head> {% block title %} Editing {{project.title}} {% endblock %}
<meta charset="utf-8" /> {% block content %}
<title>Edit Project | PAS</title>
</head>
<body>
<form action="/project/{{project.id}}/edit/" method="post"> <form action="/project/{{project.id}}/edit/" method="post">
{% csrf_token %} {{ form }} {% csrf_token %} {{ form }}
<input type="submit" value="Update Project" /> <input type="submit" value="Update Project" />
</form> </form>
</body> {% endblock %}
</html>
<!DOCTYPE html> {% extends 'pasapp/base_template.html' %}
<html>
<head> {% block title %} Login {% endblock %}
<meta charset="utf-8" /> {% block content %}
<title>Log In | PAS</title>
</head>
<body>
<form action="/login/" method="post"> <form action="/login/" method="post">
{% csrf_token %} {{ form }} {% csrf_token %} {{ form }}
<input type="submit" value="Log In" /> <input type="submit" value="Log In" />
</form> </form>
<form action="/logout/" method="post"> {% endblock %}
{% csrf_token %}
<input type="submit" value="Log out" />
</form>
</body>
</html>
<!DOCTYPE html> {% extends 'pasapp/base_template.html' %}
<html>
<head> {% block title %} {{project.title}} Applications {% endblock %}
<meta charset="utf-8" /> {% block content %}
<title>{{project.title}} | PAS</title>
</head>
<body>
<h1>{{project.title}}</h1> <h1>{{project.title}}</h1>
{% if applications %} {% if applications %}
<ul> <ul>
...@@ -19,5 +16,4 @@ ...@@ -19,5 +16,4 @@
{% else %} {% else %}
<p>No applications for this project have been sent yet.</p> <p>No applications for this project have been sent yet.</p>
{% endif %} {% endif %}
</body> {% endblock %}
</html>
<!DOCTYPE html> {% extends 'pasapp/base_template.html' %}
<html>
<head> {% block title %} {{project.title}} {% endblock %}
<meta charset="utf-8" /> {% block content %}
<title>{{project.title}} | PAS</title>
</head>
<body>
<h1>{{project.title}}</h1> <h1>{{project.title}}</h1>
<h3>{{project.professor}}</h3> <h3>{{project.professor}}</h3>
{% if project.professor.id == user.id %} {% if project.professor.id == user.id %}
...@@ -18,5 +15,4 @@ ...@@ -18,5 +15,4 @@
<input type="submit" value="Apply" /> <input type="submit" value="Apply" />
</form> </form>
<p>(i) {{numApplicants}} students have applied so far.</p> <p>(i) {{numApplicants}} students have applied so far.</p>
</body> {% endblock %}
</html>
<!DOCTYPE html> {% extends 'pasapp/base_template.html' %}
<html>
<head> {% block title %} Projects {% endblock %}
<meta charset="utf-8" /> {% block content %}
<title>Projects | PAS</title>
</head>
<body>
{% if projects %} {% if projects %}
<ul> <ul>
{% for project in projects %} {% for project in projects %}
...@@ -19,5 +16,4 @@ ...@@ -19,5 +16,4 @@
{% else %} {% else %}
<p>No projects are available.</p> <p>No projects are available.</p>
{% endif %} {% endif %}
</body> {% endblock %}
</html>
<!DOCTYPE html> {% extends 'pasapp/base_template.html' %}
<html>
<head> {% block title %} Register {% endblock %}
<meta charset="utf-8" /> {% block content %}
<title>Register | PAS</title>
</head>
<body>
<form action="/register/" method="post"> <form action="/register/" method="post">
{% csrf_token %} {{ form }} {% csrf_token %} {{ form }}
<input type="submit" value="Sign Up" /> <input type="submit" value="Sign Up" />
</form> </form>
</body> {% endblock %}
</html>
from django.contrib.auth.forms import AuthenticationForm
def is_professor(user): def is_professor(user):
return user.groups.filter(name='professor').exists() return user.groups.filter(name='professor').exists()
def is_student(user): def is_student(user):
return user.groups.filter(name='student').exists() return user.groups.filter(name='student').exists()
def contextWithHeader(context, request):
context['user'] = request.user
context['loginForm'] = AuthenticationForm()
return context
from django.contrib.auth import authenticate, login, logout from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required, user_passes_test from django.contrib.auth.decorators import login_required, user_passes_test
from django.contrib.auth.forms import AuthenticationForm from django.contrib.auth.forms import AuthenticationForm
from django.core.checks import messages
from django.http.response import Http404, HttpResponseForbidden, HttpResponseRedirect from django.http.response import Http404, HttpResponseForbidden, HttpResponseRedirect
from django.shortcuts import get_object_or_404, redirect, render from django.shortcuts import get_object_or_404, redirect, render
from django.http import HttpResponse from django.http import HttpResponse
from pasapp.forms import NewProjectForm, NewUserForm from pasapp.forms import NewProjectForm, NewUserForm
from pasapp.models import Application, Project from pasapp.models import Application, Project
from pasapp.utils import is_professor from pasapp.utils import contextWithHeader, is_professor
# Create your views here. # Create your views here.
def index(request): def index(request):
projects = Project.objects.order_by('-title') projects = Project.objects.order_by('-title')
context = {'projects': projects} context = {'projects': projects}
return render(request, 'pasapp/projects.html', context) return render(request, 'pasapp/projects.html', contextWithHeader(context, request))
def project_details(request, project_id): def project_details(request, project_id):
project = get_object_or_404(Project, pk=project_id) project = get_object_or_404(Project, pk=project_id)
numApplicants = Application.objects.filter(project=project_id).count() numApplicants = Application.objects.filter(project=project_id).count()
context = {'user': request.user, 'project': project, context = {'project': project, 'numApplicants': numApplicants}
'numApplicants': numApplicants} return render(request, 'pasapp/project_details.html', contextWithHeader(context, request))
return render(request, 'pasapp/project_details.html', context)
def apply(request, project_id): def apply(request, project_id):
...@@ -42,12 +40,12 @@ def apply(request, project_id): ...@@ -42,12 +40,12 @@ def apply(request, project_id):
@login_required @login_required
def project_applications(request, project_id): def project_applications(request, project_id):
project = get_object_or_404(Project, pk=project_id) project = get_object_or_404(Project, pk=project_id)
if not request.user is project.professor: if not request.user.id == project.professor.id:
return HttpResponseForbidden() return HttpResponseForbidden()
applications = Application.objects.filter( applications = Application.objects.filter(
project=project_id).order_by('-date_sent') project=project_id).order_by('-date_sent')
context = {'project': project, 'applications': applications} context = {'project': project, 'applications': applications}
return render(request, 'pasapp/project_applications.html', context) return render(request, 'pasapp/project_applications.html', contextWithHeader(context, request))
@login_required @login_required
...@@ -67,7 +65,7 @@ def create_project(request): ...@@ -67,7 +65,7 @@ def create_project(request):
else: else:
form = NewProjectForm() form = NewProjectForm()
context = {'form': form} context = {'form': form}
return render(request, 'pasapp/create_project.html', context) return render(request, 'pasapp/create_project.html', contextWithHeader(context, request))
@login_required @login_required
...@@ -91,7 +89,7 @@ def edit_project(request, project_id): ...@@ -91,7 +89,7 @@ def edit_project(request, project_id):
form = NewProjectForm( form = NewProjectForm(
initial={'title': project.title, 'description': project.description}) initial={'title': project.title, 'description': project.description})
context = {'form': form, 'project': project} context = {'form': form, 'project': project}
return render(request, 'pasapp/edit_project.html', context) return render(request, 'pasapp/edit_project.html', contextWithHeader(context, request))
def register(request): def register(request):
...@@ -103,7 +101,8 @@ def register(request): ...@@ -103,7 +101,8 @@ def register(request):
return redirect("index") return redirect("index")
else: else:
form = NewUserForm() form = NewUserForm()
return render(request, 'pasapp/register.html', {'form': form}) context = {'form': form}
return render(request, 'pasapp/register.html', contextWithHeader(context, request))
def login_view(request): def login_view(request):
...@@ -119,7 +118,6 @@ def login_view(request): ...@@ -119,7 +118,6 @@ def login_view(request):
login(request, user) login(request, user)
return redirect('index') return redirect('index')
print(form.non_field_errors()) print(form.non_field_errors())
return HttpResponse("fuck")
else: else:
form = AuthenticationForm() form = AuthenticationForm()
return render(request, 'pasapp/login.html', {'form': form}) return render(request, 'pasapp/login.html', {'form': form})
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment