Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
thalia
concrexit
Commits
d5435309
Commit
d5435309
authored
Nov 14, 2018
by
Thijs de Jong
Committed by
Thijs de Jong
Nov 14, 2018
Browse files
Compact Code
parent
061346c6
Changes
1
Hide whitespace changes
Inline
Side-by-side
website/members/services.py
View file @
d5435309
...
...
@@ -9,12 +9,12 @@ from members.models import Membership, Member
from
utils.snippets
import
datetime_to_lectureyear
def
member_
achievements
(
member
):
def
_
member_
group_memberships
(
member
,
skip_condition
):
memberships
=
member
.
membergroupmembership_set
.
all
()
achievements
=
{}
data
=
{}
for
membership
in
memberships
:
if
hasattr
(
membership
.
group
,
'society'
):
if
skip_condition
(
membership
):
continue
period
=
{
'since'
:
membership
.
since
,
...
...
@@ -30,18 +30,23 @@ def member_achievements(member):
period
[
'until'
]
=
membership
.
group
.
board
.
until
name
=
membership
.
group
.
name
if
achievements
.
get
(
name
):
achievements
[
name
][
'periods'
].
append
(
period
)
if
achievements
[
name
][
'earliest'
]
>
membership
.
since
:
achievements
[
name
][
'earliest'
]
=
membership
.
since
achievements
[
name
][
'periods'
].
sort
(
key
=
lambda
x
:
x
[
'since'
])
if
data
.
get
(
name
):
data
[
name
][
'periods'
].
append
(
period
)
if
data
[
name
][
'earliest'
]
>
membership
.
since
:
data
[
name
][
'earliest'
]
=
membership
.
since
data
[
name
][
'periods'
].
sort
(
key
=
lambda
x
:
x
[
'since'
])
else
:
achievements
[
name
]
=
{
data
[
name
]
=
{
'name'
:
name
,
'periods'
:
[
period
],
'earliest'
:
membership
.
since
,
}
return
data
def
member_achievements
(
member
):
achievements
=
_member_group_memberships
(
member
,
lambda
membership
:
hasattr
(
membership
.
group
,
'society'
))
mentor_years
=
member
.
mentorship_set
.
all
()
for
mentor_year
in
mentor_years
:
...
...
@@ -58,31 +63,9 @@ def member_achievements(member):
def
member_societies
(
member
):
memberships
=
member
.
membergroupmembership_set
.
all
()
societies
=
{}
for
membership
in
memberships
:
period
=
{
'since'
:
membership
.
since
,
'until'
:
membership
.
until
,
'chair'
:
membership
.
chair
}
if
hasattr
(
membership
.
group
,
'society'
):
name
=
membership
.
group
.
name
if
societies
.
get
(
name
):
societies
[
name
][
'periods'
].
append
(
period
)
if
societies
[
name
][
'earliest'
]
>
membership
.
since
:
societies
[
name
][
'earliest'
]
=
membership
.
since
societies
[
name
][
'periods'
].
sort
(
key
=
lambda
x
:
x
[
'since'
])
else
:
societies
[
name
]
=
{
'name'
:
name
,
'periods'
:
[
period
],
'earliest'
:
membership
.
since
,
}
societies
=
_member_group_memberships
(
member
,
lambda
membership
:
(
hasattr
(
membership
.
group
,
'board'
)
or
hasattr
(
membership
.
group
,
'committee'
)))
return
sorted
(
societies
.
values
(),
key
=
lambda
x
:
x
[
'earliest'
])
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment