first commit
This commit is contained in:
commit
5aedf06de3
22
manage.py
Normal file
22
manage.py
Normal file
@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env python
|
||||
"""Django's command-line utility for administrative tasks."""
|
||||
import os
|
||||
import sys
|
||||
|
||||
|
||||
def main():
|
||||
"""Run administrative tasks."""
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'misdghs.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
media/attendance_files/2025/01/26/Attendance.pdf
Normal file
BIN
media/attendance_files/2025/01/26/Attendance.pdf
Normal file
Binary file not shown.
BIN
media/resolution_files/2025/01/26/Resulation.pdf
Normal file
BIN
media/resolution_files/2025/01/26/Resulation.pdf
Normal file
Binary file not shown.
0
misdghs/__init__.py
Normal file
0
misdghs/__init__.py
Normal file
BIN
misdghs/__pycache__/__init__.cpython-311.pyc
Normal file
BIN
misdghs/__pycache__/__init__.cpython-311.pyc
Normal file
Binary file not shown.
BIN
misdghs/__pycache__/settings.cpython-311.pyc
Normal file
BIN
misdghs/__pycache__/settings.cpython-311.pyc
Normal file
Binary file not shown.
BIN
misdghs/__pycache__/urls.cpython-311.pyc
Normal file
BIN
misdghs/__pycache__/urls.cpython-311.pyc
Normal file
Binary file not shown.
BIN
misdghs/__pycache__/wsgi.cpython-311.pyc
Normal file
BIN
misdghs/__pycache__/wsgi.cpython-311.pyc
Normal file
Binary file not shown.
16
misdghs/asgi.py
Normal file
16
misdghs/asgi.py
Normal file
@ -0,0 +1,16 @@
|
||||
"""
|
||||
ASGI config for misdghs project.
|
||||
|
||||
It exposes the ASGI callable as a module-level variable named ``application``.
|
||||
|
||||
For more information on this file, see
|
||||
https://docs.djangoproject.com/en/5.1/howto/deployment/asgi/
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
from django.core.asgi import get_asgi_application
|
||||
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'misdghs.settings')
|
||||
|
||||
application = get_asgi_application()
|
141
misdghs/settings.py
Normal file
141
misdghs/settings.py
Normal file
@ -0,0 +1,141 @@
|
||||
"""
|
||||
Django settings for misdghs project.
|
||||
|
||||
Generated by 'django-admin startproject' using Django 5.1.5.
|
||||
|
||||
For more information on this file, see
|
||||
https://docs.djangoproject.com/en/5.1/topics/settings/
|
||||
|
||||
For the full list of settings and their values, see
|
||||
https://docs.djangoproject.com/en/5.1/ref/settings/
|
||||
"""
|
||||
|
||||
from pathlib import Path
|
||||
import os
|
||||
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||
|
||||
|
||||
# Quick-start development settings - unsuitable for production
|
||||
# See https://docs.djangoproject.com/en/5.1/howto/deployment/checklist/
|
||||
|
||||
# SECURITY WARNING: keep the secret key used in production secret!
|
||||
SECRET_KEY = 'django-insecure-t%o4!$(z&7*ft5zradmq(aqr^a8_p)5fn=okyvr76!n1de81oh'
|
||||
|
||||
# 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',
|
||||
'resulation',
|
||||
]
|
||||
|
||||
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 = 'misdghs.urls'
|
||||
|
||||
TEMPLATES = [
|
||||
{
|
||||
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||
'DIRS': ['templates'],
|
||||
'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 = 'misdghs.wsgi.application'
|
||||
|
||||
|
||||
# Database
|
||||
# https://docs.djangoproject.com/en/5.1/ref/settings/#databases
|
||||
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.mysql',
|
||||
'NAME':'resulation',
|
||||
'HOST':'127.0.0.1',
|
||||
'PORT': '3306',
|
||||
'USER':'root',
|
||||
'PASSWORD':'root',
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Password validation
|
||||
# https://docs.djangoproject.com/en/5.1/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/5.1/topics/i18n/
|
||||
|
||||
LANGUAGE_CODE = 'en-us'
|
||||
|
||||
TIME_ZONE = 'UTC'
|
||||
|
||||
USE_I18N = True
|
||||
|
||||
USE_TZ = True
|
||||
|
||||
|
||||
# Static files (CSS, JavaScript, Images)
|
||||
# https://docs.djangoproject.com/en/5.1/howto/static-files/
|
||||
|
||||
STATIC_URL = '/static/'
|
||||
STATICFILES_DIRS = [
|
||||
os.path.join(BASE_DIR, 'static'),
|
||||
]
|
||||
|
||||
STATICFILES_DIRS = [
|
||||
BASE_DIR / "media",
|
||||
]
|
||||
|
||||
MEDIA_ROOT=BASE_DIR/'media'
|
||||
MEDIA_URL="/media/"
|
||||
STATIC_ROOT=BASE_DIR/'static'
|
||||
|
||||
|
||||
|
||||
# Default primary key field type
|
||||
# https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field
|
||||
|
||||
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
23
misdghs/urls.py
Normal file
23
misdghs/urls.py
Normal file
@ -0,0 +1,23 @@
|
||||
"""
|
||||
URL configuration for misdghs project.
|
||||
|
||||
The `urlpatterns` list routes URLs to views. For more information please see:
|
||||
https://docs.djangoproject.com/en/5.1/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, include
|
||||
import resulation
|
||||
urlpatterns = [
|
||||
path('admin/', admin.site.urls),
|
||||
path('rcm/', include('resulation.urls')),
|
||||
]
|
16
misdghs/wsgi.py
Normal file
16
misdghs/wsgi.py
Normal file
@ -0,0 +1,16 @@
|
||||
"""
|
||||
WSGI config for misdghs 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/5.1/howto/deployment/wsgi/
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
from django.core.wsgi import get_wsgi_application
|
||||
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'misdghs.settings')
|
||||
|
||||
application = get_wsgi_application()
|
0
resulation/__init__.py
Normal file
0
resulation/__init__.py
Normal file
BIN
resulation/__pycache__/__init__.cpython-311.pyc
Normal file
BIN
resulation/__pycache__/__init__.cpython-311.pyc
Normal file
Binary file not shown.
BIN
resulation/__pycache__/admin.cpython-311.pyc
Normal file
BIN
resulation/__pycache__/admin.cpython-311.pyc
Normal file
Binary file not shown.
BIN
resulation/__pycache__/apps.cpython-311.pyc
Normal file
BIN
resulation/__pycache__/apps.cpython-311.pyc
Normal file
Binary file not shown.
BIN
resulation/__pycache__/models.cpython-311.pyc
Normal file
BIN
resulation/__pycache__/models.cpython-311.pyc
Normal file
Binary file not shown.
BIN
resulation/__pycache__/urls.cpython-311.pyc
Normal file
BIN
resulation/__pycache__/urls.cpython-311.pyc
Normal file
Binary file not shown.
BIN
resulation/__pycache__/views.cpython-311.pyc
Normal file
BIN
resulation/__pycache__/views.cpython-311.pyc
Normal file
Binary file not shown.
3
resulation/admin.py
Normal file
3
resulation/admin.py
Normal file
@ -0,0 +1,3 @@
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
6
resulation/apps.py
Normal file
6
resulation/apps.py
Normal file
@ -0,0 +1,6 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class ResulationConfig(AppConfig):
|
||||
default_auto_field = 'django.db.models.BigAutoField'
|
||||
name = 'resulation'
|
35
resulation/migrations/0001_initial.py
Normal file
35
resulation/migrations/0001_initial.py
Normal file
@ -0,0 +1,35 @@
|
||||
# Generated by Django 5.1.5 on 2025-01-22 09:16
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='savepdf',
|
||||
fields=[
|
||||
('eid', models.AutoField(primary_key=True, serialize=False)),
|
||||
('pdftype', models.CharField(max_length=250)),
|
||||
('org_unit', models.CharField(max_length=250)),
|
||||
('topic', models.CharField(max_length=250)),
|
||||
('tittle', models.CharField(max_length=250)),
|
||||
('m_number', models.CharField(max_length=50)),
|
||||
('m_date', models.DateField()),
|
||||
('m_venue', models.CharField(max_length=250)),
|
||||
('minutes_file', models.FileField(upload_to='media/')),
|
||||
('first_party', models.CharField(max_length=250)),
|
||||
('second_party', models.CharField(max_length=250)),
|
||||
('contract_mou_date', models.DateField()),
|
||||
('closing_date', models.DateField()),
|
||||
('duration', models.CharField(max_length=250)),
|
||||
('attendance_file', models.FileField(upload_to='media/')),
|
||||
('res_con_mou_file', models.FileField(upload_to='media/')),
|
||||
],
|
||||
),
|
||||
]
|
@ -0,0 +1,42 @@
|
||||
# Generated by Django 5.1.5 on 2025-01-22 09:36
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('resulation', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='savepdf',
|
||||
name='minutes_file',
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='savepdf',
|
||||
name='closing_date',
|
||||
field=models.DateField(blank=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='savepdf',
|
||||
name='contract_mou_date',
|
||||
field=models.DateField(blank=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='savepdf',
|
||||
name='duration',
|
||||
field=models.CharField(blank=True, max_length=250),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='savepdf',
|
||||
name='first_party',
|
||||
field=models.CharField(blank=True, max_length=250),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='savepdf',
|
||||
name='second_party',
|
||||
field=models.CharField(blank=True, max_length=250),
|
||||
),
|
||||
]
|
@ -0,0 +1,23 @@
|
||||
# Generated by Django 5.1.5 on 2025-01-22 09:38
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('resulation', '0002_remove_savepdf_minutes_file_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='savepdf',
|
||||
name='m_date',
|
||||
field=models.DateField(blank=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='savepdf',
|
||||
name='m_number',
|
||||
field=models.CharField(blank=True, max_length=50),
|
||||
),
|
||||
]
|
@ -0,0 +1,62 @@
|
||||
# Generated by Django 5.1.5 on 2025-01-22 09:58
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('resulation', '0003_alter_savepdf_m_date_alter_savepdf_m_number'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='savepdf',
|
||||
options={'verbose_name': 'PDF Document', 'verbose_name_plural': 'PDF Documents'},
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='savepdf',
|
||||
name='attendance_file',
|
||||
field=models.FileField(upload_to='media/attendance_files/%Y/%m/%d/'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='savepdf',
|
||||
name='closing_date',
|
||||
field=models.DateField(blank=True, null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='savepdf',
|
||||
name='contract_mou_date',
|
||||
field=models.DateField(blank=True, null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='savepdf',
|
||||
name='duration',
|
||||
field=models.CharField(blank=True, max_length=250, null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='savepdf',
|
||||
name='first_party',
|
||||
field=models.CharField(blank=True, max_length=250, null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='savepdf',
|
||||
name='m_date',
|
||||
field=models.DateField(blank=True, null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='savepdf',
|
||||
name='m_number',
|
||||
field=models.CharField(blank=True, max_length=50, null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='savepdf',
|
||||
name='res_con_mou_file',
|
||||
field=models.FileField(upload_to='media/resolution_files/%Y/%m/%d/'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='savepdf',
|
||||
name='second_party',
|
||||
field=models.CharField(blank=True, max_length=250, null=True),
|
||||
),
|
||||
]
|
@ -0,0 +1,23 @@
|
||||
# Generated by Django 5.1.5 on 2025-01-22 11:58
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('resulation', '0004_alter_savepdf_options_alter_savepdf_attendance_file_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='savepdf',
|
||||
name='attendance_file',
|
||||
field=models.FileField(upload_to='attendance_files/%Y/%m/%d/'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='savepdf',
|
||||
name='res_con_mou_file',
|
||||
field=models.FileField(upload_to='resolution_files/%Y/%m/%d/'),
|
||||
),
|
||||
]
|
17
resulation/migrations/0006_rename_savepdf_resulation.py
Normal file
17
resulation/migrations/0006_rename_savepdf_resulation.py
Normal file
@ -0,0 +1,17 @@
|
||||
# Generated by Django 5.1.5 on 2025-01-26 04:20
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('resulation', '0005_alter_savepdf_attendance_file_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameModel(
|
||||
old_name='savepdf',
|
||||
new_name='resulation',
|
||||
),
|
||||
]
|
0
resulation/migrations/__init__.py
Normal file
0
resulation/migrations/__init__.py
Normal file
BIN
resulation/migrations/__pycache__/0001_initial.cpython-311.pyc
Normal file
BIN
resulation/migrations/__pycache__/0001_initial.cpython-311.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
resulation/migrations/__pycache__/__init__.cpython-311.pyc
Normal file
BIN
resulation/migrations/__pycache__/__init__.cpython-311.pyc
Normal file
Binary file not shown.
30
resulation/models.py
Normal file
30
resulation/models.py
Normal file
@ -0,0 +1,30 @@
|
||||
from django.db import models
|
||||
|
||||
# Create your models here.
|
||||
class resulation(models.Model):
|
||||
eid = models.AutoField(primary_key=True)
|
||||
pdftype = models.CharField(max_length=250)
|
||||
org_unit = models.CharField(max_length=250)
|
||||
topic = models.CharField(max_length=250)
|
||||
tittle = models.CharField(max_length=250) # Note: "tittle" might be a typo of "title"
|
||||
m_number = models.CharField(max_length=50, blank=True, null=True)
|
||||
m_date = models.DateField(blank=True, null=True)
|
||||
m_venue = models.CharField(max_length=250)
|
||||
first_party = models.CharField(max_length=250, blank=True, null=True)
|
||||
second_party = models.CharField(max_length=250, blank=True, null=True)
|
||||
contract_mou_date = models.DateField(blank=True, null=True)
|
||||
closing_date = models.DateField(blank=True, null=True)
|
||||
duration = models.CharField(max_length=250, blank=True, null=True)
|
||||
res_con_mou_file = models.FileField(upload_to="resolution_files/%Y/%m/%d/")
|
||||
attendance_file = models.FileField(upload_to="attendance_files/%Y/%m/%d/")
|
||||
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.pdftype} - {self.tittle}"
|
||||
|
||||
class Meta:
|
||||
verbose_name = "PDF Document"
|
||||
verbose_name_plural = "PDF Documents"
|
||||
|
||||
|
||||
|
314
resulation/static/SimpleBlog.css
Normal file
314
resulation/static/SimpleBlog.css
Normal file
@ -0,0 +1,314 @@
|
||||
/********************************************
|
||||
AUTHOR: Erwin Aligam
|
||||
WEBSITE: http://www.styleshout.com/
|
||||
TEMPLATE NAME: SimpleBlog 1.0
|
||||
TEMPLATE CODE: S-0007
|
||||
VERSION: 1.0
|
||||
*******************************************/
|
||||
|
||||
/********************************************
|
||||
HTML ELEMENTS
|
||||
********************************************/
|
||||
|
||||
/* Top Elements */
|
||||
* { margin: 0; padding: 0; }
|
||||
|
||||
body {
|
||||
background: #FFF;
|
||||
font: normal 70%/1.5em Verdana, Tahoma, Verdana, sans-serif;
|
||||
color: #333;
|
||||
text-align: center;
|
||||
}
|
||||
/* links */
|
||||
a {
|
||||
background: inherit;
|
||||
text-decoration: none;
|
||||
color: #667F99;
|
||||
}
|
||||
a:hover {
|
||||
background: inherit;
|
||||
color: #996800;
|
||||
}
|
||||
/* headers */
|
||||
h1, h2, h3 {
|
||||
font-family: Verdana, Tahoma, 'Trebuchet MS', Sans-serif;
|
||||
font-weight: Bold;
|
||||
}
|
||||
h1 { font-size: 120%; }
|
||||
h2 { font-size: 110%; text-transform: uppercase; }
|
||||
h3 { font-size: 110%; color: #007E80; }
|
||||
|
||||
h1, h2, h3, p {
|
||||
margin: 0;
|
||||
padding: 10px;
|
||||
}
|
||||
ul, ol {
|
||||
margin: 10px 20px;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
/* images */
|
||||
img {
|
||||
border: 2px solid #CCC;
|
||||
}
|
||||
img.float-right {
|
||||
margin: 5px 0px 5px 10px;
|
||||
}
|
||||
img.float-left {
|
||||
margin: 5px 10px 5px 0px;
|
||||
}
|
||||
|
||||
code {
|
||||
margin: 5px 0;
|
||||
padding: 10px;
|
||||
text-align: left;
|
||||
display: block;
|
||||
overflow: auto;
|
||||
font: 500 1em/1.5em 'Lucida Console', 'courier new', monospace ;
|
||||
/* white-space: pre; */
|
||||
background: #FAFAFA;
|
||||
border: 1px solid #f2f2f2;
|
||||
}
|
||||
acronym {
|
||||
cursor: help;
|
||||
border-bottom: 1px solid #777;
|
||||
}
|
||||
|
||||
/* blockquote */
|
||||
blockquote {
|
||||
margin: 10px;
|
||||
padding: 0 0 0 28px;
|
||||
border: 1px solid #f2f2f2;
|
||||
background: #FAFAFA url(quote.gif) no-repeat 5px 5px;
|
||||
}
|
||||
|
||||
/* form elements */
|
||||
form {
|
||||
margin:10px; padding: 0 5px;
|
||||
border: 1px solid #f2f2f2;
|
||||
background-color: #FAFAFA;
|
||||
}
|
||||
label {
|
||||
display:block;
|
||||
font-weight:bold;
|
||||
margin:5px 0;
|
||||
}
|
||||
input {
|
||||
padding:2px;
|
||||
border:1px solid #eee;
|
||||
font: normal 1em Verdana, sans-serif;
|
||||
color:#777;
|
||||
}
|
||||
textarea {
|
||||
width:400px;
|
||||
padding:2px;
|
||||
font: normal 1em Verdana, sans-serif;
|
||||
border:1px solid #eee;
|
||||
height:100px;
|
||||
display:block;
|
||||
color:#777;
|
||||
}
|
||||
input.button {
|
||||
margin: 0;
|
||||
font: bolder 12px Arial, Sans-serif;
|
||||
border: 1px solid #CCC;
|
||||
padding: 2px 3px;
|
||||
background: #FFF;
|
||||
color: #275F6C;
|
||||
}
|
||||
/* search form */
|
||||
form.search {
|
||||
padding: 0; margin: 0;
|
||||
vertical-align: bottom;
|
||||
border: none;
|
||||
background-color: transparent;
|
||||
}
|
||||
form.search input.textbox {
|
||||
margin: 0; padding: 1px;
|
||||
width: 120px;
|
||||
border: 1px solid #CCC;
|
||||
background: #FFF;
|
||||
color: #333;
|
||||
}
|
||||
form.search input.button {
|
||||
height: 20px;
|
||||
padding: 1px 3px;
|
||||
width: 60px;
|
||||
}
|
||||
|
||||
/********************************************
|
||||
LAYOUT
|
||||
********************************************/
|
||||
#wrap {
|
||||
width: 833px;
|
||||
background: url(bg.jpg) repeat-y center top;
|
||||
margin: 0 auto;
|
||||
text-align: left;
|
||||
}
|
||||
#content-wrap {
|
||||
position: relative;
|
||||
width: 91%;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
}
|
||||
/* header */
|
||||
#header {
|
||||
position: relative;
|
||||
width: 833px;
|
||||
height: 100px;
|
||||
background: #FFF url(header.jpg) no-repeat center top;
|
||||
margin: 0; padding: 0;
|
||||
font-size: 14px;
|
||||
color: #FFF;
|
||||
}
|
||||
#header h1#logo {
|
||||
position: absolute;
|
||||
margin: 0; padding: 0;
|
||||
font: bold 42px 'Trebuchet MS', Arial, Sans-serif;
|
||||
letter-spacing: -2px;
|
||||
color: #FFF;
|
||||
text-transform: none;
|
||||
|
||||
/* change the values of top and Left to adjust the position of the logo*/
|
||||
top: 19px; left: 53px;
|
||||
}
|
||||
#header h2#slogan {
|
||||
position: absolute;
|
||||
z-index: 9999999;
|
||||
margin: 0; padding: 0;
|
||||
font: bold 12px 'Trebuchet MS', Arial, Sans-serif;
|
||||
text-transform: none;
|
||||
color: #FFF;
|
||||
|
||||
/* change the values of top and Left to adjust the position of the slogan*/
|
||||
top: 65px; left:75px;
|
||||
}
|
||||
#header #searchform {
|
||||
float: right;
|
||||
padding: 45px 40px 0 0;
|
||||
display: inline;
|
||||
}
|
||||
/* menu */
|
||||
#menu {
|
||||
clear: both;
|
||||
width: 833px;
|
||||
height: 26px;
|
||||
background: #FFF url(menubg.jpg) repeat-y;
|
||||
margin: 0;
|
||||
font: bolder 12px/26px Tahoma, Verdana, Arial, Sans-Serif;
|
||||
}
|
||||
#menu ul{
|
||||
margin: 0; padding: 0 0 0 35px;
|
||||
}
|
||||
#menu ul li {
|
||||
float: left;
|
||||
list-style: none;
|
||||
}
|
||||
#menu ul li a {
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
padding: 0 10px;
|
||||
background: inherit;
|
||||
color: #FFF;
|
||||
}
|
||||
#menu ul li a:hover {
|
||||
background: #FFF;
|
||||
color: #333;
|
||||
}
|
||||
#menu ul li#current a {
|
||||
background: #30899F;
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
/* Main */
|
||||
#main {
|
||||
float: left;
|
||||
width: 72%;
|
||||
padding: 0; margin: 0;
|
||||
}
|
||||
#main h1 {
|
||||
color: #667F99;
|
||||
border-bottom: 1px solid #CCCCCC;
|
||||
background: #F6F6F6 url(arrow.gif) no-repeat 5px 50%;
|
||||
padding: 3px 0 3px 20px;
|
||||
margin: 10px 0 0 0;
|
||||
}
|
||||
|
||||
.post-footer {
|
||||
background-color: #FAFAFA;
|
||||
padding: 5px; margin: 20px 10px 0 10px;
|
||||
border: 1px solid #f2f2f2;
|
||||
font-size: 95%;
|
||||
}
|
||||
.post-footer .date {
|
||||
background: url(clock.gif) no-repeat left center;
|
||||
padding-left: 20px; margin: 0 10px 0 5px;
|
||||
}
|
||||
.post-footer .comments {
|
||||
background: url(comment.gif) no-repeat left center;
|
||||
padding-left: 20px; margin: 0 10px 0 5px;
|
||||
}
|
||||
.post-footer .readmore {
|
||||
background: url(page.gif) no-repeat left center;
|
||||
padding-left: 20px; margin: 0 10px 0 5px;
|
||||
}
|
||||
|
||||
/* sidebar */
|
||||
#sidebar {
|
||||
float: right;
|
||||
width: 26%;
|
||||
padding: 0; margin: 0;
|
||||
}
|
||||
#sidebar h1 {
|
||||
margin: 10px 0 0 0;
|
||||
padding: 3px 10px;
|
||||
font: bold 120% Tahoma, Verdana, Sans-Serif;
|
||||
color: #FFF;
|
||||
background: #B6B8BB;
|
||||
}
|
||||
#sidebar ul.sidemenu {
|
||||
list-style: none;
|
||||
text-align: left;
|
||||
margin: 3px 0px 8px 0; padding: 0;
|
||||
text-decoration: none;
|
||||
}
|
||||
#sidebar ul.sidemenu li {
|
||||
border-bottom: 1px solid #EFF0F1;
|
||||
background: url(bullet.gif) no-repeat 2px 3px ;
|
||||
padding: 2px 0 2px 25px;
|
||||
margin: 0 2px;
|
||||
}
|
||||
|
||||
* html body #sidebar ul.sidemenu li { height: 1%; }
|
||||
|
||||
#sidebar ul.sidemenu a {
|
||||
font-weight: bold;
|
||||
padding: 2px 0;
|
||||
background: none;
|
||||
}
|
||||
|
||||
/* footer */
|
||||
#footer {
|
||||
clear: both;
|
||||
color: #66737B;
|
||||
font: normal 90% Verdana, Tahoma, sans-serif;
|
||||
background: #FFF url(footerbg.jpg) no-repeat center top;
|
||||
width: 833px;
|
||||
height: 60px;
|
||||
text-align: center;
|
||||
padding: 8px 0 0 0;
|
||||
margin: 0 auto;
|
||||
}
|
||||
#footer a { text-decoration: none; }
|
||||
|
||||
/* alignment classes */
|
||||
.float-left { float: left; }
|
||||
.float-right { float: right; }
|
||||
.align-left { text-align: left; }
|
||||
.align-right { text-align: right; }
|
||||
|
||||
/* additional classes */
|
||||
.clear { clear: both; }
|
||||
.gray { color: #CCC; }
|
||||
|
||||
|
314
resulation/static/css/SimpleBlog.css
Normal file
314
resulation/static/css/SimpleBlog.css
Normal file
@ -0,0 +1,314 @@
|
||||
/********************************************
|
||||
AUTHOR: Erwin Aligam
|
||||
WEBSITE: http://www.styleshout.com/
|
||||
TEMPLATE NAME: SimpleBlog 1.0
|
||||
TEMPLATE CODE: S-0007
|
||||
VERSION: 1.0
|
||||
*******************************************/
|
||||
|
||||
/********************************************
|
||||
HTML ELEMENTS
|
||||
********************************************/
|
||||
|
||||
/* Top Elements */
|
||||
* { margin: 0; padding: 0; }
|
||||
|
||||
body {
|
||||
background: #FFF;
|
||||
font: normal 70%/1.5em Verdana, Tahoma, Verdana, sans-serif;
|
||||
color: #333;
|
||||
text-align: center;
|
||||
}
|
||||
/* links */
|
||||
a {
|
||||
background: inherit;
|
||||
text-decoration: none;
|
||||
color: #667F99;
|
||||
}
|
||||
a:hover {
|
||||
background: inherit;
|
||||
color: #996800;
|
||||
}
|
||||
/* headers */
|
||||
h1, h2, h3 {
|
||||
font-family: Verdana, Tahoma, 'Trebuchet MS', Sans-serif;
|
||||
font-weight: Bold;
|
||||
}
|
||||
h1 { font-size: 120%; }
|
||||
h2 { font-size: 110%; text-transform: uppercase; }
|
||||
h3 { font-size: 110%; color: #007E80; }
|
||||
|
||||
h1, h2, h3, p {
|
||||
margin: 0;
|
||||
padding: 10px;
|
||||
}
|
||||
ul, ol {
|
||||
margin: 10px 20px;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
/* images */
|
||||
img {
|
||||
border: 2px solid #CCC;
|
||||
}
|
||||
img.float-right {
|
||||
margin: 5px 0px 5px 10px;
|
||||
}
|
||||
img.float-left {
|
||||
margin: 5px 10px 5px 0px;
|
||||
}
|
||||
|
||||
code {
|
||||
margin: 5px 0;
|
||||
padding: 10px;
|
||||
text-align: left;
|
||||
display: block;
|
||||
overflow: auto;
|
||||
font: 500 1em/1.5em 'Lucida Console', 'courier new', monospace ;
|
||||
/* white-space: pre; */
|
||||
background: #FAFAFA;
|
||||
border: 1px solid #f2f2f2;
|
||||
}
|
||||
acronym {
|
||||
cursor: help;
|
||||
border-bottom: 1px solid #777;
|
||||
}
|
||||
|
||||
/* blockquote */
|
||||
blockquote {
|
||||
margin: 10px;
|
||||
padding: 0 0 0 28px;
|
||||
border: 1px solid #f2f2f2;
|
||||
background: #FAFAFA url(quote.gif) no-repeat 5px 5px;
|
||||
}
|
||||
|
||||
/* form elements */
|
||||
form {
|
||||
margin:10px; padding: 0 5px;
|
||||
border: 1px solid #f2f2f2;
|
||||
background-color: #FAFAFA;
|
||||
}
|
||||
label {
|
||||
display:block;
|
||||
font-weight:bold;
|
||||
margin:5px 0;
|
||||
}
|
||||
input {
|
||||
padding:2px;
|
||||
border:1px solid #eee;
|
||||
font: normal 1em Verdana, sans-serif;
|
||||
color:#777;
|
||||
}
|
||||
textarea {
|
||||
width:400px;
|
||||
padding:2px;
|
||||
font: normal 1em Verdana, sans-serif;
|
||||
border:1px solid #eee;
|
||||
height:100px;
|
||||
display:block;
|
||||
color:#777;
|
||||
}
|
||||
input.button {
|
||||
margin: 0;
|
||||
font: bolder 12px Arial, Sans-serif;
|
||||
border: 1px solid #CCC;
|
||||
padding: 2px 3px;
|
||||
background: #FFF;
|
||||
color: #275F6C;
|
||||
}
|
||||
/* search form */
|
||||
form.search {
|
||||
padding: 0; margin: 0;
|
||||
vertical-align: bottom;
|
||||
border: none;
|
||||
background-color: transparent;
|
||||
}
|
||||
form.search input.textbox {
|
||||
margin: 0; padding: 1px;
|
||||
width: 120px;
|
||||
border: 1px solid #CCC;
|
||||
background: #FFF;
|
||||
color: #333;
|
||||
}
|
||||
form.search input.button {
|
||||
height: 20px;
|
||||
padding: 1px 3px;
|
||||
width: 60px;
|
||||
}
|
||||
|
||||
/********************************************
|
||||
LAYOUT
|
||||
********************************************/
|
||||
#wrap {
|
||||
width: 833px;
|
||||
background: url(bg.jpg) repeat-y center top;
|
||||
margin: 0 auto;
|
||||
text-align: left;
|
||||
}
|
||||
#content-wrap {
|
||||
position: relative;
|
||||
width: 91%;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
}
|
||||
/* header */
|
||||
#header {
|
||||
position: relative;
|
||||
width: 833px;
|
||||
height: 100px;
|
||||
background: #FFF url(header.jpg) no-repeat center top;
|
||||
margin: 0; padding: 0;
|
||||
font-size: 14px;
|
||||
color: #FFF;
|
||||
}
|
||||
#header h1#logo {
|
||||
position: absolute;
|
||||
margin: 0; padding: 0;
|
||||
font: bold 42px 'Trebuchet MS', Arial, Sans-serif;
|
||||
letter-spacing: -2px;
|
||||
color: #FFF;
|
||||
text-transform: none;
|
||||
|
||||
/* change the values of top and Left to adjust the position of the logo*/
|
||||
top: 19px; left: 53px;
|
||||
}
|
||||
#header h2#slogan {
|
||||
position: absolute;
|
||||
z-index: 9999999;
|
||||
margin: 0; padding: 0;
|
||||
font: bold 12px 'Trebuchet MS', Arial, Sans-serif;
|
||||
text-transform: none;
|
||||
color: #FFF;
|
||||
|
||||
/* change the values of top and Left to adjust the position of the slogan*/
|
||||
top: 65px; left:75px;
|
||||
}
|
||||
#header #searchform {
|
||||
float: right;
|
||||
padding: 45px 40px 0 0;
|
||||
display: inline;
|
||||
}
|
||||
/* menu */
|
||||
#menu {
|
||||
clear: both;
|
||||
width: 833px;
|
||||
height: 26px;
|
||||
background: #FFF url(menubg.jpg) repeat-y;
|
||||
margin: 0;
|
||||
font: bolder 12px/26px Tahoma, Verdana, Arial, Sans-Serif;
|
||||
}
|
||||
#menu ul{
|
||||
margin: 0; padding: 0 0 0 35px;
|
||||
}
|
||||
#menu ul li {
|
||||
float: left;
|
||||
list-style: none;
|
||||
}
|
||||
#menu ul li a {
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
padding: 0 10px;
|
||||
background: inherit;
|
||||
color: #FFF;
|
||||
}
|
||||
#menu ul li a:hover {
|
||||
background: #FFF;
|
||||
color: #333;
|
||||
}
|
||||
#menu ul li#current a {
|
||||
background: #30899F;
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
/* Main */
|
||||
#main {
|
||||
float: left;
|
||||
width: 72%;
|
||||
padding: 0; margin: 0;
|
||||
}
|
||||
#main h1 {
|
||||
color: #667F99;
|
||||
border-bottom: 1px solid #CCCCCC;
|
||||
background: #F6F6F6 url(arrow.gif) no-repeat 5px 50%;
|
||||
padding: 3px 0 3px 20px;
|
||||
margin: 10px 0 0 0;
|
||||
}
|
||||
|
||||
.post-footer {
|
||||
background-color: #FAFAFA;
|
||||
padding: 5px; margin: 20px 10px 0 10px;
|
||||
border: 1px solid #f2f2f2;
|
||||
font-size: 95%;
|
||||
}
|
||||
.post-footer .date {
|
||||
background: url(clock.gif) no-repeat left center;
|
||||
padding-left: 20px; margin: 0 10px 0 5px;
|
||||
}
|
||||
.post-footer .comments {
|
||||
background: url(comment.gif) no-repeat left center;
|
||||
padding-left: 20px; margin: 0 10px 0 5px;
|
||||
}
|
||||
.post-footer .readmore {
|
||||
background: url(page.gif) no-repeat left center;
|
||||
padding-left: 20px; margin: 0 10px 0 5px;
|
||||
}
|
||||
|
||||
/* sidebar */
|
||||
#sidebar {
|
||||
float: right;
|
||||
width: 26%;
|
||||
padding: 0; margin: 0;
|
||||
}
|
||||
#sidebar h1 {
|
||||
margin: 10px 0 0 0;
|
||||
padding: 3px 10px;
|
||||
font: bold 120% Tahoma, Verdana, Sans-Serif;
|
||||
color: #FFF;
|
||||
background: #B6B8BB;
|
||||
}
|
||||
#sidebar ul.sidemenu {
|
||||
list-style: none;
|
||||
text-align: left;
|
||||
margin: 3px 0px 8px 0; padding: 0;
|
||||
text-decoration: none;
|
||||
}
|
||||
#sidebar ul.sidemenu li {
|
||||
border-bottom: 1px solid #EFF0F1;
|
||||
background: url(bullet.gif) no-repeat 2px 3px ;
|
||||
padding: 2px 0 2px 25px;
|
||||
margin: 0 2px;
|
||||
}
|
||||
|
||||
* html body #sidebar ul.sidemenu li { height: 1%; }
|
||||
|
||||
#sidebar ul.sidemenu a {
|
||||
font-weight: bold;
|
||||
padding: 2px 0;
|
||||
background: none;
|
||||
}
|
||||
|
||||
/* footer */
|
||||
#footer {
|
||||
clear: both;
|
||||
color: #66737B;
|
||||
font: normal 90% Verdana, Tahoma, sans-serif;
|
||||
background: #FFF url(footerbg.jpg) no-repeat center top;
|
||||
width: 833px;
|
||||
height: 60px;
|
||||
text-align: center;
|
||||
padding: 8px 0 0 0;
|
||||
margin: 0 auto;
|
||||
}
|
||||
#footer a { text-decoration: none; }
|
||||
|
||||
/* alignment classes */
|
||||
.float-left { float: left; }
|
||||
.float-right { float: right; }
|
||||
.align-left { text-align: left; }
|
||||
.align-right { text-align: right; }
|
||||
|
||||
/* additional classes */
|
||||
.clear { clear: both; }
|
||||
.gray { color: #CCC; }
|
||||
|
||||
|
56
resulation/static/css/header.css
Normal file
56
resulation/static/css/header.css
Normal file
@ -0,0 +1,56 @@
|
||||
<style>
|
||||
* {box-sizing: border-box;}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
.header {
|
||||
overflow: hidden;
|
||||
background-color: #f1f1f1;
|
||||
padding: 20px 10px;
|
||||
}
|
||||
|
||||
.header a {
|
||||
float: left;
|
||||
color: black;
|
||||
text-align: center;
|
||||
padding: 12px;
|
||||
text-decoration: none;
|
||||
font-size: 18px;
|
||||
line-height: 25px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.header a.logo {
|
||||
font-size: 25px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.header a:hover {
|
||||
background-color: #ddd;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.header a.active {
|
||||
background-color: dodgerblue;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.header-right {
|
||||
float: right;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 500px) {
|
||||
.header a {
|
||||
float: none;
|
||||
display: block;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.header-right {
|
||||
float: none;
|
||||
}
|
||||
}
|
||||
</style>
|
BIN
resulation/static/images/icon.png.png
Normal file
BIN
resulation/static/images/icon.png.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 123 KiB |
3
resulation/tests.py
Normal file
3
resulation/tests.py
Normal file
@ -0,0 +1,3 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
18
resulation/urls.py
Normal file
18
resulation/urls.py
Normal file
@ -0,0 +1,18 @@
|
||||
from django.conf import settings
|
||||
from django.conf.urls.static import static
|
||||
from django.contrib import admin
|
||||
from django.urls import path, include
|
||||
import resulation.views
|
||||
from misdghs import settings
|
||||
|
||||
urlpatterns = [
|
||||
path('', resulation.views.Home, name='home'),
|
||||
path('resulation/', resulation.views.Savepdf, name='resulation'),
|
||||
path('deed/', resulation.views.Contract, name='deed'),
|
||||
path('mou/', resulation.views.Mou, name='mou'),
|
||||
path('viewresulation/', resulation.views.Viewresulation, name='viewresulation'),
|
||||
]
|
||||
|
||||
if settings.DEBUG:
|
||||
urlpatterns+=static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
|
||||
urlpatterns+=static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
56
resulation/views.py
Normal file
56
resulation/views.py
Normal file
@ -0,0 +1,56 @@
|
||||
from django.shortcuts import render, HttpResponse
|
||||
from .models import resulation
|
||||
|
||||
# Create your views here.
|
||||
def Home(request):
|
||||
return render(request,'resulation/home.html')
|
||||
|
||||
def Savepdf(request): # Changed function name to follow Python naming conventions
|
||||
message = ''
|
||||
if request.method == "POST":
|
||||
try:
|
||||
# Get form data
|
||||
org_unit = request.POST.get('org_unit')
|
||||
topic = request.POST.get('topic')
|
||||
tittle = request.POST.get('tittle')
|
||||
m_number = request.POST.get('m_number')
|
||||
m_date = request.POST.get('m_date')
|
||||
m_venue = request.POST.get('m_venue')
|
||||
|
||||
# For file uploads, use request.FILES, not request.POST
|
||||
attendance_file = request.FILES.get('attendance_file')
|
||||
res_con_mou_file = request.FILES.get('res_con_mou_file')
|
||||
|
||||
# Create and save model instance
|
||||
mydata = resulation(
|
||||
org_unit=org_unit,
|
||||
topic=topic,
|
||||
tittle=tittle,
|
||||
m_number=m_number,
|
||||
m_date=m_date,
|
||||
m_venue=m_venue,
|
||||
attendance_file=attendance_file,
|
||||
res_con_mou_file=res_con_mou_file
|
||||
)
|
||||
mydata.save()
|
||||
message = "Data Inserted successfully"
|
||||
|
||||
# Redirect after successful save
|
||||
return render(request, "resulation/home.html", {'message': message})
|
||||
|
||||
except Exception as e:
|
||||
message = f"Error: {str(e)}"
|
||||
return render(request, 'resulation/resulation.html', {'message': message})
|
||||
else:
|
||||
return render(request, 'resulation/resulation.html')
|
||||
|
||||
def Viewresulation(request):
|
||||
# Get all records from database
|
||||
pdf_records = resulation.objects.all().order_by('-m_date') # Latest first
|
||||
return render(request, 'resulation/viewresulation.html', {'pdf_records': pdf_records})
|
||||
|
||||
def Contract(request):
|
||||
return render(request,'resulation/contract.html')
|
||||
|
||||
def Mou(request):
|
||||
return render(request,'resulation/mou.html')
|
314
static/SimpleBlog.css
Normal file
314
static/SimpleBlog.css
Normal file
@ -0,0 +1,314 @@
|
||||
/********************************************
|
||||
AUTHOR: Erwin Aligam
|
||||
WEBSITE: http://www.styleshout.com/
|
||||
TEMPLATE NAME: SimpleBlog 1.0
|
||||
TEMPLATE CODE: S-0007
|
||||
VERSION: 1.0
|
||||
*******************************************/
|
||||
|
||||
/********************************************
|
||||
HTML ELEMENTS
|
||||
********************************************/
|
||||
|
||||
/* Top Elements */
|
||||
* { margin: 0; padding: 0; }
|
||||
|
||||
body {
|
||||
background: #FFF;
|
||||
font: normal 70%/1.5em Verdana, Tahoma, Verdana, sans-serif;
|
||||
color: #333;
|
||||
text-align: center;
|
||||
}
|
||||
/* links */
|
||||
a {
|
||||
background: inherit;
|
||||
text-decoration: none;
|
||||
color: #667F99;
|
||||
}
|
||||
a:hover {
|
||||
background: inherit;
|
||||
color: #996800;
|
||||
}
|
||||
/* headers */
|
||||
h1, h2, h3 {
|
||||
font-family: Verdana, Tahoma, 'Trebuchet MS', Sans-serif;
|
||||
font-weight: Bold;
|
||||
}
|
||||
h1 { font-size: 120%; }
|
||||
h2 { font-size: 110%; text-transform: uppercase; }
|
||||
h3 { font-size: 110%; color: #007E80; }
|
||||
|
||||
h1, h2, h3, p {
|
||||
margin: 0;
|
||||
padding: 10px;
|
||||
}
|
||||
ul, ol {
|
||||
margin: 10px 20px;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
/* images */
|
||||
img {
|
||||
border: 2px solid #CCC;
|
||||
}
|
||||
img.float-right {
|
||||
margin: 5px 0px 5px 10px;
|
||||
}
|
||||
img.float-left {
|
||||
margin: 5px 10px 5px 0px;
|
||||
}
|
||||
|
||||
code {
|
||||
margin: 5px 0;
|
||||
padding: 10px;
|
||||
text-align: left;
|
||||
display: block;
|
||||
overflow: auto;
|
||||
font: 500 1em/1.5em 'Lucida Console', 'courier new', monospace ;
|
||||
/* white-space: pre; */
|
||||
background: #FAFAFA;
|
||||
border: 1px solid #f2f2f2;
|
||||
}
|
||||
acronym {
|
||||
cursor: help;
|
||||
border-bottom: 1px solid #777;
|
||||
}
|
||||
|
||||
/* blockquote */
|
||||
blockquote {
|
||||
margin: 10px;
|
||||
padding: 0 0 0 28px;
|
||||
border: 1px solid #f2f2f2;
|
||||
background: #FAFAFA url(quote.gif) no-repeat 5px 5px;
|
||||
}
|
||||
|
||||
/* form elements */
|
||||
form {
|
||||
margin:10px; padding: 0 5px;
|
||||
border: 1px solid #f2f2f2;
|
||||
background-color: #FAFAFA;
|
||||
}
|
||||
label {
|
||||
display:block;
|
||||
font-weight:bold;
|
||||
margin:5px 0;
|
||||
}
|
||||
input {
|
||||
padding:2px;
|
||||
border:1px solid #eee;
|
||||
font: normal 1em Verdana, sans-serif;
|
||||
color:#777;
|
||||
}
|
||||
textarea {
|
||||
width:400px;
|
||||
padding:2px;
|
||||
font: normal 1em Verdana, sans-serif;
|
||||
border:1px solid #eee;
|
||||
height:100px;
|
||||
display:block;
|
||||
color:#777;
|
||||
}
|
||||
input.button {
|
||||
margin: 0;
|
||||
font: bolder 12px Arial, Sans-serif;
|
||||
border: 1px solid #CCC;
|
||||
padding: 2px 3px;
|
||||
background: #FFF;
|
||||
color: #275F6C;
|
||||
}
|
||||
/* search form */
|
||||
form.search {
|
||||
padding: 0; margin: 0;
|
||||
vertical-align: bottom;
|
||||
border: none;
|
||||
background-color: transparent;
|
||||
}
|
||||
form.search input.textbox {
|
||||
margin: 0; padding: 1px;
|
||||
width: 120px;
|
||||
border: 1px solid #CCC;
|
||||
background: #FFF;
|
||||
color: #333;
|
||||
}
|
||||
form.search input.button {
|
||||
height: 20px;
|
||||
padding: 1px 3px;
|
||||
width: 60px;
|
||||
}
|
||||
|
||||
/********************************************
|
||||
LAYOUT
|
||||
********************************************/
|
||||
#wrap {
|
||||
width: 833px;
|
||||
background: url(bg.jpg) repeat-y center top;
|
||||
margin: 0 auto;
|
||||
text-align: left;
|
||||
}
|
||||
#content-wrap {
|
||||
position: relative;
|
||||
width: 91%;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
}
|
||||
/* header */
|
||||
#header {
|
||||
position: relative;
|
||||
width: 833px;
|
||||
height: 100px;
|
||||
background: #FFF url(header.jpg) no-repeat center top;
|
||||
margin: 0; padding: 0;
|
||||
font-size: 14px;
|
||||
color: #FFF;
|
||||
}
|
||||
#header h1#logo {
|
||||
position: absolute;
|
||||
margin: 0; padding: 0;
|
||||
font: bold 42px 'Trebuchet MS', Arial, Sans-serif;
|
||||
letter-spacing: -2px;
|
||||
color: #FFF;
|
||||
text-transform: none;
|
||||
|
||||
/* change the values of top and Left to adjust the position of the logo*/
|
||||
top: 19px; left: 53px;
|
||||
}
|
||||
#header h2#slogan {
|
||||
position: absolute;
|
||||
z-index: 9999999;
|
||||
margin: 0; padding: 0;
|
||||
font: bold 12px 'Trebuchet MS', Arial, Sans-serif;
|
||||
text-transform: none;
|
||||
color: #FFF;
|
||||
|
||||
/* change the values of top and Left to adjust the position of the slogan*/
|
||||
top: 65px; left:75px;
|
||||
}
|
||||
#header #searchform {
|
||||
float: right;
|
||||
padding: 45px 40px 0 0;
|
||||
display: inline;
|
||||
}
|
||||
/* menu */
|
||||
#menu {
|
||||
clear: both;
|
||||
width: 833px;
|
||||
height: 26px;
|
||||
background: #FFF url(menubg.jpg) repeat-y;
|
||||
margin: 0;
|
||||
font: bolder 12px/26px Tahoma, Verdana, Arial, Sans-Serif;
|
||||
}
|
||||
#menu ul{
|
||||
margin: 0; padding: 0 0 0 35px;
|
||||
}
|
||||
#menu ul li {
|
||||
float: left;
|
||||
list-style: none;
|
||||
}
|
||||
#menu ul li a {
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
padding: 0 10px;
|
||||
background: inherit;
|
||||
color: #FFF;
|
||||
}
|
||||
#menu ul li a:hover {
|
||||
background: #FFF;
|
||||
color: #333;
|
||||
}
|
||||
#menu ul li#current a {
|
||||
background: #30899F;
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
/* Main */
|
||||
#main {
|
||||
float: left;
|
||||
width: 72%;
|
||||
padding: 0; margin: 0;
|
||||
}
|
||||
#main h1 {
|
||||
color: #667F99;
|
||||
border-bottom: 1px solid #CCCCCC;
|
||||
background: #F6F6F6 url(arrow.gif) no-repeat 5px 50%;
|
||||
padding: 3px 0 3px 20px;
|
||||
margin: 10px 0 0 0;
|
||||
}
|
||||
|
||||
.post-footer {
|
||||
background-color: #FAFAFA;
|
||||
padding: 5px; margin: 20px 10px 0 10px;
|
||||
border: 1px solid #f2f2f2;
|
||||
font-size: 95%;
|
||||
}
|
||||
.post-footer .date {
|
||||
background: url(clock.gif) no-repeat left center;
|
||||
padding-left: 20px; margin: 0 10px 0 5px;
|
||||
}
|
||||
.post-footer .comments {
|
||||
background: url(comment.gif) no-repeat left center;
|
||||
padding-left: 20px; margin: 0 10px 0 5px;
|
||||
}
|
||||
.post-footer .readmore {
|
||||
background: url(page.gif) no-repeat left center;
|
||||
padding-left: 20px; margin: 0 10px 0 5px;
|
||||
}
|
||||
|
||||
/* sidebar */
|
||||
#sidebar {
|
||||
float: right;
|
||||
width: 26%;
|
||||
padding: 0; margin: 0;
|
||||
}
|
||||
#sidebar h1 {
|
||||
margin: 10px 0 0 0;
|
||||
padding: 3px 10px;
|
||||
font: bold 120% Tahoma, Verdana, Sans-Serif;
|
||||
color: #FFF;
|
||||
background: #B6B8BB;
|
||||
}
|
||||
#sidebar ul.sidemenu {
|
||||
list-style: none;
|
||||
text-align: left;
|
||||
margin: 3px 0px 8px 0; padding: 0;
|
||||
text-decoration: none;
|
||||
}
|
||||
#sidebar ul.sidemenu li {
|
||||
border-bottom: 1px solid #EFF0F1;
|
||||
background: url(bullet.gif) no-repeat 2px 3px ;
|
||||
padding: 2px 0 2px 25px;
|
||||
margin: 0 2px;
|
||||
}
|
||||
|
||||
* html body #sidebar ul.sidemenu li { height: 1%; }
|
||||
|
||||
#sidebar ul.sidemenu a {
|
||||
font-weight: bold;
|
||||
padding: 2px 0;
|
||||
background: none;
|
||||
}
|
||||
|
||||
/* footer */
|
||||
#footer {
|
||||
clear: both;
|
||||
color: #66737B;
|
||||
font: normal 90% Verdana, Tahoma, sans-serif;
|
||||
background: #FFF url(footerbg.jpg) no-repeat center top;
|
||||
width: 833px;
|
||||
height: 60px;
|
||||
text-align: center;
|
||||
padding: 8px 0 0 0;
|
||||
margin: 0 auto;
|
||||
}
|
||||
#footer a { text-decoration: none; }
|
||||
|
||||
/* alignment classes */
|
||||
.float-left { float: left; }
|
||||
.float-right { float: right; }
|
||||
.align-left { text-align: left; }
|
||||
.align-right { text-align: right; }
|
||||
|
||||
/* additional classes */
|
||||
.clear { clear: both; }
|
||||
.gray { color: #CCC; }
|
||||
|
||||
|
314
static/css/SimpleBlog.css
Normal file
314
static/css/SimpleBlog.css
Normal file
@ -0,0 +1,314 @@
|
||||
/********************************************
|
||||
AUTHOR: Erwin Aligam
|
||||
WEBSITE: http://www.styleshout.com/
|
||||
TEMPLATE NAME: SimpleBlog 1.0
|
||||
TEMPLATE CODE: S-0007
|
||||
VERSION: 1.0
|
||||
*******************************************/
|
||||
|
||||
/********************************************
|
||||
HTML ELEMENTS
|
||||
********************************************/
|
||||
|
||||
/* Top Elements */
|
||||
* { margin: 0; padding: 0; }
|
||||
|
||||
body {
|
||||
background: #FFF;
|
||||
font: normal 70%/1.5em Verdana, Tahoma, Verdana, sans-serif;
|
||||
color: #333;
|
||||
text-align: center;
|
||||
}
|
||||
/* links */
|
||||
a {
|
||||
background: inherit;
|
||||
text-decoration: none;
|
||||
color: #667F99;
|
||||
}
|
||||
a:hover {
|
||||
background: inherit;
|
||||
color: #996800;
|
||||
}
|
||||
/* headers */
|
||||
h1, h2, h3 {
|
||||
font-family: Verdana, Tahoma, 'Trebuchet MS', Sans-serif;
|
||||
font-weight: Bold;
|
||||
}
|
||||
h1 { font-size: 120%; }
|
||||
h2 { font-size: 110%; text-transform: uppercase; }
|
||||
h3 { font-size: 110%; color: #007E80; }
|
||||
|
||||
h1, h2, h3, p {
|
||||
margin: 0;
|
||||
padding: 10px;
|
||||
}
|
||||
ul, ol {
|
||||
margin: 10px 20px;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
/* images */
|
||||
img {
|
||||
border: 2px solid #CCC;
|
||||
}
|
||||
img.float-right {
|
||||
margin: 5px 0px 5px 10px;
|
||||
}
|
||||
img.float-left {
|
||||
margin: 5px 10px 5px 0px;
|
||||
}
|
||||
|
||||
code {
|
||||
margin: 5px 0;
|
||||
padding: 10px;
|
||||
text-align: left;
|
||||
display: block;
|
||||
overflow: auto;
|
||||
font: 500 1em/1.5em 'Lucida Console', 'courier new', monospace ;
|
||||
/* white-space: pre; */
|
||||
background: #FAFAFA;
|
||||
border: 1px solid #f2f2f2;
|
||||
}
|
||||
acronym {
|
||||
cursor: help;
|
||||
border-bottom: 1px solid #777;
|
||||
}
|
||||
|
||||
/* blockquote */
|
||||
blockquote {
|
||||
margin: 10px;
|
||||
padding: 0 0 0 28px;
|
||||
border: 1px solid #f2f2f2;
|
||||
background: #FAFAFA url(quote.gif) no-repeat 5px 5px;
|
||||
}
|
||||
|
||||
/* form elements */
|
||||
form {
|
||||
margin:10px; padding: 0 5px;
|
||||
border: 1px solid #f2f2f2;
|
||||
background-color: #FAFAFA;
|
||||
}
|
||||
label {
|
||||
display:block;
|
||||
font-weight:bold;
|
||||
margin:5px 0;
|
||||
}
|
||||
input {
|
||||
padding:2px;
|
||||
border:1px solid #eee;
|
||||
font: normal 1em Verdana, sans-serif;
|
||||
color:#777;
|
||||
}
|
||||
textarea {
|
||||
width:400px;
|
||||
padding:2px;
|
||||
font: normal 1em Verdana, sans-serif;
|
||||
border:1px solid #eee;
|
||||
height:100px;
|
||||
display:block;
|
||||
color:#777;
|
||||
}
|
||||
input.button {
|
||||
margin: 0;
|
||||
font: bolder 12px Arial, Sans-serif;
|
||||
border: 1px solid #CCC;
|
||||
padding: 2px 3px;
|
||||
background: #FFF;
|
||||
color: #275F6C;
|
||||
}
|
||||
/* search form */
|
||||
form.search {
|
||||
padding: 0; margin: 0;
|
||||
vertical-align: bottom;
|
||||
border: none;
|
||||
background-color: transparent;
|
||||
}
|
||||
form.search input.textbox {
|
||||
margin: 0; padding: 1px;
|
||||
width: 120px;
|
||||
border: 1px solid #CCC;
|
||||
background: #FFF;
|
||||
color: #333;
|
||||
}
|
||||
form.search input.button {
|
||||
height: 20px;
|
||||
padding: 1px 3px;
|
||||
width: 60px;
|
||||
}
|
||||
|
||||
/********************************************
|
||||
LAYOUT
|
||||
********************************************/
|
||||
#wrap {
|
||||
width: 833px;
|
||||
background: url(bg.jpg) repeat-y center top;
|
||||
margin: 0 auto;
|
||||
text-align: left;
|
||||
}
|
||||
#content-wrap {
|
||||
position: relative;
|
||||
width: 91%;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
}
|
||||
/* header */
|
||||
#header {
|
||||
position: relative;
|
||||
width: 833px;
|
||||
height: 100px;
|
||||
background: #FFF url(header.jpg) no-repeat center top;
|
||||
margin: 0; padding: 0;
|
||||
font-size: 14px;
|
||||
color: #FFF;
|
||||
}
|
||||
#header h1#logo {
|
||||
position: absolute;
|
||||
margin: 0; padding: 0;
|
||||
font: bold 42px 'Trebuchet MS', Arial, Sans-serif;
|
||||
letter-spacing: -2px;
|
||||
color: #FFF;
|
||||
text-transform: none;
|
||||
|
||||
/* change the values of top and Left to adjust the position of the logo*/
|
||||
top: 19px; left: 53px;
|
||||
}
|
||||
#header h2#slogan {
|
||||
position: absolute;
|
||||
z-index: 9999999;
|
||||
margin: 0; padding: 0;
|
||||
font: bold 12px 'Trebuchet MS', Arial, Sans-serif;
|
||||
text-transform: none;
|
||||
color: #FFF;
|
||||
|
||||
/* change the values of top and Left to adjust the position of the slogan*/
|
||||
top: 65px; left:75px;
|
||||
}
|
||||
#header #searchform {
|
||||
float: right;
|
||||
padding: 45px 40px 0 0;
|
||||
display: inline;
|
||||
}
|
||||
/* menu */
|
||||
#menu {
|
||||
clear: both;
|
||||
width: 833px;
|
||||
height: 26px;
|
||||
background: #FFF url(menubg.jpg) repeat-y;
|
||||
margin: 0;
|
||||
font: bolder 12px/26px Tahoma, Verdana, Arial, Sans-Serif;
|
||||
}
|
||||
#menu ul{
|
||||
margin: 0; padding: 0 0 0 35px;
|
||||
}
|
||||
#menu ul li {
|
||||
float: left;
|
||||
list-style: none;
|
||||
}
|
||||
#menu ul li a {
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
padding: 0 10px;
|
||||
background: inherit;
|
||||
color: #FFF;
|
||||
}
|
||||
#menu ul li a:hover {
|
||||
background: #FFF;
|
||||
color: #333;
|
||||
}
|
||||
#menu ul li#current a {
|
||||
background: #30899F;
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
/* Main */
|
||||
#main {
|
||||
float: left;
|
||||
width: 72%;
|
||||
padding: 0; margin: 0;
|
||||
}
|
||||
#main h1 {
|
||||
color: #667F99;
|
||||
border-bottom: 1px solid #CCCCCC;
|
||||
background: #F6F6F6 url(arrow.gif) no-repeat 5px 50%;
|
||||
padding: 3px 0 3px 20px;
|
||||
margin: 10px 0 0 0;
|
||||
}
|
||||
|
||||
.post-footer {
|
||||
background-color: #FAFAFA;
|
||||
padding: 5px; margin: 20px 10px 0 10px;
|
||||
border: 1px solid #f2f2f2;
|
||||
font-size: 95%;
|
||||
}
|
||||
.post-footer .date {
|
||||
background: url(clock.gif) no-repeat left center;
|
||||
padding-left: 20px; margin: 0 10px 0 5px;
|
||||
}
|
||||
.post-footer .comments {
|
||||
background: url(comment.gif) no-repeat left center;
|
||||
padding-left: 20px; margin: 0 10px 0 5px;
|
||||
}
|
||||
.post-footer .readmore {
|
||||
background: url(page.gif) no-repeat left center;
|
||||
padding-left: 20px; margin: 0 10px 0 5px;
|
||||
}
|
||||
|
||||
/* sidebar */
|
||||
#sidebar {
|
||||
float: right;
|
||||
width: 26%;
|
||||
padding: 0; margin: 0;
|
||||
}
|
||||
#sidebar h1 {
|
||||
margin: 10px 0 0 0;
|
||||
padding: 3px 10px;
|
||||
font: bold 120% Tahoma, Verdana, Sans-Serif;
|
||||
color: #FFF;
|
||||
background: #B6B8BB;
|
||||
}
|
||||
#sidebar ul.sidemenu {
|
||||
list-style: none;
|
||||
text-align: left;
|
||||
margin: 3px 0px 8px 0; padding: 0;
|
||||
text-decoration: none;
|
||||
}
|
||||
#sidebar ul.sidemenu li {
|
||||
border-bottom: 1px solid #EFF0F1;
|
||||
background: url(bullet.gif) no-repeat 2px 3px ;
|
||||
padding: 2px 0 2px 25px;
|
||||
margin: 0 2px;
|
||||
}
|
||||
|
||||
* html body #sidebar ul.sidemenu li { height: 1%; }
|
||||
|
||||
#sidebar ul.sidemenu a {
|
||||
font-weight: bold;
|
||||
padding: 2px 0;
|
||||
background: none;
|
||||
}
|
||||
|
||||
/* footer */
|
||||
#footer {
|
||||
clear: both;
|
||||
color: #66737B;
|
||||
font: normal 90% Verdana, Tahoma, sans-serif;
|
||||
background: #FFF url(footerbg.jpg) no-repeat center top;
|
||||
width: 833px;
|
||||
height: 60px;
|
||||
text-align: center;
|
||||
padding: 8px 0 0 0;
|
||||
margin: 0 auto;
|
||||
}
|
||||
#footer a { text-decoration: none; }
|
||||
|
||||
/* alignment classes */
|
||||
.float-left { float: left; }
|
||||
.float-right { float: right; }
|
||||
.align-left { text-align: left; }
|
||||
.align-right { text-align: right; }
|
||||
|
||||
/* additional classes */
|
||||
.clear { clear: both; }
|
||||
.gray { color: #CCC; }
|
||||
|
||||
|
78
static/css/home.css
Normal file
78
static/css/home.css
Normal file
@ -0,0 +1,78 @@
|
||||
body {
|
||||
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
background-color: #f4f6f9;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #2c3e50;
|
||||
text-align: center;
|
||||
border-bottom: 3px solid #3498db;
|
||||
padding-bottom: 10px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
color: #2980b9;
|
||||
margin-top: 25px;
|
||||
border-left: 4px solid #3498db;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
p {
|
||||
text-align: justify;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
list {
|
||||
display: block;
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
list li {
|
||||
margin-bottom: 10px;
|
||||
position: relative;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
list li::before {
|
||||
content: '•';
|
||||
color: #3498db;
|
||||
font-weight: bold;
|
||||
position: absolute;
|
||||
left: -20px;
|
||||
}
|
||||
|
||||
.alert {
|
||||
background-color: #d4edda;
|
||||
color: #155724;
|
||||
padding: 15px;
|
||||
margin: 10px 0;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #c3e6cb;
|
||||
animation: fadeOut 5s forwards;
|
||||
}
|
||||
|
||||
@keyframes fadeOut {
|
||||
0% { opacity: 1; }
|
||||
90% { opacity: 1; }
|
||||
100% { opacity: 0; }
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
body {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
BIN
static/images/icon.png
Normal file
BIN
static/images/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 123 KiB |
BIN
static/images/mis.ico
Normal file
BIN
static/images/mis.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 81 KiB |
151
templates/base.html
Normal file
151
templates/base.html
Normal file
@ -0,0 +1,151 @@
|
||||
{% load static %}
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>MIS</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: #f4f4f4;
|
||||
}
|
||||
|
||||
.navbar {
|
||||
background-color: #2c3e50;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0 20px;
|
||||
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||
}
|
||||
|
||||
.logo-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-right: 30px;
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
background-color: white;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.logo img {
|
||||
max-width: 40px;
|
||||
max-height: 40px;
|
||||
}
|
||||
|
||||
.company-name {
|
||||
color: white;
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.menu-container {
|
||||
display: flex;
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.menu-container a {
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
padding: 14px 16px;
|
||||
transition: background-color 0.3s;
|
||||
}
|
||||
|
||||
.dropdown {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.dropdown-btn {
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.dropdown-content {
|
||||
display: none;
|
||||
position: absolute;
|
||||
background-color: white;
|
||||
min-width: 200px;
|
||||
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
|
||||
z-index: 1000;
|
||||
top: 100%;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.dropdown:hover .dropdown-content {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.dropdown-content a {
|
||||
color: #2c3e50;
|
||||
padding: 12px 16px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.dropdown-content a:hover {
|
||||
background-color: #f1f1f1;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="navbar">
|
||||
<div class="logo-container">
|
||||
<div class="logo">
|
||||
|
||||
</div>
|
||||
<div class="company-name">Management Information System (MIS)</div>
|
||||
</div>
|
||||
|
||||
<div class="menu-container">
|
||||
<a href="http://localhost:8000/">Home</a>
|
||||
|
||||
<div class="dropdown">
|
||||
<a href="#" class="dropdown-btn">Doccument</a>
|
||||
<div class="dropdown-content">
|
||||
<a href="http://localhost:8000/viewresulation">View Resulations</a>
|
||||
<a href="http://localhost:8000/resulation">Upload Resulation</a>
|
||||
<a href="#">View Contracts</a>
|
||||
<a href="http://localhost:8000/deed">Upload Contract</a>
|
||||
<a href="#">View MoUs</a>
|
||||
<a href="http://localhost:8000/">Upload MoU</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% block content %}
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
{% endblock content %}
|
||||
</body>
|
||||
<footer>
|
||||
copyright@MIS-DGHS, Bangladesh
|
||||
|
||||
</footer>
|
58
templates/resulation/contract.html
Normal file
58
templates/resulation/contract.html
Normal file
@ -0,0 +1,58 @@
|
||||
{% extends "base.html" %}
|
||||
{% block content %}
|
||||
<div>
|
||||
<h3>Fillup the form and upload your Contract</h3>
|
||||
<form action "/saved.html">
|
||||
<table>
|
||||
<tr>
|
||||
<th align="left">Name of organization</th>
|
||||
<th><input type="text", name="org_unit"></th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th align="left">Tropic</th>
|
||||
<th><input type="text", name="tropic"></th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th align="left">First Party</th>
|
||||
<th><input type="text", name="first_party"></th>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<th align="left">Second Party</th>
|
||||
<th><input type="text", name="second_party"></th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th align="left">Contract Date</th>
|
||||
<th><input type="text", name="contract_date"></th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th align="left">End Date</th>
|
||||
<th><input type="Date", name="closing_date"></th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th align="left">Duration of Cotract</th>
|
||||
<th><input type="Date", name="duration"></th>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<th align="left">Upload Resulation</th>
|
||||
<th><input type="file", name="contract_file"></th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th></th>
|
||||
<th strong center><input Type="Submit">
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
<br>
|
||||
<br>
|
||||
{% endblock content %}
|
128
templates/resulation/home.html
Normal file
128
templates/resulation/home.html
Normal file
@ -0,0 +1,128 @@
|
||||
{% extends "base.html" %}
|
||||
{% block content %}
|
||||
{% if message %}
|
||||
<div class="alert alert-success" style="background-color: #d4edda; color: #155724; padding: 15px; margin: 10px 0; border-radius: 4px; border: 1px solid #c3e6cb;">
|
||||
{{ message }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
background-color: #f4f6f9;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #2c3e50;
|
||||
text-align: center;
|
||||
border-bottom: 3px solid #3498db;
|
||||
padding-bottom: 10px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
color: #2980b9;
|
||||
margin-top: 25px;
|
||||
border-left: 4px solid #3498db;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
p {
|
||||
text-align: justify;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
list {
|
||||
display: block;
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
list li {
|
||||
margin-bottom: 10px;
|
||||
position: relative;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
list li::before {
|
||||
content: '•';
|
||||
color: #3498db;
|
||||
font-weight: bold;
|
||||
position: absolute;
|
||||
left: -20px;
|
||||
}
|
||||
|
||||
.alert {
|
||||
background-color: #d4edda;
|
||||
color: #155724;
|
||||
padding: 15px;
|
||||
margin: 10px 0;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #c3e6cb;
|
||||
animation: fadeOut 5s forwards;
|
||||
}
|
||||
|
||||
@keyframes fadeOut {
|
||||
0% { opacity: 1; }
|
||||
90% { opacity: 1; }
|
||||
100% { opacity: 0; }
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
body {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<h1 strong align='center'>Archiving and Timely Upload of Meeting Minutes, Deeds, and MoUs</h1>
|
||||
<br><p>To ensure seamless access and efficient management of critical documents within the Directorate General of Health Services (DGHS), it is essential to archive and upload Meeting Minutes, Deeds, and Memorandums of Understanding (MOUs) in a timely manner.
|
||||
</p>
|
||||
|
||||
<h3 strong>Purpose:</h3>
|
||||
|
||||
<list>
|
||||
<li>Facilitate on-demand availability of essential documents to all DGHS offices.</li>
|
||||
<li>Promote transparency and accountability in document management.</li>
|
||||
<li>Enhance operational efficiency by providing a centralized repository for document storage and retrieval.</li></list>
|
||||
|
||||
<h3>Timely Upload:</h3>
|
||||
|
||||
<p>Designated personnel from each office should upload Meeting Minutes, Deeds, and MOUs immediately after finalization.</p>
|
||||
|
||||
<h3>Centralized Repository:</h3>
|
||||
|
||||
<p>All documents will be stored in a secure and centralized digital platform.
|
||||
<br>Access to this platform will be granted to all DGHS offices for uniform access.</p>
|
||||
|
||||
<h3>Search and Retrieval:</h3>
|
||||
|
||||
<p>The system will support robust search functionality, enabling users to locate documents based on keywords, dates, or document types.
|
||||
Authorized users can download documents as needed.</p>
|
||||
|
||||
<h3>Security and Confidentiality:</h3>
|
||||
|
||||
<p>Role-based access controls will ensure that sensitive documents are accessible only to authorized personnel.
|
||||
Regular audits will be conducted to maintain data integrity and compliance.</p>
|
||||
|
||||
<h3>Benefits:</h3>
|
||||
<list>
|
||||
<li>Streamlined collaboration and communication across DGHS offices.</li>
|
||||
<li>Reduced dependency on physical document storage and manual retrieval processes.</li>
|
||||
<li>Ensured preservation of official records for future reference.</li>
|
||||
</list>
|
||||
|
||||
<h3>Call to Action:</h3>
|
||||
<p>All offices under DGHS are encouraged to adopt this process and contribute to maintaining an updated and accessible document archive.</p>
|
||||
{% endblock content %}
|
47
templates/resulation/mou.html
Normal file
47
templates/resulation/mou.html
Normal file
@ -0,0 +1,47 @@
|
||||
{% extends "base.html" %}
|
||||
{% block content %}
|
||||
<div>
|
||||
<h3>Fillup the form and upload MOU</h3>
|
||||
<form action "/saved.html">
|
||||
<table>
|
||||
<tr>
|
||||
<th align="left">Name of organization</th>
|
||||
<th><input type="text", name="org_unit"></th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th align="left">Tropic/Subject</th>
|
||||
<th><input type="text", name="tropic"></th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th align="left">First Party</th>
|
||||
<th><input type="text", name="first_party"></th>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<th align="left">Second Party</th>
|
||||
<th><input type="text", name="second_party"></th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th align="left">MoU Date</th>
|
||||
<th><input type="text", name="contract_date"></th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th align="left">Upload MoU</th>
|
||||
<th><input type="file", name="mou_file"></th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th></th>
|
||||
<th strong center><input Type="Submit">
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
<br>
|
||||
<br>
|
||||
{% endblock content %}
|
250
templates/resulation/resulation.html
Normal file
250
templates/resulation/resulation.html
Normal file
@ -0,0 +1,250 @@
|
||||
{% extends "base.html" %}
|
||||
{% block content %}
|
||||
{% if message %}
|
||||
<div class="alert alert-success" style="background-color: #d4edda; color: #155724; padding: 15px; margin: 10px 0; border-radius: 4px; border: 1px solid #c3e6cb;">
|
||||
{{ message }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
background-color: #f4f6f9;
|
||||
}
|
||||
|
||||
.form-container {
|
||||
max-width: 800px;
|
||||
margin: 20px auto;
|
||||
padding: 20px;
|
||||
background: #ffffff;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 0 10px rgba(0,0,0,0.1);
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #2c3e50;
|
||||
text-align: center;
|
||||
border-bottom: 3px solid #3498db;
|
||||
padding-bottom: 10px;
|
||||
margin-bottom: 20px;
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h3 {
|
||||
color: #2980b9;
|
||||
margin-top: 25px;
|
||||
border-left: 4px solid #3498db;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
p {
|
||||
text-align: justify;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
list {
|
||||
display: block;
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
list li {
|
||||
margin-bottom: 10px;
|
||||
position: relative;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
list li::before {
|
||||
content: '•';
|
||||
color: #3498db;
|
||||
font-weight: bold;
|
||||
position: absolute;
|
||||
left: -20px;
|
||||
}
|
||||
|
||||
.form-title {
|
||||
color: #2c3e50;
|
||||
text-align: center;
|
||||
margin-bottom: 30px;
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.form-table {
|
||||
width: 100%;
|
||||
border-collapse: separate;
|
||||
border-spacing: 0 15px;
|
||||
}
|
||||
|
||||
.form-table th {
|
||||
text-align: left;
|
||||
padding: 8px;
|
||||
color: #34495e;
|
||||
font-weight: 600;
|
||||
width: 30%;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.form-table input[type="text"],
|
||||
.form-table input[type="date"] {
|
||||
width: 90%;
|
||||
padding: 8px 12px;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 4px;
|
||||
font-size: 14px;
|
||||
transition: border-color 0.3s;
|
||||
}
|
||||
|
||||
.form-table input[type="text"]:focus,
|
||||
.form-table input[type="date"]:focus {
|
||||
border-color: #3498db;
|
||||
outline: none;
|
||||
box-shadow: 0 0 5px rgba(52,152,219,0.3);
|
||||
}
|
||||
|
||||
.form-table input[type="file"] {
|
||||
padding: 8px 0;
|
||||
}
|
||||
|
||||
.submit-btn {
|
||||
background-color: #3498db;
|
||||
color: white;
|
||||
padding: 10px 20px;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
font-size: 16px;
|
||||
transition: background-color 0.3s;
|
||||
}
|
||||
|
||||
.submit-btn:hover {
|
||||
background-color: #2980b9;
|
||||
}
|
||||
|
||||
.file-input-wrapper {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.file-input-label {
|
||||
display: inline-block;
|
||||
background-color: #f8f9fa;
|
||||
padding: 8px 12px;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.alert {
|
||||
background-color: #d4edda;
|
||||
color: #155724;
|
||||
padding: 15px;
|
||||
margin: 10px 0;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #c3e6cb;
|
||||
animation: fadeOut 5s forwards;
|
||||
}
|
||||
|
||||
@keyframes fadeOut {
|
||||
0% { opacity: 1; }
|
||||
90% { opacity: 1; }
|
||||
100% { opacity: 0; }
|
||||
}
|
||||
|
||||
/* Responsive design */
|
||||
@media (max-width: 768px) {
|
||||
.form-container {
|
||||
margin: 10px;
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
.form-table th {
|
||||
width: 100%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.form-table td {
|
||||
width: 100%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
body {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<div class="form-container">
|
||||
<h3 class="form-title">Fill up the form and upload your resolutions</h3>
|
||||
<form action="{% url "resulation" %}" method="POST" enctype="multipart/form-data">
|
||||
<table class="form-table">
|
||||
<tr>
|
||||
<th>Type of Upload</th>
|
||||
<td><input type="text" name="org_unit" value="Meeting Minutes" readonly></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>Name of organization</th>
|
||||
<td><input type="text" name="org_unit" required></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>Topic</th>
|
||||
<td><input type="text" name="topic" required></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>Title of the Meeting</th>
|
||||
<td><input type="text" name="tittle" required></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>Meeting Number</th>
|
||||
<td><input type="text" name="m_number" required></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>Meeting Date</th>
|
||||
<td><input type="date" name="m_date" required></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>Meeting Venue</th>
|
||||
<td><input type="text" name="m_venue" required></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>Upload attendance sheet</th>
|
||||
<td class="file-input-wrapper">
|
||||
<input type="file" name="attendance_file" required>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>Upload Resolution</th>
|
||||
<td class="file-input-wrapper">
|
||||
<input type="file" name="res_con_mou_file" required>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th></th>
|
||||
<td style="text-align: center;">
|
||||
{% csrf_token %}
|
||||
<input type="submit" value="Submit" class="submit-btn">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
{% endblock content %}
|
138
templates/resulation/viewresulation.html
Normal file
138
templates/resulation/viewresulation.html
Normal file
@ -0,0 +1,138 @@
|
||||
{% extends "base.html" %}
|
||||
{% block content %}
|
||||
<style>
|
||||
.table-container {
|
||||
max-width: 1200px;
|
||||
margin: 20px auto;
|
||||
padding: 20px;
|
||||
background: #ffffff;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 0 10px rgba(0,0,0,0.1);
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.records-table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.records-table th,
|
||||
.records-table td {
|
||||
padding: 12px;
|
||||
text-align: left;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.records-table th {
|
||||
background-color: #f8f9fa;
|
||||
font-weight: 600;
|
||||
color: #2c3e50;
|
||||
}
|
||||
|
||||
.records-table tr:hover {
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
||||
.download-link {
|
||||
display: inline-block;
|
||||
padding: 6px 12px;
|
||||
background-color: #3498db;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
border-radius: 4px;
|
||||
font-size: 14px;
|
||||
transition: background-color 0.3s;
|
||||
}
|
||||
|
||||
.download-link:hover {
|
||||
background-color: #2980b9;
|
||||
}
|
||||
|
||||
.table-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.search-box {
|
||||
padding: 8px;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 4px;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.no-records {
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
color: #666;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="table-container">
|
||||
<div class="table-header">
|
||||
<h2>PDF Records</h2>
|
||||
<input type="text" id="searchInput" class="search-box" placeholder="Search records...">
|
||||
</div>
|
||||
|
||||
{% if pdf_records %}
|
||||
<table class="records-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Organization</th>
|
||||
<th>Topic</th>
|
||||
<th>Title</th>
|
||||
<th>Meeting Number</th>
|
||||
<th>Meeting Date</th>
|
||||
<th>Venue</th>
|
||||
<th>Attendance</th>
|
||||
<th>Resolution</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for record in pdf_records %}
|
||||
<tr>
|
||||
<td>{{ record.org_unit }}</td>
|
||||
<td>{{ record.topic }}</td>
|
||||
<td>{{ record.tittle }}</td>
|
||||
<td>{{ record.m_number }}</td>
|
||||
<td>{{ record.m_date|date:"d M Y" }}</td>
|
||||
<td>{{ record.m_venue }}</td>
|
||||
<td>
|
||||
<a href="{{ record.attendance_file.url }}" class="download-link" download>
|
||||
Download
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="{{ record.res_con_mou_file.url }}" class="download-link" download>
|
||||
Download
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% else %}
|
||||
<div class="no-records">
|
||||
No records found.
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const searchInput = document.getElementById('searchInput');
|
||||
const tableRows = document.querySelectorAll('.records-table tbody tr');
|
||||
|
||||
searchInput.addEventListener('input', function(e) {
|
||||
const searchTerm = e.target.value.toLowerCase();
|
||||
|
||||
tableRows.forEach(row => {
|
||||
const text = row.textContent.toLowerCase();
|
||||
row.style.display = text.includes(searchTerm) ? '' : 'none';
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{% endblock content %}
|
Loading…
Reference in New Issue
Block a user