Commit 45065abd authored by mantlei's avatar mantlei

merged master to calendar_app

parents 4a9db365 6def896d
......@@ -6,6 +6,9 @@ BS Computer Science CSCI 40-E
# in alphabetical order by last name
Amador, John Michael T. 206105
Andrada, Alvin Joshua M. 195478
Rodillas, Ron Lawrence C. 204364
Fausto, Brendan Gabrielle M. 202033
Paeldon, Marco Anton O. 193752
# project title;
Widget v1
......@@ -14,9 +17,10 @@ Widget v1
Amador - Assignments App
Andrada - Calendar App
Fausto - Dashboard App
Rodillas - Forum App
Paeldon- Announcements App
# date of submission;
4 March 2023
# a statement, in your group’s own words, that the project was truthfully completed by your group;
This project was accomplished truthfully only by the people whose names are listed above.
......@@ -32,4 +36,7 @@ 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
\ No newline at end of file
Alvin Joshua M. Andrada (sgd) March 2, 2023
Ron Lawrence C. Rodillas (sgd) March 5, 2023
Brendan Gabrielle M. Fausto (sgd) March 6, 2023
Marco Anton O. Paeldon (sgd) March 6, 2023
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)
from django.contrib import admin
from .models import ForumPost, Reply
# Register your models here.
class ForumPostAdmin(admin.ModelAdmin):
model = ForumPost
list_display = ('title', 'author', 'pub_datetime')
search_fields = ('title', 'author')
list_filter = ('pub_datetime',)
class ReplyAdmin(admin.ModelAdmin):
model = Reply
list_display = ('author', 'pub_datetime')
search_fields = ('author',)
list_filter = ('pub_datetime',)
admin.site.register(ForumPost, ForumPostAdmin)
admin.site.register(Reply, ReplyAdmin)
\ No newline at end of file
from django.apps import AppConfig
class ForumConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'forum'
# Generated by Django 4.1.7 on 2023-03-05 07:32
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='ForumPost',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=100)),
('body', models.TextField()),
('author', models.CharField(max_length=100)),
('pub_datetime', models.DateTimeField(auto_now_add=True)),
],
),
migrations.CreateModel(
name='Reply',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('body', models.TextField()),
('author', models.CharField(max_length=100)),
('pub_datetime', models.DateTimeField(auto_now_add=True)),
],
),
]
# Generated by Django 4.1.7 on 2023-03-05 11:48
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('forum', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='reply',
name='reply_to',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='forum.forumpost'),
preserve_default=False,
),
]
# Generated by Django 4.1.7 on 2023-03-06 06:08
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('forum', '0002_reply_reply_to'),
]
operations = [
migrations.RenameField(
model_name='reply',
old_name='reply_to',
new_name='forum_post',
),
]
from django.db import models
# Create your models here.
class ForumPost (models.Model):
title = models.CharField(max_length=100)
body = models.TextField()
author = models.CharField(max_length=100)
pub_datetime = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
def datetime_posted(self):
return self.pub_datetime.strftime('%m/%d/%Y, %I:%M %p')
class Reply (models.Model):
body = models.TextField()
author = models.CharField(max_length=100)
pub_datetime = models.DateTimeField(auto_now_add=True)
forum_post = models.ForeignKey(ForumPost, on_delete=models.CASCADE)
def datetime_posted(self):
return self.pub_datetime.strftime('%m/%d/%Y, %I:%M %p')
\ 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="forum"
\ No newline at end of file
from django.shortcuts import render
from django.http import HttpResponse
from .models import ForumPost, Reply
# Create your views here.
def index(request):
return_string = "Widget's Forums <br> <br> Forum Posts:<br>"
for i in ForumPost.objects.all():
return_string+=(
i.title + " by " + i.author + " posted " + i.datetime_posted() + ":<br>"
+ i.body + "<br>"
)
for n in Reply.objects.all():
if n.forum_post == i:
return_string+=(
"Reply by " + n.author + " posted " + n.datetime_posted() + ":<br>"
+ n.body + "<br>"
)
return_string+="<br>"
return HttpResponse(return_string)
\ No newline at end of file
......@@ -38,7 +38,10 @@ INSTALLED_APPS = [
'django.contrib.messages',
'django.contrib.staticfiles',
'calendar_app',
'forum',
'Assignments',
'dashboard',
'announcements',
]
MIDDLEWARE = [
......
......@@ -14,10 +14,15 @@ 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('calendar/', include('calendar_app.urls', namespace="calendar_app"))
path('forum/', include('forum.urls', namespace="forum")),
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