first commit

This commit is contained in:
sofordar 2025-01-26 11:22:57 +06:00
commit 5aedf06de3
54 changed files with 2698 additions and 0 deletions

22
manage.py Normal file
View 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()

Binary file not shown.

Binary file not shown.

0
misdghs/__init__.py Normal file
View File

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

16
misdghs/asgi.py Normal file
View 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
View 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
View 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
View 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
View 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.

3
resulation/admin.py Normal file
View File

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

6
resulation/apps.py Normal file
View File

@ -0,0 +1,6 @@
from django.apps import AppConfig
class ResulationConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'resulation'

View 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/')),
],
),
]

View File

@ -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),
),
]

View File

@ -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),
),
]

View File

@ -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),
),
]

View File

@ -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/'),
),
]

View 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',
),
]

View File

30
resulation/models.py Normal file
View 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"

View 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; }

View 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; }

View 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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

3
resulation/tests.py Normal file
View File

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

18
resulation/urls.py Normal file
View 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
View 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
View 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
View 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
View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

BIN
static/images/mis.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

151
templates/base.html Normal file
View 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>

View 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 %}

View 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 %}

View 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 %}

View 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 %}

View 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 %}