Commit 0c9e8511 authored by AMAN MORESHWAR JANGDE's avatar AMAN MORESHWAR JANGDE

Init

parents
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[dev-packages]
[packages]
[requires]
python_version = "3.6"
"""
Django settings for coursebook project.
Generated by 'django-admin startproject' using Django 2.2.6.
For more information on this file, see
https://docs.djangoproject.com/en/2.2/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.2/ref/settings/
"""
import os
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'bwc8r%hu%tb9ft+gs6xj73b86rhb&we11w^(e-rv!*d(aogs*)'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = [
'*',
]
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'discussion',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'coursebook.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'coursebook.wsgi.application'
# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases
# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
# }
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'djangodb',
'USER':'root',
'PASSWORD':'mysql',
'HOST':'localhost',
'PORT':'3306'
}
}
# Password validation
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
# Internationalization
# https://docs.djangoproject.com/en/2.2/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/
STATIC_URL = '/static/'
\ No newline at end of file
"""coursebook URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/2.2/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
# from django.contrib import admin
# from django.urls import path
# urlpatterns = [
# path('admin/', admin.site.urls),
# ]
from django.contrib import admin
from django.urls import path
from discussion import views
urlpatterns = [
path('admin/', admin.site.urls),
path('emp', views.emp),
path('show',views.show),
path('edit/<int:id>', views.edit),
path('update/<int:id>', views.update),
path('delete/<int:id>', views.destroy),
path('', views.default),
path('subjects/<int:id>', views.show_subjects),
path('topics/<int:id>', views.show_topics),
path('threads/<int:id>', views.show_threads),
# path('add_thread/<int:id>', views.add_message),
]
handler404 = views.handler404
handler500 = views.handler500
"""
WSGI config for coursebook project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/2.2/howto/deployment/wsgi/
"""
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'coursebook.settings')
application = get_wsgi_application()
from django.contrib import admin
# Register your models here.
from discussion.models import Employee, Person, Subject, Topic, Thread, Like, Subject_Student
admin.site.register(Subject)
admin.site.register(Employee)
admin.site.register(Person)
admin.site.register(Topic)
admin.site.register(Thread)
admin.site.register(Like)
admin.site.register(Subject_Student)
from django.apps import AppConfig
class DiscussionConfig(AppConfig):
name = 'discussion'
from django import forms
from discussion.models import Employee , Thread, Topic
class EmployeeForm(forms.ModelForm):
class Meta:
model = Employee
fields = "__all__"
class ThreadForm(forms.ModelForm):
msg = forms.CharField(widget=forms.Textarea(attrs={'class' : 'form-control send-message','rows':'3', 'placeholder':'Comment...'}))
title = forms.CharField(widget=forms.TextInput(attrs={'class' : 'form-control send-message', 'placeholder':'Title...'}))
class Meta:
model = Thread
# fields = "__all__"
exclude = ("person","topic","likes","dislikes")
class TopicForm(forms.ModelForm):
title = forms.CharField(widget=forms.TextInput(attrs={'class' : 'form-control send-message', 'placeholder':'Title...'}))
class Meta:
model = Topic
fields = "__all__"
exclude = ("subject",)
\ No newline at end of file
# Generated by Django 2.0.3 on 2019-11-02 18:12
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Employee',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('eid', models.CharField(max_length=20)),
('ename', models.CharField(max_length=100)),
('eemail', models.EmailField(max_length=254)),
('econtact', models.CharField(max_length=15)),
],
options={
'db_table': 'employee',
},
),
migrations.CreateModel(
name='Like',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('is_liked', models.BooleanField(default=True)),
],
options={
'db_table': 'like',
},
),
migrations.CreateModel(
name='Person',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('pid', models.CharField(max_length=20)),
('fname', models.CharField(max_length=20)),
('lname', models.CharField(max_length=20)),
('is_prof', models.BooleanField(default=False)),
],
options={
'db_table': 'person',
},
),
migrations.CreateModel(
name='Subject',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('sub_code', models.CharField(max_length=5)),
('sub_name', models.CharField(max_length=100)),
('sub_detail', models.CharField(max_length=500)),
('prof', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='discussion.Person')),
],
options={
'db_table': 'subject',
},
),
migrations.CreateModel(
name='Subject_Student',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='discussion.Person')),
('subject', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='discussion.Subject')),
],
options={
'db_table': 'subject_student',
},
),
migrations.CreateModel(
name='Thread',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=50)),
('msg', models.CharField(max_length=500)),
('likes', models.IntegerField(default=0)),
('dislikes', models.IntegerField(default=0)),
('time', models.DateTimeField(auto_now_add=True)),
('person', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='discussion.Person')),
],
options={
'db_table': 'thread',
},
),
migrations.CreateModel(
name='Topic',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=100)),
('is_prof_included', models.BooleanField(default=True)),
('subject', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='discussion.Subject')),
],
options={
'db_table': 'topic',
},
),
migrations.AddField(
model_name='thread',
name='topic',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='discussion.Topic'),
),
migrations.AddField(
model_name='like',
name='person',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='discussion.Person'),
),
migrations.AddField(
model_name='like',
name='thread',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='discussion.Thread'),
),
]
from django.db import models
class Employee(models.Model):
eid = models.CharField(max_length=20)
ename = models.CharField(max_length=100)
eemail = models.EmailField()
econtact = models.CharField(max_length=15)
class Meta:
db_table = "employee"
class Person(models.Model):
pid = models.CharField(max_length=20)
fname = models.CharField(max_length=20)
lname = models.CharField(max_length=20)
is_prof = models.BooleanField(default=False)
def __str__(self):
return "%s %s" % (self.fname, self.lname)
class Meta:
db_table = "person"
class Subject(models.Model):
sub_code = models.CharField(max_length=5)
sub_name = models.CharField(max_length=100)
sub_detail = models.CharField(max_length=500)
prof = models.ForeignKey(Person, on_delete=models.CASCADE)
def __str__(self):
return self.sub_code
class Meta:
db_table = "subject"
class Subject_Student(models.Model):
subject = models.ForeignKey(Subject, on_delete=models.CASCADE)
student = models.ForeignKey(Person, on_delete=models.CASCADE)
class Meta:
db_table = "subject_student"
class Topic(models.Model):
title = models.CharField(max_length=100)
subject = models.ForeignKey(Subject, on_delete=models.CASCADE)
is_prof_included = models.BooleanField(default=True)
def __str__(self):
return "%s %s %d" % (self.title, self.subject.sub_name, self.id)
class Meta:
db_table = "topic"
class Thread(models.Model):
title = models.CharField(max_length=50)
msg = models.CharField(max_length=500)
topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
person = models.ForeignKey(Person, on_delete=models.CASCADE)
likes = models.IntegerField(default=0)
dislikes = models.IntegerField(default=0)
time = models.DateTimeField(auto_now_add=True, blank=True)
def __str__(self):
return "%s %s" % (self.title, self.topic.title)
class Meta:
db_table = "thread"
class Like(models.Model):
thread = models.ForeignKey(Thread, on_delete=models.CASCADE)
person = models.ForeignKey(Person, on_delete=models.CASCADE)
is_liked = models.BooleanField(default=True)
def __str__(self):
return self.tid
class Meta:
db_table = "like"
\ No newline at end of file
body::-webkit-scrollbar {
width: 12px;
}
/* Let's get this party started */
::-webkit-scrollbar {
width: 6px;
}
/* Track */
::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
/* -webkit-border-radius: 10px;
border-radius: 10px;*/
}
/* Handle */
::-webkit-scrollbar-thumb {
/* -webkit-border-radius: 10px;
border-radius: 10px;*/
background:#ddd;
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.5);
}
::-webkit-scrollbar-thumb:window-inactive {
background: #ddd;
}
\ No newline at end of file
.message-wrap
{
box-shadow: 0 0 3px #ddd;
padding:0;
}
body::-webkit-scrollbar {
width: 12px;
}
/* Let's get this party started */
::-webkit-scrollbar {
width: 6px;
}
/* Track */
::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
/* -webkit-border-radius: 10px;
border-radius: 10px;*/
}
/* Handle */
::-webkit-scrollbar-thumb {
/* -webkit-border-radius: 10px;
border-radius: 10px;*/
background:#ddd;
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.5);
}
::-webkit-scrollbar-thumb:window-inactive {
background: #ddd;
}
\ No newline at end of file
.conversation-wrap
{
box-shadow: -2px 0 3px #ddd;
padding:0;
max-height: 400px;
overflow: auto;
}
.conversation
{
padding:5px;
border-bottom:1px solid #ddd;
margin:0;
}
.message-wrap
{
box-shadow: 0 0 3px #ddd;
padding:0;
}
.msg
{
padding:20px;
border:1px solid #ddd;
margin:0;
}
.msg-wrap
{
padding:10px;
max-height: 400px;
overflow: auto;
}
.time
{
color:#bfbfbf;
font-size: 10px;
}
.send-wrap
{
border-top: 1px solid #eee;
border-bottom: 1px solid #eee;
padding:10px;
/*background: #f8f8f8;*/
}
.send-message
{
resize: none;
}
.highlight
{
background-color: #f7f7f9;
border: 1px solid #e1e1e8;
}
.send-message-btn
{
border-top-left-radius: 0;
border-top-right-radius: 0;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
.btn-panel
{
background: #f7f7f9;
}
.btn-panel .btn
{
color:#b8b8b8;
transition: 0.2s all ease-in-out;
}
.btn-panel .btn:hover
{
color:#666;
background: #f8f8f8;
}
.btn-panel .btn:active
{
background: #f8f8f8;
box-shadow: 0 0 1px #ddd;
}
.btn-panel-conversation .btn,.btn-panel-msg .btn
{
background: #f8f8f8;
}
.btn-panel-conversation .btn:first-child
{
border-right: 1px solid #ddd;
}
.msg-wrap .media-heading
{
color:#003bb3;
font-weight: 700;
}
.msg-owner
{
color:#003bb3;
font-weight: 600;
font-size: 12px;
}
.msg-date
{
background: none;
text-align: center;
color:#aaa;
border:none;
box-shadow: none;
border-bottom: 1px solid #ddd;
}
.msg-footer-link
{
font-size: 10px;
margin-top: 10px;
margin-left: 15px;
}
body::-webkit-scrollbar {
width: 12px;
}
/* Let's get this party started */
::-webkit-scrollbar {
width: 6px;
}
/* Track */
::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
/* -webkit-border-radius: 10px;
border-radius: 10px;*/
}
/* Handle */
::-webkit-scrollbar-thumb {
/* -webkit-border-radius: 10px;
border-radius: 10px;*/
background:#ddd;
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.5);
}
::-webkit-scrollbar-thumb:window-inactive {
background: #ddd;
}
.message-wrap
{
box-shadow: 0 0 3px #ddd;
padding:0;
}
.list-view
{
padding: 2px;
}
.time
{
position: absolute;
font-size: 11px;
color: grey;
right: 5%;
bottom: 11%;
}
.topic-body
{
padding-right: 64px;
}
.add-new-topic
{
font-weight: bold;
color: blue;
}
body::-webkit-scrollbar {
width: 12px;
}
/* Let's get this party started */
::-webkit-scrollbar {
width: 6px;
}
/* Track */
::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
/* -webkit-border-radius: 10px;
border-radius: 10px;*/
}
/* Handle */
::-webkit-scrollbar-thumb {
/* -webkit-border-radius: 10px;
border-radius: 10px;*/
background:#ddd;
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.5);
}
::-webkit-scrollbar-thumb:window-inactive {
background: #ddd;
}
.message-wrap
{
box-shadow: 0 0 3px #ddd;
padding:0;
}
.msg
{
padding:20px;
border:1px solid #ddd;
margin:0;
position: relative;
padding-right: 13%;
}
.highlight
{
background-color: #f7f7f9;
border: 1px solid #e1e1e8;
}
.btn-panel
{
background: #f7f7f9;
}
.btn-panel .btn
{
color:#b8b8b8;
transition: 0.2s all ease-in-out;
}
.btn-panel .btn:hover
{
color:#666;
background: #f8f8f8;
}
.btn-panel .btn:active
{
background: #f8f8f8;
box-shadow: 0 0 1px #ddd;
}
.btn-panel-conversation .btn,.btn-panel-msg .btn
{
background: #f8f8f8;
}
.btn-panel-conversation .btn:first-child
{
border-right: 1px solid #ddd;
}
.media-heading
{
color:#003bb3;
font-weight: 700;
}
.msg-footer-link
{
font-size: 10px;
margin-top: 10px;
margin-left: 15px;
}
.request-btn
{
position: absolute;
right: 2%;
bottom: 40%;
}
body::-webkit-scrollbar {
width: 12px;
}
/* Let's get this party started */
::-webkit-scrollbar {
width: 6px;
}
/* Track */
::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
/* -webkit-border-radius: 10px;
border-radius: 10px;*/
}
/* Handle */
::-webkit-scrollbar-thumb {
/* -webkit-border-radius: 10px;
border-radius: 10px;*/
background:#ddd;
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.5);
}
::-webkit-scrollbar-thumb:window-inactive {
background: #ddd;
}
body {font:12px/1.4 Verdana,Arial; background:#eee; height:100%; margin:25px 0; padding:0}
h1 {font:24px Georgia,Verdana; margin:0}
h2 {font-size:12px; font-weight:normal; font-style:italic; margin:0 0 20px}
p {margin-top:0}
ul {margin:0; padding-left:20px}
#testdiv {width:600px; margin:0 auto; border:1px solid #ccc; padding:20px 25px; background:#fff}
#tinybox {position:absolute; display:none; padding:10px; background:#fff url(images/preload.gif) no-repeat 50% 50%; border:10px solid #e3e3e3; z-index:2000}
#tinymask {position:absolute; display:none; top:0; left:0; height:100%; width:100%; background:#000; z-index:1500}
#tinycontent {background:#fff}
.button {font:14px Georgia,Verdana; margin-bottom:10px; padding:8px 10px 9px; border:1px solid #ccc; background:#eee; cursor:pointer}
.button:hover {border:1px solid #bbb; background:#e3e3e3}
\ No newline at end of file
ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #888666;
}
li a {
display: block;
color: white;
text-align: left;
padding: 16px;
text-decoration: none;
}
tr:hover {
background-color: #111111;
}
\ No newline at end of file
<<!DOCTYPE html>
<html>
<body>
<h1>My First Heading</h1>
<p>My first paragraph.</p>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<h1>My First Heading</h1>
<p>My first paragraph.</p>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
{% load static %}
<link rel="stylesheet" href="{% static 'css/base.css' %}">
{% block style-discussion-thread %}{% endblock %}
{% block style-discussion-topics %}{% endblock %}
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=yes">
<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
<script src="https://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body style="height:1500px">
{% block nav %}
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="/">Coursebook</a>
</div>
<ul class="nav navbar-nav">
<li class="active">{% block nav-home %}<a href="/">Home</a>{% endblock %}</li>
<li>{% block nav-subjects %}<a href="/subjects/{{pid}}">My Subjects</a>{% endblock %}</li>
<li>{% block nav-search-subjects %}<a href="/subjects/">Search Subjects</a>{% endblock %}</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="#"><span class="glyphicon glyphicon-user"></span> Sign Up</a></li>
<li><a href="#"><span class="glyphicon glyphicon-log-in"></span> Login</a></li>
</ul>
</div>
</nav>
{% endblock %}
{% block body%}{% endblock %}
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="create_subject.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
<!------ Include the above in your HEAD tag ---------->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">WebSiteName</a>
</div>
<ul class="nav navbar-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Page 1</a></li>
<li><a href="#">Page 2</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="#"><span class="glyphicon glyphicon-user"></span> Sign Up</a></li>
<li><a href="#"><span class="glyphicon glyphicon-log-in"></span> Login</a></li>
</ul>
</div>
</nav>
<div class="container message-wrap" style="margin-top:60px">
<form class="form-horizontal" action="/action_page.php" style="margin-top:20px">
<div class="form-group">
<label class="control-label col-sm-2" for="course_code">Course Code:</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="course_code" placeholder="Enter course code">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="course_name">Course Name:</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="course_name" placeholder="Enter course name">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="course_details">Course Details:</label>
<div class="col-sm-10">
<textarea class="form-control" rows="5" id="course_details"></textarea>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default">Submit</button>
</div>
</div>
</form>
</div>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="navbar.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
</head>
<body style="height:1500px">
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">WebSiteName</a>
</div>
<ul class="nav navbar-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Page 1</a></li>
<li><a href="#">Page 2</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="#"><span class="glyphicon glyphicon-user"></span> Sign Up</a></li>
<li><a href="#"><span class="glyphicon glyphicon-log-in"></span> Login</a></li>
</ul>
</div>
</nav>
</body>
</html>
{% extends "base.html" %}
{% load static %}
{% block style-discussion-thread %}<link rel="stylesheet" href="{% static 'css/discussion_thread.css' %}">{% endblock %}
{% block nav-subjects %}<a href="/subjects/101">My Subjects</a>{% endblock %}
{% block body%}
<div class="container" style="margin-top:50px">
<div class="row">
<!-- <div class="col-sm-2">
</div> -->
<div class=" col-sm-12">
<div class="btn-panel btn-panel-conversation">
<a href="" class="btn col-sm-3 send-message-btn pull-left" role="button"><i class="fa fa-search"></i> Search</a>
</div>
<div class="btn-panel btn-panel-msg">
<a href="" class="btn col-sm-3 send-message-btn pull-right" role="button"><i class="fa fa-gears"></i> Settings</a>
</div>
</div>
</div>
<div class="row">
<div class="message-wrap col-sm-12">
<div class="msg-wrap">
{% for thread in threads %}
<div class="media msg card bg-success text-white">
<!-- <a class="pull-left" href="#">
<img class="media-object" data-src="holder.js/64x64" alt="64x64" style="width: 32px; height: 32px;" src="">
</a> -->
<div class="media-body card-body">
<h4 class="media-heading">{{thread.title}}</h4>
<div><span class="msg-owner"> - {{thread.person.fname}}</span>
<span class="time"><i class="fa fa-clock-o"></i> {{thread.time}}</span></div>
<small class="col-lg-10">{{thread.msg}}</small>
</div>
<div class="msg-footer-link col-sm-6 col-lg-4">
<a><div class="col-sm-4 col-lg-4 fa fa-comment"><span> </span>Reply <span>999</span></div></a>
<!-- <div class="col-sm-1">|</div> -->
<a><div class="col-sm-4 col-lg-4 fa fa-thumbs-up"><span> </span>Agree <span>{{thread.likes}}</span></div></a>
<!-- <div class="col-sm-1">|</div> -->
<a><div class="col-sm-4 col-lg-4 fa fa-thumbs-down"><span> </span>Disagree <span>{{thread.dislikes}}</span></div></a>
</div>
</div>
{% endfor %}
</div>
<div class="send-wrap ">
<form method="POST" class="post-form" action="/threads/{{topic_id}}">
{% csrf_token %}
<div>
{{form.title}}
</div>
<div>
{{form.msg}}
</div>
</div>
<div class="">
<button type="submit" class=" col-sm-4 btn send-message-btn" role="button"><i class="fa fa-plus"></i> Send Message</a>
</div>
</div>
</div>
{% endblock %}
{% extends "base.html" %}
{% load static %}
{% block style-discussion-topics %}<link rel="stylesheet" href="{% static 'css/discussion_topics.css' %}">{% endblock %}
{% block nav-subjects %}<a href="/subjects/101">My Subjects</a>{% endblock %}
{% block body%}
<div class="container message-wrap " style="margin-top:50px">
<p>
<h3>
Topics in Subject
</h3>
</p>
<div class="list-view">
<div class="list-group">
{% for topic in topics %}
<a href="/threads/{{topic.id}}" class="list-group-item">
<!-- <div class="time">
<div ><i class="fa fa-calendar"></i> Saturday</div>
<div >12/12/19</div>
<div ><i class="fa fa-clock-o"></i> 12.10pm</div>
</div> -->
<div class="topic-body">
<h4 class="list-group-item-heading">{{topic.title}}</h4>
<!-- <p class="list-group-item-text">List Group Item Text List Group Item Text List Group Item Text List Group Item Text</p> -->
</div>
</a>
{% endfor %}
<!-- <a href="#" class="list-group-item">
<div class="time">
<div ><i class="fa fa-calendar"></i> Saturday</div>
<div >12/12/19</div>
<div ><i class="fa fa-clock-o"></i> 12.10pm</div>
</div>
<div class="topic-body">
<h4 class="list-group-item-heading">First List Group Item Heading</h4>
<p class="list-group-item-text">List Group Item Text List Group Item Text List Group Item Text List Group Item Text</p>
</div>
</a>
<a href="#" class="list-group-item">
<div class="time">
<div ><i class="fa fa-calendar"></i> Saturday</div>
<div >12/12/19</div>
<div ><i class="fa fa-clock-o"></i> 12.10pm</div>
</div>
<div class="topic-body">
<h4 class="list-group-item-heading">First List Group Item Heading</h4>
<p class="list-group-item-text">List Group Item Text List Group Item Text List Group Item Text List Group Item Text</p>
</div>
</a>
<a href="#" class="list-group-item">
<div class="time">
<div ><i class="fa fa-calendar"></i> Saturday</div>
<div >12/12/19</div>
<div ><i class="fa fa-clock-o"></i> 12.10pm</div>
</div>
<div class="topic-body">
<h4 class="list-group-item-heading">First List Group Item Heading</h4>
<p class="list-group-item-text">List Group Item Text List Group Item Text List Group Item Text List Group Item Text</p>
</div>
</a> -->
<div class="send-wrap ">
<form method="POST" class="post-form" action="/topics/{{sub_code}}">
{% csrf_token %}
<br>
<p class="add-new-topic">Add New Topic</p>
<div>
{{form.title}}
</div>
<div>
<span>Include Prof {{form.is_prof_included}}</span>
</div>
</div>
<div>
<button type="submit" class=" col-sm-4 btn send-message-btn" role="button"><i class="fa fa-plus"></i> Add Topic</a>
</div>
</div>
</div>
</div>
{% endblock %}
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
{% load static %}
<link rel="stylesheet" href="{% static 'css/request_subject.css' %}">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
<!------ Include the above in your HEAD tag ---------->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">WebSiteName</a>
</div>
<ul class="nav navbar-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Page 1</a></li>
<li><a href="#">Page 2</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="#"><span class="glyphicon glyphicon-user"></span> Sign Up</a></li>
<li><a href="#"><span class="glyphicon glyphicon-log-in"></span> Login</a></li>
</ul>
</div>
</nav>
<div class="container" style="margin-top:50px">
<div class="row">
<!-- <div class="col-sm-2">
</div> -->
<div class=" col-sm-12">
<div class="btn-panel btn-panel-conversation">
<a href="" class="btn col-sm-3 send-message-btn pull-left" role="button"><i class="fa fa-search"></i> Search</a>
</div>
<div class="btn-panel btn-panel-msg">
<a href="" class="btn col-sm-3 send-message-btn pull-right" role="button"><i class="fa fa-gears"></i> Settings</a>
</div>
</div>
</div>
<div class="row">
<!-- <div class="conversation-wrap col-lg-3">
</div> -->
<div class="message-wrap col-sm-12">
<div class="">
<div class="media msg card bg-success">
<div class="media-body card-body">
<div class="request-btn"><div class="btn-sm btn btn-primary"> Request</div></div>
<h5 class="media-heading">Naimish Sakhpara</h5>
<small>Location H-2, Ayojan Nagar, Near Gate-3, Near
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Email aapamdavad.district@gmail.com</small>
</div>
</div>
<div class="media msg card bg-success">
<div class="media-body card-body">
<div class="request-btn"><div class="btn-sm btn btn-primary"> Request</div></div>
<h5 class="media-heading">Naimish Sakhpara</h5>
<small>Location H-2, Ayojan Nagar, Near Gate-3, Near
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Email aapamdavad.district@gmail.com</small>
</div>
</div>
<div class="media msg card bg-success">
<div class="media-body card-body">
<div class="request-btn"><div class="btn-sm btn btn-primary"> Request</div></div>
<h5 class="media-heading">Naimish Sakhpara</h5>
<small>Location H-2, Ayojan Nagar, Near Gate-3, Near
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Email aapamdavad.district@gmail.com</small>
</div>
</div>
<div class="media msg card bg-success">
<div class="media-body card-body">
<div class="request-btn"><div class="btn-sm btn btn-primary"> Request</div></div>
<h5 class="media-heading">Naimish Sakhpara</h5>
<small>Location H-2, Ayojan Nagar, Near Gate-3, Near
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Email aapamdavad.district@gmail.com</small>
</div>
</div>
<div class="media msg card bg-success">
<div class="media-body card-body">
<div class="request-btn"><div class="btn-sm btn btn-primary"> Request</div></div>
<h5 class="media-heading">Naimish Sakhpara</h5>
<small>Location H-2, Ayojan Nagar, Near Gate-3, Near
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Email aapamdavad.district@gmail.com</small>
</div>
</div>
<!-- <div class="alert alert-info msg-date">
<strong>Today</strong>
</div> -->
<div class="media msg card bg-success">
<div class="media-body card-body">
<div class="request-btn"><div class="btn-sm btn btn-danger"> Cancel Request</div></div>
<h5 class="media-heading">Naimish Sakhpara</h5>
<small>Location H-2, Ayojan Nagar, Near Gate-3, Near
Shreyas Crossing Dharnidhar Derasar,
Paldi, Ahmedabad 380007, Ahmedabad,
India
Phone 091 37 669307
Email aapamdavad.district@gmail.com</small>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
\ No newline at end of file
{% extends "base.html" %}
{% block nav-subjects %}<a href="/subjects/101">My Subjects</a>{% endblock %}
{% block body%}
<div class="container" style="margin-top:50px">
<h2>My Courses</h2>
<ul>
<table style="width:100%">
<thead>
<tr>
<th>Course ID</th>
<th>Course Name</th>
<!-- <th>Professor</th> -->
</tr>
</thead>
<tbody>
{% for sub_stu in subject_student %}
<tr>
<td><a href="/topics/{{ sub_stu.subject.sub_code }}">{{ sub_stu.subject.sub_code }} </a></td>
<td>{{ sub_stu.subject.sub_name }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</ul>
</div>
{% endblock %}
from django.test import TestCase
# Create your tests here.
from django.shortcuts import render, redirect
from discussion.forms import EmployeeForm , ThreadForm, TopicForm
from discussion.models import Employee, Subject_Student, Person, Subject, Topic, Thread
# Create your views here.
def emp(request):
if request.method == "POST":
form = EmployeeForm(request.POST)
if form.is_valid():
try:
form.save()
return redirect('/show')
except:
pass
else:
form = EmployeeForm()
return render(request,'index.html',{'form':form})
def show(request):
employees = Employee.objects.all()
return render(request,"show.html",{'employees':employees})
def edit(request, id):
employee = Employee.objects.get(id=id)
return render(request,'edit.html', {'employee':employee})
def update(request, id):
employee = Employee.objects.get(id=id)
form = EmployeeForm(request.POST, instance = employee)
if form.is_valid():
form.save()
return redirect("/show")
return render(request, 'edit.html', {'employee': employee})
def destroy(request, id):
employee = Employee.objects.get(id=id)
employee.delete()
return redirect("/show")
def handler404(request):
return render(request, '404.html', status=404)
def handler500(request):
return render(request, '500.html', status=500)
def default(request):
return render(request, 'base.html' ,{'pid':101})
def show_subjects(request, id):
try:
person = Person.objects.get(pid=id)
except:
return redirect('/')
subject_student = Subject_Student.objects.filter(student = person)
return render(request,"subjects.html",{'subject_student':subject_student})
def show_topics(request, id):
try:
subject = Subject.objects.get(sub_code=id)
except:
return redirect('/')
topics = Topic.objects.filter(subject = subject)
if request.method == "POST":
form = TopicForm(request.POST)
if form.is_valid():
try:
topic = form.save(commit=False)
topic.subject = subject
form.save()
return redirect('/topics/' + str(id))
except:
pass
else:
form = TopicForm()
return render(request,'discussion_topics.html',{'form':form, 'sub_code':id, 'topics':topics})
def show_threads(request, id):
try:
topic = Topic.objects.get(id=id)
except:
return redirect('/')
threads = Thread.objects.filter(topic = topic)
if request.method == "POST":
person = Person.objects.get(pid=101)
form = ThreadForm(request.POST)
if form.is_valid():
try:
thread = form.save(commit=False)
thread.topic = topic
thread.person = person
form.save()
return redirect('/threads/' + str(id))
except:
pass
else:
form = ThreadForm()
return render(request,'discussion_thread.html',{'form':form, 'topic_id':id, 'threads':threads})
\ No newline at end of file
File added
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys
def main():
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'coursebook.settings')
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
if __name__ == '__main__':
main()
#!/bin/bash
# exec ./manage.py makemigrations && exec ./manage.py migrate && exec ./manage.py runserver 0.0.0.0:8000
python3 manage.py makemigrations
python3 manage.py migrate --fake-initial
python3 manage.py runserver 0.0.0.0:8000
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment