Commit 053dbebe authored by Jiuvi Anne Hu's avatar Jiuvi Anne Hu

pulled from master

parents a6302158 af93c29a
*.env
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (midterm_robo_mommy)" project-jdk-type="Python SDK" />
</project>
\ No newline at end of file
...@@ -3,6 +3,7 @@ CSCI 40 - E SOFTWARE TOOLS AND DEVELOPMENT FRAMEWORKS ...@@ -3,6 +3,7 @@ CSCI 40 - E SOFTWARE TOOLS AND DEVELOPMENT FRAMEWORKS
MEMBERS: MEMBERS:
Bomediano, Al Vincent E. 210924 Bomediano, Al Vincent E. 210924
Conanan, Raul Jarod C. 211591 Conanan, Raul Jarod C. 211591
Hu, Jiuvi Anne Marie Chrystine D. 202539
Hung, Cheska Elise O. 202550 Hung, Cheska Elise O. 202550
Santuyo, Lance Dominic B. 215335 Santuyo, Lance Dominic B. 215335
...@@ -17,10 +18,21 @@ Forum - RJ ...@@ -17,10 +18,21 @@ Forum - RJ
Assignments - LANCE Assignments - LANCE
Calendar - AL Calendar - AL
DATE_OF_SUBMISSION: **/**/** DATE_OF_SUBMISSION: 06/03/2023
GROUP_STATEMENT: GROUP_STATEMENT:
We do solemnly swear that everything here was completely and totally hontou ni done by us.
REFERENCES: REFERENCES:
https://stackoverflow.com/questions/26812805/django-convert-utc-to-local-time-zone-in-views
https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Home_page
https://docs.djangoproject.com/en/4.1/
SIGNATURES: SIGNATURES:
(sgd) Bomediano, Al Vincent E. 06/03/2023
(sgd) Conanan, Raul Jarod C. 06/03/2023
(sgd) Conanan, Raul Jarod C. 06/03/2023
(sgd) Hu, Jiuvi Anne Marie Chrystine D. 06/03/2023
(sgd) Santuyo, Lance Dominic B. 06/03/2023
from django.contrib import admin from django.contrib import admin
from .models import Assignment, Course from .models import Assignment, Course
class AssignmentAdmin(admin.ModelAdmin): class AssignmentAdmin(admin.ModelAdmin):
model = Assignment model = Assignment
class CourseAdmin(admin.ModelAdmin): class CourseAdmin(admin.ModelAdmin):
model = Course model = Course
admin.site.register(Assignment, AssignmentAdmin) admin.site.register(Assignment, AssignmentAdmin)
admin.site.register(Course, CourseAdmin) admin.site.register(Course, CourseAdmin)
from django.db import models from django.db import models
class Course(models.Model): class Course(models.Model):
code = models.CharField(max_length=10, blank=True, null=True) code = models.CharField(max_length=10, blank=True, null=True)
title = models.CharField(max_length=255, blank=True, null=True) title = models.CharField(max_length=255, blank=True, null=True)
section = models.CharField(max_length=3, blank=True, null=True) section = models.CharField(max_length=3, blank=True, null=True)
class Assignment(models.Model): class Assignment(models.Model):
name = models.CharField(max_length=255, blank=True, null=True) name = models.CharField(max_length=255, blank=True, null=True)
description = models.TextField(blank=True, null=True) description = models.TextField(blank=True, null=True)
......
from django.shortcuts import render
from django.http import HttpResponse from django.http import HttpResponse
from .models import Assignment, Course from .models import Assignment
import os
def index(request): def index(request):
......
...@@ -6,7 +6,7 @@ from django.utils import timezone ...@@ -6,7 +6,7 @@ from django.utils import timezone
def convert_to_localtime(utctime): def convert_to_localtime(utctime):
format = '%d/%m/%Y %H:%M' format = '%d/%m/%Y %I:%M %p'
utc = utctime.replace(tzinfo=pytz.UTC) utc = utctime.replace(tzinfo=pytz.UTC)
localtz = utc.astimezone(timezone.get_current_timezone()) localtz = utc.astimezone(timezone.get_current_timezone())
return localtz.strftime(format) return localtz.strftime(format)
...@@ -19,12 +19,13 @@ def index(request): ...@@ -19,12 +19,13 @@ def index(request):
html_string_2 = "" html_string_2 = ""
for announced in Announcement.objects.all(): for announced in Announcement.objects.all():
html_string_2 += "{} by {} {} published {}:\ html_string_2 += "{} by {} {} published {}:<br />\
{}".format(announced.title, announced.author.first_name, {}<br/>".format(announced.title, announced.author.first_name,
announced.author.last_name, announced.author.last_name,
convert_to_localtime(announced.pub_datetime), announced.body) convert_to_localtime(announced.pub_datetime), announced.body)
for reacts in announced.reaction.all(): for reacts in announced.reaction_set.all():
html_string_2 += "{}: {}".format(reacts.name, reacts.tally) html_string_2 += "{}: {}<br/>".format(reacts.name, reacts.tally)
html_string_2 += '<br/>'
html_string_final = html_string_1 + html_string_2 + "</html>" html_string_final = html_string_1 + html_string_2 + "</html>"
......
# Generated by Django 3.2 on 2023-03-06 09:21
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('forum', '0002_auto_20230304_2337'),
]
operations = [
migrations.RenameField(
model_name='reply',
old_name='forumpost',
new_name='forum_post',
),
]
...@@ -11,7 +11,7 @@ class ForumPost(models.Model): ...@@ -11,7 +11,7 @@ class ForumPost(models.Model):
class Reply(models.Model): class Reply(models.Model):
forumpost = models.ForeignKey(ForumPost, related_name='reply', on_delete=models.CASCADE, null=True) forum_post = models.ForeignKey(ForumPost, related_name='reply', on_delete=models.CASCADE, null=True)
body = models.TextField(blank=True, null=True) body = models.TextField(blank=True, null=True)
author = models.ForeignKey(WidgetUser, on_delete=models.CASCADE, null=True) author = models.ForeignKey(WidgetUser, on_delete=models.CASCADE, null=True)
pub_datetime = models.DateTimeField(auto_now_add=True) pub_datetime = models.DateTimeField(auto_now_add=True)
...@@ -4,10 +4,9 @@ from .models import ForumPost ...@@ -4,10 +4,9 @@ from .models import ForumPost
import pytz import pytz
from django.utils import timezone from django.utils import timezone
# helper function to convert utc datetime object to local time # helper function to convert utc datetime object to local time
def convert_utc_to_local(utctime): def convert_utc_to_local(utctime, format):
datetime_format = '%d/%m/%Y %H:%M' datetime_format = format
utc = utctime.replace(tzinfo=pytz.UTC) utc = utctime.replace(tzinfo=pytz.UTC)
localtz = utc.astimezone(timezone.get_current_timezone()) localtz = utc.astimezone(timezone.get_current_timezone())
return localtz.strftime(datetime_format) return localtz.strftime(datetime_format)
...@@ -23,12 +22,15 @@ def forum_post_list_view(request): ...@@ -23,12 +22,15 @@ def forum_post_list_view(request):
' posted <b>{}</b><p>{}</p><ul>'.format(fp.title, ' posted <b>{}</b><p>{}</p><ul>'.format(fp.title,
fp.author.first_name, fp.author.first_name,
fp.author.last_name, fp.author.last_name,
convert_utc_to_local(fp.pub_datetime), fp.body) convert_utc_to_local(fp.pub_datetime,
'%d/%m/%Y %I:%M %p'),
fp.body)
for replies in fp.reply.all(): for replies in fp.reply.all():
html_string_2 += '<li> Reply by <b>{} {}</b> ' \ html_string_2 += '<li> Reply by <b>{} {}</b> ' \
'posted <b>{}</b><p>{}</p></li>'.format(replies.author.first_name, 'posted <b>{}</b><p>{}</p></li>'.format(replies.author.first_name,
replies.author.last_name, replies.author.last_name,
convert_utc_to_local(replies.pub_datetime), convert_utc_to_local(replies.pub_datetime,
'%d/%m/%Y %I:%M %p'),
replies.body) replies.body)
html_string_2 += '</ul></li>' html_string_2 += '</ul></li>'
html_string_final = html_string_1 + html_string_2 + '</ul></html>' html_string_final = html_string_1 + html_string_2 + '</ul></html>'
......
Basgiref==3.6.0 Basgiref==3.6.0
SECRET_KEY = 'django-insecure-t*s#_++5=ze%3#*ns6vcmt8a5bw6249en-!ek7*#3=p-dkhl_f'
\ No newline at end of file
from django.contrib import admin
from .models import Location, Event
class LocationAdmin(admin.ModelAdmin):
model = Location
class EventAdmin(admin.ModelAdmin):
model = Event
admin.site.register(Location, LocationAdmin)
admin.site.register(Event, EventAdmin)
from django.apps import AppConfig
class WidgetCalendarConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'widget_Calendar'
# Generated by Django 4.1.7 on 2023-03-05 14:22
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='IndexCard',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100)),
('section', models.CharField(max_length=5)),
('age', models.IntegerField()),
],
),
]
# Generated by Django 4.1.7 on 2023-03-05 16:24
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('widget_Calendar', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='Event',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('target_datetime', models.CharField(max_length=20)),
('activity', models.CharField(max_length=100)),
('estimated_hours', models.FloatField()),
('course', models.CharField(max_length=20)),
],
),
migrations.CreateModel(
name='Location',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('mode', models.CharField(choices=[('onsite', 'Onsite'), ('online', 'Online'), ('hybrid', 'Hybrid')], max_length=6)),
('venue', models.CharField(max_length=100)),
],
),
migrations.DeleteModel(
name='IndexCard',
),
migrations.AddField(
model_name='event',
name='location',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='widget_Calendar.location'),
),
]
# Generated by Django 3.2 on 2023-03-06 08:23
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('Assignments', '0002_alter_assignment_course'),
('widget_Calendar', '0002_event_location_delete_indexcard_event_location'),
]
operations = [
migrations.AlterField(
model_name='event',
name='course',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='event', to='Assignments.course'),
),
]
# Generated by Django 3.2 on 2023-03-06 08:37
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('widget_Calendar', '0003_alter_event_course'),
]
operations = [
migrations.AlterField(
model_name='event',
name='target_datetime',
field=models.DateTimeField(),
),
]
from django.db import models
from Assignments.models import Course
MODE_TYPES = (
('onsite', 'Onsite'),
('online', 'Online'),
('hybrid', 'Hybrid'),
)
class Location(models.Model):
mode = models.CharField(max_length=6, choices=MODE_TYPES)
venue = models.CharField(max_length=100)
def __str__(self):
return 'Mode: {} || Venue: {}'.format(self.mode, self.venue)
class Event(models.Model):
target_datetime = models.DateTimeField()
activity = models.CharField(max_length=100)
estimated_hours = models.FloatField()
location = models.ForeignKey(
Location,
on_delete=models.CASCADE
)
course = models.ForeignKey(Course, related_name='event', on_delete=models.CASCADE, null=True)
def __str__(self):
return '{} on {}'.format(self.activity, self.target_datetime)
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 = "widget_Calendar"
from .models import Event, Location
from django.http import HttpResponse
from forum.views import convert_utc_to_local
def index(request):
html_string = 'robo_mommy’s Calendar of Activities<br>'
for eventItem in Event.objects.all():
html_string += '''
<br>
Date and Time: {}<br>
Activity: {}<br>
Estimated Hours: {}<br>
Course/Section: {}<br>
Mode: {}<br>
Venue: {}<br><br>
'''.format(
convert_utc_to_local(eventItem.target_datetime, '%d/%m/%Y|%I:%M %p'),
eventItem.activity,
eventItem.estimated_hours,
eventItem.course.code,
eventItem.location.mode,
eventItem.location.venue,
)
return HttpResponse(html_string)
...@@ -26,7 +26,7 @@ BASE_DIR = Path(__file__).resolve().parent.parent ...@@ -26,7 +26,7 @@ BASE_DIR = Path(__file__).resolve().parent.parent
# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/ # See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret! # SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-t*s#_++5=ze%3#*ns6vcmt8a5bw6249en-!ek7*#3=p-dkhl_f' SECRET_KEY = os.getenv('SECRET_KEY')
# SECURITY WARNING: don't run with debug turned on in production! # SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True DEBUG = True
...@@ -47,6 +47,8 @@ INSTALLED_APPS = [ ...@@ -47,6 +47,8 @@ INSTALLED_APPS = [
'django.contrib.sessions', 'django.contrib.sessions',
'django.contrib.messages', 'django.contrib.messages',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'widget_Calendar',
'tz_detect',
] ]
MIDDLEWARE = [ MIDDLEWARE = [
......
...@@ -15,10 +15,11 @@ Including another URLconf ...@@ -15,10 +15,11 @@ Including another URLconf
""" """
from django.contrib import admin from django.contrib import admin
from django.urls import include, path from django.urls import include, path
from django.urls import path, include
urlpatterns = [ urlpatterns = [
path('announcements/', include('announcements.urls', namespace="announcements")), path('announcements/', include('announcements.urls', namespace="announcements")),
path('widget_Calendar/', include('widget_Calendar.urls', namespace="widget_Calendar")),
path('admin/', admin.site.urls), path('admin/', admin.site.urls),
path('Assignments/', include('Assignments.urls', namespace="Assignments")), path('Assignments/', include('Assignments.urls', namespace="Assignments")),
path('', include(('forum.urls', 'forum'), namespace='forum')), path('', include(('forum.urls', 'forum'), 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