Compare commits
2 commits
a2b2a38fe7
...
b1fe687cf4
Author | SHA1 | Date | |
---|---|---|---|
b1fe687cf4 | |||
05ad9099b3 |
16 changed files with 35 additions and 2370 deletions
|
@ -1,10 +0,0 @@
|
|||
OUTDIR=../static/css/
|
||||
STYLES=style.scss
|
||||
IMPORTS=_params.scss _forms.scss _mixins.scss
|
||||
|
||||
SASS=sassc
|
||||
|
||||
all: $(addprefix $(OUTDIR)/,$(STYLES:.scss=.css))
|
||||
|
||||
$(OUTDIR)/%.css: %.scss $(IMPORTS)
|
||||
$(SASS) "$<" "$@"
|
|
@ -1,94 +0,0 @@
|
|||
form {
|
||||
display: flex;
|
||||
align-items: stretch;
|
||||
flex-direction: column;
|
||||
|
||||
.errorlist {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-size: 0.7em;
|
||||
|
||||
li {
|
||||
@include error_box;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 5px 0;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.helptext {
|
||||
font-size: 0.7em;
|
||||
color: $help_text_color;
|
||||
}
|
||||
|
||||
input {
|
||||
display: block;
|
||||
width: 100%;
|
||||
font: inherit;
|
||||
font-size: 0.9em;
|
||||
color: black;
|
||||
}
|
||||
|
||||
input[type="text"],
|
||||
input[type="email"],
|
||||
input[type="password"], {
|
||||
background-color: white;
|
||||
border: solid 1px $help_text_color;
|
||||
padding: 5px 10px;
|
||||
border-radius: 3px;
|
||||
box-shadow: none;
|
||||
|
||||
&:optional {
|
||||
border-color: fade-out($help_text_color, .25);
|
||||
}
|
||||
&:focus {
|
||||
border-color: $secondary_color;
|
||||
box-shadow: 0 0 1.5px 1px $secondary_color;
|
||||
}
|
||||
&:-moz-ui-invalid {
|
||||
border-color: $error_box_border_color;
|
||||
box-shadow: 0 0 1.5px 1px $error_box_border_color;
|
||||
}
|
||||
}
|
||||
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
width: auto;
|
||||
margin: 5px 10px;
|
||||
}
|
||||
|
||||
input[type="submit"] {
|
||||
@include button;
|
||||
}
|
||||
|
||||
.formfield {
|
||||
padding: 5px;
|
||||
margin: 10px 0;
|
||||
}
|
||||
.error_field {
|
||||
border-radius: 10px;
|
||||
background-color: rgba($error_box_color, .4);
|
||||
}
|
||||
|
||||
.checkbox_input {
|
||||
display: flex;
|
||||
justify-content: space-evenly;
|
||||
align-items: center;
|
||||
|
||||
.label_line {
|
||||
order: 1;
|
||||
flex: 1 1 500px;
|
||||
}
|
||||
input {
|
||||
flex: 0 1 50px;
|
||||
}
|
||||
}
|
||||
|
||||
.fieldgroup {
|
||||
margin: 15px 0;
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
@mixin box($bg_color: white, $border_color: black) {
|
||||
border-radius: 10px;
|
||||
padding: 10px;
|
||||
border: 1px solid $border_color;
|
||||
background-color: $bg_color;
|
||||
color: $page_text_color;
|
||||
}
|
||||
@mixin error_box {
|
||||
@include box($error_box_color, $error_box_border_color);
|
||||
}
|
||||
@mixin info_box {
|
||||
@include box($info_box_color, $info_box_border_color);
|
||||
}
|
||||
@mixin success_box {
|
||||
@include box($success_box_color, $success_box_border_color);
|
||||
}
|
||||
@mixin warning_box {
|
||||
@include box($warning_box_color, $warning_box_border_color);
|
||||
}
|
||||
|
||||
@mixin button {
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
font-size: 100%;
|
||||
|
||||
@include box($button_color, $secondary_border_color);
|
||||
|
||||
&:hover {
|
||||
background-color: darken($button_color, 10%);
|
||||
}
|
||||
&:focus {
|
||||
background-color: darken($button_color, 20%);
|
||||
box-shadow: 0 0 1.5px 1px $secondary_color;
|
||||
}
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
$page_bg_color: #f5f1f4;
|
||||
$page_main_color: #ffffff;
|
||||
$page_text_color: #000000dd;
|
||||
$secondary_color: #3c173d;
|
||||
$secondary_border_color: #3c173d;
|
||||
$page_link_color: $secondary_border_color;
|
||||
|
||||
$page_width: 700px;
|
||||
$page_mid_width: 450px;
|
||||
|
||||
$main_border_color: $secondary_border_color;
|
||||
$main_border_radius: 20px;
|
||||
$button_color: #d2bed3;
|
||||
$button_text_color: white;
|
||||
|
||||
$help_text_color: rgba($page_text_color, .65);
|
||||
|
||||
$font_size: 16pt;
|
||||
$font_family: "Open Sans";
|
||||
|
||||
$mid_font_size: 12pt;
|
||||
$small_font_size: 11pt;
|
||||
|
||||
$logo_height: 100px;
|
||||
$logo_maxwidth: 300px;
|
||||
|
||||
$responsive_mid_threshold: 750px;
|
||||
$responsive_small_threshold: 500px;
|
||||
|
||||
$info_box_color: #c9c8ff;
|
||||
$info_box_border_color: darken($info_box_color, 20%);
|
||||
$error_box_color: #ffdfdf;
|
||||
$error_box_border_color: darken($error_box_color, 20%);
|
||||
$success_box_color: #bafb95;
|
||||
$success_box_border_color: darken($success_box_color, 20%);
|
||||
$warning_box_color: #ffd36c;
|
||||
$warning_box_border_color: darken($warning_box_color, 20%);
|
|
@ -1,30 +0,0 @@
|
|||
$page_bg_color: #f3f0ff;
|
||||
$page_main_color: #e9e4ff;
|
||||
$page_text_color: #000000dd;
|
||||
$page_link_color: #c6491add;
|
||||
$page_width: 700px;
|
||||
|
||||
$secondary_color: #9188ff;
|
||||
$secondary_border_color: #25228a;
|
||||
|
||||
$main_border_color: $secondary_border_color;
|
||||
$main_border_radius: 20px;
|
||||
|
||||
$help_text_color: rgba($page_text_color, .65);
|
||||
|
||||
$font_size: 16pt;
|
||||
$font_family: "Open Sans";
|
||||
|
||||
$small_screen_font_size: 12pt;
|
||||
|
||||
$header_height: 100px;
|
||||
$header_logo_maxwidth: 300px;
|
||||
|
||||
$info_box_color: #c9c8ff;
|
||||
$info_box_border_color: darken($info_box_color, 20%);
|
||||
$error_box_color: #ffdfdf;
|
||||
$error_box_border_color: darken($error_box_color, 20%);
|
||||
$success_box_color: #bafb95;
|
||||
$success_box_border_color: darken($success_box_color, 20%);
|
||||
$warning_box_color: #ffd36c;
|
||||
$warning_box_border_color: darken($warning_box_color, 20%);
|
|
@ -1,153 +0,0 @@
|
|||
@charset "utf-8";
|
||||
@import "fonts.css";
|
||||
@import "_mixins";
|
||||
@import "_params";
|
||||
@import "_forms";
|
||||
|
||||
html {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
*, *:before, *:after {
|
||||
box-sizing: inherit;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: $page_bg_color;
|
||||
font-size: $font_size;
|
||||
font-family: $font_family;
|
||||
color: $page_text_color;
|
||||
margin: 0;
|
||||
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
|
||||
min-height: 100vh;
|
||||
|
||||
@media (max-width: $responsive_mid_threshold) {
|
||||
font-size: $mid_font_size;
|
||||
}
|
||||
@media (max-width: $responsive_small_threshold) {
|
||||
font-size: $small_font_size;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-evenly;
|
||||
}
|
||||
}
|
||||
|
||||
header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: stretch;
|
||||
|
||||
margin: 0;
|
||||
margin-bottom: 50px;
|
||||
padding: 20px 30px;
|
||||
padding-bottom: 0;
|
||||
|
||||
width: $page_width;
|
||||
|
||||
@media (max-width: $responsive_mid_threshold) {
|
||||
width: $page_mid_width;
|
||||
}
|
||||
@media (max-width: $responsive_small_threshold) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#headtext {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: end;
|
||||
justify-content: space-evenly;
|
||||
|
||||
font-size: 1.2em;
|
||||
color: $secondary_color;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
.logo {
|
||||
height: $logo_height;
|
||||
max-width: $logo_maxwidth;
|
||||
}
|
||||
|
||||
#ens_logo_foot {
|
||||
display: none;
|
||||
|
||||
@media (max-width: $responsive_small_threshold) {
|
||||
display: block;
|
||||
margin: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
main {
|
||||
background-color: $page_main_color;
|
||||
border: 3px solid $main_border_color;
|
||||
border-radius: $main_border_radius;
|
||||
padding: 15px;
|
||||
|
||||
width: $page_width;
|
||||
@media (max-width: $responsive_mid_threshold) {
|
||||
width: $page_mid_width;
|
||||
}
|
||||
@media (max-width: $responsive_small_threshold) {
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.2em;
|
||||
@media (max-width: $responsive_small_threshold) {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
text-align: center;
|
||||
color: $secondary_color;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: underline;
|
||||
color: $page_link_color;
|
||||
border-radius: 3px;
|
||||
|
||||
&:hover {
|
||||
color: darken($page_link_color, 20%);
|
||||
}
|
||||
}
|
||||
|
||||
:focus {
|
||||
outline: none;
|
||||
box-shadow: 0 0 1.5px 1px $page_link_color;
|
||||
}
|
||||
::-moz-focus-inner {
|
||||
border: none;
|
||||
}
|
||||
|
||||
button, .btn_row a {
|
||||
@include button;
|
||||
margin: 10px 5px;
|
||||
|
||||
p {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.messages {
|
||||
list-style-type: none;
|
||||
margin: 10px 0;
|
||||
padding: 0;
|
||||
font-size: 0.8em;
|
||||
|
||||
li {
|
||||
margin: 8px 0;
|
||||
}
|
||||
}
|
||||
|
||||
.error { @include error_box; }
|
||||
.info { @include info_box; }
|
||||
.warning { @include warning_box; }
|
||||
.success { @include success_box; }
|
||||
|
||||
.antispam {
|
||||
unicode-bidi: bidi-override;
|
||||
direction: rtl;
|
||||
}
|
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 439 KiB |
31
default.nix
31
default.nix
|
@ -3,22 +3,39 @@
|
|||
pkgs ? import sources.nixpkgs { },
|
||||
}:
|
||||
|
||||
let
|
||||
nix-pkgs = import sources.nix-pkgs {
|
||||
inherit pkgs;
|
||||
# Python 3.12 is required to have the correct SSL options for connecting with the legacy server
|
||||
python3Pkgs = pkgs.python312.pkgs;
|
||||
};
|
||||
|
||||
python3 = pkgs.python312.override {
|
||||
packageOverrides = _: _: {
|
||||
inherit (nix-pkgs)
|
||||
django-browser-reload
|
||||
django-bulma-forms
|
||||
django-cas-server
|
||||
loadcredential
|
||||
;
|
||||
};
|
||||
};
|
||||
in
|
||||
|
||||
{
|
||||
devShell = pkgs.mkShell {
|
||||
name = "cas-eleves.dev";
|
||||
|
||||
packages = [
|
||||
# Python 3.12 is required to have the correct SSL options for connecting with the legacy server
|
||||
(pkgs.python312.withPackages (ps: [
|
||||
(python3.withPackages (ps: [
|
||||
ps.django
|
||||
ps.ipython
|
||||
ps.ldap3
|
||||
|
||||
# Local packages
|
||||
(ps.callPackage ./nix/django-browser-reload { })
|
||||
(ps.callPackage ./nix/django-bulma-forms { })
|
||||
(ps.callPackage ./nix/django-cas-server { })
|
||||
(ps.callPackage ./nix/loadcredential { })
|
||||
ps.django-browser-reload
|
||||
ps.django-bulma-forms
|
||||
ps.django-cas-server
|
||||
ps.loadcredential
|
||||
]))
|
||||
|
||||
pkgs.gettext
|
||||
|
|
|
@ -1,42 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
setuptools,
|
||||
wheel,
|
||||
asgiref,
|
||||
django,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "django-browser-reload";
|
||||
version = "1.12.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "adamchainz";
|
||||
repo = "django-browser-reload";
|
||||
rev = version;
|
||||
hash = "sha256-IDIkAl6YYI3isDvpzCtAu4fLSr2gbjEvVW+K1WBDPbo=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
setuptools
|
||||
wheel
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
asgiref
|
||||
django
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "django_browser_reload" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Automatically reload your browser in development";
|
||||
homepage = "https://github.com/adamchainz/django-browser-reload";
|
||||
changelog = "https://github.com/adamchainz/django-browser-reload/blob/${src.rev}/CHANGELOG.rst";
|
||||
license = licenses.mit;
|
||||
maintainers = [ ]; # with maintainers; [ thubrecht ];
|
||||
};
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchgit,
|
||||
setuptools,
|
||||
setuptools-scm,
|
||||
wheel,
|
||||
django,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "django-bulma-forms";
|
||||
version = "0.1.4";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://git.hubrecht.ovh/hubrecht/django-bulma-forms";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-4KTMXx3YxDxB4/YH14pJnNYtpOGXeDmD+gcbrUHwD/w=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
setuptools
|
||||
setuptools-scm
|
||||
wheel
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [ django ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "";
|
||||
homepage = "https://git.hubrecht.ovh/hubrecht/django-bulma-forms";
|
||||
license = licenses.eupl12;
|
||||
maintainers = [ ]; # with maintainers; [ thubrecht ];
|
||||
};
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
diff --git a/cas_server/tests/test_utils.py b/cas_server/tests/test_utils.py
|
||||
index d690724..73ee761 100644
|
||||
--- a/cas_server/tests/test_utils.py
|
||||
+++ b/cas_server/tests/test_utils.py
|
||||
@@ -17,6 +17,7 @@ from django.db import connection
|
||||
import six
|
||||
import warnings
|
||||
import datetime
|
||||
+import pytest
|
||||
|
||||
from cas_server import utils
|
||||
|
||||
@@ -61,6 +62,7 @@ class CheckPasswordCase(TestCase):
|
||||
)
|
||||
)
|
||||
|
||||
+ @pytest.mark.skip(reason="crypt is broken somehow")
|
||||
def test_crypt(self):
|
||||
"""test the crypt auth method"""
|
||||
salts = ["$6$UVVAQvrMyXMF3FF3", "aa"]
|
|
@ -1,64 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
pytestCheckHook,
|
||||
fetchFromGitHub,
|
||||
setuptools,
|
||||
wheel,
|
||||
django,
|
||||
lxml,
|
||||
requests,
|
||||
requests-futures,
|
||||
six,
|
||||
pytest-django,
|
||||
pytest-env,
|
||||
pytest-runner,
|
||||
mock,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "django-cas-server";
|
||||
version = "unstable-2024-04-13";
|
||||
format = "pyproject";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nitmir";
|
||||
repo = "django-cas-server";
|
||||
rev = "a04477d34eedba4fcc91f00a22689defd3f22a7f";
|
||||
hash = "sha256-K6SKnYBiA1TrSdDSodYJoz1Bk20PsNo2g0dvs4XdmY0=";
|
||||
};
|
||||
|
||||
patches = [ ./01-pytest.patch ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
setuptools
|
||||
wheel
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
django
|
||||
lxml
|
||||
requests
|
||||
requests-futures
|
||||
setuptools
|
||||
six
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
mock
|
||||
pytestCheckHook
|
||||
pytest-django
|
||||
pytest-env
|
||||
pytest-runner
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "cas_server" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "A Django Central Authentication Service server implementing the CAS Protocol 3.0 Specification";
|
||||
homepage = "https://github.com/nitmir/django-cas-server";
|
||||
changelog = "https://github.com/nitmir/django-cas-server/blob/${src.rev}/CHANGELOG.rst";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = [ ];
|
||||
};
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
setuptools,
|
||||
wheel,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "loadcredential";
|
||||
version = "1.2";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Tom-Hubrecht";
|
||||
repo = "loadcredential";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-rNWFD89h1p1jYWLcfzsa/w8nK3bR4aVJsUPx0UtZnIw=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
setuptools
|
||||
wheel
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "loadcredential" ];
|
||||
|
||||
meta = {
|
||||
description = "A simple python package to read credentials passed through systemd's LoadCredential, with a fallback on env variables ";
|
||||
homepage = "https://github.com/Tom-Hubrecht/loadcredential";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = []; # with lib.maintainers; [ thubrecht ];
|
||||
};
|
||||
}
|
|
@ -1,5 +1,16 @@
|
|||
{
|
||||
"pins": {
|
||||
"nix-pkgs": {
|
||||
"type": "Git",
|
||||
"repository": {
|
||||
"type": "Git",
|
||||
"url": "https://git.hubrecht.ovh/hubrecht/nix-pkgs.git"
|
||||
},
|
||||
"branch": "main",
|
||||
"revision": "aa1ecb224ff9c4d200c4d5b9d229d1315c0184f0",
|
||||
"url": null,
|
||||
"hash": "sha256-csAikAaQcr4RdOtOf7DMkOpBBB8w1vD+MPVZGBStMVM="
|
||||
},
|
||||
"nixpkgs": {
|
||||
"type": "Channel",
|
||||
"name": "nixpkgs-unstable",
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
backcall==0.1.0
|
||||
certifi==2019.11.28
|
||||
chardet==3.0.4
|
||||
decorator==4.4.2
|
||||
Django==2.1.15
|
||||
idna==2.9
|
||||
ipython==7.13.0
|
||||
ipython-genutils==0.2.0
|
||||
jedi==0.16.0
|
||||
ldap3==2.7
|
||||
lxml==4.5.0
|
||||
parso==0.6.2
|
||||
pexpect==4.8.0
|
||||
pickleshare==0.7.5
|
||||
prompt-toolkit==3.0.4
|
||||
ptyprocess==0.6.0
|
||||
pyasn1==0.4.8
|
||||
Pygments==2.6.1
|
||||
pytz==2019.3
|
||||
requests==2.23.0
|
||||
requests-futures==1.0.0
|
||||
six==1.14.0
|
||||
traitlets==4.3.3
|
||||
urllib3==1.25.8
|
||||
wcwidth==0.1.9
|
||||
#django-cas-server==1.1.0
|
||||
git+https://github.com/tobast/django-cas-server@fix_crypt_des
|
Loading…
Reference in a new issue