mirror of
https://gitlab.crans.org/bde/nk20
synced 2025-07-05 06:54:10 +02:00
Compare commits
2 Commits
9f8c4725ee
...
time-displ
Author | SHA1 | Date | |
---|---|---|---|
84e9fea15f | |||
b9ebb1718a |
1
.gitignore
vendored
1
.gitignore
vendored
@ -48,6 +48,7 @@ backups/
|
|||||||
env/
|
env/
|
||||||
venv/
|
venv/
|
||||||
db.sqlite3
|
db.sqlite3
|
||||||
|
shell.nix
|
||||||
|
|
||||||
# ansibles customs host
|
# ansibles customs host
|
||||||
ansible/host_vars/*.yaml
|
ansible/host_vars/*.yaml
|
||||||
|
@ -201,7 +201,8 @@ class Entry(models.Model):
|
|||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
qs = Entry.objects.filter(~Q(pk=self.pk), activity=self.activity, note=self.note, guest=self.guest)
|
qs = Entry.objects.filter(~Q(pk=self.pk), activity=self.activity, note=self.note, guest=self.guest)
|
||||||
if qs.exists():
|
if qs.exists():
|
||||||
raise ValidationError(_("Already entered on ") + _("{:%Y-%m-%d %H:%M:%S}").format(qs.get().time, ))
|
raise ValidationError(_("Already entered on ")
|
||||||
|
+ _("{:%Y-%m-%d %H:%M:%S}").format(timezone.localtime(qs.get().time), ))
|
||||||
|
|
||||||
if self.guest:
|
if self.guest:
|
||||||
self.note = self.guest.inviter
|
self.note = self.guest.inviter
|
||||||
|
@ -55,7 +55,7 @@ class GuestTable(tables.Table):
|
|||||||
|
|
||||||
def render_entry(self, record):
|
def render_entry(self, record):
|
||||||
if record.has_entry:
|
if record.has_entry:
|
||||||
return str(_("Entered on ") + str(_("{:%Y-%m-%d %H:%M:%S}").format(record.entry.time, )))
|
return str(_("Entered on ") + str(_("{:%Y-%m-%d %H:%M:%S}").format(timezone.localtime(record.entry.time))))
|
||||||
return mark_safe('<button id="{id}" class="btn btn-danger btn-sm" onclick="remove_guest(this.id)"> '
|
return mark_safe('<button id="{id}" class="btn btn-danger btn-sm" onclick="remove_guest(this.id)"> '
|
||||||
'{delete_trans}</button>'.format(id=record.id, delete_trans=_("remove").capitalize()))
|
'{delete_trans}</button>'.format(id=record.id, delete_trans=_("remove").capitalize()))
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ from .models import Profile, Club, Membership
|
|||||||
class CustomAuthenticationForm(AuthenticationForm):
|
class CustomAuthenticationForm(AuthenticationForm):
|
||||||
permission_mask = forms.ModelChoiceField(
|
permission_mask = forms.ModelChoiceField(
|
||||||
label=_("Permission mask"),
|
label=_("Permission mask"),
|
||||||
queryset=PermissionMask.objects.order_by("-rank"),
|
queryset=PermissionMask.objects.order_by("rank"),
|
||||||
empty_label=None,
|
empty_label=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -20,14 +20,12 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<!-- MODAL TO CROP THE IMAGE -->
|
<!-- MODAL TO CROP THE IMAGE -->
|
||||||
<div class="modal fade" id="modalCrop" data-backdrop="static">
|
<div class="modal fade" id="modalCrop">
|
||||||
<div class="modal-dialog">
|
<div class="modal-dialog">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-body-wrapper" style="width: 500px; height: 500px; padding: 16px;">
|
<div class="modal-body">
|
||||||
<div class="modal-body" style="width: 100%; height: 100%; padding: 0">
|
<img src="" id="modal-image" style="max-width: 100%;">
|
||||||
<img src="" id="modal-image" style="display: block; max-width: 100%;">
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<div class="btn-group pull-left" role="group">
|
<div class="btn-group pull-left" role="group">
|
||||||
<button type="button" class="btn btn-default" id="js-zoom-in">
|
<button type="button" class="btn btn-default" id="js-zoom-in">
|
||||||
|
@ -89,7 +89,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
|
|||||||
</ul>
|
</ul>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<select id="debit_type" class="form-control custom-select d-none">
|
<select id="debit_type" class="form-control custom-select d-none">
|
||||||
{% for special_type in special_types|slice:"::-1" %}
|
{% for special_type in special_types %}
|
||||||
<option value="{{ special_type.id }}">{{ special_type.special_type }}</option>
|
<option value="{{ special_type.id }}">{{ special_type.special_type }}</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
|
@ -27,5 +27,5 @@ MAILTO=notekfet2020@lists.crans.org
|
|||||||
# Vider les tokens Oauth2
|
# Vider les tokens Oauth2
|
||||||
00 6 * * * root cd /var/www/note_kfet && env/bin/python manage.py cleartokens -v 0
|
00 6 * * * root cd /var/www/note_kfet && env/bin/python manage.py cleartokens -v 0
|
||||||
# Envoyer la liste des abonnés à la NL BDA
|
# Envoyer la liste des abonnés à la NL BDA
|
||||||
00 10 * * 0 root cd /var/www/note_kfet && env/bin/python manage.py extract_ml_registrations -t art -e "bda.ensparissaclay@gmail.com"
|
00 10 * * 0 root cd /var/www/note_kfet && env/bin/python manage.py extract_ml_registrations -t art
|
||||||
|
|
@ -1,34 +0,0 @@
|
|||||||
# This is a workaround meant for use with the nix package manager. If you don't know what it is or don't use it, please ignore this file.
|
|
||||||
#
|
|
||||||
# The nk20 javascript static location are hardcoded for imperative system.
|
|
||||||
# This make ./manage.py collectstatic hard to use with nixos.
|
|
||||||
#
|
|
||||||
# A workaround is to enter a FHSUserEnv with the static placed under /share/javascript/<static>.
|
|
||||||
# This emulate a debian like system and enable collecting static normally with ./manage.py collectstatics.
|
|
||||||
# The regular shell.nix should be enough for other configurations.
|
|
||||||
#
|
|
||||||
# Warning, you are still supposed to use pip package with a venv !
|
|
||||||
{ pkgs ? import <nixpkgs> {} }:
|
|
||||||
(pkgs.buildFHSUserEnv {
|
|
||||||
name = "pipzone";
|
|
||||||
targetPkgs = pkgs: (with pkgs;
|
|
||||||
let
|
|
||||||
fhs-static = stdenv.mkDerivation {
|
|
||||||
name = "fhs-static";
|
|
||||||
buildCommand = ''
|
|
||||||
mkdir -p $out/share/javascript/bootstrap4
|
|
||||||
mkdir -p $out/share/javascript/jquery
|
|
||||||
ln -s ${python39Packages.xstatic-bootstrap}/lib/python3.9/site-packages/xstatic/pkg/bootstrap/data/* $out/share/javascript/bootstrap4
|
|
||||||
ln -s ${python39Packages.xstatic-jquery}/lib/python3.9/site-packages/xstatic/pkg/jquery/data/* $out/share/javascript/jquery
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
in [
|
|
||||||
fhs-static
|
|
||||||
python39
|
|
||||||
gettext
|
|
||||||
python39Packages.pip
|
|
||||||
python39Packages.virtualenv
|
|
||||||
python39Packages.setuptools
|
|
||||||
]);
|
|
||||||
runScript = "bash";
|
|
||||||
}).env
|
|
23
shell.nix
23
shell.nix
@ -1,23 +0,0 @@
|
|||||||
# This is meant for use with the nix package manager. If you don't know what it is or don't use it, please ignore this file.
|
|
||||||
#
|
|
||||||
# This shell.nix contains all dependencies require to create a venv and pip install -r requirements.txt.
|
|
||||||
#
|
|
||||||
# Please check shell-static.nix for running ./manage.py collectstatics.
|
|
||||||
{ pkgs ? import <nixpkgs> {} }:
|
|
||||||
pkgs.mkShell {
|
|
||||||
buildInputs = with pkgs; [
|
|
||||||
python39
|
|
||||||
python39Packages.pip
|
|
||||||
python39Packages.setuptools
|
|
||||||
gettext
|
|
||||||
|
|
||||||
];
|
|
||||||
shellHook = ''
|
|
||||||
# Tells pip to put packages into $PIP_PREFIX instead of the usual locations.
|
|
||||||
# See https://pip.pypa.io/en/stable/user_guide/#environment-variables.
|
|
||||||
export PIP_PREFIX=$(pwd)/_build/pip_packages
|
|
||||||
export PYTHONPATH="$PIP_PREFIX/${pkgs.python39.sitePackages}:$PYTHONPATH"
|
|
||||||
export PATH="$PIP_PREFIX/bin:$PATH"
|
|
||||||
unset SOURCE_DATE_EPOCH
|
|
||||||
'';
|
|
||||||
}
|
|
Reference in New Issue
Block a user