Commit 558ff1db authored by Star Neptune R. Sy's avatar Star Neptune R. Sy

Merge commit '7ad0b235' into fixingdata2

parents 74922286 7ad0b235
# Generated by Django 3.2 on 2023-03-05 07:28
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('dashboard', '0001_initial'),
('announcementBoard', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='announcement',
name='author',
field=models.ForeignKey(default=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='announcements', to='dashboard.widgetuser'),
),
migrations.AlterField(
model_name='reaction',
name='annoucement',
field=models.ForeignKey(default=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='reactions', to='announcementBoard.announcement'),
),
migrations.AlterField(
model_name='reaction',
name='name',
field=models.CharField(choices=[('Like', 'Like'), ('Love', 'Love'), ('Angry', 'Angry')], default='Like', max_length=5),
),
migrations.AlterField(
model_name='reaction',
name='tally',
field=models.PositiveIntegerField(default=0),
),
]
# Generated by Django 3.2 on 2023-03-05 09:46
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('dashboard', '0001_initial'),
('announcementBoard', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='announcement',
name='author',
field=models.ForeignKey(default=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='announcements', to='dashboard.widgetuser'),
),
migrations.AlterField(
model_name='reaction',
name='annoucement',
field=models.ForeignKey(default=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='reactions', to='announcementBoard.announcement'),
),
migrations.AlterField(
model_name='reaction',
name='name',
field=models.CharField(choices=[('Like', 'Like'), ('Love', 'Love'), ('Angry', 'Angry')], default='Like', max_length=5),
),
migrations.AlterField(
model_name='reaction',
name='tally',
field=models.PositiveIntegerField(default=0),
),
]
from django.urls import path
from .views import index
urlpatterns = [
path('', index, name='index'),
]
app_name = "announcementBoard"
\ No newline at end of file
from django.shortcuts import render
from django.http import HttpResponse
from .models import Announcement
from dashboard.models import WidgetUser
def index(request):
head = "<h1 style='border-bottom:4px solid lightgray;\
padding-bottom:30px;\
font-size:450%;'>\
Widget's Announcement Board\
</h1>"
body = "<h2>Announcements:</h2>"
for x in Announcement.objects.all():
reaction = x.reactions.all()
body += "<p style='border: 2px solid gray;\
border-radius:5px;\
padding:20px 30px;'>\
{} by {} {} published {}:\
<br>\
{}\
</p>".format(x.title, x.author.first_name, x.author.last_name,
x.format_pub_datetime(), x.body)
for y in reaction:
body += "<p>{}: {}\
</p>".format(y.name, y.tally)
body += '<p>&nbsp;</p>'
return_string = "<html>\
<body style = 'font-family:helvetica;\
padding:30px;'>\
{}{}\
</body></html>".format(head, body)
return HttpResponse(return_string)
......@@ -23,9 +23,9 @@ class AnnouncementAdmin(admin.ModelAdmin):
class ReactionAdmin(admin.ModelAdmin):
model = Reaction
list_display = ('name', 'tally', 'annoucement')
search_fields = ('name', 'annoucement')
list_filter = ('name', 'annoucement')
list_display = ('name', 'tally', 'announcement')
search_fields = ('name', 'announcement')
list_filter = ('name', 'announcement')
admin.site.register(Announcement, AnnouncementAdmin)
......
......@@ -3,4 +3,4 @@ from django.apps import AppConfig
class AnnouncementboardConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'announcementBoard'
name = 'announcements'
# Generated by Django 3.2 on 2023-03-04 07:17
# Generated by Django 3.2 on 2023-05-11 07:09
from django.db import migrations, models
import django.db.models.deletion
......@@ -20,16 +20,16 @@ class Migration(migrations.Migration):
('title', models.CharField(default='', max_length=250)),
('body', models.TextField(blank=True, null=True)),
('pub_datetime', models.DateTimeField(auto_now_add=True)),
('author', models.ForeignKey(default=True, null=True, on_delete=django.db.models.deletion.SET_DEFAULT, to='dashboard.widgetuser')),
('author', models.ForeignKey(default=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='announcements', 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=10)),
('tally', models.IntegerField(default=0)),
('annoucement', models.ForeignKey(default=True, null=True, on_delete=django.db.models.deletion.SET_DEFAULT, to='announcementBoard.announcement')),
('name', models.CharField(choices=[('Like', 'Like'), ('Love', 'Love'), ('Angry', 'Angry')], default='Like', max_length=5)),
('tally', models.PositiveIntegerField(default=0)),
('announcement', models.ForeignKey(default=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='reactions', to='announcements.announcement')),
],
),
]
from django.db import models
from dashboard.models import WidgetUser
from django.urls import reverse
class Announcement(models.Model):
......@@ -12,20 +13,23 @@ class Announcement(models.Model):
on_delete=models.CASCADE,
related_name='announcements',
)
pub_datetime = models.DateTimeField(auto_now_add=True)
pub_datetime = models.DateTimeField(auto_now_add=True, editable=False)
def __str__(self):
return self.title
def format_pub_datetime(self):
return self.pub_datetime.strftime('%m/%d/%Y, %I:%M %p')
def get_absolute_url(self):
return reverse('announcements:announcements-detail', kwargs={'pk': self.pk})
class Reaction(models.Model):
name = models.CharField(max_length=5, choices=[('Like', 'Like'),
('Love', 'Love'),
('Angry', 'Angry')], default='Like')
tally = models.PositiveIntegerField(default=0)
annoucement = models.ForeignKey(
announcement = models.ForeignKey(
Announcement,
null=True,
default=True,
......
{% extends 'base.html' %}
{% load static %}
{% block title %} Add Announcement {% endblock %}
{% block heading %}
<h1 class="subheader"> Add a new announcement: </h1>
{% endblock %}
{% block content %}
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<div class="separator-bar"></div>
<input class="action-button" type="submit" value="Add Announcement">
</form>
{% endblock %}
{% extends 'base.html' %}
{% load static %}
{% block title %} {{ object.title }} {% endblock %}
{% block heading %}
<h1> {{ object.title }} </h1>
<h2> by {{ object.author.first_name }} {{ object.author.last_name }} </h2>
<h4> {{ object.format_pub_datetime }} </h4>
<p class="detail-body"> {{ object.body }} </p>
<div class="separator-bar"></div>
{% for reaction in object.reactions.all %}
<p class="detail-additionalinfo">
{{ reaction.name }}: {{ reaction.tally }}
</p>
{% endfor %}
<div class="separator-bar"></div>
<button class="action-button" onclick="window.location.href='{% url 'announcements:announcements-edit' pk=object.pk %}'">
Edit Announcement
</button>
{% endblock %}
\ No newline at end of file
{% extends 'base.html' %}
{% load static %}
{% block title %} Edit Anouncement {% endblock %}
{% block heading %}
<h1 class="subheader"> Edit Announcement: </h1>
{% endblock %}
{% block content %}
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<br>
<div class="separator-bar"></div>
<input class="action-button" type="submit" value="Save Changes to Announcement">
</form>
{% endblock %}
{% extends 'base.html' %}
{% load static %}
{% block title %} Widget's Announcement Board {% endblock %}
{% block heading %}
<h1 id="header"> Welcome to Widget's Announcement Board! </h1>
{% endblock %}
{% block content %}
<h2 class="subheader"> Announcements: </h2>
<ul>
{% for object in announcements|dictsortreversed:"pub_datetime" %}
<li class="object-cell">
<a href="{{ object.get_absolute_url }}"> <span class="object-title">{{ object.title }}</span> by
{{ object.author.first_name}} {{ object.author.last_name }}
</a>
</li>
{% endfor %}
</ul>
<hr>
<button onclick="window.location.href='{% url 'announcements:announcements-add' %}'" class="action-button">
New Announcement
</button>
<div id="footer">
<a href="{% url 'dashboard:index' %}">Dashboard</a>
<a href="{% url 'forum:index' %}">Forum</a>
<a href="{% url 'assignments:homePage' %}">Assignments</a>
<a href="{% url 'widget_calendar:index' %}">Calendar</a>
</div>
{% endblock %}
from django.urls import path
from .views import index, AnnouncementsDetailView, AnnouncementsCreateView, AnnouncementsUpdateView
urlpatterns = [
path('', index, name='index'),
path('announcements/<int:pk>/details', AnnouncementsDetailView.as_view(), name='announcements-detail'),
path('announcements/add', AnnouncementsCreateView.as_view(), name = 'announcements-add'),
path('announcements/<int:pk>/edit', AnnouncementsUpdateView.as_view(), name = 'announcements-edit')
]
app_name = "announcements"
\ No newline at end of file
from django.shortcuts import render
from django.http import HttpResponse
from .models import Announcement
from django.views.generic.detail import DetailView
from django.views.generic.edit import CreateView, UpdateView
from dashboard.models import WidgetUser
def index(request):
announcements = Announcement.objects.all()
return render(request, 'announcements/announcements.html', {'announcements':announcements})
class AnnouncementsDetailView(DetailView):
model = Announcement
template_name = 'announcements/announcement-details.html'
class AnnouncementsCreateView(CreateView):
model = Announcement
template_name = 'announcements/announcement-add.html'
fields = ["title", "body", "author"]
class AnnouncementsUpdateView(UpdateView):
model = Announcement
template_name = 'announcements/announcement-edit.html'
fields = '__all__'
\ No newline at end of file
......@@ -9,17 +9,17 @@ class AssignmentInline(admin.StackedInline):
class AssignmentAdmin(admin.ModelAdmin):
model = Assignment
list_display = ('assignment_name', 'section')
list_display = ('assignment_name', 'course',)
search_fields = ('course',)
list_filter = ('section', 'perfect_score', 'passing_score')
list_filter = ('course', 'perfect_score', 'passing_score')
class CourseAdmin(admin.ModelAdmin):
model = Course
list_display = ('course_code', 'course_title',)
search_fields = ('course_code', 'course_title',)
list_filter = ('course_code', 'course_title',)
list_display = ('course_code', 'course_title','section',)
search_fields = ('course_code', 'course_title','section',)
list_filter = ('course_code', 'course_title','section',)
admin.site.register(Course, CourseAdmin)
......
# Generated by Django 3.2 on 2023-05-12 05:26
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('assignments', '0004_alter_assignment_assignment_name'),
]
operations = [
migrations.AddField(
model_name='assignment',
name='courseDropDown',
field=models.CharField(default='', max_length=100),
),
]
# Generated by Django 3.2 on 2023-05-12 05:33
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('assignments', '0005_assignment_coursedropdown'),
]
operations = [
migrations.AlterField(
model_name='assignment',
name='courseDropDown',
field=models.CharField(blank=True, default='', max_length=100, unique=True),
),
]
# Generated by Django 3.2 on 2023-05-12 06:28
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('assignments', '0006_alter_assignment_coursedropdown'),
]
operations = [
migrations.RemoveField(
model_name='assignment',
name='section',
),
migrations.AddField(
model_name='course',
name='section',
field=models.CharField(default='', max_length=16),
),
]
# Generated by Django 3.2 on 2023-03-05 11:15
# Generated by Django 3.2 on 2023-05-12 06:43
from django.db import migrations
......@@ -6,9 +6,12 @@ from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('announcementBoard', '0002_auto_20230305_1528'),
('announcementBoard', '0002_auto_20230305_1746'),
('assignments', '0007_auto_20230512_1428'),
]
operations = [
migrations.RemoveField(
model_name='assignment',
name='courseDropDown',
),
]
......@@ -4,8 +4,12 @@ from django.db import models
class Course(models.Model):
course_code = models.CharField(unique=True, default="", max_length=10,)
course_title = models.CharField(unique=True, default="", max_length=50,)
section = models.CharField(default="",max_length=16,)
def __str__(self):
return '{} - {}'.format(self.course_code, self.section,)
def anotherFormat(self):
return '{} {}'.format(self.course_code, self.course_title,)
......@@ -14,7 +18,6 @@ class Assignment(models.Model):
description = models.TextField(default="")
perfect_score = models.IntegerField(default=100)
passing_score = models.IntegerField(default=80)
section = models.CharField(max_length=16,)
course = models.ForeignKey(
Course,
on_delete=models.CASCADE,
......@@ -22,11 +25,13 @@ class Assignment(models.Model):
)
def __str__(self):
return '{} {}-'.format(self.assignment_name, self.section,)
return '{} {}-'.format(self.assignment_name, self.course.section,)
def get_absolute_url(self):
return '{}'.format(self.pk)
def save(self, *args, **kwargs):
self.passing_score = self.perfect_score*0.6
super(Assignment, self).save(*args, **kwargs)
......@@ -8,7 +8,7 @@
{% block heading %} <h1 class="pageTitle"> {{object.assignment_name}} </h1> {% endblock %}
{% block content %}
<h2> {{object.course}} - {{object.section}} </h2>
<h2> {{object.course.anotherFormat}} - {{object.course.section}} </h2>
<p> <b>Description:</b> {{object.description}} <br>
<b>Perfect Score:</b> {{object.perfect_score}} <br>
<b>Passing Score:</b> {{object.passing_score}} <br>
......
......@@ -18,7 +18,7 @@
{% block navigation %}
<button class="buttonLink" onclick="window.location.href='add/';"> <b>New Assignment</b> </button><br><br>
<a class="miniLink" href="/dashboard"> Dashboard </a> <br>
<a class="miniLink" href="/announcementBoard"> Announcements </a> <br>
<a class="miniLink" href="/announcements"> Announcements </a> <br>
<a class="miniLink" href="/forum"> Forum </a> <br>
<a class="miniLink" href="/widget_calendar"> Calendar </a> <br>
{% endblock %}
\ No newline at end of file
......@@ -29,7 +29,7 @@
</button>
</div>
<div id="footer">
<a href="{% url 'announcementBoard:index' %}">Announcement Board</a>
<a href="{% url 'announcements:index' %}">Announcement Board</a>
<a href="{% url 'forum:index' %}">Forum</a>
<a href="{% url 'assignments:homePage' %}">Assignments</a>
<a href="{% url 'widget_calendar:index' %}">Calendar</a>
......
# Generated by Django 3.2 on 2023-05-12 05:00
import datetime
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('forum', '0002_reply_post'),
]
operations = [
migrations.AlterField(
model_name='forumpost',
name='pub_datetime',
field=models.DateTimeField(default=datetime.datetime(2023, 5, 12, 13, 0, 44, 600788), editable=False),
),
migrations.AlterField(
model_name='reply',
name='post',
field=models.ForeignKey(default=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='replies', to='forum.forumpost'),
),
]
# Generated by Django 3.2 on 2023-05-12 05:16
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('forum', '0003_auto_20230512_1300'),
]
operations = [
migrations.AlterField(
model_name='forumpost',
name='pub_datetime',
field=models.DateTimeField(default=datetime.datetime(2023, 5, 12, 13, 16, 35, 558089), editable=False),
),
]
# Generated by Django 3.2 on 2023-05-12 05:26
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('forum', '0004_alter_forumpost_pub_datetime'),
]
operations = [
migrations.AlterField(
model_name='forumpost',
name='pub_datetime',
field=models.DateTimeField(default=datetime.datetime(2023, 5, 12, 13, 26, 27, 568329), editable=False),
),
]
# Generated by Django 3.2 on 2023-05-12 05:33
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('forum', '0005_alter_forumpost_pub_datetime'),
]
operations = [
migrations.AlterField(
model_name='forumpost',
name='pub_datetime',
field=models.DateTimeField(default=datetime.datetime(2023, 5, 12, 13, 33, 51, 594255), editable=False),
),
]
# Generated by Django 3.2 on 2023-05-12 06:28
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('forum', '0006_alter_forumpost_pub_datetime'),
]
operations = [
migrations.AlterField(
model_name='forumpost',
name='pub_datetime',
field=models.DateTimeField(default=datetime.datetime(2023, 5, 12, 14, 28, 15, 198274), editable=False),
),
]
# Generated by Django 3.2 on 2023-05-12 06:43
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('forum', '0007_alter_forumpost_pub_datetime'),
]
operations = [
migrations.AlterField(
model_name='forumpost',
name='pub_datetime',
field=models.DateTimeField(default=datetime.datetime(2023, 5, 12, 14, 43, 53, 323691), editable=False),
),
]
# Generated by Django 3.2 on 2023-05-12 06:46
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('forum', '0008_alter_forumpost_pub_datetime'),
]
operations = [
migrations.AlterField(
model_name='forumpost',
name='pub_datetime',
field=models.DateTimeField(default=datetime.datetime(2023, 5, 12, 14, 46, 44, 130987), editable=False),
),
]
......@@ -21,7 +21,7 @@
<button onclick="window.location.href='{% url 'forum:forumpost-add' %}';" class="action-button"> New Post </button>
<div id="footer">
<a href="{% url 'dashboard:index' %}">Dashboard</a>
<a href="{% url 'announcementBoard:index' %}">Announcements</a>
<a href="{% url 'announcements:index' %}">Announcements</a>
<a href="{% url 'assignments:homePage' %}">Assignments</a>
<a href="{% url 'widget_calendar:index' %}">Calendar</a>
</div>
......
# Generated by Django 3.2 on 2023-05-12 05:00
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('widget_calendar', '0008_alter_event_target_datetime'),
]
operations = [
migrations.AlterField(
model_name='event',
name='target_datetime',
field=models.DateTimeField(default=datetime.datetime(2023, 5, 12, 13, 0, 44, 602793)),
),
]
# Generated by Django 3.2 on 2023-05-12 05:16
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('widget_calendar', '0009_alter_event_target_datetime'),
]
operations = [
migrations.AlterField(
model_name='event',
name='target_datetime',
field=models.DateTimeField(default=datetime.datetime(2023, 5, 12, 13, 16, 35, 560192)),
),
]
# Generated by Django 3.2 on 2023-05-12 05:26
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('widget_calendar', '0010_alter_event_target_datetime'),
]
operations = [
migrations.AlterField(
model_name='event',
name='target_datetime',
field=models.DateTimeField(default=datetime.datetime(2023, 5, 12, 13, 26, 27, 570448)),
),
]
# Generated by Django 3.2 on 2023-05-12 05:33
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('widget_calendar', '0011_alter_event_target_datetime'),
]
operations = [
migrations.AlterField(
model_name='event',
name='target_datetime',
field=models.DateTimeField(default=datetime.datetime(2023, 5, 12, 13, 33, 51, 596255)),
),
]
# Generated by Django 3.2 on 2023-05-12 06:28
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('widget_calendar', '0012_alter_event_target_datetime'),
]
operations = [
migrations.AlterField(
model_name='event',
name='target_datetime',
field=models.DateTimeField(default=datetime.datetime(2023, 5, 12, 14, 28, 15, 200372)),
),
]
# Generated by Django 3.2 on 2023-05-12 06:43
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('widget_calendar', '0013_alter_event_target_datetime'),
]
operations = [
migrations.AlterField(
model_name='event',
name='target_datetime',
field=models.DateTimeField(default=datetime.datetime(2023, 5, 12, 14, 43, 53, 325690)),
),
]
# Generated by Django 3.2 on 2023-05-12 06:46
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('widget_calendar', '0014_alter_event_target_datetime'),
]
operations = [
migrations.AlterField(
model_name='event',
name='target_datetime',
field=models.DateTimeField(default=datetime.datetime(2023, 5, 12, 14, 46, 44, 132978)),
),
]
......@@ -43,7 +43,7 @@ INSTALLED_APPS = [
'django.contrib.staticfiles',
'dashboard',
'assignments',
'announcementBoard',
'announcements',
'forum',
'widget_calendar',
]
......
......@@ -21,6 +21,6 @@ urlpatterns = [
path('', include('dashboard.urls', namespace="dashboard")),
path('calendar/', include('widget_calendar.urls', namespace="widget_calendar")),
path('assignments/', include('assignments.urls', namespace="assignments")),
path('announcementBoard/', include('announcementBoard.urls', namespace="announcementBoard")),
path('announcements/', include('announcements.urls', namespace="announcements")),
path('forum/', include('forum.urls', namespace="forum")),
]
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