Skip to content
GitLab
Explore
Sign in
Commits on Source (2)
Refactor the script to extract the mails that are registered to an events mailing list
· 0107dd0a
ynerant
authored
Sep 08, 2020
0107dd0a
Backups are sent to Zamok
· 7e27c3b7
ynerant
authored
Sep 08, 2020
7e27c3b7
Hide whitespace changes
Inline
Side-by-side
management/commands/extract_ml_registrations.py
0 → 100644
View file @
7e27c3b7
# Copyright (C) 2018-2020 by BDE ENS Paris-Saclay
# SPDX-License-Identifier: GPL-3.0-or-later
from
datetime
import
date
from
django.contrib.auth.models
import
User
from
django.core.management
import
BaseCommand
from
django.db.models
import
Q
from
member.models
import
Membership
,
Club
from
wei.models
import
WEIClub
class
Command
(
BaseCommand
):
help
=
"
Get mailing list registrations from the last wei.
"
\
"
Usage: manage.py extract_ml_registrations -t {events,art,sport} -t {fr, en}.
"
\
"
You can write this into a file with a pipe, then paste the document into your mail manager.
"
def
add_arguments
(
self
,
parser
):
parser
.
add_argument
(
'
--type
'
,
'
-t
'
,
choices
=
[
"
members
"
,
"
clubs
"
,
"
events
"
,
"
art
"
,
"
sport
"
],
default
=
"
members
"
,
help
=
'
Select the type of the mailing list (default members)
'
)
parser
.
add_argument
(
'
--lang
'
,
'
-l
'
,
type
=
str
,
choices
=
[
'
fr
'
,
'
en
'
],
default
=
'
fr
'
,
help
=
'
Select the registred users of the ML of the given language. Useful only for the
'
'
events mailing list.
'
)
def
handle
(
self
,
*
args
,
**
options
):
# TODO: Improve the mailing list extraction system, and link it automatically with Mailman.
if
options
[
"
type
"
]
==
"
members
"
:
for
membership
in
Membership
.
objects
.
filter
(
club__name
=
"
BDE
"
,
date_start__lte
=
date
.
today
(),
date_end__gte
=
date
.
today
(),
).
all
():
self
.
stdout
.
write
(
membership
.
user
.
email
)
return
if
options
[
"
type
"
]
==
"
clubs
"
:
for
club
in
Club
.
objects
.
all
():
self
.
stdout
.
write
(
club
.
email
)
return
# Get the list of mails that want to be registered to the events mailing list.
# Don't filter to valid members, old members can receive these mails as long as they want.
if
options
[
"
type
"
]
==
"
events
"
:
for
user
in
User
.
objects
.
filter
(
profile__ml_events_registration
=
options
[
"
lang
"
]).
all
():
self
.
stdout
.
write
(
user
.
email
)
return
if
options
[
"
type
"
]
==
"
art
"
:
for
user
in
User
.
objects
.
filter
(
profile__ml_art_registration
=
True
).
all
():
self
.
stdout
.
write
(
user
.
email
)
return
if
options
[
"
type
"
]
==
"
sport
"
:
for
user
in
User
.
objects
.
filter
(
profile__ml_sport_registration
=
True
).
all
():
self
.
stdout
.
write
(
user
.
email
)
return
shell/backup_db
View file @
7e27c3b7
#!/bin/bash
# Create backups directory
[[
-d
/
var/www/note_kfet/
backups
]]
||
(
mkdir
/
var/www/note_kfet/backups
&&
chown
www-data:www-data /var/www/note_kfet/
backups
)
# Create
temporary
backups directory
[[
-d
/
tmp/note-
backups
]]
||
mkdir
/
tmp/note-
backups
date
=
$(
date
+%Y-%m-%d
)
# Backup database and save it as tar archive
su postgres
-c
"pg_dump -F t note_db"
|
tee
"/
var/www/note_kfet/
backups/
$date
.tar"
>
/dev/null
su postgres
-c
"pg_dump -F t note_db"
|
tee
"/
tmp/note-
backups/
$date
.tar"
>
/dev/null
# Compress backup as gzip
gzip
"/var/www/note_kfet/backups/
$date
.tar"
chown
www-data:www-data
"/var/www/note_kfet/backups/
$date
.tar.gz"
# Delete backups that have more than 30 days
find /var/www/note_kfet/backups
-type
f
-mtime
+30
-exec
rm
{}
\;
\ No newline at end of file
gzip
"/tmp/note-backups/
$date
.tar"
scp
"/tmp/note-backups/
$date
.tar.gz"
"club-bde@zamok.crans.org:backup/
$date
.tar.gz"