Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 44 additions & 26 deletions src/impl/Event/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,12 @@
from src.impl.Mail.internall_templates import InternalTemplate
from src.utils.Base.BaseClient import BaseClient
from src.utils.Base.BaseService import BaseService
from src.utils.service_utils import check_image, set_existing_data, subtract_lists
from src.utils.service_utils import (
check_image,
set_existing_data,
subtract_lists,
get_hacker_info,
)
from src.utils.Token import AssistenceToken, BaseToken
from src.utils.UserType import UserType

Expand Down Expand Up @@ -53,8 +58,7 @@ def get_hackeps(self, year: int):
e = (
db.session.query(Event)
.filter(
Event.name.ilike("HackEPS%"),
Event.start_date <= datetime(year, 12, 31)
Event.name.ilike("HackEPS%"), Event.start_date <= datetime(year, 12, 31)
)
.order_by(desc(Event.end_date))
.first()
Expand Down Expand Up @@ -557,7 +561,7 @@ def get_pending_hackers_gruped(self, event_id: int, data: BaseToken):
# Combine group and nogroup data into a dictionary
return {"groups": output_data, "nogroup": nogroup_data}

@BaseService.needs_service('HackerGroupService')
@BaseService.needs_service("HackerGroupService")
def get_hackers_participants_list(
self, event_id: int, data: BaseToken
): ##Servei per obtindre la llista de participants amb status acceptat, rechazat o pending.
Expand All @@ -567,9 +571,11 @@ def get_hackers_participants_list(
event = self.get_by_id(event_id)
# Extract pending hackers
pending_hackers_ids = [
h.id for h in subtract_lists(
subtract_lists(event.registered_hackers,
event.accepted_hackers), event.rejected_hackers)
h.id
for h in subtract_lists(
subtract_lists(event.registered_hackers, event.accepted_hackers),
event.rejected_hackers,
)
]
registered_hackers = event.registered_hackers
# Accepted hackers
Expand All @@ -579,25 +585,27 @@ def get_hackers_participants_list(

# List hackers and add status as pending, accepted or rejected.
participants_list = [
get_hacker_info(hacker, pending_hackers_ids, accepted_hackers_ids,
rejected_hackers_ids)
get_hacker_info(
hacker, pending_hackers_ids, accepted_hackers_ids, rejected_hackers_ids
)
for hacker in registered_hackers
]
# Combine group and nogroup data into a dictionary
return {"participants": participants_list}

## This returns 2 lists: people going alone and people in groups. They will have status and food restrictions.
@BaseService.needs_service('HackerGroupService')
def get_hackers_participants_gruped_list(self, event_id: int,
data: BaseToken):
@BaseService.needs_service("HackerGroupService")
def get_hackers_participants_gruped_list(self, event_id: int, data: BaseToken):
if not data.check([UserType.LLEIDAHACKER]):
raise AuthenticationException("Not authorized")
# Extract hacker IDs from registered_hackers
event = self.get_by_id(event_id)
pending_hackers_ids = [
h.id for h in subtract_lists(
subtract_lists(event.registered_hackers,
event.accepted_hackers), event.rejected_hackers)
h.id
for h in subtract_lists(
subtract_lists(event.registered_hackers, event.accepted_hackers),
event.rejected_hackers,
)
]
# Registered hackers
registered_hackers = event.registered_hackers
Expand All @@ -614,26 +622,36 @@ def get_hackers_participants_gruped_list(self, event_id: int,
# List hackers and add status as pending, accepted or rejected.
output_data = []
non_group_hackers_ids = subtract_lists(
pending_hackers_ids + accepted_hackers_ids +
rejected_hackers_ids, group_users)

pending_hackers_ids + accepted_hackers_ids + rejected_hackers_ids,
group_users,
)

non_group_hackers_ids_set = set(non_group_hackers_ids)
non_group_hackers = [hacker for hacker in registered_hackers if hacker.id in non_group_hackers_ids_set]
non_group_hackers = [
hacker
for hacker in registered_hackers
if hacker.id in non_group_hackers_ids_set
]

non_group_hackers_participants = [
get_hacker_info(hacker, pending_hackers_ids, accepted_hackers_ids,
rejected_hackers_ids)
get_hacker_info(
hacker, pending_hackers_ids, accepted_hackers_ids, rejected_hackers_ids
)
for hacker in non_group_hackers
]

for group in event_groups:
group_data = {
"name":
group.name,
"name": group.name,
"members": [
get_hacker_info(hacker, pending_hackers_ids, accepted_hackers_ids,
rejected_hackers_ids)
for hacker in group.members]
get_hacker_info(
hacker,
pending_hackers_ids,
accepted_hackers_ids,
rejected_hackers_ids,
)
for hacker in group.members
],
}
output_data.append(group_data)
# Retrieve pending hacker groups
Expand Down
Loading