commit 5aedf06de30ab91617e64bf0023048012326f851 Author: sofordar Date: Sun Jan 26 11:22:57 2025 +0600 first commit diff --git a/manage.py b/manage.py new file mode 100644 index 0000000..bd02d40 --- /dev/null +++ b/manage.py @@ -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() diff --git a/media/attendance_files/2025/01/26/Attendance.pdf b/media/attendance_files/2025/01/26/Attendance.pdf new file mode 100644 index 0000000..7ddcbe5 Binary files /dev/null and b/media/attendance_files/2025/01/26/Attendance.pdf differ diff --git a/media/resolution_files/2025/01/26/Resulation.pdf b/media/resolution_files/2025/01/26/Resulation.pdf new file mode 100644 index 0000000..7ddcbe5 Binary files /dev/null and b/media/resolution_files/2025/01/26/Resulation.pdf differ diff --git a/misdghs/__init__.py b/misdghs/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/misdghs/__pycache__/__init__.cpython-311.pyc b/misdghs/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000..d452e94 Binary files /dev/null and b/misdghs/__pycache__/__init__.cpython-311.pyc differ diff --git a/misdghs/__pycache__/settings.cpython-311.pyc b/misdghs/__pycache__/settings.cpython-311.pyc new file mode 100644 index 0000000..b45df6a Binary files /dev/null and b/misdghs/__pycache__/settings.cpython-311.pyc differ diff --git a/misdghs/__pycache__/urls.cpython-311.pyc b/misdghs/__pycache__/urls.cpython-311.pyc new file mode 100644 index 0000000..0fc6d76 Binary files /dev/null and b/misdghs/__pycache__/urls.cpython-311.pyc differ diff --git a/misdghs/__pycache__/wsgi.cpython-311.pyc b/misdghs/__pycache__/wsgi.cpython-311.pyc new file mode 100644 index 0000000..2e68500 Binary files /dev/null and b/misdghs/__pycache__/wsgi.cpython-311.pyc differ diff --git a/misdghs/asgi.py b/misdghs/asgi.py new file mode 100644 index 0000000..9ec5a3c --- /dev/null +++ b/misdghs/asgi.py @@ -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() diff --git a/misdghs/settings.py b/misdghs/settings.py new file mode 100644 index 0000000..80aa826 --- /dev/null +++ b/misdghs/settings.py @@ -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' diff --git a/misdghs/urls.py b/misdghs/urls.py new file mode 100644 index 0000000..d9d916a --- /dev/null +++ b/misdghs/urls.py @@ -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')), +] diff --git a/misdghs/wsgi.py b/misdghs/wsgi.py new file mode 100644 index 0000000..05f8829 --- /dev/null +++ b/misdghs/wsgi.py @@ -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() diff --git a/resulation/__init__.py b/resulation/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/resulation/__pycache__/__init__.cpython-311.pyc b/resulation/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000..cb639b0 Binary files /dev/null and b/resulation/__pycache__/__init__.cpython-311.pyc differ diff --git a/resulation/__pycache__/admin.cpython-311.pyc b/resulation/__pycache__/admin.cpython-311.pyc new file mode 100644 index 0000000..c98fea7 Binary files /dev/null and b/resulation/__pycache__/admin.cpython-311.pyc differ diff --git a/resulation/__pycache__/apps.cpython-311.pyc b/resulation/__pycache__/apps.cpython-311.pyc new file mode 100644 index 0000000..be48ec6 Binary files /dev/null and b/resulation/__pycache__/apps.cpython-311.pyc differ diff --git a/resulation/__pycache__/models.cpython-311.pyc b/resulation/__pycache__/models.cpython-311.pyc new file mode 100644 index 0000000..e5faa79 Binary files /dev/null and b/resulation/__pycache__/models.cpython-311.pyc differ diff --git a/resulation/__pycache__/urls.cpython-311.pyc b/resulation/__pycache__/urls.cpython-311.pyc new file mode 100644 index 0000000..02251c4 Binary files /dev/null and b/resulation/__pycache__/urls.cpython-311.pyc differ diff --git a/resulation/__pycache__/views.cpython-311.pyc b/resulation/__pycache__/views.cpython-311.pyc new file mode 100644 index 0000000..40a9be9 Binary files /dev/null and b/resulation/__pycache__/views.cpython-311.pyc differ diff --git a/resulation/admin.py b/resulation/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/resulation/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/resulation/apps.py b/resulation/apps.py new file mode 100644 index 0000000..e87fbc6 --- /dev/null +++ b/resulation/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class ResulationConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'resulation' diff --git a/resulation/migrations/0001_initial.py b/resulation/migrations/0001_initial.py new file mode 100644 index 0000000..f0e8248 --- /dev/null +++ b/resulation/migrations/0001_initial.py @@ -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/')), + ], + ), + ] diff --git a/resulation/migrations/0002_remove_savepdf_minutes_file_and_more.py b/resulation/migrations/0002_remove_savepdf_minutes_file_and_more.py new file mode 100644 index 0000000..d31e0b2 --- /dev/null +++ b/resulation/migrations/0002_remove_savepdf_minutes_file_and_more.py @@ -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), + ), + ] diff --git a/resulation/migrations/0003_alter_savepdf_m_date_alter_savepdf_m_number.py b/resulation/migrations/0003_alter_savepdf_m_date_alter_savepdf_m_number.py new file mode 100644 index 0000000..bccfc76 --- /dev/null +++ b/resulation/migrations/0003_alter_savepdf_m_date_alter_savepdf_m_number.py @@ -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), + ), + ] diff --git a/resulation/migrations/0004_alter_savepdf_options_alter_savepdf_attendance_file_and_more.py b/resulation/migrations/0004_alter_savepdf_options_alter_savepdf_attendance_file_and_more.py new file mode 100644 index 0000000..485bf20 --- /dev/null +++ b/resulation/migrations/0004_alter_savepdf_options_alter_savepdf_attendance_file_and_more.py @@ -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), + ), + ] diff --git a/resulation/migrations/0005_alter_savepdf_attendance_file_and_more.py b/resulation/migrations/0005_alter_savepdf_attendance_file_and_more.py new file mode 100644 index 0000000..73d2070 --- /dev/null +++ b/resulation/migrations/0005_alter_savepdf_attendance_file_and_more.py @@ -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/'), + ), + ] diff --git a/resulation/migrations/0006_rename_savepdf_resulation.py b/resulation/migrations/0006_rename_savepdf_resulation.py new file mode 100644 index 0000000..d6b9135 --- /dev/null +++ b/resulation/migrations/0006_rename_savepdf_resulation.py @@ -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', + ), + ] diff --git a/resulation/migrations/__init__.py b/resulation/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/resulation/migrations/__pycache__/0001_initial.cpython-311.pyc b/resulation/migrations/__pycache__/0001_initial.cpython-311.pyc new file mode 100644 index 0000000..0902d2d Binary files /dev/null and b/resulation/migrations/__pycache__/0001_initial.cpython-311.pyc differ diff --git a/resulation/migrations/__pycache__/0002_remove_savepdf_minutes_file_and_more.cpython-311.pyc b/resulation/migrations/__pycache__/0002_remove_savepdf_minutes_file_and_more.cpython-311.pyc new file mode 100644 index 0000000..a2e88a2 Binary files /dev/null and b/resulation/migrations/__pycache__/0002_remove_savepdf_minutes_file_and_more.cpython-311.pyc differ diff --git a/resulation/migrations/__pycache__/0003_alter_savepdf_m_date_alter_savepdf_m_number.cpython-311.pyc b/resulation/migrations/__pycache__/0003_alter_savepdf_m_date_alter_savepdf_m_number.cpython-311.pyc new file mode 100644 index 0000000..64ebe98 Binary files /dev/null and b/resulation/migrations/__pycache__/0003_alter_savepdf_m_date_alter_savepdf_m_number.cpython-311.pyc differ diff --git a/resulation/migrations/__pycache__/0004_alter_savepdf_options_alter_savepdf_attendance_file_and_more.cpython-311.pyc b/resulation/migrations/__pycache__/0004_alter_savepdf_options_alter_savepdf_attendance_file_and_more.cpython-311.pyc new file mode 100644 index 0000000..10ef91b Binary files /dev/null and b/resulation/migrations/__pycache__/0004_alter_savepdf_options_alter_savepdf_attendance_file_and_more.cpython-311.pyc differ diff --git a/resulation/migrations/__pycache__/0005_alter_savepdf_attendance_file_and_more.cpython-311.pyc b/resulation/migrations/__pycache__/0005_alter_savepdf_attendance_file_and_more.cpython-311.pyc new file mode 100644 index 0000000..a1ce2c9 Binary files /dev/null and b/resulation/migrations/__pycache__/0005_alter_savepdf_attendance_file_and_more.cpython-311.pyc differ diff --git a/resulation/migrations/__pycache__/0006_rename_savepdf_resulation.cpython-311.pyc b/resulation/migrations/__pycache__/0006_rename_savepdf_resulation.cpython-311.pyc new file mode 100644 index 0000000..74bea73 Binary files /dev/null and b/resulation/migrations/__pycache__/0006_rename_savepdf_resulation.cpython-311.pyc differ diff --git a/resulation/migrations/__pycache__/__init__.cpython-311.pyc b/resulation/migrations/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000..670a0f6 Binary files /dev/null and b/resulation/migrations/__pycache__/__init__.cpython-311.pyc differ diff --git a/resulation/models.py b/resulation/models.py new file mode 100644 index 0000000..4f4d13c --- /dev/null +++ b/resulation/models.py @@ -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" + + + \ No newline at end of file diff --git a/resulation/static/SimpleBlog.css b/resulation/static/SimpleBlog.css new file mode 100644 index 0000000..5377af8 --- /dev/null +++ b/resulation/static/SimpleBlog.css @@ -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; } + + diff --git a/resulation/static/css/SimpleBlog.css b/resulation/static/css/SimpleBlog.css new file mode 100644 index 0000000..5377af8 --- /dev/null +++ b/resulation/static/css/SimpleBlog.css @@ -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; } + + diff --git a/resulation/static/css/header.css b/resulation/static/css/header.css new file mode 100644 index 0000000..2e78880 --- /dev/null +++ b/resulation/static/css/header.css @@ -0,0 +1,56 @@ + \ No newline at end of file diff --git a/resulation/static/images/icon.png.png b/resulation/static/images/icon.png.png new file mode 100644 index 0000000..b1108f9 Binary files /dev/null and b/resulation/static/images/icon.png.png differ diff --git a/resulation/tests.py b/resulation/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/resulation/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/resulation/urls.py b/resulation/urls.py new file mode 100644 index 0000000..c766548 --- /dev/null +++ b/resulation/urls.py @@ -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) \ No newline at end of file diff --git a/resulation/views.py b/resulation/views.py new file mode 100644 index 0000000..3bd1dbb --- /dev/null +++ b/resulation/views.py @@ -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') \ No newline at end of file diff --git a/static/SimpleBlog.css b/static/SimpleBlog.css new file mode 100644 index 0000000..5377af8 --- /dev/null +++ b/static/SimpleBlog.css @@ -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; } + + diff --git a/static/css/SimpleBlog.css b/static/css/SimpleBlog.css new file mode 100644 index 0000000..5377af8 --- /dev/null +++ b/static/css/SimpleBlog.css @@ -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; } + + diff --git a/static/css/home.css b/static/css/home.css new file mode 100644 index 0000000..a2f8c0d --- /dev/null +++ b/static/css/home.css @@ -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; + } +} \ No newline at end of file diff --git a/static/images/icon.png b/static/images/icon.png new file mode 100644 index 0000000..b1108f9 Binary files /dev/null and b/static/images/icon.png differ diff --git a/static/images/mis.ico b/static/images/mis.ico new file mode 100644 index 0000000..fa9e533 Binary files /dev/null and b/static/images/mis.ico differ diff --git a/templates/base.html b/templates/base.html new file mode 100644 index 0000000..9203049 --- /dev/null +++ b/templates/base.html @@ -0,0 +1,151 @@ +{% load static %} + + + + + MIS + + + + + + {% block content %} +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% endblock content %} + + \ No newline at end of file diff --git a/templates/resulation/contract.html b/templates/resulation/contract.html new file mode 100644 index 0000000..a3e8d66 --- /dev/null +++ b/templates/resulation/contract.html @@ -0,0 +1,58 @@ +{% extends "base.html" %} +{% block content %} +
+

Fillup the form and upload your Contract

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name of organization
Tropic
First Party
Second Party
Contract Date
End Date
Duration of Cotract
Upload Resulation
+
+
+
+
+
+{% endblock content %} \ No newline at end of file diff --git a/templates/resulation/home.html b/templates/resulation/home.html new file mode 100644 index 0000000..26c2f9d --- /dev/null +++ b/templates/resulation/home.html @@ -0,0 +1,128 @@ +{% extends "base.html" %} +{% block content %} +{% if message %} +
+ {{ message }} +
+{% endif %} + + +

Archiving and Timely Upload of Meeting Minutes, Deeds, and MoUs

+

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. +

+ +

Purpose:

+ + +
  • Facilitate on-demand availability of essential documents to all DGHS offices.
  • +
  • Promote transparency and accountability in document management.
  • +
  • Enhance operational efficiency by providing a centralized repository for document storage and retrieval.
  • + +

    Timely Upload:

    + +

    Designated personnel from each office should upload Meeting Minutes, Deeds, and MOUs immediately after finalization.

    + +

    Centralized Repository:

    + +

    All documents will be stored in a secure and centralized digital platform. +
    Access to this platform will be granted to all DGHS offices for uniform access.

    + +

    Search and Retrieval:

    + +

    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.

    + +

    Security and Confidentiality:

    + +

    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.

    + +

    Benefits:

    + +
  • Streamlined collaboration and communication across DGHS offices.
  • +
  • Reduced dependency on physical document storage and manual retrieval processes.
  • +
  • Ensured preservation of official records for future reference.
  • +
    + +

    Call to Action:

    +

    All offices under DGHS are encouraged to adopt this process and contribute to maintaining an updated and accessible document archive.

    +{% endblock content %} \ No newline at end of file diff --git a/templates/resulation/mou.html b/templates/resulation/mou.html new file mode 100644 index 0000000..8a15473 --- /dev/null +++ b/templates/resulation/mou.html @@ -0,0 +1,47 @@ +{% extends "base.html" %} +{% block content %} +
    +

    Fillup the form and upload MOU

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Name of organization
    Tropic/Subject
    First Party
    Second Party
    MoU Date
    Upload MoU
    +
    +
    +
    +
    +
    +{% endblock content %} \ No newline at end of file diff --git a/templates/resulation/resulation.html b/templates/resulation/resulation.html new file mode 100644 index 0000000..998e2c0 --- /dev/null +++ b/templates/resulation/resulation.html @@ -0,0 +1,250 @@ +{% extends "base.html" %} +{% block content %} +{% if message %} +
    + {{ message }} +
    +{% endif %} + +
    +

    Fill up the form and upload your resolutions

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Type of Upload
    Name of organization
    Topic
    Title of the Meeting
    Meeting Number
    Meeting Date
    Meeting Venue
    Upload attendance sheet + +
    Upload Resolution + +
    + {% csrf_token %} + +
    +
    +
    +{% endblock content %} \ No newline at end of file diff --git a/templates/resulation/viewresulation.html b/templates/resulation/viewresulation.html new file mode 100644 index 0000000..dad6d59 --- /dev/null +++ b/templates/resulation/viewresulation.html @@ -0,0 +1,138 @@ +{% extends "base.html" %} +{% block content %} + + +
    +
    +

    PDF Records

    + +
    + + {% if pdf_records %} + + + + + + + + + + + + + + + {% for record in pdf_records %} + + + + + + + + + + + {% endfor %} + +
    OrganizationTopicTitleMeeting NumberMeeting DateVenueAttendanceResolution
    {{ record.org_unit }}{{ record.topic }}{{ record.tittle }}{{ record.m_number }}{{ record.m_date|date:"d M Y" }}{{ record.m_venue }} + + Download + + + + Download + +
    + {% else %} +
    + No records found. +
    + {% endif %} +
    + + +{% endblock content %} \ No newline at end of file