From 0fd661ea6bae299b69e65f90966304012eb794d2 Mon Sep 17 00:00:00 2001 From: akhilbatra898 Date: Sat, 15 Jul 2017 09:44:23 +0530 Subject: 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 --- .../bench/migrations/0004_auto_20170715_0325.py | 20 +++++++++++++ qtip/web/bench/models.py | 4 +++ qtip/web/bench/urls.py | 21 +++++++++++++ qtip/web/bench/views.py | 35 ++++++++++++++++++++++ qtip/web/templates/bench/base.html | 10 +++++++ qtip/web/templates/bench/repo_form.html | 15 ++++++++++ qtip/web/templates/registration/login.html | 18 +++++++++++ qtip/web/web/settings.py | 7 ++++- qtip/web/web/urls.py | 3 +- 9 files changed, 131 insertions(+), 2 deletions(-) create mode 100644 qtip/web/bench/migrations/0004_auto_20170715_0325.py create mode 100644 qtip/web/bench/urls.py create mode 100644 qtip/web/templates/bench/base.html create mode 100644 qtip/web/templates/bench/repo_form.html create mode 100644 qtip/web/templates/registration/login.html (limited to 'qtip') 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\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 @@ + + + + QTIP Benchmarking Services + + + {% block content %} + {% endblock %} + + \ 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 %} +
+

Repos

+ {% for repo in repos %} +
  • {{ repo.name }}
  • + {% endfor %} +
    +
    {% csrf_token %} + {{ 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 @@ + + + + + QTIP Benchmarking Services + + + {% block content %} +
    {% csrf_token %} + {{ form }} +
    + + +
    +
    + {% endblock %} + + \ 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), ] -- cgit 1.2.3-korg