Skip to content

Commit

Permalink
Merge 6a3c3fb into 41a3e09
Browse files Browse the repository at this point in the history
  • Loading branch information
alanzhu0 committed Mar 26, 2024
2 parents 41a3e09 + 6a3c3fb commit 6c16d97
Show file tree
Hide file tree
Showing 48 changed files with 1,074 additions and 99 deletions.
6 changes: 2 additions & 4 deletions Ion.egg-info/PKG-INFO
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,18 @@ Classifier: Framework :: Django :: 3.2
License-File: COPYING
Requires-Dist: argon2-cffi==21.3.0
Requires-Dist: autobahn==22.7.1
Requires-Dist: autopep8==1.7.0
Requires-Dist: Babel==2.10.3
Requires-Dist: bcrypt==4.0.0
Requires-Dist: beautifulsoup4==4.11.1
Requires-Dist: black==23.1.0
Requires-Dist: bleach==5.0.1
Requires-Dist: celery==5.2.7
Requires-Dist: certifi==2023.7.22
Requires-Dist: channels==3.0.5
Requires-Dist: channels-redis==3.4.1
Requires-Dist: contextlib2==21.6.0
Requires-Dist: cryptography==41.0.4
Requires-Dist: cryptography==42.0.4
Requires-Dist: decorator==5.1.1
Requires-Dist: Django==3.2.20
Requires-Dist: Django==3.2.25
Requires-Dist: django-cacheops==7.0.1
Requires-Dist: django-cors-headers==3.13.0
Requires-Dist: django-debug-toolbar==3.6.0
Expand Down
11 changes: 11 additions & 0 deletions Ion.egg-info/SOURCES.txt
Original file line number Diff line number Diff line change
Expand Up @@ -455,6 +455,8 @@ intranet/apps/enrichment/views.py
intranet/apps/enrichment/migrations/0001_initial.py
intranet/apps/enrichment/migrations/0002_alter_enrichmentactivity_options.py
intranet/apps/enrichment/migrations/0003_auto_20240307_2313.py
intranet/apps/enrichment/migrations/0004_enrichmentactivity_attended.py
intranet/apps/enrichment/migrations/0005_enrichmentactivity_attendance_taken.py
intranet/apps/enrichment/migrations/__init__.py
intranet/apps/error/__init__.py
intranet/apps/error/tests.py
Expand Down Expand Up @@ -522,6 +524,7 @@ intranet/apps/feedback/migrations/0002_auto_20151207_1933.py
intranet/apps/feedback/migrations/0003_auto_20160828_2058.py
intranet/apps/feedback/migrations/__init__.py
intranet/apps/files/__init__.py
intranet/apps/files/admin.py
intranet/apps/files/forms.py
intranet/apps/files/models.py
intranet/apps/files/tests.py
Expand Down Expand Up @@ -566,6 +569,8 @@ intranet/apps/logs/__init__.py
intranet/apps/logs/admin.py
intranet/apps/logs/forms.py
intranet/apps/logs/models.py
intranet/apps/logs/urls.py
intranet/apps/logs/views.py
intranet/apps/logs/migrations/0001_initial.py
intranet/apps/logs/migrations/0002_auto_20230613_1759.py
intranet/apps/logs/migrations/0003_request_request.py
Expand Down Expand Up @@ -903,6 +908,7 @@ intranet/static/css/groups.scss
intranet/static/css/hoco_ribbon.scss
intranet/static/css/hoco_scores.scss
intranet/static/css/login.scss
intranet/static/css/logs.scss
intranet/static/css/lostfound.scss
intranet/static/css/mobile.scss
intranet/static/css/oauth.scss
Expand Down Expand Up @@ -1123,6 +1129,7 @@ intranet/static/js/files.js
intranet/static/js/hoco_ribbon.js
intranet/static/js/hoco_scores.js
intranet/static/js/login.js
intranet/static/js/logs.js
intranet/static/js/polls-vote.js
intranet/static/js/polls.js
intranet/static/js/responsive.core.js
Expand Down Expand Up @@ -3442,6 +3449,10 @@ intranet/templates/itemreg/item_view.html
intranet/templates/itemreg/register_delete.html
intranet/templates/itemreg/register_form.html
intranet/templates/itemreg/search.html
intranet/templates/logs/home.html
intranet/templates/logs/pagination.html
intranet/templates/logs/query.html
intranet/templates/logs/request.html
intranet/templates/logs/admin/flag_request.html
intranet/templates/lostfound/founditem.html
intranet/templates/lostfound/founditem_delete.html
Expand Down
6 changes: 2 additions & 4 deletions Ion.egg-info/requires.txt
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
argon2-cffi==21.3.0
autobahn==22.7.1
autopep8==1.7.0
Babel==2.10.3
bcrypt==4.0.0
beautifulsoup4==4.11.1
black==23.1.0
bleach==5.0.1
celery==5.2.7
certifi==2023.7.22
channels==3.0.5
channels-redis==3.4.1
contextlib2==21.6.0
cryptography==41.0.4
cryptography==42.0.4
decorator==5.1.1
Django==3.2.20
Django==3.2.25
django-cacheops==7.0.1
django-cors-headers==3.13.0
django-debug-toolbar==3.6.0
Expand Down
6 changes: 2 additions & 4 deletions docs/rtd-requirements.txt
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
argon2-cffi==21.3.0
autobahn==22.7.1
autopep8==1.7.0
Babel==2.10.3
bcrypt==4.0.0
beautifulsoup4==4.11.1
black==23.1.0
bleach==5.0.1
celery==5.2.7
certifi==2023.7.22
channels==3.0.5
channels-redis==3.4.1
contextlib2==21.6.0
cryptography==41.0.4
cryptography==42.0.4
decorator==5.1.1
Django==3.2.20
Django==3.2.25
django-cacheops==7.0.1
django-cors-headers==3.13.0
django-debug-toolbar==3.6.0
Expand Down
8 changes: 8 additions & 0 deletions docs/sourcedoc/intranet.apps.files.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@ intranet.apps.files package
Submodules
----------

intranet.apps.files.admin module
--------------------------------

.. automodule:: intranet.apps.files.admin
:members:
:undoc-members:
:show-inheritance:

intranet.apps.files.forms module
--------------------------------

Expand Down
16 changes: 16 additions & 0 deletions docs/sourcedoc/intranet.apps.logs.rst
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,22 @@ intranet.apps.logs.models module
:undoc-members:
:show-inheritance:

intranet.apps.logs.urls module
------------------------------

.. automodule:: intranet.apps.logs.urls
:members:
:undoc-members:
:show-inheritance:

intranet.apps.logs.views module
-------------------------------

.. automodule:: intranet.apps.logs.views
:members:
:undoc-members:
:show-inheritance:

Module contents
---------------

Expand Down
1 change: 0 additions & 1 deletion intranet/apps/announcements/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@


class AnnouncementTest(IonTestCase):

"""Tests for the announcements module."""

def setUp(self):
Expand Down
1 change: 1 addition & 0 deletions intranet/apps/auth/decorators.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
"""Decorators that restrict views to certain types of users."""

import time

from django.conf import settings
Expand Down
1 change: 0 additions & 1 deletion intranet/apps/dashboard/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@


class DashboardTest(IonTestCase):

"""Test for dashboard module"""

def setUp(self) -> None:
Expand Down
18 changes: 9 additions & 9 deletions intranet/apps/dashboard/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -366,12 +366,14 @@ def add_widgets_context(request, context):
today_midnight = timezone.localtime().replace(hour=0, minute=0, second=0, microsecond=0)
context.update(
{
"enrichments": EnrichmentActivity.objects.visible_to_user(user).filter(
time__gte=today_midnight,
time__lte=today_midnight + timedelta(days=1),
)
if settings.ENABLE_ENRICHMENT_APP
else [],
"enrichments": (
EnrichmentActivity.objects.visible_to_user(user).filter(
time__gte=today_midnight,
time__lte=today_midnight + timedelta(days=1),
)
if settings.ENABLE_ENRICHMENT_APP
else []
),
"senior_graduation_year": get_senior_graduation_year(),
}
)
Expand Down Expand Up @@ -470,8 +472,7 @@ def dashboard_view(request, show_widgets=True, show_expired=False, ignore_dashbo
is_student = user.is_student
is_teacher = user.is_teacher
is_senior = user.is_senior
is_global_admin = user.member_of("admin_all") and user.is_superuser
show_admin_widget = is_global_admin or announcements_admin or user.is_eighth_admin
show_admin_widget = user.is_global_admin or announcements_admin or user.is_eighth_admin
eighth_sponsor = user.get_eighth_sponsor()

# the URL path for forward/back buttons
Expand Down Expand Up @@ -518,7 +519,6 @@ def dashboard_view(request, show_widgets=True, show_expired=False, ignore_dashbo
"is_student": is_student,
"is_teacher": is_teacher,
"is_senior": is_senior,
"is_global_admin": is_global_admin,
"show_admin_widget": show_admin_widget,
"eighth_sponsor": eighth_sponsor,
"num_senior_destinations": num_senior_destinations,
Expand Down
15 changes: 10 additions & 5 deletions intranet/apps/eighth/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,29 +9,33 @@ class EighthSponsorAdmin(SimpleHistoryAdmin):
list_display = ("first_name", "last_name", "user", "department", "full_time", "contracted_eighth", "online_attendance", "show_full_name")
list_filter = ("department", "full_time", "contracted_eighth", "online_attendance", "show_full_name")
ordering = ("last_name", "first_name")
search_fields = ("first_name", "last_name", "user__username")


class EighthRoomAdmin(SimpleHistoryAdmin):
list_display = ("name", "capacity", "available_for_eighth")
ordering = ("name",)
search_fields = ("name",)


class EighthActivityAdmin(SimpleHistoryAdmin):
list_display = ("name", "special", "administrative", "deleted", "sticky", "wed_a", "wed_b", "fri_a", "fri_b")
list_filter = ("special", "administrative", "deleted", "sticky", "wed_a", "wed_b", "fri_a", "fri_b")
ordering = ("name",)
search_fields = ("name",)


class EighthBlockAdmin(SimpleHistoryAdmin):
list_display = ("date", "block_letter", "comments", "signup_time", "locked")
list_filter = ("locked",)
ordering = ("date", "block_letter")
ordering = ("-date", "block_letter")


class EighthScheduledActivityAdmin(SimpleHistoryAdmin):
list_display = ("activity", "block", "comments", "admin_comments", "cancelled", "attendance_taken")
list_filter = ("block", "cancelled", "attendance_taken")
ordering = ("block", "activity")
list_filter = ("attendance_taken", "cancelled", "block")
ordering = ("-block", "activity__name")
search_fields = ("activity__name",)


class EighthSignupAdmin(SimpleHistoryAdmin):
Expand All @@ -48,9 +52,10 @@ def get_block(self, obj):
get_block.admin_order_field = "scheduled_activity__block" # type: ignore

list_display = ("user", "get_activity", "get_block", "after_deadline", "was_absent")
list_filter = ("scheduled_activity__block",)
ordering = ("scheduled_activity", "user")
list_filter = ("was_absent", "after_deadline", "scheduled_activity__block", "scheduled_activity__activity")
ordering = ("-scheduled_activity__block", "user__username")
raw_id_fields = ("user", "scheduled_activity")
search_fields = ("user__username", "user__first_name", "user__last_name", "scheduled_activity__activity__name")


admin.site.register(EighthSponsor, EighthSponsorAdmin)
Expand Down
1 change: 1 addition & 0 deletions intranet/apps/eighth/views/routers.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
Views that render different pages depending on the user that
requests them.
"""

from django.contrib.auth.decorators import login_required
from django.urls import resolve, reverse

Expand Down
10 changes: 9 additions & 1 deletion intranet/apps/enrichment/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,12 @@

from .models import EnrichmentActivity

admin.site.register(EnrichmentActivity)

class EnrichmentActivityAdmin(admin.ModelAdmin):
list_display = ("title", "location", "time", "capacity", "presign", "attendance_taken")
list_filter = ("time", "presign", "attendance_taken")
ordering = ("-time",)
search_fields = ("title", "description", "groups_allowed__name", "groups_blacklisted__name")


admin.site.register(EnrichmentActivity, EnrichmentActivityAdmin)
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Generated by Django 3.2.25 on 2024-03-23 23:35

from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('enrichment', '0003_auto_20240307_2313'),
]

operations = [
migrations.AddField(
model_name='enrichmentactivity',
name='attended',
field=models.ManyToManyField(blank=True, related_name='enrichments_attended', to=settings.AUTH_USER_MODEL),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 3.2.25 on 2024-03-24 02:14

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('enrichment', '0004_enrichmentactivity_attended'),
]

operations = [
migrations.AddField(
model_name='enrichmentactivity',
name='attendance_taken',
field=models.BooleanField(default=False),
),
]
3 changes: 3 additions & 0 deletions intranet/apps/enrichment/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,9 @@ class EnrichmentActivity(models.Model):
capacity = models.SmallIntegerField(default=28)
attending = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True, related_name="enrichments_attending")

attended = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True, related_name="enrichments_attended")
attendance_taken = models.BooleanField(default=False)

presign = models.BooleanField(default=False)

groups_allowed = models.ManyToManyField(DjangoGroup, related_name="allowed_enrichments_set", blank=True)
Expand Down
27 changes: 20 additions & 7 deletions intranet/apps/enrichment/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -242,25 +242,38 @@ def enrichment_signup_view(request, enrichment_id):
@login_required
@deny_restricted
def enrichment_roster_view(request, enrichment_id):
"""Show the enrichment activity roster.
Args:
enrichment_id (int): the enrichment activity id
"""
is_enrichment_admin = request.user.has_admin_permission("enrichment")

enrichment = get_object_or_404(EnrichmentActivity, id=enrichment_id)

if request.method == "POST":
if not is_enrichment_admin:
raise http.Http404
present_user_ids = set(request.POST.keys())
present_user_ids.remove("csrfmiddlewaretoken")
present_users = enrichment.attending.filter(id__in=present_user_ids)
enrichment.attended.set(present_users)
enrichment.attendance_taken = True
enrichment.save()
return redirect("enrichment_roster", enrichment_id=enrichment_id)

enrichment_is_today = (
enrichment.time.astimezone(timezone.get_default_timezone()).date() == timezone.now().astimezone(timezone.get_default_timezone()).date()
)
roster = [
{
"user": user,
"present": enrichment.attended.filter(id=user.id).exists(),
}
for user in enrichment.attending.all().order_by("first_name", "last_name")
]

context = {
"enrichment": enrichment,
"authorized_enrichments": {enrichment.id if enrichment.user_can_signup(request.user) else None},
"blacklisted_enrichments": {enrichment.id if enrichment.user_is_blacklisted(request.user) else None},
"enrichment_time": enrichment.time.astimezone(timezone.get_default_timezone()),
"enrichment_is_today": enrichment_is_today,
"roster": enrichment.attending.all().order_by("first_name", "last_name"),
"roster": roster,
"is_enrichment_admin": is_enrichment_admin,
"today": timezone.now().date(),
}
Expand Down
5 changes: 5 additions & 0 deletions intranet/apps/files/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from django.contrib import admin

from .models import Host

admin.site.register(Host)

0 comments on commit 6c16d97

Please sign in to comment.