Closed#75
Co-authored-by: Rio6 <rio.liu@r26.me>
Co-authored-by: Max Erenberg <merenber@csclub.uwaterloo.ca>
Reviewed-on: #77
Co-authored-by: Rio Liu <r345liu@csclub.uwaterloo.ca>
Co-committed-by: Rio Liu <r345liu@csclub.uwaterloo.ca>
Closes#55.
Once this is merged and deployed, a cron job will be used to automatically run `ceo members remindexpire` at the beginning of every term.
Reviewed-on: #61
Closes#23
Co-authored-by: Rio Liu <rio.liu@r26.me>
Co-authored-by: Max Erenberg <>
Reviewed-on: #33
Co-authored-by: Rio <r345liu@localhost>
Co-committed-by: Rio <r345liu@localhost>
Closes#25.
Co-authored-by: Max Erenberg <>
Reviewed-on: #29
Co-authored-by: Max Erenberg <merenber@csclub.uwaterloo.ca>
Co-committed-by: Max Erenberg <merenber@csclub.uwaterloo.ca>
We can't reliably filter the membership list, because we don't know who has
paid the MathSOC fee. Better to leave MathSOC to do this. In the case that they
to not verify the list then mathsoclist puts us at a disadvantage, as other
clubs likely do not filter their lists.
Left to do:
- create mailing list
- create and publish listadmin config file
- update code to use listadmin config file
- uncomment code
- ponder implications of listadmin config file (security)
The only difference between a club representative account and a member account
is how they are registered for terms. If you are already a representative for
the current term, you need only go through the membership renewal process to
become a full fledged member.
Office staffers do not have permission to unregister members
from terms in the current setup. This breaks with the way
python-ldap's modifyModlist function works, as it attempts
to delete the terms then re-add them. Use David Bartley's
function instead, as it does not have this problem.
This really only moves two functions: create_member and
create_club. Nothing else is left in accounts. Eventually,
it might make sense to separate it out again in a more
sane way (e.g. they should share the connection somehow).