summaryrefslogtreecommitdiffstats
path: root/qtip
diff options
context:
space:
mode:
authorakhilbatra898 <akhil.batra@research.iiit.ac.in>2017-07-15 09:44:23 +0530
committerakhilbatra898 <akhil.batra@research.iiit.ac.in>2017-07-15 09:57:26 +0530
commit0fd661ea6bae299b69e65f90966304012eb794d2 (patch)
tree73bcd903e77fc656863b5241df39f028f8e528f5 /qtip
parent2e4a3dfc8b45ae6dc72aa85510ce920dbafe54ad (diff)
Add Authentication and Basic CRUD for Repos
- Map urls to the CRUD views - Add html templates for the views - Set authentication settings Change-Id: Ifcfe39a8341d44376e322d195e995fcaa1716d7d Signed-off-by: akhilbatra898 <akhil.batra@research.iiit.ac.in>
Diffstat (limited to 'qtip')
-rw-r--r--qtip/web/bench/migrations/0004_auto_20170715_0325.py20
-rw-r--r--qtip/web/bench/models.py4
-rw-r--r--qtip/web/bench/urls.py21
-rw-r--r--qtip/web/bench/views.py35
-rw-r--r--qtip/web/templates/bench/base.html10
-rw-r--r--qtip/web/templates/bench/repo_form.html15
-rw-r--r--qtip/web/templates/registration/login.html18
-rw-r--r--qtip/web/web/settings.py7
-rw-r--r--qtip/web/web/urls.py3
9 files changed, 131 insertions, 2 deletions
diff --git a/qtip/web/bench/migrations/0004_auto_20170715_0325.py b/qtip/web/bench/migrations/0004_auto_20170715_0325.py
new file mode 100644
index 00000000..74296cce
--- /dev/null
+++ b/qtip/web/bench/migrations/0004_auto_20170715_0325.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.3 on 2017-07-15 03:25
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('bench', '0003_auto_20170713_0225'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='repo',
+ name='name',
+ field=models.CharField(max_length=200),
+ ),
+ ]
diff --git a/qtip/web/bench/models.py b/qtip/web/bench/models.py
index 0594dbd9..863af739 100644
--- a/qtip/web/bench/models.py
+++ b/qtip/web/bench/models.py
@@ -11,6 +11,7 @@
from __future__ import unicode_literals
from django.db import models
+from django.urls import reverse
# Create your models here.
@@ -19,6 +20,9 @@ class Repo(models.Model):
name = models.CharField(max_length=200, blank=False)
github_link = models.URLField(unique=True)
+ def get_absolute_url(self):
+ return reverse('repo_update', args=[self.pk])
+
class Task(models.Model):
start_time = models.DateTimeField(auto_now_add=True)
diff --git a/qtip/web/bench/urls.py b/qtip/web/bench/urls.py
new file mode 100644
index 00000000..3af4eb83
--- /dev/null
+++ b/qtip/web/bench/urls.py
@@ -0,0 +1,21 @@
+##############################################################################
+# Copyright (c) 2017 akhil.batra@research.iiit.ac.in and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.conf.urls import include, url
+
+import views
+
+urlpatterns = [
+ url('^', include('django.contrib.auth.urls')),
+ url('^repos/$', views.ReposView.as_view(), name='repos'),
+ url('^repos/(?P<pk>\d+)$', views.RepoUpdate.as_view(), name='repo_update'),
+]
diff --git a/qtip/web/bench/views.py b/qtip/web/bench/views.py
index da5c56c3..786b67d5 100644
--- a/qtip/web/bench/views.py
+++ b/qtip/web/bench/views.py
@@ -1,6 +1,41 @@
+##############################################################################
+# Copyright (c) 2017 akhil.batra@research.iiit.ac.in and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
+from django.contrib.auth.mixins import LoginRequiredMixin
+# from django.utils.decorators import method_decorator
+from django.views.generic.edit import CreateView, UpdateView
+
+import models
+
# from django.shortcuts import render
# Create your views here.
+
+
+class ReposView(LoginRequiredMixin, CreateView):
+ model = models.Repo
+ fields = '__all__'
+
+ def get_context_data(self, **kwargs):
+ context = super(ReposView, self).get_context_data(**kwargs)
+ context["repos"] = self.model.objects.all()
+ return context
+
+
+class RepoUpdate(LoginRequiredMixin, UpdateView):
+ model = models.Repo
+ fields = '__all__'
+
+ def get_context_data(self, **kwargs):
+ context = super(RepoUpdate, self).get_context_data(**kwargs)
+ context["repos"] = self.model.objects.all()
+ return context
diff --git a/qtip/web/templates/bench/base.html b/qtip/web/templates/bench/base.html
new file mode 100644
index 00000000..f0d3610e
--- /dev/null
+++ b/qtip/web/templates/bench/base.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <title>QTIP Benchmarking Services</title>
+ </head>
+ <body>
+ {% block content %}
+ {% endblock %}
+ </body>
+</html> \ No newline at end of file
diff --git a/qtip/web/templates/bench/repo_form.html b/qtip/web/templates/bench/repo_form.html
new file mode 100644
index 00000000..109436a9
--- /dev/null
+++ b/qtip/web/templates/bench/repo_form.html
@@ -0,0 +1,15 @@
+{% extends 'bench/base.html' %}
+{% block content %}
+ <div>
+ <h3>Repos</h3>
+ {% for repo in repos %}
+ <li>{{ repo.name }}</li>
+ {% endfor %}
+ </div>
+ <form role="form" method="post" action="">{% csrf_token %}
+ {{ form }}
+ <div class=input-field" style="margin:30px 20px">
+ <button type="submit" value="Login"/>Submit</button>
+ </div>
+ </form>
+{% endblock %}
diff --git a/qtip/web/templates/registration/login.html b/qtip/web/templates/registration/login.html
new file mode 100644
index 00000000..53da9376
--- /dev/null
+++ b/qtip/web/templates/registration/login.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <title>QTIP Benchmarking Services</title>
+ </head>
+ <body>
+ {% block content %}
+ <form role="form" method="post" action= "/bench/login/">{% csrf_token %}
+ {{ form }}
+ <div class=input-field" style="margin:30px 20px">
+ <button type="submit" value="Login"/>Login</button>
+ <input type="hidden" name="next" value = "{{ next }}"/>
+ </div>
+ </form>
+ {% endblock %}
+ </body>
+</html> \ No newline at end of file
diff --git a/qtip/web/web/settings.py b/qtip/web/web/settings.py
index 30bb6e38..8963ea89 100644
--- a/qtip/web/web/settings.py
+++ b/qtip/web/web/settings.py
@@ -55,7 +55,7 @@ ROOT_URLCONF = 'web.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
- 'DIRS': [],
+ 'DIRS': ['templates'],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
@@ -119,3 +119,8 @@ USE_TZ = True
# https://docs.djangoproject.com/en/1.11/howto/static-files/
STATIC_URL = '/static/'
+
+# Auth Settings
+LOGIN_URL = '/bench/login/'
+LOGIN_REDIRECT_URL = '/bench/dashboard/'
+LOGOUT_REDIRECT_URL = LOGIN_URL
diff --git a/qtip/web/web/urls.py b/qtip/web/web/urls.py
index b0de5fe2..49aaeb98 100644
--- a/qtip/web/web/urls.py
+++ b/qtip/web/web/urls.py
@@ -13,9 +13,10 @@ Including another URLconf
1. Import the include() function: from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
"""
-from django.conf.urls import url
+from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
+ url(r'^bench/', include('bench.urls')),
url(r'^admin/', admin.site.urls),
]