Commit cf35e2c8 authored by John Michael T. Amador's avatar John Michael T. Amador
parents cd52672a 86fc90f3
......@@ -6,6 +6,8 @@ BS Computer Science CSCI 40-E
# in alphabetical order by last name
Amador, John Michael T. 206105
Andrada, Alvin Joshua M. 195478
Fausto, Brendan Gabrielle M. 202033
Paeldon, Marco Anton O. 193752
# project title;
Widget v1
......@@ -14,6 +16,7 @@ Widget v1
Amador - Assignments App
Andrada - Calendar App
Fausto - Dashboard App
Paeldon- Announcements App
# date of submission;
4 March 2023
......@@ -27,3 +30,5 @@ This project was accomplished truthfully only by the people whose names are list
# members’ signatures in the form (sgd) your complete name, date
John Michael T. Amador (sgd) February 28, 2023
Alvin Joshua M. Andrada (sgd) March 2, 2023
Brendan Gabrielle M. Fausto (sgd) March 6, 2023
Marco Anton O. Paeldon (sgd) March 6, 2023
\ No newline at end of file
from django.contrib import admin
from .models import Announcement, Reaction
class AnnouncementAdmin(admin.ModelAdmin):
model = Announcement
list_display = ('title', 'body', 'author',)
class ReactionAdmin(admin.ModelAdmin):
model = Reaction
list_display = ('name', 'tally', 'announcement',)
admin.site.register(Announcement, AnnouncementAdmin)
admin.site.register(Reaction, ReactionAdmin)
\ No newline at end of file
from django.apps import AppConfig
class AnnouncementsConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'announcements'
# Generated by Django 4.1.7 on 2023-03-05 14:22
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('dashboard', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='Announcement',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=255, null=True)),
('body', models.TextField(null=True)),
('pub_datetime', models.DateTimeField(null=True)),
('author', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='dashboard.widgetuser')),
],
),
migrations.CreateModel(
name='Reaction',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255, null=True)),
('tally', models.IntegerField(null=True)),
('announcement', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='announcements.announcement')),
],
),
]
from django.db import models
from dashboard.models import WidgetUser
class Announcement(models.Model):
title = models.CharField(max_length=255, null=True)
body = models.TextField(null=True)
author = models.ForeignKey('dashboard.WidgetUser', on_delete=models.CASCADE, null=True)
pub_datetime = models.DateTimeField(null=True)
def __str__(self):
return f"{self.title}"
class Reaction(models.Model):
name = models.CharField(max_length=255, null=True)
tally = models.IntegerField(null=True)
announcement = models.ForeignKey(Announcement, on_delete=models.CASCADE, null=True)
def __str__(self):
return f"{self.name}"
\ No newline at end of file
from django.test import TestCase
# Create your tests here.
from django.urls import path
from .views import index
urlpatterns = [
path('', index, name='index'),
]
app_name = "announcements"
\ No newline at end of file
from django.shortcuts import render
from django.http import HttpResponse
from .models import Announcement, Reaction
import datetime
def index(request):
overall_board = "<html><title>Announcement Board</title><body>" \
"<h1> Widget's Announcement Board</h1>"
overall_board += "Announcements:"
for announcement in Announcement.objects.all():
overall_board += "<br>%s by " %announcement.title
overall_board += "%s " %announcement.author.first_name
overall_board += "%s published " %announcement.author.last_name
overall_board += "%s, " %announcement.pub_datetime.date().strftime("%m/%d/%Y")
overall_board += "%s<br>" %announcement.pub_datetime.time().strftime("%I:%M %p")
overall_board += "%s<br>" %announcement.body
for reaction in Reaction.objects.all():
if reaction.announcement == announcement:
overall_board += "%s: " %reaction.name
overall_board += "%i<br>" %reaction.tally
overall_board += "</body></html>"
return HttpResponse(overall_board)
\ No newline at end of file
from django.contrib import admin
from .models import Department, WidgetUser
class DepartmentAdmin(admin.ModelAdmin):
model = Department
search_fields = ('dept_name','home_unit',)
list_display = ('dept_name','home_unit',)
class WidgetUserAdmin(admin.ModelAdmin):
model = WidgetUser
search_fields = ('first_name','middle_name','last_name','department',)
list_display = ('first_name','middle_name','last_name','department',)
list_filter = ('department',)
admin.site.register(Department, DepartmentAdmin)
admin.site.register(WidgetUser, WidgetUserAdmin)
\ No newline at end of file
from django.apps import AppConfig
class DashboardConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'dashboard'
# Generated by Django 4.1.6 on 2023-03-05 03:39
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Department',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dept_name', models.CharField(max_length=255)),
('home_unit', models.CharField(max_length=255)),
],
),
migrations.CreateModel(
name='WidgetUser',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('first_name', models.CharField(max_length=255)),
('middle_name', models.CharField(max_length=255)),
('last_name', models.CharField(max_length=255)),
('department', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='dashboard.department')),
],
),
]
from django.db import models
class Department(models.Model):
dept_name = models.CharField(max_length=255)
home_unit = models.CharField(max_length=255)
class WidgetUser(models.Model):
first_name = models.CharField(max_length=255)
middle_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
department = models.ForeignKey('Department', on_delete=models.PROTECT)
@property
def dept_name(self):
return self.department.dept_name
@property
def home_unit(self):
return self.department.home_unit
def __str__(self):
return '{}, {} {}: {}, {}'.format(self.last_name, self.first_name, self.middle_name, self.dept_name, self.home_unit)
\ No newline at end of file
from django.test import TestCase
# Create your tests here.
# dashboard/urls.py
from django.urls import path
from .views import index
urlpatterns = [
path('', index, name='index'),
]
app_name = "dashboard"
\ No newline at end of file
from django.shortcuts import render
from django.http import HttpResponse
from .models import WidgetUser
# Create your views here.
def index(request):
return_string = '<body>Welcome to Widget!<br><br>WIDGET USERS:<br><ul>'
for user in WidgetUser.objects.all():
user_string = '<li>{}</li>'.format(user.__str__())
return_string += user_string
return_string += '</ul></body>'
html_string = '<html>{}</html>'.format(return_string)
return HttpResponse(html_string)
......@@ -38,6 +38,8 @@ INSTALLED_APPS = [
'django.contrib.messages',
'django.contrib.staticfiles',
'Assignments',
'dashboard',
'announcements',
]
MIDDLEWARE = [
......
......@@ -14,9 +14,11 @@ Including another URLconf
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, include
from django.urls import include, path
urlpatterns = [
path('Assignments/', include('Assignments.urls', namespace="Assignments")),
path('admin/', admin.site.urls),
path('dashboard/', include('dashboard.urls', namespace="dashboard")),
path('announcements/', include('announcements.urls', namespace="announcements")),
]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment