Compare commits

..

2807 Commits

Author SHA1 Message Date
klmp200 1d03fcf6ea Fix windows path and shell calls issues 2025-01-07 17:10:06 +01:00
klmp200 a6ba65a494 Auto download gcc for windows 2025-01-06 23:07:20 +01:00
klmp200 c90fcc838e Migrate xapian install script to python 2025-01-06 23:07:20 +01:00
Bartuccio Antoine bc9cb9b36c Merge pull request #992 from ae-utbm/uv
Fix install documentation
2025-01-06 22:30:32 +01:00
klmp200 edafc06c3f Fix install documentation 2025-01-06 22:26:46 +01:00
Bartuccio Antoine 134f8a7989 Merge pull request #991 from ae-utbm/uv
Switch from poetry to uv
2025-01-06 22:19:19 +01:00
klmp200 771cbdbd77 More explicit uv install steps 2025-01-06 21:59:36 +01:00
klmp200 a491baddb9 Apply review comments 2025-01-06 20:13:41 +01:00
klmp200 8d10a5e0ab Update deploy scripts to uv 2025-01-06 16:17:56 +01:00
klmp200 cbe42d3a60 Add caching for virtualenv 2025-01-06 16:17:56 +01:00
klmp200 0c4d72e17a Switch from poetry to uv 2025-01-06 16:17:54 +01:00
Bartuccio Antoine 429df81ec9 Merge pull request #989 from ae-utbm/counter
Make code matching rank first in counter click
2025-01-05 19:05:10 +01:00
klmp200 bb24516474 Make code matching rank first in counter click 2025-01-05 18:54:54 +01:00
thomas girod 8e339c3d4b Merge pull request #988 from ae-utbm/news
fix: wrong link for ae dev discord
2025-01-05 17:29:57 +01:00
klmp200 25298518bc fix: wrong link for ae dev discord 2025-01-05 17:25:23 +01:00
thomas girod 2e26ff2cde Merge pull request #986 from ae-utbm/news
Improve welcome page
2025-01-05 17:18:55 +01:00
klmp200 a8702d4f5e Improve welcome page
* Improve code readability of calendar details
* Add link to AE Dev discord in useful links
* Add link to github at the bottom
2025-01-05 16:42:26 +01:00
thomas girod 7f4cc5fb0f Merge pull request #980 from ae-utbm/ban-groups
Ban groups
2025-01-05 15:54:19 +01:00
imperosol e7215be00e translations 2025-01-05 15:49:30 +01:00
imperosol 4f35cc00bc Add UserBan management views 2025-01-05 15:49:08 +01:00
imperosol af47587116 Split groups and ban groups 2025-01-05 15:49:08 +01:00
Bartuccio Antoine 3c4daeadb0 Merge pull request #985 from ae-utbm/form-fixes
small form fixes
2025-01-05 15:47:44 +01:00
imperosol 348ab19ac6 small form fixes
le `display:block` avait disparu des helptext, ce qui rendait leur affichage bizarre. Et il manquait quelques détails sur le `ProductForm`
2025-01-05 15:40:41 +01:00
thomas girod ada74a3e42 Merge pull request #984 from ae-utbm/lock-poetry
Pin poetry version
2025-01-05 15:02:45 +01:00
imperosol 785ac9bdab pin poetry version 2025-01-05 14:48:40 +01:00
Bartuccio Antoine d1e604e7a5 Merge pull request #975 from ae-utbm/unified-calendar
Unified calendar widget on main com page with external and internal events
2025-01-05 01:46:38 +01:00
klmp200 2749a88704 Basic test for internal calendar 2025-01-05 01:36:41 +01:00
klmp200 eb3db134f8 Test external calendar caching 2025-01-05 01:32:54 +01:00
klmp200 fa7f5d24b0 Test external calendar api 2025-01-05 01:04:11 +01:00
klmp200 ba76015c71 Use a newer ical library 2025-01-04 23:12:34 +01:00
klmp200 1887a2790f Move IcsCalendar to it's own file 2025-01-04 23:08:09 +01:00
klmp200 5d0fc38107 Make social icons links pretty 2025-01-04 23:08:09 +01:00
klmp200 65df55a635 Use signals to update internal ics 2025-01-04 23:08:09 +01:00
klmp200 a60e1f1fdc Create dedicated class to manage ics calendar files 2025-01-04 23:08:09 +01:00
klmp200 0a0f44607e Return calendars as real files 2025-01-04 23:08:09 +01:00
klmp200 007080ee48 Extract send_file response creation logic to a dedicated function 2025-01-04 23:08:09 +01:00
klmp200 a13e3e95b7 Harmonize titles on front page 2025-01-04 23:08:09 +01:00
klmp200 169938e1da Replace old agenda of event with links to services and change permission to see birthdays 2025-01-04 23:08:09 +01:00
klmp200 e5fb875968 Add support for event location and more detail link 2025-01-04 22:52:17 +01:00
klmp200 9bd14f1b4e Refactor popup creation 2025-01-04 22:51:45 +01:00
klmp200 fd2295119d nice looking popup with well aligned icon 2025-01-04 22:51:45 +01:00
klmp200 eac2709e86 Create basic (ugly) event detail popup 2025-01-04 22:51:45 +01:00
klmp200 48f6d134bf Fix news page layout 2025-01-04 22:51:45 +01:00
klmp200 6d7467e746 Make new calendar look like the iframe one 2025-01-04 22:51:44 +01:00
klmp200 0d1629495b Refactor com scss and add basic unified event calendar 2025-01-04 22:51:44 +01:00
klmp200 63839dc22b Fix poster edition and display bug 2025-01-04 22:51:44 +01:00
Bartuccio Antoine c627944bd1 Merge pull request #983 from ae-utbm/gettext
Remove line numbers from locale files
2025-01-04 22:50:10 +01:00
imperosol f0be4b270b remove line numbers from locale files 2025-01-04 22:03:37 +01:00
thomas girod 728065e771 Merge pull request #982 from ae-utbm/groups
fix get_or_create in club group migration
2025-01-04 19:01:16 +01:00
imperosol 849fac490d fix get_or_create in club group migration 2025-01-04 18:49:00 +01:00
thomas girod 5752229312 Merge pull request #981 from ae-utbm/groups
split migrations
2025-01-04 18:14:09 +01:00
imperosol 6eb860579a split migrations 2025-01-04 18:05:02 +01:00
thomas girod d08d54b4c9 Merge pull request #935 from ae-utbm/groups
Remove `RealGroup` and `MetaGroup`
2025-01-04 17:13:48 +01:00
imperosol bb210f8d47 change club group names when the club name changes 2025-01-04 16:43:38 +01:00
imperosol efca10e252 remove Club.view_groups, Club.edit_groups and Club.owner_group 2025-01-03 17:30:24 +01:00
imperosol b8f851b009 translations 2025-01-03 01:18:28 +01:00
imperosol 1e29ae4171 fixes on club group attribution 2025-01-03 01:18:28 +01:00
imperosol 0ae1e850f4 improve admin 2025-01-03 01:18:28 +01:00
imperosol d380668c0f Move users to the club groups in the migration 2025-01-03 01:18:28 +01:00
imperosol 9a72c5eb72 fix galaxy tests 2025-01-03 01:18:28 +01:00
imperosol 407cfbe02b update docs 2025-01-03 01:18:28 +01:00
imperosol 6400b2c2c2 replace MetaGroups by proper group management 2025-01-03 01:18:28 +01:00
thomas girod cce7ecbe73 Merge pull request #974 from ae-utbm/fix-page
fix 500 error when accessing history of non-existing page
2024-12-29 15:47:38 +01:00
imperosol d200c1e381 fix 500 error when accessing history of non-existing page 2024-12-28 13:25:42 +01:00
thomas girod 2f9e5bfee1 Merge pull request #965 from ae-utbm/form-style
rework form style
2024-12-27 22:24:09 +01:00
Bartuccio Antoine 11702d3d7c Merge pull request #959 from ae-utbm/counter-click-step-4
Make counter click client side first
2024-12-27 22:06:35 +01:00
klmp200 43f47e2087 Improve product card display on counter click 2024-12-27 01:59:54 +01:00
thomas girod 4b881903f0 Merge pull request #972 from ae-utbm/fix-product-fetch
Fix product fetch
2024-12-26 23:43:41 +01:00
imperosol 761e37ade6 fix product fetch 2024-12-26 17:26:06 +01:00
thomas girod 10ed2f7404 Merge pull request #963 from ae-utbm/fix-group-edit
Fix error when submitting group form without any group checked
2024-12-26 17:02:02 +01:00
klmp200 43768f1691 Refactor counter-click css 2024-12-26 11:52:30 +01:00
klmp200 280d27343d Put error popup inside the basket 2024-12-25 20:44:52 +01:00
klmp200 138e1662c7 Add popup css class and display basket error messages with it on counter click 2024-12-24 00:29:23 +01:00
klmp200 c80fe094a2 Remove useless form elements in counters and improve alignment 2024-12-23 20:44:49 +01:00
klmp200 139221dd22 Apply review comments 2024-12-23 15:15:24 +01:00
imperosol 72c2981d66 rework form style 2024-12-23 15:11:15 +01:00
klmp200 6f003ffa53 Add translations 2024-12-23 02:41:41 +01:00
klmp200 7f6fd7dc47 Fix wrong tests/permissions 2024-12-23 02:37:41 +01:00
klmp200 ccf5118c9d Add invalid form tests 2024-12-23 02:26:39 +01:00
klmp200 022c19c020 Fix counter permissions issues 2024-12-23 02:17:28 +01:00
klmp200 2e5e217842 Disable eboutic in counter click/main 2024-12-23 01:35:44 +01:00
klmp200 9c93c004ec Add more counter click tests 2024-12-23 01:18:01 +01:00
klmp200 472800eff6 Add nice snackbar message on counter interface and fix not enough money protection on frontend 2024-12-23 00:56:57 +01:00
klmp200 b8d43a629b Increase selling label size and add more counter click tests 2024-12-23 00:00:40 +01:00
klmp200 f6693e12cf Basic counter click tests 2024-12-22 19:24:07 +01:00
klmp200 38f491cf57 Properly test annotations in counter click 2024-12-22 16:43:07 +01:00
klmp200 3464d5d860 Add proper tests for refilling view 2024-12-22 16:16:28 +01:00
thomas girod 81773dc800 Merge pull request #964 from ae-utbm/fix-backend
Fix custom auth backend
2024-12-22 15:07:46 +01:00
imperosol da400155eb fix SithModelBackend._get_group_permissions 2024-12-22 15:01:58 +01:00
klmp200 5079938a5b Fix get_operator on non bar counters and better display of counter with no products 2024-12-22 13:36:50 +01:00
klmp200 b8430adc50 Split counter-click-index.ts 2024-12-22 13:01:37 +01:00
klmp200 eed434aeb2 Improve age management for getting products and make get_product a part of counter model 2024-12-22 12:27:58 +01:00
klmp200 372470b44b Improve empty basket and tray price management 2024-12-22 12:06:15 +01:00
klmp200 7071553c3b Optimize product id validation on counter click 2024-12-22 12:06:15 +01:00
klmp200 eea237b813 Pre-filter allowed products in backend for counter click 2024-12-22 12:06:15 +01:00
klmp200 c37288c285 Display nice product cards on counter click interface 2024-12-22 12:06:15 +01:00
klmp200 ccf5767a01 Fix customerBalance not init and submit/cancel buttons visuals 2024-12-22 12:06:15 +01:00
klmp200 ffe6fc8c2a Redirect when cancelling instead of submitting a form 2024-12-22 12:06:15 +01:00
klmp200 5f0b4d2050 Properly display form errors in counter 2024-12-22 12:06:15 +01:00
klmp200 f9d7dc7d3a Restore form when form submit fails due to error 2024-12-22 12:06:15 +01:00
klmp200 8ebea00896 Fix crash during validation 2024-12-22 12:06:15 +01:00
klmp200 a548f4744e Fix counter main
* Fix crash when submitting nothing
* Fix code field not being autofocus
2024-12-22 12:06:15 +01:00
klmp200 a383f3e717 Don't use codes as a primary key in counter click 2024-12-22 12:06:15 +01:00
klmp200 60f18669c8 Make counter click client side first 2024-12-22 12:06:14 +01:00
klmp200 a36946529b Fix error when submitting group form without any group checked 2024-12-22 12:04:51 +01:00
thomas girod eaac0c728f Merge pull request #961 from ae-utbm/auth-backend
Custom auth backend
2024-12-22 06:38:34 +01:00
thomas girod 9ca95774a3 Merge pull request #962 from ae-utbm/query-news
Fix N+1 queries on birthdays
2024-12-22 06:32:58 +01:00
imperosol fa66851889 fix n+1 queries on birthdays 2024-12-21 21:09:08 +01:00
imperosol ab81f11199 Manage subscribers group permissions 2024-12-21 18:52:16 +01:00
imperosol bea7741d35 populate group permissions 2024-12-21 18:48:30 +01:00
imperosol 81e163812e custom auth backend 2024-12-21 17:34:20 +01:00
Bartuccio Antoine 4f233538e0 Merge pull request #955 from ae-utbm/counter-click-step-3
Use TomSelect for product selection on counter
2024-12-21 16:00:06 +01:00
klmp200 4ac09ac08b Use tomselect instead of jquery autoselect for counter clicks 2024-12-21 15:56:18 +01:00
thomas girod 6d02970676 Merge pull request #946 from ae-utbm/product-csv
Rework the product admin page
2024-12-21 15:50:34 +01:00
imperosol accf1befce Make products filterable by product type 2024-12-21 02:15:51 +01:00
imperosol 6953eaa9d0 fix sanitization of the csv content 2024-12-21 02:14:38 +01:00
imperosol 180bae59c8 Add translations 2024-12-21 02:14:38 +01:00
imperosol 9cafc163e8 fix frontend archived products filter 2024-12-21 02:14:38 +01:00
imperosol 8f8eef4107 display products as cards 2024-12-21 02:14:38 +01:00
imperosol 7af745087e create a card css component 2024-12-21 02:14:38 +01:00
imperosol aab093200b slightly improve style 2024-12-21 02:14:38 +01:00
imperosol 1a9556f811 add a button to download products as csv 2024-12-21 02:14:38 +01:00
imperosol 39b36aa509 ajaxify the product admin page 2024-12-21 02:14:38 +01:00
imperosol 3fc260a12c add csv converter 2024-12-21 02:14:38 +01:00
imperosol 1696a2f579 Add NestedKeyOf Type 2024-12-21 02:14:38 +01:00
thomas girod baebc0b690 Merge pull request #958 from ae-utbm/fix-group-form
fix user groups form
2024-12-20 11:07:13 +01:00
imperosol 9f3a10ca71 fix user groups form 2024-12-20 11:00:57 +01:00
thomas girod 38ceaf3106 Merge pull request #957 from ae-utbm/user-model
Fix groups displayed on user profile group edition
2024-12-19 20:32:39 +01:00
klmp200 87b619794d Fix groups displayed on user profile group edition 2024-12-19 18:57:50 +01:00
thomas girod 29c4a36479 Merge pull request #956 from ae-utbm/query-page-hist
Fix N+1 queries on page history
2024-12-19 15:09:11 +01:00
Bartuccio Antoine ddeb12f08c Merge pull request #929 from ae-utbm/user-model
Migrate User parent class from AbstractBaseUser to AbstractUser
2024-12-19 14:27:16 +01:00
imperosol a7b1406e06 post-rebase fix 2024-12-19 10:53:11 +01:00
imperosol 871ef60cf6 remove obsolete RunPython operations 2024-12-19 10:39:07 +01:00
imperosol 7e9071a533 optimize User.is_subscribed and User.was_subscribed 2024-12-19 10:39:07 +01:00
imperosol 8c660e9856 Make core.User inherit from AbstractUser instead of AbstractBaseUser 2024-12-19 10:39:04 +01:00
imperosol 6ca641ab7f fix: N+1 queries on page version list page 2024-12-19 10:32:02 +01:00
thomas girod 8d6609566f Merge pull request #951 from ae-utbm/refactor-news
refactor news model and creation form
2024-12-18 16:09:41 +01:00
imperosol 17e4c63737 refactor news model and creation form 2024-12-18 15:54:10 +01:00
thomas girod fad470b670 Merge pull request #952 from ae-utbm/sort-producttypes
Sort product types
2024-12-18 15:45:50 +01:00
thomas girod c5646b1e59 Merge pull request #954 from ae-utbm/fix-subscription
fix access to the subscription page
2024-12-18 15:45:17 +01:00
imperosol 5da27bb266 rename producttype to product_type 2024-12-18 14:48:59 +01:00
imperosol be6a077c8e fix access to the subscription page 2024-12-18 14:13:39 +01:00
imperosol 8d643fc6b4 Apply review comments 2024-12-17 17:23:13 +01:00
imperosol 47876e3971 Make product types dynamically orderable. 2024-12-17 13:35:29 +01:00
imperosol c79c251ba7 Add ProductTypeController 2024-12-17 13:35:29 +01:00
imperosol 483670e798 Make ProductType an OrderedModel 2024-12-17 13:35:29 +01:00
imperosol 6c8a6008d5 api route to search products with detailed infos. 2024-12-17 12:38:59 +01:00
imperosol e680124d7b fix makemessages command in docs 2024-12-17 12:38:59 +01:00
imperosol b06a06f50c feat: add restore on backspace plugin for tom select 2024-12-17 12:38:59 +01:00
Bartuccio Antoine 6416de237f Merge pull request #923 from ae-utbm/counter-click-step-2
Casser counter click step 2 : separate refilling from counter clicks with fragments
2024-12-17 10:58:34 +01:00
klmp200 ad44fd52a4 Apply review comments 2024-12-17 10:54:41 +01:00
klmp200 03c27b10e5 Fix refill permissions
* Remove ability to refill from counters
* Fix bug where you could refill without any board member on a BAR
* Add a warning message explaining why refilling are disabled
2024-12-17 02:42:07 +01:00
klmp200 fc0ef29738 Remove GetCustomer API endpoint 2024-12-17 01:42:10 +01:00
klmp200 a0eb53a607 Apply review comments 2024-12-17 01:41:45 +01:00
klmp200 66e5ef64fd Don't use API to update amount after a refilling query 2024-12-17 00:47:43 +01:00
thomas girod f5d5cc18a8 Merge pull request #949 from ae-utbm/trombi
Fix crash when admin gets to preferences of an user subscribed to a trombinoscope
2024-12-16 10:06:17 +01:00
klmp200 4c65939bbe Fix crash when admin gets to preferences of an user subscribed to a trombinoscope 2024-12-16 09:31:43 +01:00
klmp200 379527cd58 Add a nice animation on successful refilling 2024-12-16 00:58:23 +01:00
klmp200 f63fb59cbf Allow filtering of refilling options
* Move settings.SITH_COUNTER_PAYMENT_METHOD to counter.apps.PAYMENT_METHOD
* Move student cards to an accordion on counter click
* Make cash default refilling option
* Disable bank selection option in refilling if CHECK are not allowed
* Disable refilling with CHECK from the frontend
2024-12-16 00:15:21 +01:00
klmp200 cde864fdc7 Apply review comments 2024-12-15 22:47:59 +01:00
klmp200 e9361697f7 Convert customer refill to a fragment view 2024-12-15 21:33:19 +01:00
thomas girod 830c752971 Merge pull request #948 from ae-utbm/sentry
Enable sentry workflow again
2024-12-15 18:36:46 +01:00
klmp200 6bdc1b73ae Enable sentry workflow again 2024-12-15 17:31:41 +01:00
NaNoMelo 0f003870bb Merge pull request #924 from ae-utbm/unique-student-card
Make student card unique per user
2024-12-15 17:06:35 +01:00
klmp200 0631c77a1c Apply review comments 2024-12-15 17:02:44 +01:00
klmp200 2cc4308a58 Fix tooltip shadow and position and improve unittests 2024-12-15 16:49:24 +01:00
klmp200 4975475e85 Add tooltip on current registered card, allow barmen to delete cards and make card deletion a fragment 2024-12-15 16:49:24 +01:00
imperosol 466fe58763 feat: make student card unique per user 2024-12-15 16:49:24 +01:00
imperosol 3b7e338808 fix 500 when accessing preferences
Quand on tente d'accéder aux préférences d'un utilisateur relié à un trombi, sans être soi-même dans un trombi, on a une erreur.
2024-12-15 16:49:24 +01:00
Bartuccio Antoine 53b13e7aef Merge pull request #947 from ae-utbm/dependencies
Upgrade dependencies
2024-12-15 13:53:28 +01:00
klmp200 fa60ecb25a Upgrade dependencies 2024-12-15 00:59:55 +01:00
thomas girod a975824481 Merge pull request #945 from ae-utbm/refactor-product
Remove `Product.parent_product`
2024-12-09 20:20:11 +01:00
imperosol c51e5eb6cb remove parent_product column in the Product table 2024-12-09 12:59:33 +01:00
imperosol f0bc502ec9 fix translation in subscription creation success fragment 2024-12-09 12:31:58 +01:00
Bartuccio Antoine 902cafc5e4 Merge pull request #921 from ae-utbm/counter-click
Casser counter click étape 1 : introduire des fragments
2024-12-08 13:49:08 +01:00
thomas girod b2f54aa23e Merge pull request #943 from ae-utbm/update-deps
Update deps
2024-12-08 13:46:53 +01:00
klmp200 29a5425259 Add spinner to student card form 2024-12-08 13:17:56 +01:00
imperosol e2a34c75ea deps: update dependencies 2024-12-08 11:54:58 +01:00
klmp200 de7aa6f6a6 Create a generic form fragment renderer 2024-12-08 11:45:16 +01:00
imperosol 9acb421b2e deps: update ruff 2024-12-08 11:17:27 +01:00
klmp200 66d2dc74e7 Pre-fetch forms for student card 2024-12-08 00:32:28 +01:00
klmp200 2f613607af Update number of queries in test_num_queries 2024-12-07 23:35:35 +01:00
klmp200 d4b9c3afb1 Make StudentCardFormView fragment only 2024-12-07 22:36:15 +01:00
klmp200 b81cf49d0a Remove student card creation from CounterClick view and use fragment instead
Intercept htmx on submit requests, this allows auto submit from nfc fields

Fix super call with parameters

Add loading wheel on student card form for counter_click.jinja
2024-12-07 12:57:10 +01:00
thomas girod 1da45fdffc Merge pull request #934 from ae-utbm/split-counter
Split counter views into multiple files
2024-12-07 11:53:14 +01:00
imperosol 10dde3f002 fix imports 2024-12-07 00:18:17 +01:00
imperosol c2d6af12ab Merge branches 'split-home' and 'split-studentcard' into split-counter 2024-12-07 00:13:50 +01:00
imperosol 6e48f88c06 extract counter auth views 2024-12-07 00:12:10 +01:00
imperosol 7a91a71565 extract counter auth views 2024-12-07 00:11:18 +01:00
imperosol c4764110d8 extract counter home views 2024-12-07 00:10:46 +01:00
imperosol ff68e65250 extract counter home views 2024-12-07 00:07:37 +01:00
imperosol c9d83e5916 extract student card views 2024-12-07 00:06:33 +01:00
imperosol 5dc99dbfcb extract student card views 2024-12-07 00:05:45 +01:00
thomas girod 8dbec85c8e Merge pull request #941 from ae-utbm/optimize-search
Optimize search
2024-12-06 21:00:06 +01:00
imperosol 84d7e40e66 feat: client-side cache for ajax-select inputs 2024-12-06 18:38:30 +01:00
imperosol 0b509f2200 fix N+1 queries on user search 2024-12-06 18:38:30 +01:00
thomas girod 9591162cc9 Merge pull request #940 from ae-utbm/fix-dump
Fix the account dump command.
2024-12-05 19:52:07 +01:00
imperosol 007e17fd8b Fix the account dump command.
- a missing `fail_silently` flag made the whole command fail if an invalid recipient is used (like closed utbm mail address)
- Not specifying the seller make the account detail pages crash.
2024-12-05 12:50:40 +01:00
thomas girod 95f8e7517c Merge pull request #932 from ae-utbm/fix-subscriptions
Rework the subscription page
2024-12-03 19:45:26 +01:00
imperosol 9667c79162 remove htmx-ext-response-targets 2024-12-03 19:41:10 +01:00
imperosol 1c79c25262 better tab style 2024-12-03 19:41:09 +01:00
imperosol 04b4b34bfe add back user profiles on subscription form 2024-12-03 19:41:09 +01:00
imperosol fc0e689d4e add initial values to forms 2024-12-03 19:41:09 +01:00
imperosol 83bb4b3b12 add translation 2024-12-03 19:41:09 +01:00
imperosol 8dcfc604a0 write tests 2024-12-03 19:41:09 +01:00
imperosol d2d639e5f6 Split SubscriptionForm into SubscriptionNewUserForm and SubscriptionExistingUserForm 2024-12-03 19:41:09 +01:00
thomas girod b3eb7693e3 Merge pull request #933 from ae-utbm/remove-stock
delete stock application
2024-11-28 23:20:35 +01:00
imperosol 10f42b1522 fix imports 2024-11-27 19:03:34 +01:00
imperosol 76e9f3b1dc Merge branches 'split-cash', 'split-click', 'split-main', 'split-admin', 'split-mixins', 'split-eticket' and 'split-invoices' into split-clean 2024-11-27 18:49:40 +01:00
imperosol d0ff9bc16c extract mixins views 2024-11-27 18:48:06 +01:00
imperosol 5e4ebd16f9 extract mixins views 2024-11-27 18:47:55 +01:00
imperosol d2b19424ff extract eticket views 2024-11-27 18:47:18 +01:00
imperosol 08286254cd extract eticket views 2024-11-27 18:47:03 +01:00
imperosol 4805c39b45 extract cash views 2024-11-27 18:46:24 +01:00
imperosol f845bbf20a extract cash views 2024-11-27 18:45:27 +01:00
imperosol 71c7158124 extract invoice views 2024-11-27 18:43:26 +01:00
imperosol c4643ee52c extract invoice views 2024-11-27 18:42:50 +01:00
imperosol b46b0882f3 extract admin views 2024-11-27 18:42:26 +01:00
imperosol 1c4efc9431 extract admin views 2024-11-27 18:41:47 +01:00
imperosol 4133e0ccdd extract click views 2024-11-27 18:41:12 +01:00
imperosol de415e7e75 split click views 2024-11-27 18:40:38 +01:00
imperosol 9d17524f45 extract main views 2024-11-27 18:00:48 +01:00
imperosol 68ad9650af extract main views 2024-11-27 17:56:44 +01:00
imperosol 8d4d8a3abc create views package 2024-11-27 17:07:08 +01:00
imperosol 9617e29ed5 delete stock application 2024-11-26 17:35:10 +01:00
imperosol 75406f7b58 Tabs jinja component 2024-11-26 16:17:44 +01:00
imperosol 70f5ae4f9c Move subscription forms to subscription/forms.py 2024-11-26 16:17:44 +01:00
Bartuccio Antoine ff307f1d65 Merge pull request #928 from ae-utbm/vite
Integrate vite manifests in django
2024-11-22 18:34:49 +01:00
Bartuccio Antoine d7ae601c52 Merge pull request #911 from ae-utbm/skia/fix_user_profile_picture
core: fix user profile picture size
2024-11-21 19:13:36 +01:00
thomas girod 33b9ff78bb Merge pull request #913 from ae-utbm/dump-accounts
Dump accounts
2024-11-21 18:39:49 +01:00
klmp200 0739ce2fb4 Improve readability and usability 2024-11-21 00:33:40 +01:00
klmp200 8fc1a754de Integrates vite manifests to django 2024-11-20 18:24:28 +01:00
klmp200 ca8c1c9d92 Mirror -index.css generation with their import location in -index.js/ts files 2024-11-19 21:22:14 +01:00
klmp200 0485ab1120 Remove defer from script where type=module is used 2024-11-19 21:22:14 +01:00
klmp200 8a8851847c Passage de webpack à vite.dev 2024-11-19 21:22:14 +01:00
klmp200 7b41051d0d Go for a more generic js bundling architecture
* Don't tie the output name to webpack itself
* Don't call js bundling webpack in python code
* Make the doc more generic about js bundling
2024-11-19 21:22:14 +01:00
thomas girod 3db1f592e2 Merge pull request #927 from ae-utbm/password-and-username
Improve password and username generation
2024-11-19 17:39:54 +01:00
imperosol 6853ec0b69 make random password generation safe 2024-11-19 13:21:08 +01:00
imperosol 3b39049c20 Make User.generate_username less stupid 2024-11-19 13:07:59 +01:00
thomas girod 37d1669a72 typo in docstrings
Co-authored-by: NaNoMelo <56289688+NaNoMelo@users.noreply.github.com>
2024-11-19 00:48:35 +01:00
imperosol ee9f36d883 implement the dump_accounts command 2024-11-19 00:48:35 +01:00
imperosol e712f9fdb8 improve counter dump admin 2024-11-19 00:43:17 +01:00
klmp200 9991f5dc64 Create nice animation when scanning nfc cards 2024-11-15 14:51:45 +01:00
klmp200 fce6c3d29c Convert nfc input to a web component 2024-11-15 14:51:45 +01:00
Bartuccio Antoine 346439076e Merge pull request #922 from ae-utbm/ci
Fix CI
2024-11-15 14:46:05 +01:00
klmp200 5e8d8b8d5d Revert back curl install of poetry in pipelines 2024-11-15 14:41:25 +01:00
thomas girod db9f86c41e Merge pull request #919 from ae-utbm/ts-eboutic
Migrate eboutic to Typescript
2024-11-14 11:07:37 +01:00
imperosol c7adde62eb reset poetry cache in github CI 2024-11-13 23:50:43 +01:00
imperosol 34559dda08 migrate eboutic to typescript 2024-11-13 23:26:05 +01:00
thomas girod 37c4621e9e Merge pull request #912 from ae-utbm/refactor_populate
Refactor populate
2024-11-13 15:43:18 +01:00
Bartuccio Antoine dd7ed290f5 Merge pull request #883 from ae-utbm/htmx
Introduce htmx in sith files
2024-11-13 15:35:24 +01:00
klmp200 dc1e1fc897 Fix typos 2024-11-12 21:38:38 +01:00
klmp200 37abde04d7 Improve fragment doc 2024-11-11 13:56:34 +01:00
klmp200 40f2f7033e Add test for AllowFragment mixin 2024-11-11 13:49:38 +01:00
klmp200 aebf909dc6 Apply review comments 2024-11-11 13:49:38 +01:00
klmp200 ec7d45fd91 Add documentation for htmx 2024-11-11 13:49:38 +01:00
klmp200 3af5d96bf5 Introduce htmx in sith files
* Convert FileModerationView into ListView and add pagination with htmx
* Don't allow sas moderation in file moderation view
* Split up base.jinja and introduce base_fragment.jinja
* Improve FileModerationView performances and make it root only
* Add permissions tests for file modération
2024-11-11 13:49:38 +01:00
imperosol c7a8a1a91c refactor CI 2024-11-11 13:28:44 +01:00
thomas girod 2dd434d987 Merge pull request #917 from ae-utbm/doc
Fix some doc typos
2024-11-11 12:47:51 +01:00
klmp200 5e954bae6a Fix some doc typos 2024-11-11 00:32:04 +01:00
imperosol a97dba18c2 Reduce width of non-multiple ajax selects 2024-11-11 00:26:16 +01:00
imperosol 26770de40e Make selected option more visible 2024-11-11 00:26:16 +01:00
imperosol 583d4ddfb8 Use less requests in GetUserForm.clean 2024-11-11 00:26:16 +01:00
imperosol 486047b929 remove the honeypot from the login page
Des utilisateurs humains se font régulièrement "éclairer" par le honeypot. Les mesures anti-bot ne devraient pas bloquer des humains.
2024-11-11 00:22:07 +01:00
imperosol b65ec6463b fix picture display in profile page 2024-11-10 16:18:56 +01:00
thomas girod 7cc13ea669 Merge pull request #899 from ae-utbm/ajax-select
Improve ajax select
2024-11-10 13:37:57 +01:00
imperosol c2efc969d0 refactor populate.py 2024-11-10 02:59:43 +01:00
imperosol b091fee035 custom queryset method to bulk update customer balance 2024-11-10 02:59:43 +01:00
Skia 2a0f2454f4 core: fix user profile picture size
Since 28f397574f and the removal of the
`flex-basis: 50px` property from `user_profile_pictures_thumbnails`,
the main picture was always displayed small-ish, at least on Firefox.
Setting back a flex-basis helps getting more consistent behavior once
again.
2024-11-07 15:51:43 +01:00
thomas girod 97ea1763f1 Merge pull request #910 from ae-utbm/logo-25
Add promo 25 logo
2024-11-07 15:25:06 +01:00
NaNoMelo b9f51596e9 Add promo 25 logo 2024-11-07 13:39:24 +01:00
klmp200 0610794dbe Fix ajax-select visual 2024-10-28 18:18:56 +01:00
klmp200 a6b32fcad1 Fix readability and avoid instantiating too many TypeAdapter 2024-10-28 18:08:13 +01:00
klmp200 e583e78a4e Convert the whole request to json at once on select widget 2024-10-21 17:11:07 +02:00
klmp200 3eb3feea49 Fix deprecated usage of schema json method and avoid multiple inheritance on select widgets 2024-10-21 16:14:00 +02:00
klmp200 935914428b Remove ajax_select completely 2024-10-21 13:30:12 +02:00
klmp200 ab63ba1c54 Remove ajax_select from accounting 2024-10-21 13:26:11 +02:00
klmp200 afdc6b69df Remove ajax_select from sas 2024-10-21 10:30:35 +02:00
klmp200 8b419dcee6 Remove ajax_select from core 2024-10-20 23:25:56 +02:00
klmp200 e7181257e3 Remove ajax_select from core/views/forms.py 2024-10-20 23:04:54 +02:00
klmp200 8e7c09332f Remove ajax_select from core/views/group.py 2024-10-20 22:58:39 +02:00
klmp200 d9ea5e5538 Remove ajax_select from trombi 2024-10-20 22:41:35 +02:00
klmp200 a21460a1b8 Remove ajax_select from subscriptions 2024-10-20 22:36:55 +02:00
klmp200 b6a480ff61 Remove ajax_select from forum 2024-10-20 22:29:07 +02:00
klmp200 84ee6dd2f5 Remove ajax_select from clubs 2024-10-20 21:28:25 +02:00
klmp200 a950585a02 Remove ajax_select from rootplace 2024-10-20 20:55:07 +02:00
klmp200 7f8a2c1eaf Remove ajax_select from counters 2024-10-20 20:55:05 +02:00
klmp200 125157fdf4 Move gettext to the top 2024-10-20 18:35:55 +02:00
klmp200 517263dd58 Automatically move inner html in created node when inheriting from HTMLElement 2024-10-20 18:29:48 +02:00
klmp200 301fc73687 Fix markdown input initial value and crash when alpine is not loaded 2024-10-20 18:13:48 +02:00
klmp200 45441c351d Improve ajax-select style 2024-10-20 17:37:51 +02:00
klmp200 be5ce414ba Add proper delete button and fix item ordering 2024-10-20 16:57:38 +02:00
klmp200 bb3f277ba5 Extract js and css from select widgets to editable class attributes 2024-10-20 13:40:59 +02:00
thomas girod 23049a8ae2 Merge pull request #901 from ae-utbm/improve-warning-dump
Improve warning dump
2024-10-20 13:35:08 +02:00
klmp200 8bbebfdb13 Add AutoCompleteSelectGroup 2024-10-20 13:33:44 +02:00
imperosol 662b4b5c53 precise that dumped users can still subscribe 2024-10-20 12:45:37 +02:00
imperosol 9675b6372c add flags to the dump warning mail command 2024-10-20 12:32:28 +02:00
imperosol 03afd49115 make the mail text only 2024-10-20 12:32:28 +02:00
klmp200 0af3505c2a Make a generic AjaxSelect abstract class 2024-10-20 02:26:32 +02:00
klmp200 f78b968075 Move markdown input and select widgets to a widget folder 2024-10-20 01:05:34 +02:00
thomas girod 7d40316044 Merge pull request #900 from ae-utbm/optimize-again
optimize product pages again
2024-10-20 00:55:27 +02:00
klmp200 e3dcad62cc Migrates lookups
* products
* files
* Groups
* Clubs
* Accounting
2024-10-20 00:47:31 +02:00
imperosol db6a871854 optimize product pages again 2024-10-20 00:27:25 +02:00
klmp200 ce4f57bd8f Add ajax user widget and remove ajax_select from elections 2024-10-19 22:06:34 +02:00
klmp200 8be8328830 Create select widget based on tomselect on django backend
Replace make_ajax in elections by the new widget
2024-10-19 21:32:58 +02:00
klmp200 0a0092e189 Add link-once and script-once web components 2024-10-19 18:55:32 +02:00
klmp200 c50f0a2ac5 Simplify ajax-select inheritance and make simple auto complete 2024-10-19 16:02:54 +02:00
klmp200 6b3012d21c Fix broken sas ui in webkit based browsers 2024-10-18 23:50:04 +02:00
klmp200 729f848c14 Add min-characters-for-search attribute for user-ajax-select 2024-10-18 23:34:37 +02:00
klmp200 56cc4776a6 Create base class for ajax-select 2024-10-18 23:26:04 +02:00
Bartuccio Antoine b9cbba2309 Merge pull request #896 from ae-utbm/relpace-select2
Replace selec2 with tom-select
2024-10-18 00:24:09 +02:00
klmp200 4165f8d4af Add register decorator for web components and a better inheriting system for html elements 2024-10-17 23:14:54 +02:00
klmp200 cac185634d Avoid keeping text after selecting item 2024-10-17 18:21:51 +02:00
klmp200 66dceefcf0 Fix bad constructor when adding attrs that are not part of the parent and fix tom-select on safari 2024-10-17 18:15:55 +02:00
klmp200 677ff51ea5 Create web component util 2024-10-17 18:15:55 +02:00
klmp200 645b8a543e Make easymde compatible with safari 2024-10-17 18:15:55 +02:00
klmp200 74a506c48b Add missing features
* Fix display
* Add internationalization
* Avoid querying under a certain amount of characters
* Update docs for translations with typescript
* Add interpolate to typescript globals
2024-10-17 18:15:55 +02:00
klmp200 deda2b4055 Replace selec2 with tom-select 2024-10-17 18:15:55 +02:00
thomas girod 67ebb90ffa Merge pull request #897 from ae-utbm/fix-xss
Fix xss on select2 results
2024-10-17 12:10:08 +02:00
imperosol 5d16ba135a fix: xss on select2 results 2024-10-17 08:15:34 +02:00
thomas girod 150d08dc45 Merge pull request #894 from ae-utbm/sentry
Test sentry-debug endpoint
2024-10-15 20:48:01 +02:00
klmp200 c1a85486cc Add test for sentry-debug endpoint 2024-10-15 14:09:51 +02:00
thomas girod d16a207a83 Add more Ruff rules (#891)
* ruff: apply rule F

* ruff: apply rule E

* ruff: apply rule SIM

* ruff: apply rule TCH

* ruff: apply rule ERA

* ruff: apply rule PLW

* ruff: apply rule FLY

* ruff: apply rule PERF

* ruff: apply rules FURB & RUF
2024-10-15 11:36:26 +02:00
klmp200 d114b01bcc Make sure Alpine is always loaded when using markdown-input component 2024-10-15 00:28:43 +02:00
klmp200 dee54c3b41 Use manifest storage and correct webpack conversion on easymde form 2024-10-15 00:28:43 +02:00
klmp200 670d2fa12e Use a web component for easymde
* Bump tsconfig output to es6
* Fix wrong import behavior on typescript according to webpack's doc
* Create an easymde component
2024-10-15 00:28:43 +02:00
thomas girod a68e47ce8c Merge pull request #890 from ae-utbm/update-python-deps
Upgrade python dependencies
2024-10-14 15:45:18 +02:00
klmp200 0314aa6733 Upgrade python dependencies
* Upgrade pre-commit
* Upgrade model-bakery
* Uprgade mkdocstrings
* Upgrade mkdocstrings-python
* Upgrade mkdocs-material
2024-10-14 15:16:07 +02:00
thomas girod 496ad7ce9b Merge pull request #868 from ae-utbm/delete-picture-confirm-button
Delete picture confirm button
2024-10-14 14:12:50 +02:00
NaNoMelo efdd4a6b16 fix ruff breakpoint 2024-10-14 01:59:24 +02:00
klmp200 0b31b215f6 Remove check_front command 2024-10-14 00:55:48 +02:00
klmp200 7e1734aed5 Migrate chartjs to npm 2024-10-14 00:55:48 +02:00
imperosol 19cd51043a feat: display moderation requests to moderators 2024-10-14 00:47:07 +02:00
imperosol 5348a451e9 feat: picture moderation requests 2024-10-14 00:45:52 +02:00
imperosol 83ae21140d move SAS forms to their own file 2024-10-14 00:45:52 +02:00
klmp200 cdf9519a9f Port galaxy to webpack 2024-10-13 20:09:55 +02:00
thomas girod d77358eaac Merge pull request #879 from ae-utbm/optimize-products-page
optimize: product list views
2024-10-13 19:20:01 +02:00
klmp200 9609a7615b Don't apply js minification to webpack generated files 2024-10-13 17:14:21 +02:00
klmp200 361a06e5b3 Migrate sentry to webpack 2024-10-13 17:14:21 +02:00
klmp200 1720307c21 Add biome for typescript in vscode config 2024-10-13 17:00:09 +02:00
imperosol 15ae24f0bd optimize: product list views 2024-10-13 12:32:50 +02:00
thomas girod 143713fac1 Merge pull request #878 from ae-utbm/fix-invoices
fix: InvoiceQuerySet.annotate_total() (but this time good)
2024-10-13 11:57:59 +02:00
imperosol e4845b580b fix: invoices month grouping 2024-10-13 11:47:22 +02:00
klmp200 40c623b202 Optimize select2 import 2024-10-13 10:55:15 +02:00
klmp200 092ace8432 Add commands to easily analyze webpack outputs 2024-10-13 10:55:15 +02:00
klmp200 00cf619c68 Remove hand crafted urls on viewer-index.ts 2024-10-13 10:55:15 +02:00
klmp200 b6e1c3bc88 Add helper function to export ts functions to html 2024-10-13 10:55:15 +02:00
klmp200 3b1d06a71d Update select2 documentation 2024-10-13 10:55:15 +02:00
klmp200 a5d8c96bab Remove select2 from vendored
* Make core/utils/select2.ts
* Convert viewer-index.js to typescript
2024-10-13 10:55:15 +02:00
imperosol 564d95f701 fix: InvoiceQuerySet.annotate_total() (but for real this time) 2024-10-13 10:37:48 +02:00
klmp200 768e2867b5 Fix wrong formatter doc on vscode 2024-10-12 19:43:07 +02:00
klmp200 f07a855e7e Remove history management from script.js and migrate sas albums to webpack 2024-10-12 19:19:23 +02:00
thomas girod 2fa9daf627 Merge pull request #872 from ae-utbm/invoices-bug
fix: InvoiceQuerySet.annotate_total()
2024-10-12 19:18:37 +02:00
NaNoMelo a1bae7ced3 fix empty options in paginated with typescript 2024-10-12 18:59:06 +02:00
imperosol 7312580a8d fix: InvoiceQuerySet.annotate_total() 2024-10-12 15:52:40 +02:00
thomas girod 1c774aa4a0 Merge pull request #861 from ae-utbm/mail-inactives
Send mail to inactive users
2024-10-12 15:33:23 +02:00
imperosol 29b32f6cbf Tell the customer balance in the warning mail 2024-10-11 09:59:03 +02:00
imperosol 465e0f31d9 write command test 2024-10-11 09:57:46 +02:00
imperosol 5a8052ae47 send mail to inactive users 2024-10-11 09:57:41 +02:00
imperosol 6a64e05247 select inactive users 2024-10-11 09:45:54 +02:00
thomas girod 81a64eed08 Merge pull request #867 from ae-utbm/barmen-link
Better UX and performance for counter state display
2024-10-11 09:31:12 +02:00
Bartuccio Antoine 29b27dc626 Merge pull request #866 from ae-utbm/openapi
Typescript support and auto generated typescript client API
2024-10-11 09:30:35 +02:00
imperosol ca25a12be0 Increase the barmen timeout limit
La limite actuelle est trop faible. En soirée, on s'en fout. Mais en journée, c'est terriblement chiant. Certains barmens passent leur temps à rafraichir la la page, certains mettent un rechargement auto à intervalles réguliers (ce qui tue le concept du timeout), et d'autres encore ont juste arrêté d'y prêter attention (mais le comptoir apparait alors comme fermé, et des étudiants qui auraient pu venir au Foyer ne viennent finalement pas)
2024-10-10 19:38:49 +02:00
imperosol c0a6f5eb30 Optimize barmen timeout and counter state fetch
Le timeout se fait en une seule requête et la récupération de l'état des comptoirs en une seule requête aussi. Grâce à ça, on peut en grande partie retirer le cache pour l'affichage de l'état des comptoirs, ce qui a des implications excellentes en termes d'UX (comme le fait que la redirection vers la page de comptoir ou d'activité aura plus une apparence de truc aléatoire)
2024-10-10 19:38:49 +02:00
imperosol 4bc4d266c2 Remove the question mark from the counter state
En raison de la manière dont le timeout marche et de l'activité des comptoirs, la notion de "comptoir inactif" n'est pas intuitive. Un comptoir est ouvert ou fermé. Point.
2024-10-10 19:37:00 +02:00
thomas girod 8f0ee4df6d Merge pull request #828 from ae-utbm/remove-stocks
remove stock application
2024-10-10 19:00:38 +02:00
klmp200 579d077b35 Fix docstring 2024-10-10 15:45:43 +02:00
klmp200 32444fac90 Apply review comments 2024-10-10 15:42:11 +02:00
klmp200 849177562d Add a way to get the base url of an endpoint 2024-10-10 02:57:54 +02:00
klmp200 86bbc4cf6e Migrate uv guide to webpack 2024-10-10 02:04:49 +02:00
klmp200 46e58bb49e Remove fetchPaginated and migrate viewer.js to viewer-index.js in webpack 2024-10-09 21:46:56 +02:00
klmp200 9199f91151 Use typescript api for user pictures and allow imports across js files
* Add imports paths for js files in node
* Add a ts version of fetchPaginated
* Update documentation
2024-10-09 20:59:12 +02:00
klmp200 9247696c1c Don't collect .ts files in statics 2024-10-09 17:30:44 +02:00
klmp200 37f62e15cf Use new typescript api for user graphs 2024-10-09 17:21:05 +02:00
klmp200 a98c924b24 Use auto generated api for markdown input 2024-10-09 16:56:53 +02:00
klmp200 a71ca60270 Add typescript support and automatic openapi client generation from ninja 2024-10-09 16:28:54 +02:00
thomas girod 76cc730d8f Merge pull request #865 from ae-utbm/deps
Update Deps
2024-10-09 15:54:09 +02:00
thomas girod 12bb7e9294 remove stock application 2024-10-09 14:50:41 +02:00
imperosol 1dca0ea003 update ruff 2024-10-09 14:28:13 +02:00
imperosol b340a6568f update dependencies 2024-10-09 14:26:39 +02:00
klmp200 6f4e93bb76 Use configuration object for load builders 2024-10-09 12:14:10 +02:00
klmp200 93eb09887e Fix translations 2024-10-09 12:14:10 +02:00
klmp200 09081b03b6 Move family_graph.js to webpack
* Remove cytoscape dependencies
2024-10-09 12:14:10 +02:00
klmp200 ceee393bd8 Move user_picture.js to webpack
* Fix relative path generation in webpack
* remove vendored/native-file-system-adapter
* remove vendored/zip.js
2024-10-09 12:14:10 +02:00
thomas girod b969513d94 Merge pull request #858 from ae-utbm/jsstandard
Add biome to format js files
2024-10-08 23:45:20 +02:00
thomas girod 2111a2c67e Merge pull request #859 from ae-utbm/account-pages
Optimize user account pages
2024-10-08 19:55:45 +02:00
klmp200 7405241b82 Apply all biomejs fixes 2024-10-08 17:14:22 +02:00
imperosol b0884c6b04 return 404 when accessing not existing account 2024-10-08 15:30:35 +02:00
imperosol 20bea62542 use spaces for indentation 2024-10-08 13:54:44 +02:00
klmp200 24925f7726 Add Biome to documentation 2024-10-08 01:49:29 +02:00
klmp200 d0c18d4538 Format with biome instead of standard 2024-10-08 01:49:15 +02:00
klmp200 37eaa4b912 Add Standard to documentation 2024-10-07 01:36:13 +02:00
klmp200 a3cca056ae Apply standard to easymde 2024-10-07 00:10:24 +02:00
klmp200 ee965008d1 Properly fix no-unused-vars warning 2024-10-07 00:04:48 +02:00
klmp200 c57d2ece9c Apply standard formater and linter on js files 2024-10-07 00:04:48 +02:00
klmp200 e5aa7aa866 Move easymde widget to easymde-index.js 2024-10-07 00:04:05 +02:00
thomas girod cacdf600f4 Merge pull request #860 from ae-utbm/fix-sas-owner
Fix sas owner
2024-10-05 21:44:21 +02:00
NaNoMelo 5ee0ee8efb tests for picture ownership 2024-10-05 21:02:19 +02:00
NaNoMelo 08f20796a7 access rights fix 2024-10-05 20:53:52 +02:00
imperosol 58d3a7ee2c Optimize user account pages 2024-10-04 13:41:39 +02:00
thomas girod f6be360eab Merge pull request #857 from ae-utbm/fix-slideshow
Fix slideshow
2024-10-03 22:51:25 +02:00
thomas girod 543a48b4ab reminder to use wsl when cloning the project 2024-10-03 18:32:27 +02:00
klmp200 0f657b934d Fix makemessage doc 2024-10-03 18:32:27 +02:00
thomas girod c4e42212aa Better install doc 2024-10-03 18:32:27 +02:00
thomas girod a4fe4996aa Merge pull request #834 from ae-utbm/real-name
Restore real name
2024-10-03 10:12:23 +02:00
klmp200 fbcacb24f8 Fix broken screen slideshow 2024-10-03 01:05:56 +02:00
thomas girod 0eaa20e09d fix localdate issues 2024-10-03 00:25:22 +02:00
klmp200 271d57051e Upgrade to fontawesome 6
* Adapt fontawesome usage when needed
* Fix uv guide not importing css
* Remove utf8 usage for fontawesome
2024-10-03 00:06:03 +02:00
thomas girod 3d6c260e53 Merge pull request #854 from ae-utbm/img-resizing
faster image resizing and smaller results
2024-10-02 23:50:33 +02:00
thomas girod d0f17bd41a faster image resizing and smaller results 2024-10-02 23:16:47 +02:00
klmp200 655d72a2b1 Completely integrate wepack in django
* Migrate alpine
* Migrate jquery and jquery-ui
* Migrate shorten
* Add babel for javascript
* Introduce staticfiles django app
* Only bundle -index.js files in static/webpack
* Unify scss and webpack generated files
* Convert scss calls to static
* Add --clear-generated option to collectstatic
* Fix docs warnings
2024-10-02 16:11:02 +02:00
thomas girod 71c96fdf62 Merge pull request #852 from ae-utbm/master
Merge back
2024-10-01 10:39:42 +02:00
thomas girod 3f2327dee4 Merge pull request #851 from ae-utbm/841-sales-selection-performance
841 sales selection performance
2024-09-30 16:07:19 +02:00
NaNoMelo 06eecfce40 Optimized last operations on counters 2024-09-30 16:02:17 +02:00
thomas girod 67af1485b3 Merge pull request #850 from ae-utbm/sas-history
Fix history navigation bug in picture viewer in sas
2024-09-30 15:06:10 +02:00
klmp200 a00a85a56a Fix recursive link history updates for picture viewer 2024-09-30 15:02:11 +02:00
thomas girod bb953a6139 Merge pull request #831 from ae-utbm/forum-css-rework
Forum css rework
2024-09-30 12:13:52 +02:00
thomas girod 140dc26dc6 Merge pull request #846 from ae-utbm/fix-select2-img
fix profile pictures layout in Select2 results
2024-09-30 12:13:21 +02:00
thomas girod 3548deebf6 Merge pull request #849 from ae-utbm/taiste
New 3DSv2 fields and Bugfixes
2024-09-30 11:33:32 +02:00
thomas girod c67155f02c Merge pull request #845 from ae-utbm/fix-search
Fix 500 whean searching users
2024-09-30 10:51:14 +02:00
thomas girod c10e1e8cbf fix profile pictures layout in Select2 results 2024-09-29 23:31:33 +02:00
thomas girod c5f5ad3f75 fix 500 when searching users 2024-09-29 23:01:55 +02:00
thomas girod 8ec3074488 Merge pull request #842 from ae-utbm/3dsv2-again
Add the new 3DSv2 fields
2024-09-28 17:59:37 +02:00
thomas girod 1b1284d3d0 Better validation for phone number in billing info 2024-09-28 17:25:34 +02:00
thomas girod f71518ed6f Move deprecated paginate macro to a lower scope 2024-09-27 11:21:33 +02:00
thomas girod 1800785b80 generalize usage of the paginate_jinja macro 2024-09-27 11:21:33 +02:00
thomas girod 6449724ed5 fix pagination macro and add ellision 2024-09-27 11:21:33 +02:00
thomas girod 6179c3e7d4 Better style for forum messages 2024-09-27 11:21:33 +02:00
thomas girod 3e5d4c5fbb add fixtures for the forum 2024-09-27 11:21:33 +02:00
thomas girod 3f2b63aaa5 move forum style into its own file 2024-09-27 11:21:33 +02:00
thomas girod d29a5cdb44 Add the new 3DSv2 fields 2024-09-27 11:10:38 +02:00
thomas girod bbcc7ffeaa Merge pull request #839 from ae-utbm/user-ordering
User ordering
2024-09-25 17:51:25 +02:00
thomas girod 93f4dede3e Put users that never logged in at the end 2024-09-25 14:36:22 +02:00
thomas girod 683f8235b1 Merge pull request #840 from ae-utbm/faster-album-rights
Optimize SithFile recursive rights
2024-09-25 14:35:45 +02:00
thomas girod 43917317b4 optimize file recursive rights 2024-09-25 12:31:51 +02:00
thomas girod f182de5929 restore user ordering 2024-09-24 12:52:40 +02:00
thomas girod c6657bffd2 fix: profile picture deletion by board members 2024-09-23 23:35:14 +02:00
thomas girod 3d138d404f move webcam JS to its own file 2024-09-23 23:35:14 +02:00
klmp200 9c93162741 Add missing files 2024-09-23 10:25:27 +02:00
klmp200 6068c6048a Use real name of the website once again 2024-09-23 01:37:25 +02:00
thomas girod d47461ba40 Merge pull request #830 from ae-utbm/repair-pagination
fix: `fetch_paginated`
2024-09-20 00:03:34 +02:00
thomas girod 66e88ac6fb Merge pull request #832 from ae-utbm/image-deletion-fix
Fixes after last deployment
2024-09-19 23:57:12 +02:00
thomas girod d3cada4c95 fix family graph image exension 2024-09-19 20:52:10 +02:00
thomas girod 27443bcd21 fix image deletion. again. 2024-09-19 20:35:08 +02:00
thomas girod b246e171b7 fix: fetch_paginated 2024-09-18 22:03:39 +02:00
thomas girod ec434bec56 Merge pull request #829 from ae-utbm/taiste
Family tree and blazingly fast SAS
2024-09-18 16:06:01 +02:00
thomas girod 7458f622f5 Merge pull request #809 from ae-utbm/ajax-image-sas
Ajax image sas
2024-09-18 15:03:54 +02:00
thomas girod ab72e01707 lower the number of characters to trigger a fulltext search 2024-09-17 17:52:39 +02:00
thomas girod acad74528d fix: sale creation in populate_more 2024-09-17 16:05:42 +02:00
thomas girod 813bbbb94a preload images and identifications 2024-09-17 12:23:13 +02:00
thomas girod a2a858262a apply review comments 2024-09-17 12:23:13 +02:00
klmp200 727e5cb199 Dummy data on default current_picture to avoid javascript errors 2024-09-17 12:23:13 +02:00
klmp200 71602b43bd implement back feature on sas ajax view 2024-09-17 12:23:13 +02:00
thomas girod bc40b92744 completely ajaxify the picture page 2024-09-17 12:23:13 +02:00
thomas girod d545becf24 add spinner during loading 2024-09-17 12:17:21 +02:00
thomas girod 48f605dbe0 Use select2 for user picture identification 2024-09-17 12:17:17 +02:00
thomas girod b0d7bbbb79 select 2 builder 2024-09-17 12:14:20 +02:00
Bartuccio Antoine f624b7c66d Graph de famille en frontend (#820)
* Remove graphviz and use cytoscape.js instead

* Frontend generated graphs
* Make installation easier and faster
* Better user experience
* Family api and improved interface
* Fix url history when using 0, improve button selection and reset reverse with reset button
* Use klay layout
* Add js translations and apply review comments
2024-09-17 12:10:06 +02:00
thomas girod bf96d8a10c Merge pull request #824 from ae-utbm/compress-product-images
auto compress product icons
2024-09-15 18:26:56 +02:00
thomas girod e8b496cfdc test: Product and ProductType icon resizing 2024-09-15 16:38:58 +02:00
thomas girod 79ef151ad3 auto compress product icons 2024-09-15 14:12:41 +02:00
thomas girod 8e48103fd2 Merge pull request #823 from ae-utbm/fix-image-extension
fix image extension
2024-09-14 19:48:30 +02:00
thomas girod ed4c65600c fix image extension 2024-09-14 18:45:12 +02:00
thomas girod ae16a1bd89 Merge pull request #821 from ae-utbm/taiste
Python upgrade and bugfixes
2024-09-12 11:37:27 +02:00
thomas girod e2b42145e1 Merge pull request #819 from ae-utbm/fix-delete-picture
fix undeletable SAS pictures
2024-09-10 23:12:59 +02:00
thomas girod 55ad1f99fd fix undeletable SAS pictures 2024-09-10 21:38:13 +02:00
thomas girod 5b427bee35 Merge pull request #817 from ae-utbm/skia/faster_install_xapian
Faster install xapian
2024-09-09 15:37:12 +02:00
Skia d1c88a5cef core: commands: make 'install_xapian' way faster 2024-09-09 15:17:09 +02:00
thomas girod 99a25d5e9b Merge pull request #811 from ae-utbm/sas-form-length
unify album name length
2024-09-08 14:32:26 +02:00
thomas girod d148d6b3a5 unify album name length 2024-09-08 13:30:23 +02:00
thomas girod 66189d3ab2 Merge pull request #810 from ae-utbm/fix-membership-end
fix memberships ending today
2024-09-04 16:27:00 +02:00
thomas girod f1afa3b436 fix memberships ending today 2024-09-04 16:21:42 +02:00
thomas girod 6380fb193c Merge pull request #808 from ae-utbm/update
Update Python and dependencies
2024-09-02 13:59:23 +02:00
thomas girod 341ffc9a55 update CI 2024-09-02 12:49:11 +02:00
thomas girod 6962b39fc9 use typing.Self for custom queryset methods 2024-09-02 01:03:46 +02:00
thomas girod d04b4c77c6 update dependencies 2024-09-02 01:03:46 +02:00
thomas girod 453b7df0be bump Python to 3.12 2024-09-02 01:03:46 +02:00
thomas girod 878ee99fe4 Merge pull request #806 from ae-utbm/taiste
Bugfixes
2024-09-02 00:03:40 +02:00
thomas girod 6918e3044f Merge pull request #801 from ae-utbm/remove-version
remove sith version from the footer
2024-09-01 23:50:53 +02:00
thomas girod cf46c3800f remove sith version from the footer 2024-09-01 23:47:25 +02:00
thomas girod 7c0c132f40 Merge pull request #804 from ae-utbm/repair-subscription-translation
fix subscription form translation
2024-09-01 23:42:18 +02:00
thomas girod e0bf797876 Merge pull request #805 from ae-utbm/images-format
Better images format
2024-09-01 23:33:57 +02:00
thomas girod dd07c374d7 convert uploaded images to webp 2024-09-01 19:05:54 +02:00
thomas girod b3e59b3829 remove unused view GET user/<user_id>/profile_upload 2024-09-01 18:49:50 +02:00
thomas girod 352b09d9cd fix subscription form translation 2024-09-01 15:20:07 +02:00
thomas girod 93cc6d99f8 Merge pull request #803 from ae-utbm/fix-promo-image
fix promo img on clicks
2024-09-01 12:49:38 +02:00
thomas girod 85a99fc8fa fix promo img on clicks 2024-09-01 12:33:49 +02:00
thomas girod a4d801bed4 Merge pull request #798 from ae-utbm/fix-content-disposition
repair name of protected files
2024-08-30 10:44:49 +02:00
thomas girod fbff38c5c3 repair name of protected files
Depuis l'implémentation de l'envoi des fichiers par le reverse-proxy, le nom des fichiers n'était plus envoyé.
2024-08-30 10:27:03 +02:00
thomas girod 14402f7537 Merge pull request #800 from ae-utbm/forgotten-migrations
add forgotten migration
2024-08-29 12:53:21 +02:00
thomas girod 88d24f8067 Merge pull request #799 from ae-utbm/remove-sentry-ci
remove sentry deployment CI (until Sentry is repaired)
2024-08-29 12:53:06 +02:00
thomas girod cc1d700f7d add forgotten migration 2024-08-29 11:57:09 +02:00
thomas girod e82acdabb0 remove sentry deployment CI (until Sentry is repaired) 2024-08-29 11:48:26 +02:00
thomas girod ea42c98571 Merge pull request #797 from ae-utbm/fix-image-injection
Better form for user submiting images
2024-08-27 22:46:01 +02:00
klmp200 cc5df9b171 Better form for user submiting images, fix potential attack vector on bad file being resized and treated as an image 2024-08-27 17:05:37 +02:00
thomas girod b4749f297b Merge pull request #795 from ae-utbm/taiste
Last update before Inté
2024-08-27 14:16:40 +02:00
thomas girod e564c6604c Merge pull request #788 from ae-utbm/manifest-static-files
Manifest static files
2024-08-27 11:08:49 +02:00
thomas girod 712615a312 Merge pull request #794 from ae-utbm/user-pictures-ajax
Better browser compatibility for user picture page
2024-08-27 11:08:27 +02:00
klmp200 d95d4901d2 Use reduce instead of groupBy for user picture sorting to support more browsers 2024-08-27 10:35:38 +02:00
thomas girod 9373654306 use rjsmin for js minification
Ca minifie moins bien le JS que Uglify, mais c'est intégrable directement dans les dépendances du projet
2024-08-26 23:16:13 +02:00
thomas girod 4a9d9f03a8 fix test workflow 2024-08-26 22:59:40 +02:00
thomas girod b7261ec629 custom manifest static files storage that also minify scss and js files 2024-08-26 22:34:32 +02:00
thomas girod 2e1f16fa04 slim jquery-ui 2024-08-26 22:34:32 +02:00
thomas girod d295cc5223 move vendored files into their own folder 2024-08-26 22:34:32 +02:00
thomas girod ff088009d9 move static files in their respective application 2024-08-26 22:34:31 +02:00
thomas girod 52c19e9962 simplify scss management 2024-08-26 22:34:31 +02:00
thomas girod 68d0a16d1c Merge pull request #782 from ae-utbm/ajax-navigation-history
Ajax navigation history in uv guide
2024-08-26 22:29:19 +02:00
klmp200 a422e8d39a Improve rendering of file input 2024-08-26 22:21:16 +02:00
klmp200 ef80c1be61 Make camera error gray to be less aggressive on the eyes 2024-08-26 22:21:16 +02:00
klmp200 85d9816aaa Improve delete button behavior 2024-08-26 22:21:16 +02:00
klmp200 93b66d980d Directly display selected img of form on screen and convert to webp 2024-08-26 22:21:16 +02:00
klmp200 07d617da91 Get video resolution from the camera settings for a better image quality 2024-08-26 22:21:16 +02:00
klmp200 34aac40e65 Add translations 2024-08-26 22:21:16 +02:00
klmp200 f54bf2b8af Adjust css 2024-08-26 22:21:16 +02:00
klmp200 e7d04d9817 Unify user profile display with a nice macro and handle camera errors 2024-08-26 22:21:16 +02:00
klmp200 ef1537ac2c Basic webcam setup with modern web api 2024-08-26 22:21:16 +02:00
thomas girod d1f86fe3d9 Merge pull request #791 from ae-utbm/remove-bbcode
Remove to_markdown.jinja forgotten during bbcode convertion removal
2024-08-24 20:40:04 +02:00
klmp200 d13b79552b Remove to_markdown.jinja forgotten during bbcode convertion removal 2024-08-21 15:35:43 +02:00
thomas girod 4036bfd703 Merge pull request #775 from ae-utbm/user-pictures-ajax
Render user picture page with ajax to improve performances
2024-08-18 12:40:07 +02:00
klmp200 759e360a1d Don't use unnecessary promises 2024-08-17 10:15:13 +02:00
klmp200 8865529b39 Use native alpine debounce 2024-08-17 02:58:53 +02:00
klmp200 cdb73ee49c Don't rely on waiting for pedagogy history 2024-08-17 02:57:00 +02:00
klmp200 9188c28ee7 Remove intersect 2024-08-16 22:52:20 +02:00
klmp200 2a6c1f050d Create a paginate_alpine macro 2024-08-11 15:11:51 +02:00
klmp200 2ec1f8cdc0 Fix back action in uv guide 2024-08-11 14:58:05 +02:00
thomas girod 121b388d85 Merge pull request #781 from ae-utbm/ajax-navigation-history
Fix back function in album pagination
2024-08-11 00:34:21 +02:00
klmp200 589119c9ee Improve update_query_string with enum action 2024-08-10 23:32:50 +02:00
klmp200 b35e1a476e Fix back function in album pagination 2024-08-10 18:38:04 +02:00
thomas girod 8174bce720 Merge pull request #780 from ae-utbm/remove-bbcode
remove doku/bbcode to markdown
2024-08-10 16:04:10 +02:00
thomas girod d8a7d62b23 Merge pull request #779 from ae-utbm/fix-queryset
fix crash on album fetch & test
2024-08-10 16:03:56 +02:00
klmp200 a75730d91f Fix unbalanced html 2024-08-10 15:16:37 +02:00
klmp200 a2b5f929dd Apply review comments
* Add alpine intersect
* Move alpine and it's plugins to a folder
* Fix spinning wheel position
* Improve album title position
2024-08-10 14:49:02 +02:00
thomas girod 7a0fa9f1a0 remove doku/bbcode to markdown 2024-08-10 14:23:01 +02:00
thomas girod 28ff7f24c5 Merge pull request #774 from ae-utbm/fix-operation-logs
Fix operation logs
2024-08-10 10:33:39 +02:00
thomas girod e6db25357b Merge pull request #778 from ae-utbm/user-search-privacy
User search privacy
2024-08-10 09:38:29 +02:00
thomas girod 72ea6b6fdd fix crash on album fetch & test 2024-08-10 00:46:40 +02:00
klmp200 bf5f72fd9d Fix user search displaying results that shouldn't be viewed 2024-08-10 00:43:03 +02:00
thomas girod af724a1e0e Merge pull request #777 from ae-utbm/taiste
SAS Hotfixes
2024-08-09 18:20:22 +02:00
klmp200 0eeaf1ce21 Render user picture page with ajax to improve performances 2024-08-09 18:09:58 +02:00
thomas girod 57a8215c6b Merge pull request #776 from ae-utbm/fix-album-navigation
SAS fixes
2024-08-09 18:09:06 +02:00
thomas girod 9163e4dee6 fix SAS album display 2024-08-09 18:08:36 +02:00
thomas girod c56d6e3f6b fix wrong page size when fetching pictures. 2024-08-09 17:35:33 +02:00
klmp200 20e8854467 Fix operation logs 2024-08-09 17:35:26 +02:00
thomas girod 3ef38fabdb fix picture navigation 2024-08-09 17:34:35 +02:00
thomas girod f5cee10761 Merge pull request #773 from ae-utbm/taiste
SAS, Eboutic, Antispam, psycopg
2024-08-09 13:35:26 +02:00
thomas girod d1cbb765c0 Merge pull request #769 from ae-utbm/query-sas
Sas picture selection
2024-08-09 12:11:16 +02:00
thomas girod 7ea9a5ca2d improved feedback when loading ajax content 2024-08-09 11:58:26 +02:00
thomas girod 20c015c312 improved UX 2024-08-09 11:58:26 +02:00
thomas girod ecb48ce663 fix error when uploading image with an alpha channel 2024-08-09 11:58:26 +02:00
thomas girod 00dc03a235 fix rights on albums and next/previous pictures 2024-08-08 13:35:48 +02:00
thomas girod d3b203a4a1 change cache on picture download 2024-08-08 11:50:45 +02:00
thomas girod 4506440a62 add PictureQuerySet.viewable_by(user) method 2024-08-08 11:50:45 +02:00
thomas girod da6bd84cdf restify album view 2024-08-08 11:50:45 +02:00
thomas girod 0b9ccf6a57 paginate GET /api/sas/picture 2024-08-08 11:50:45 +02:00
thomas girod a056bd177f Merge pull request #772 from ae-utbm/master
Merge-back
2024-08-08 11:47:26 +02:00
thomas girod d2ea8f2898 Merge pull request #742 from ae-utbm/refactor-eboutic
Eboutic big refactor
2024-08-07 20:36:50 +02:00
thomas girod 5cce4269bb remove fuzzy from translations 2024-08-07 20:33:26 +02:00
thomas girod 0a2ed6dd94 fix crash when basket contains not existing product 2024-08-07 20:15:46 +02:00
thomas girod 417f328206 fix billing infos not sending 2024-08-07 14:29:51 +02:00
thomas girod cca9732925 eboutic big refactor 2024-08-06 16:49:20 +02:00
thomas girod f02864b752 Merge pull request #768 from ae-utbm/ruff-print
T2 ruff rule
2024-08-06 16:45:20 +02:00
thomas girod 62bb15317c T2 ruff rule 2024-08-06 11:42:10 +02:00
thomas girod b35751126f Merge pull request #762 from ae-utbm/dependabot/pip/taiste/sentry-sdk-2.12.0
[UPDATE] Bump sentry-sdk from 2.11.0 to 2.12.0
2024-08-06 11:14:47 +02:00
thomas girod 28d6d8ba96 Merge pull request #766 from ae-utbm/alpine
Alpine
2024-08-06 10:43:08 +02:00
dependabot[bot] 6bdb16e293 [UPDATE] Bump sentry-sdk from 2.11.0 to 2.12.0
Bumps [sentry-sdk](https://github.com/getsentry/sentry-python) from 2.11.0 to 2.12.0.
- [Release notes](https://github.com/getsentry/sentry-python/releases)
- [Changelog](https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-python/compare/2.11.0...2.12.0)

---
updated-dependencies:
- dependency-name: sentry-sdk
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-05 21:41:48 +00:00
thomas girod eb45cf6175 Merge pull request #761 from ae-utbm/dependabot/pip/taiste/django-honeypot-1.2.1
[UPDATE] Bump django-honeypot from 1.2.0 to 1.2.1
2024-08-05 23:39:42 +02:00
dependabot[bot] d6d8f56570 [UPDATE] Bump django-honeypot from 1.2.0 to 1.2.1
Bumps [django-honeypot](https://github.com/jamesturk/django-honeypot) from 1.2.0 to 1.2.1.
- [Changelog](https://github.com/jamesturk/django-honeypot/blob/main/CHANGELOG)
- [Commits](https://github.com/jamesturk/django-honeypot/commits)

---
updated-dependencies:
- dependency-name: django-honeypot
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-05 21:31:09 +00:00
thomas girod 5322dc1de8 Merge pull request #764 from ae-utbm/dependabot/pip/taiste/faker-26.1.0
[UPDATE] Bump faker from 26.0.0 to 26.1.0
2024-08-05 23:28:58 +02:00
thomas girod 51bb1a5c9d Merge pull request #765 from ae-utbm/fix-referer
fix-referer
2024-08-05 23:28:25 +02:00
thomas girod 996dadf6f5 update alpineJS to 3.14 2024-08-05 17:16:24 +02:00
thomas girod 29bb0f6712 promote AlpineJS to global dependency 2024-08-05 17:08:30 +02:00
thomas girod f6fbad8403 fix missing HTTP_REFERER 2024-08-05 15:53:41 +02:00
thomas girod e37ce4172e Merge pull request #759 from ae-utbm/accel-redirect
Accel redirect
2024-08-05 15:15:39 +02:00
thomas girod 1dfd871169 add doc for nginx configuration 2024-08-05 13:32:47 +02:00
thomas girod a637742bb0 apply review comment 2024-08-05 10:52:15 +02:00
thomas girod a5e4db99fb Use X-Accel-Redirect to send files in prod 2024-08-05 10:52:15 +02:00
thomas girod a9f66e2cd9 extract sent_from_logged_counter(request) 2024-08-05 10:52:15 +02:00
dependabot[bot] 7bc7af8245 [UPDATE] Bump faker from 26.0.0 to 26.1.0
Bumps [faker](https://github.com/joke2k/faker) from 26.0.0 to 26.1.0.
- [Release notes](https://github.com/joke2k/faker/releases)
- [Changelog](https://github.com/joke2k/faker/blob/master/CHANGELOG.md)
- [Commits](https://github.com/joke2k/faker/compare/v26.0.0...v26.1.0)

---
updated-dependencies:
- dependency-name: faker
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-05 08:51:26 +00:00
thomas girod e5dfe1e638 Merge pull request #763 from ae-utbm/dependabot/pip/taiste/phonenumbers-8.13.42
[UPDATE] Bump phonenumbers from 8.13.40 to 8.13.42
2024-08-05 10:49:13 +02:00
dependabot[bot] 284f064cbf [UPDATE] Bump phonenumbers from 8.13.40 to 8.13.42
Bumps [phonenumbers](https://github.com/daviddrysdale/python-phonenumbers) from 8.13.40 to 8.13.42.
- [Commits](https://github.com/daviddrysdale/python-phonenumbers/compare/v8.13.40...v8.13.42)

---
updated-dependencies:
- dependency-name: phonenumbers
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-05 08:34:32 +00:00
thomas girod e5c6f00283 Merge pull request #758 from ae-utbm/psycopg
update psycopg v2 to psycopg v3
2024-08-04 23:19:56 +02:00
thomas girod 12d316ebe4 doc: advanced install 2024-08-04 23:12:24 +02:00
thomas girod cbd8932075 update psycopg v2 to psycopg v3 2024-08-04 23:12:24 +02:00
thomas girod feb6dcbc94 Merge pull request #756 from ae-utbm/antispam
Filter blocked emails
2024-08-04 22:36:03 +02:00
klmp200 181e74b1d1 Add antispam app
* update_spam_database command to update suspicious domains from an
   external provider
* Add a AntiSpamEmailField that deny emails from suspicious domains
* Update documentation
2024-08-04 22:34:40 +02:00
thomas girod eb04e26b22 Merge pull request #757 from ae-utbm/taiste
Taiste
2024-08-04 16:51:36 +02:00
dependabot[bot] 7b97f0bf47 [UPDATE] Bump pre-commit from 3.7.1 to 3.8.0
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 3.7.1 to 3.8.0.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v3.7.1...v3.8.0)

---
updated-dependencies:
- dependency-name: pre-commit
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-01 17:51:19 +02:00
thomas girod 19fdaf4c89 fix club counter click 2024-08-01 17:50:43 +02:00
thomas girod 7ca9c8dc42 Merge pull request #749 from ae-utbm/redis
Redis
2024-08-01 13:01:42 +02:00
thomas girod 946f35c601 Merge pull request #752 from ae-utbm/autocomplete-admin
use autocomplete_fields in admin
2024-08-01 13:01:27 +02:00
thomas girod c7b47bdd02 use redis for the cache 2024-08-01 12:26:23 +02:00
thomas girod eef15e05f4 use autocomplete_fields in admin 2024-08-01 11:27:54 +02:00
klmp200 f265346a10 Sort pictures by album in zip file 2024-07-31 12:01:08 +02:00
thomas girod a321bd79ed Merge pull request #745 from ae-utbm/picture-zip
Add image download progress bar and fix output name of pictures
2024-07-31 10:19:50 +02:00
thomas girod 819e2b5f9f better download button style 2024-07-30 19:58:58 +02:00
thomas girod 91344741a5 add some alpine to picture download 2024-07-30 19:23:48 +02:00
thomas girod 4d2b82235c downgrade ajax-select 2024-07-30 14:15:46 +02:00
klmp200 ffa3936878 Improve zip download
* Remove jszip for zip.js which is better maintained
* Pictures keep their creation date
2024-07-30 11:11:31 +02:00
thomas girod 26c70aa071 Merge pull request #746 from ae-utbm/pedagogy
Use full text search in pedagogy uv search api
2024-07-29 18:12:43 +02:00
klmp200 1bd887567e Use full text search in pedagogy uv search api 2024-07-29 13:01:20 +02:00
klmp200 3304f32ef0 Add image download progress bar and fix output name of pictures 2024-07-28 23:53:18 +02:00
thomas girod 0790ae2298 Merge pull request #743 from ae-utbm/taiste
Taiste
2024-07-28 21:37:38 +02:00
thomas girod 39151b61e7 Merge pull request #741 from ae-utbm/better-pagination
improve pagination
2024-07-28 16:46:00 +02:00
thomas girod 3f49d70745 remove pedagogy style from style.scss 2024-07-28 16:39:15 +02:00
thomas girod e5434961de Merge pull request #736 from ae-utbm/better-scss
Better scss
2024-07-28 16:35:12 +02:00
thomas girod aab2d3a03f Merge pull request #740 from ae-utbm/deps
Update dependencies
2024-07-28 16:34:53 +02:00
thomas girod b022ebb80e improve pagination 2024-07-27 10:46:57 +02:00
thomas girod 2737cae4ab update django-phonenumber-field 2024-07-26 21:45:18 +02:00
thomas girod c4e6272535 various deps updates 2024-07-26 21:45:18 +02:00
thomas girod aa0c98bf34 increase delay between dependabot alerts 2024-07-26 18:24:04 +02:00
thomas girod 63b6b262c6 repair BASE_DIR 2024-07-26 18:21:57 +02:00
thomas girod 424639ea80 better scss 2024-07-26 15:55:15 +02:00
thomas girod 594776f3a6 better scss compilation 2024-07-26 15:55:15 +02:00
thomas girod 918e93d211 Merge pull request #735 from ae-utbm/more-fixtures
Add a command to create more fixtures
2024-07-26 15:28:47 +02:00
thomas girod b82f98c87f reorganize pyproject.toml 2024-07-26 15:16:54 +02:00
thomas girod 6c4251a91f populate more 2024-07-26 15:15:50 +02:00
thomas girod 2261782920 Merge pull request #738 from ae-utbm/fix-remove-from-picture
Fix button to remove a user from picture
2024-07-26 14:48:28 +02:00
thomas girod 043dcfb283 add tests 2024-07-26 14:25:26 +02:00
thomas girod 3c76c5e0f1 fix grouping 2024-07-26 00:39:29 +02:00
thomas girod d348e6314a fix the pictures order (not just the album) 2024-07-26 00:39:29 +02:00
thomas girod b3fa6f352b fix album order for user pictures 2024-07-26 00:39:29 +02:00
thomas girod 191b05c305 Fix button to remove a user from picture 2024-07-25 23:31:54 +02:00
thomas girod 215fdce411 Fix button to remove a user from picture 2024-07-25 23:29:12 +02:00
thomas girod b25805e0a1 introduce djhtml as jinja+scss formater 2024-07-25 16:46:45 +02:00
thomas girod 13d0d2a300 Merge pull request #733 from ae-utbm/nfc
Add nfc widget
2024-07-25 15:56:51 +02:00
klmp200 15f51fb03f Create an NFC button for browser supporting NFC API 2024-07-25 07:18:39 +02:00
thomas girod a24b1f5c2a Merge pull request #730 from ae-utbm/picture-zip
Téléchargement des images dans un zip
2024-07-25 01:21:02 +02:00
thomas girod 04e7f65e8e Merge pull request #725 from ae-utbm/drop-jquery-calendar
Remove jquery datetimepicker
2024-07-25 01:20:41 +02:00
klmp200 41b9318028 Download user pictures as a zip 2024-07-24 23:51:15 +02:00
thomas girod 378e8b53f2 Merge pull request #731 from ae-utbm/taiste
MkDocs, Ninja API, logo promo 24 et refactors
2024-07-24 17:56:57 +02:00
thomas girod c832e8b1a7 Merge pull request #729 from ae-utbm/test-name-refactoring
Harmonize test names
2024-07-24 01:17:39 +02:00
klmp200 fee7ade1a5 Harmonize test names 2024-07-24 00:50:48 +02:00
thomas girod d51dbf8a53 Merge pull request #724 from ae-utbm/ninja
Use django-ninja for the API
2024-07-24 00:48:08 +02:00
thomas girod c03a1b57c5 update doc 2024-07-24 00:44:09 +02:00
klmp200 0c566cfbde Add picture size in sas api 2024-07-24 00:44:09 +02:00
thomas girod 9295325d21 remove jquery datetime picker 2024-07-23 23:26:48 +02:00
thomas girod cb1aa8bef0 add tests 2024-07-23 20:36:57 +02:00
klmp200 b9d19be183 Fix markdown api and add test for user picture page 2024-07-23 20:36:46 +02:00
klmp200 293369f165 Pagination on UV guide 2024-07-23 19:58:11 +02:00
thomas girod 3046438cb1 replace drf by django-ninja 2024-07-23 19:57:33 +02:00
thomas girod 811e5a5ad1 Merge pull request #726 from ae-utbm/honeypot
better honeypot logging
2024-07-22 12:45:45 +02:00
klmp200 2c8f18d7fc Add honeypot on forum 2024-07-22 11:40:11 +02:00
klmp200 c7f8cdd098 Support field_name argument in honeypot jinja extension 2024-07-22 11:34:22 +02:00
klmp200 58ff5b934a add get_client_ip util function 2024-07-22 09:49:08 +02:00
thomas girod 03d15ddded better honeypot logging 2024-07-21 22:31:05 +02:00
thomas girod 002d8f80a6 Merge pull request #720 from ae-utbm/counter-refactor
Refactor on counters
2024-07-21 15:39:07 +02:00
thomas girod 82d3791859 refactor counter 2024-07-21 10:51:08 +02:00
thomas girod d9531838f2 Merge pull request #716 from ae-utbm/docs
Use MkDocs for documentation
2024-07-21 01:05:32 +02:00
klmp200 c7b5c77395 Improve perms doc 2024-07-21 01:01:49 +02:00
klmp200 223aa37161 move old pdf to the repo github wiki 2024-07-21 01:00:37 +02:00
thomas girod c1acadbf3d add content to howto/querysets.md 2024-07-21 00:57:15 +02:00
klmp200 54af894b82 Improve documentation 2024-07-21 00:57:12 +02:00
klmp200 e1ac75f394 Rework readme and remove readthedocs config 2024-07-21 00:57:06 +02:00
thomas girod 8c69a94488 use google convention for docstrings 2024-07-21 00:57:04 +02:00
thomas girod 07b625d4aa Rewrite documentation with MkDocs 2024-07-21 00:56:58 +02:00
thomas girod a1296dc7af Merge pull request #721 from ae-utbm/remove-pytz
Remove pytz from deps
2024-07-20 11:36:30 +02:00
thomas girod e5a2236d72 remove pytz 2024-07-18 17:33:14 +02:00
thomas girod 588a82426e Merge pull request #719 from ae-utbm/page-fix
Fix markdown style for code
2024-07-18 15:08:21 +02:00
thomas girod 8245ddf2a6 fix font for code blocks in markdown 2024-07-18 14:51:50 +02:00
thomas girod 775a0c6478 Merge pull request #717 from ae-utbm/logo-24
Add promo 24 logo
2024-07-16 00:35:43 +02:00
klmp200 bad67a8b65 Add promo 24 logo 2024-07-16 00:25:50 +02:00
klmp200 7e98e184a0 Improve tests 2024-07-11 13:23:24 +02:00
klmp200 6240eff160 Apply review suggestions 2024-07-11 13:23:24 +02:00
klmp200 a8918ebe86 Fix forum topic creation 2024-07-11 13:23:24 +02:00
thomas girod b852176958 Merge pull request #714 from ae-utbm/taiste
More ruff rules, mistune update and more bot-blocking features
2024-07-11 11:47:45 +02:00
thomas girod c9e398b7ec Merge pull request #715 from ae-utbm/master 2024-07-11 11:33:28 +02:00
thomas girod e84d5626df Merge pull request #711 from ae-utbm/bot-filtering
Implement mechanisms to block bots on authentication views
2024-07-11 11:00:10 +02:00
klmp200 0fb61938ce Reorganize honeypot settings 2024-07-11 10:49:08 +02:00
klmp200 d6b27f2f21 Make honeypot errors less suspicious 2024-07-10 19:30:01 +02:00
thomas girod e15bcfae07 Send an email when creating an account via POST /register 2024-07-10 17:21:07 +02:00
klmp200 72cf5a3d5e Introduce honeypot for login/registering/password changing 2024-07-10 14:51:39 +02:00
thomas girod 7de2e00c94 Merge pull request #701 from ae-utbm/dependabot/pip/taiste/ruff-0.5.1
[UPDATE] Bump ruff from 0.4.10 to 0.5.1
2024-07-10 14:15:38 +02:00
thomas girod efe5d75798 update ruff config
Co-authored-by: Bartuccio Antoine <klmp200@users.noreply.github.com>
2024-07-10 10:52:30 +02:00
dependabot[bot] 9f1eedbe1b [UPDATE] Bump ruff from 0.4.10 to 0.5.1
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.4.10 to 0.5.1.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astral-sh/ruff/compare/v0.4.10...0.5.1)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-08 15:30:54 +00:00
thomas girod 7fe495179f Merge pull request #707 from ae-utbm/update-mistune
Update mistune (0.8 => 3.0)
2024-07-08 17:29:13 +02:00
thomas girod 7f6c4f6236 change sup and sub in mde editor 2024-07-08 17:04:18 +02:00
thomas girod 30948f1701 better style for rendered markdown 2024-07-08 15:56:38 +02:00
thomas girod 02ec3607b2 fix install_xapian.sh 2024-07-08 15:56:37 +02:00
thomas girod 3c2dcfbfa2 update mistune 2024-07-08 15:56:37 +02:00
thomas girod 8bcf59aaf0 Merge pull request #706 from ae-utbm/ruff-rules
Add more ruff rules
2024-07-08 15:42:22 +02:00
thomas girod c6d2ac9100 ruff rule B 2024-07-08 15:37:10 +02:00
thomas girod 2ac578c3ad ruff rule DJ
Co-authored-by: Bartuccio Antoine <klmp200@users.noreply.github.com>
2024-07-08 15:37:10 +02:00
thomas girod f941435232 ruff rule C4 2024-07-08 15:37:10 +02:00
thomas girod 171a1cb876 ruff rule FBT 2024-07-08 15:37:09 +02:00
thomas girod cfc19434d0 ruff rules UP008 and UP009 2024-07-08 15:37:09 +02:00
thomas girod 688871a680 ruff rule A 2024-07-08 15:37:08 +02:00
thomas girod 44c8558aa3 Merge pull request #704 from ae-utbm/taiste
Mises à jour (django 4.2, Pillow 10, cryptography 42), changement de la CI et enlèvement de l'offre Eurockéennes
2024-07-08 11:16:39 +02:00
thomas girod 6b923d2310 Merge pull request #700 from ae-utbm/remove-eurocks
Remove eurocks
2024-07-08 10:11:09 +02:00
thomas girod 09e0b31bc9 remove Eurockéennes link 2024-07-08 10:03:27 +02:00
thomas girod eb2454eded Merge branch 'master' into taiste
# Conflicts:
#	eboutic/templates/eboutic/eboutic_main.jinja
#	locale/fr/LC_MESSAGES/django.po
2024-07-08 10:01:37 +02:00
thomas girod 3014d8cead Merge pull request #698 from ae-utbm/update-cryptography
update cryptography
2024-07-05 15:21:42 +02:00
thomas girod 70fdc2edf2 update cryptography 2024-07-05 14:02:01 +02:00
thomas girod e47f29aa38 Merge pull request #697 from ae-utbm/update-pillow
update pillow (9.5 => 10.4)
2024-07-05 13:53:47 +02:00
thomas girod d811896e21 update pillow 2024-07-05 13:14:58 +02:00
thomas girod 5c999b6ef1 Merge pull request #696 from ae-utbm/fix-xapian-deploy
Fix missing xapian install step in deploy workflows
2024-07-05 10:28:41 +02:00
thomas girod 79a6d9e771 Merge pull request #693 from ae-utbm/faster-tests
faster tests
2024-07-05 10:27:30 +02:00
klmp200 e1cf1c786d Fix missing xapian install step in deploy workflows 2024-07-04 19:44:22 +02:00
thomas girod 71fe9559b1 parallelize the CI 2024-07-04 14:44:28 +02:00
thomas girod f1fa8d34bf fix family relations in generate_galaxy_test_data.py 2024-07-04 14:39:12 +02:00
thomas girod aa07fa9207 faster tests 2024-07-04 14:03:19 +02:00
thomas girod 47fec973bc Merge pull request #691 from ae-utbm/update-django
Update django (3.2 => 4.2)
2024-07-04 12:40:23 +02:00
thomas girod ea8247aa16 fix broken translations 2024-07-04 11:31:36 +02:00
thomas girod bf18284450 apply forgotten migrations 2024-07-04 11:31:36 +02:00
thomas girod cd58d5a357 resolve warnings 2024-07-04 11:31:35 +02:00
thomas girod 75bb3f992c fix: wrong logic in Club.delete() 2024-07-04 11:31:35 +02:00
thomas girod ae1fcdb8c0 fix: CashRegisterSummaryItem.check overriding a django method 2024-07-04 11:20:24 +02:00
thomas girod 507080f75e update django to 4.2 2024-07-03 15:11:06 +02:00
thomas girod 5bcf043d97 Merge pull request #683 from ae-utbm/pre-commits
Use pre-commits hooks instead of ruff directly
2024-07-03 10:04:53 +02:00
klmp200 99605b98d4 Two steps pre-commit and better workflow output 2024-07-02 20:16:02 +02:00
dependabot[bot] 6dfd43a8da [UPDATE] Bump reportlab from 4.2.0 to 4.2.2
Bumps [reportlab](https://www.reportlab.com/) from 4.2.0 to 4.2.2.

---
updated-dependencies:
- dependency-name: reportlab
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-02 11:26:16 +02:00
klmp200 c7135875b8 Use pre-commits hooks instead of ruff directly 2024-07-01 17:36:19 +02:00
dependabot[bot] e29e1101cd [UPDATE] Bump ipython from 7.34.0 to 8.26.0
Bumps [ipython](https://github.com/ipython/ipython) from 7.34.0 to 8.26.0.
- [Release notes](https://github.com/ipython/ipython/releases)
- [Commits](https://github.com/ipython/ipython/compare/7.34.0...8.26.0)

---
updated-dependencies:
- dependency-name: ipython
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-01 14:00:43 +02:00
thomas girod d97602e60b Use pytest for tests (#681)
* use pytest for tests

Eh ouais, il y a que la config qui change. Pytest est implémentable par étapes. Et ça c'est beau.

* rework tests with pytest

* remove unittest custom TestRunner

* Edit doc and CI
2024-06-26 19:10:24 +02:00
thomas girod a5cbac1f97 Merge pull request #680 from ae-utbm/ruff
Introduct Ruff as formater and linter
2024-06-26 14:11:26 +02:00
thomas girod 3143d3d91a reorganize imports with ruff 2024-06-26 12:35:38 +02:00
thomas girod 9bdf3fc4ac use ruff for formating
Co-authored-by: Bartuccio Antoine <klmp200@users.noreply.github.com>
2024-06-26 12:35:14 +02:00
thomas girod e06bc7dba3 reorganize pyproject.toml 2024-06-26 12:33:35 +02:00
Bartuccio Antoine a8b9f38000 Merge pull request #679 from ae-utbm/xapian-from-sources
Xapian from sources and fix CVE
2024-06-26 11:48:31 +02:00
klmp200 ca27b89a8b Apply shellcheck on install_xapian.sh 2024-06-26 11:31:39 +02:00
klmp200 e1bf7caa9a Fix CVE-2023-31047 2024-06-24 13:27:22 +02:00
klmp200 e681c17a0f Adapt CI to new xapian install process 2024-06-24 13:26:58 +02:00
klmp200 5416d88c97 Upgrade dependencies and install xapian from sources 2024-06-24 13:26:58 +02:00
Mathis 0dca152436 Hotfix (typo) 2024-05-28 21:25:30 +02:00
Mathis 9ce7abd31d Partnership Eurockéennes 2024 2024-05-28 19:10:17 +02:00
Julien Constant f41ff281fb Remove eurocks tickets from eboutic (event is finished) 2023-10-10 15:50:35 +02:00
Julien Constant ee437649f0 Revert "Merge branch 'master' into taiste"
This reverts commit 4303d51c0a, reversing
changes made to d16bf12611.
2023-10-10 15:47:02 +02:00
Julien Constant 321cb72ca8 October 2023 update (#672)
* integration of 3D secure v2 for eboutic bank payment

* edit yml to avoid git conflict when deploying on test

* escape html characters on xml (#505)

* Change country id to ISO 3166 1 numeric for 3DSV2 (#510)

* remove useless tests

* Fix le panier de l'Eboutic pour Safari (#518)

Co-authored-by: Théo DURR <git@theodurr.fr>
Co-authored-by: thomas girod <56346771+imperosol@users.noreply.github.com>

* update some dependencies (#523)

* [Eboutic] Fix double quote issue & improved user experience on small screen (#522)

* Fix #511 Regex issue with escaped double quotes

* Fix basket being when reloading the page (when cookie != "")

+ Added JSDoc
+ Cleaned some code

* Fix #509 Improved user experience on small screens

* Fix css class not being added back when reloading page

* CSS Fixes (see description)

+ Fixed overlaping item title with the cart emoji on small screen
+ Fixed minimal size of the basket on small screen (full width)

* Added darkened background circle to items with no image

* Fix issue were the basket could be None


* Edited CSS to have bette img ratio & the 🛒 icon

Adapt, Improve, Overcome

* Moved basket down on small screen size

* enhance admin pages

* update documentation

* Update doc/about/tech.rst

Co-authored-by: Julien Constant <49886317+Juknum@users.noreply.github.com>

* remove csrf_token

* Fix 3DSv2 implementation (#542)

* Fixed wrong HMAC signature generation

* Fix xml du panier

Co-authored-by: Julien Constant <julienconstant190@gmail.com>

* [FIX] 3DSv2 - Echappement du XML et modif tables (#543)

* Fixed wrong HMAC signature generation
* Updated migration files

Co-authored-by: Julien Constant <julienconstant190@gmail.com>

* Update doc/about/tech.rst

* Update doc/start/install.rst

* Updated lock file according to pyproject

* unify account_id creation

* upgrade re_path to path (#533)

* redirect directly on counter if user is barman

* Passage de vue à Alpine pour les comptoirs (#561)

Vue, c'est cool, mais avec Django c'est un peu chiant à utiliser. Alpine a l'avantage d'être plus léger et d'avoir une syntaxe qui ne ressemble pas à celle de Jinja (ce qui évite d'avoir à mettre des {% raw %} partout).

* resolved importError (#565)

* Add galaxy (#562)

* style.scss: lint

* style.scss: add 'th' padding

* core: populate: add much more data for development

* Add galaxy

* repair user merging tool (#498)

* Disabled galaxy feature (only visually)

* Disabled Galaxy button & Removed 404 exception display

* Update 404.jinja

* Fixed broken test

* Added eurocks links to eboutic

* fix typo

* fix wording

Co-authored-by: Théo DURR <git@theodurr.fr>

* Edited unit tests

This test caused a breach in security due to the alert block displaying sensitive data.

* Repair NaN bug for autocomplete on counter click

* remove-useless-queries-counter-stats (#519)

* Amélioration des pages utilisateurs pour les petits écrans (#578, #520)

- Refonte de l'organisation des pages utilisateurs (principalement du front)
  - Page des parrains/fillots
  - Page d'édition du profil
  - Page du profil
  - Page des outils
  - Page des préférences
  - Page des stats utilisateurs

- Refonte du CSS / organisation de la navbar principale (en haut de l'écran)
- Refonte du CSS de la navbar bleu clair (le menu)
- Refonte du CSS du SAS :
  - Page de photo
  - Page d'albums

* Added GA/Clubs Google Calendar to main page (#585)

* Added GA/Clubs google calendar to main page

* Made tables full width

* Create dependabot.yml (#587)

* Bump django from 3.2.16 to 3.2.18 (#574)

* [CSS] Follow up of #578 (#589)

* [FIX] Broken link in readme and license fix (& update) (#591)

* Fixes pour la mise à jour de mars (#598)

* Fix problème de cache dans le SAS & améliore le CSS du SAS

Co-authored-by: Bartuccio Antoine <klmp200@users.noreply.github.com>

* Fixes & améliorations du nouveau CSS (#616)

* [UPDATE] Bump sentry-sdk from 1.12.1 to 1.19.1 (#620)

* [FIX] Fixes supplémentaires pour la màj de mars (#622)

- Les photos de l'onglet de la page utilisateur utilise désormais leur version thumbnail au lieu de leur version HD
- Une des classes du CSS du SAS a été renommée car elle empiétait sur une class de la navbar
- Le profil utilisateur a été revu pour ajouter plus d'espacement entre le tableau des cotisations et le numéro de cotisants
- Les images de forum & blouse sont de nouveau cliquable pour les afficher en grands
- Sur mobile, lorsqu'on cliquait sur le premier élément de la navbar, ce dernier avait un overlay avec des angles arrondis
- Sur mobile, les utilisateurs avec des images de profils non carrées dépassait dans l'onglet Famille

* [UPDATE] Bump dict2xml from 1.7.2 to 1.7.3 (#592)

Bumps [dict2xml](https://github.com/delfick/python-dict2xml) from 1.7.2 to 1.7.3.
- [Release notes](https://github.com/delfick/python-dict2xml/releases)
- [Commits](https://github.com/delfick/python-dict2xml/compare/release-1.7.2...release-1.7.3)

---
updated-dependencies:
- dependency-name: dict2xml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

* [UPDATE] Bump django-debug-toolbar from 3.8.1 to 4.0.0 (#593)

Bumps [django-debug-toolbar](https://github.com/jazzband/django-debug-toolbar) from 3.8.1 to 4.0.0.
- [Release notes](https://github.com/jazzband/django-debug-toolbar/releases)
- [Changelog](https://github.com/jazzband/django-debug-toolbar/blob/main/docs/changes.rst)
- [Commits](https://github.com/jazzband/django-debug-toolbar/compare/3.8.1...4.0.0)

---
updated-dependencies:
- dependency-name: django-debug-toolbar
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [UPDATE] Bump cryptography from 37.0.4 to 40.0.1 (#594)

* [UPDATE] Bump cryptography from 37.0.4 to 40.0.1

Bumps [cryptography](https://github.com/pyca/cryptography) from 37.0.4 to 40.0.1.
- [Release notes](https://github.com/pyca/cryptography/releases)
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/37.0.4...40.0.1)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Updated pyOpenSSL to match cryptography requirements

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Julien Constant <julienconstant190@gmail.com>

* Mise à jour de Black vers la version 23.3 (#629)

* update link for poetry install

* [UPDATE] Bump django-countries from 7.5 to 7.5.1 (#624)

Bumps [django-countries](https://github.com/SmileyChris/django-countries) from 7.5 to 7.5.1.
- [Release notes](https://github.com/SmileyChris/django-countries/releases)
- [Changelog](https://github.com/SmileyChris/django-countries/blob/main/CHANGES.rst)
- [Commits](https://github.com/SmileyChris/django-countries/compare/v7.5...v7.5.1)

---
updated-dependencies:
- dependency-name: django-countries
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [UPDATE] Bump sentry-sdk from 1.19.1 to 1.21.0

Bumps [sentry-sdk](https://github.com/getsentry/sentry-python) from 1.19.1 to 1.21.0.
- [Release notes](https://github.com/getsentry/sentry-python/releases)
- [Changelog](https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-python/compare/1.19.1...1.21.0)

---
updated-dependencies:
- dependency-name: sentry-sdk
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Speed up tests (#638)

* Better usage of cache for groups and clubs related operations (#634)

* Better usage of cache for group retrieval

* Cache clearing on object deletion or update

* replace signals by save and delete override

* add is_anonymous check in is_owned_by

Add in many is_owned_by(self, user) methods that user is not anonymous. Since many of those functions do db queries, this should reduce a little bit the load of the db.

* Stricter usage of User.is_in_group

Constrain the parameters that can be passed to the function to make sure only a str or an int can be used. Also force to explicitly specify if the group id or the group name is used.

* write test and correct bugs

* remove forgotten populate commands

* Correct test

* [FIX] Correction de bugs (#617)

* Fix #600

* Fix #602

* Fixes & améliorations du nouveau CSS (#616)

* Fix #604

* should fix #605

* Fix #608

* Update core/views/site.py

Co-Authored-By: thomas girod <56346771+imperosol@users.noreply.github.com>

* Added back the permission denied

* Should fix #609

* Fix failing test when 2 user are merged

* Should fix #610

* Should fix #627

* Should fix #109

Block les URLs suivantes lorsque le fichier se trouve dans le dir `profiles` ou `SAS` :
- `/file/<id>/`
- `/file/<id>/[delete|prop|edit]`

> Les urls du SAS restent accessiblent pour les roots & les admins SAS
> Les urls de profiles sont uniquement accessiblent aux roots

* Fix root dir of SAS being unnaccessible for sas admins

⚠️ need to edit the SAS directory & save it (no changes required in sas directory properties)

* Remove overwritten code

* Should fix duplicated albums in user profile (wtf)

* Fix typo

* Extended profiles picture access to board members

* Should fix #607

* Fix keyboard navigation not working properly

* Fix user tagged pictures section inside python rather than in the template

* Update utils.py

* Apply suggested changes

* Fix #604

* Fix #608

* Added back the permission denied

* Should fix duplicated albums in user profile (wtf)

* Fix user tagged pictures section inside python rather than in the template

* Apply suggested changes

---------

Co-authored-by: thomas girod <56346771+imperosol@users.noreply.github.com>

* Remove duplicated css

* Galaxy improvements (#628)

* galaxy: improve logging and performance reporting

* galaxy: add a full galaxy state test

* galaxy: optimize user self score computation

* galaxy: add 'generate_galaxy_test_data' command for development at scale

* galaxy: big refactor

Main changes:
  - Multiple Galaxy objects can now exist at the same time in DB. This allows for ruling a new galaxy while still
    displaying the old one.
  - The criteria to quickly know whether a user is a possible citizen is now a simple query on picture count. This
    avoids a very complicated query to database, that could often result in huge working memory load. With this change,
    it should be possible to run the galaxy even on a vanilla Postgres that didn't receive fine tuning for the Sith's
    galaxy.

* galaxy: template: make the galaxy graph work and be usable with a lot of stars

- Display focused star and its connections clearly
- Display star label faintly by default for other stars to avoid overloading the graph
- Hide non-focused lanes
- Avoid clicks on non-highlighted, too far stars
- Make the canva adapt its width to initial screen size, doesn't work dynamically

* galaxy: better docstrings

* galaxy: use bulk_create whenever possible

This is a big performance gain, especially for the tests.

Examples:

----

`./manage.py test galaxy.tests.GalaxyTest.test_full_galaxy_state`

Measurements averaged over 3 run on *my machine*™:
Before: 2min15s
After: 1m41s

----

`./manage.py generate_galaxy_test_data --user-pack-count 1`

Before: 48s
After: 25s

----

`./manage.py rule_galaxy` (for 600 citizen, corresponding to 1 user-pack)

Before: 14m4s
After: 12m34s

* core: populate: use a less ambiguous 'timezone.now()'

When running the tests around midnight, the day is changing, leading to some values being offset to the next day
depending on the timezone, and making some tests to fail. This ensure to use a less ambiguous `now` when populating
the database.

* write more extensive documentation

- add documentation to previously documented classes and functions and refactor some of the documented one, in accordance to the PEP257 and ReStructuredText standards ;
- add some type hints ;
- use a NamedTuple for the `Galaxy.compute_users_score` method instead of a raw tuple. Also change a little bit the logic in the function which call the latter ;
- add some additional parameter checks on a few functions ;
- change a little bit the logic of the log level setting for the galaxy related commands.

* galaxy: tests: split Model and View for more efficient data usage

---------

Co-authored-by: maréchal <thgirod@hotmail.com>

* [UPDATE] Bump libsass from 0.21.0 to 0.22.0 (#640)

Bumps [libsass](https://github.com/sass/libsass-python) from 0.21.0 to 0.22.0.
- [Release notes](https://github.com/sass/libsass-python/releases)
- [Changelog](https://github.com/sass/libsass-python/blob/main/docs/changes.rst)
- [Commits](https://github.com/sass/libsass-python/compare/0.21.0...0.22.0)

---
updated-dependencies:
- dependency-name: libsass
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [FIX] Fix cached groups (#647)

* Bump sqlparse from 0.4.3 to 0.4.4 (#645)

Bumps [sqlparse](https://github.com/andialbrecht/sqlparse) from 0.4.3 to 0.4.4.
- [Release notes](https://github.com/andialbrecht/sqlparse/releases)
- [Changelog](https://github.com/andialbrecht/sqlparse/blob/master/CHANGELOG)
- [Commits](https://github.com/andialbrecht/sqlparse/compare/0.4.3...0.4.4)

---
updated-dependencies:
- dependency-name: sqlparse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [UPDATE] Bump django-ordered-model from 3.6 to 3.7.4 (#625)

Bumps [django-ordered-model](https://github.com/django-ordered-model/django-ordered-model) from 3.6 to 3.7.4.
- [Release notes](https://github.com/django-ordered-model/django-ordered-model/releases)
- [Changelog](https://github.com/django-ordered-model/django-ordered-model/blob/master/CHANGES.md)
- [Commits](https://github.com/django-ordered-model/django-ordered-model/compare/3.6...3.7.4)

---
updated-dependencies:
- dependency-name: django-ordered-model
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fix immutable default variable in `get_start_of_semester` (#656)

Le serveur ne percevait pas le changement de semestre, parce
que la valeur par défaut passée à la fonction `get_start_of_semester()` était une fonction appelée une seule fois, lors du lancement du serveur. Bref, c'était ça : https://beta.ruff.rs/docs/rules/function-call-in-default-argument/

---------

Co-authored-by: imperosol <thgirod@hotmail.com>

* Add missing method on AnonymousUser (#649)

* Add eurocks partnership in the eboutic (#661)

* Add eurocks partnership in the eboutic (#661)

Revert "Add eurocks partnership in the eboutic (#661)"

This reverts commit 193c820757.

Add eurocks partnership in the eboutic (#661)

* Update workflow

Following this update : https://github.blog/changelog/2023-09-13-github-actions-updates-to-github_ref-and-github-ref/

* Update workflow

* Remove eurocks tickets from eboutic (event is finished)

* Links update & translations typos fixes (#671)

* Remove BDF link (as BDF is now part of AE)

* Remove unused pages

* Fix typos

* Fix typo again

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Thomas Girod <thgirod@hotmail.com>
Co-authored-by: thomas girod <56346771+imperosol@users.noreply.github.com>
Co-authored-by: Théo DURR <git@theodurr.fr>
Co-authored-by: Skia <skia@hya.sk>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bartuccio Antoine <klmp200@users.noreply.github.com>
2023-10-10 15:41:19 +02:00
Julien Constant 4303d51c0a Merge branch 'master' into taiste 2023-10-10 15:32:46 +02:00
Julien Constant d16bf12611 Links update & translations typos fixes (#671)
* Remove BDF link (as BDF is now part of AE)

* Remove unused pages

* Fix typos

* Fix typo again
2023-10-10 15:29:02 +02:00
Julien Constant 4231a7972d Remove eurocks tickets from eboutic (event is finished) 2023-10-04 14:27:21 +02:00
Julien Constant c436d39014 [PARTENARIAT] Partenariat Eurockéennes (#663) 2023-09-20 17:57:26 +02:00
Julien Constant 51a12814f9 Update workflow 2023-09-19 22:17:26 +02:00
Julien Constant 00ae6e4623 Update workflow
Following this update : https://github.blog/changelog/2023-09-13-github-actions-updates-to-github_ref-and-github-ref/
2023-09-19 22:04:46 +02:00
Julien Constant 4b587e8711 Merge branch 'taiste' of https://github.com/ae-utbm/sith3 into taiste 2023-09-19 21:31:02 +02:00
Julien Constant d2f377b54f Add eurocks partnership in the eboutic (#661)
Revert "Add eurocks partnership in the eboutic (#661)"

This reverts commit 193c820757.

Add eurocks partnership in the eboutic (#661)
2023-09-19 21:29:17 +02:00
Julien Constant 193c820757 Add eurocks partnership in the eboutic (#661) 2023-09-19 20:59:22 +02:00
Julien Constant b9298792ae Mise à jour de septembre 2023 (#659)
* integration of 3D secure v2 for eboutic bank payment

* edit yml to avoid git conflict when deploying on test

* escape html characters on xml (#505)

* Change country id to ISO 3166 1 numeric for 3DSV2 (#510)

* remove useless tests

* Fix le panier de l'Eboutic pour Safari (#518)

Co-authored-by: Théo DURR <git@theodurr.fr>
Co-authored-by: thomas girod <56346771+imperosol@users.noreply.github.com>

* update some dependencies (#523)

* [Eboutic] Fix double quote issue & improved user experience on small screen (#522)

* Fix #511 Regex issue with escaped double quotes

* Fix basket being when reloading the page (when cookie != "")

+ Added JSDoc
+ Cleaned some code

* Fix #509 Improved user experience on small screens

* Fix css class not being added back when reloading page

* CSS Fixes (see description)

+ Fixed overlaping item title with the cart emoji on small screen
+ Fixed minimal size of the basket on small screen (full width)

* Added darkened background circle to items with no image

* Fix issue were the basket could be None


* Edited CSS to have bette img ratio & the 🛒 icon

Adapt, Improve, Overcome

* Moved basket down on small screen size

* enhance admin pages

* update documentation

* Update doc/about/tech.rst

Co-authored-by: Julien Constant <49886317+Juknum@users.noreply.github.com>

* remove csrf_token

* Fix 3DSv2 implementation (#542)

* Fixed wrong HMAC signature generation

* Fix xml du panier

Co-authored-by: Julien Constant <julienconstant190@gmail.com>

* [FIX] 3DSv2 - Echappement du XML et modif tables (#543)

* Fixed wrong HMAC signature generation
* Updated migration files

Co-authored-by: Julien Constant <julienconstant190@gmail.com>

* Update doc/about/tech.rst

* Update doc/start/install.rst

* Updated lock file according to pyproject

* unify account_id creation

* upgrade re_path to path (#533)

* redirect directly on counter if user is barman

* Passage de vue à Alpine pour les comptoirs (#561)

Vue, c'est cool, mais avec Django c'est un peu chiant à utiliser. Alpine a l'avantage d'être plus léger et d'avoir une syntaxe qui ne ressemble pas à celle de Jinja (ce qui évite d'avoir à mettre des {% raw %} partout).

* resolved importError (#565)

* Add galaxy (#562)

* style.scss: lint

* style.scss: add 'th' padding

* core: populate: add much more data for development

* Add galaxy

* repair user merging tool (#498)

* Disabled galaxy feature (only visually)

* Disabled Galaxy button & Removed 404 exception display

* Update 404.jinja

* Fixed broken test

* Added eurocks links to eboutic

* fix typo

* fix wording

Co-authored-by: Théo DURR <git@theodurr.fr>

* Edited unit tests

This test caused a breach in security due to the alert block displaying sensitive data.

* Repair NaN bug for autocomplete on counter click

* remove-useless-queries-counter-stats (#519)

* Amélioration des pages utilisateurs pour les petits écrans (#578, #520)

- Refonte de l'organisation des pages utilisateurs (principalement du front)
  - Page des parrains/fillots
  - Page d'édition du profil
  - Page du profil
  - Page des outils
  - Page des préférences
  - Page des stats utilisateurs

- Refonte du CSS / organisation de la navbar principale (en haut de l'écran)
- Refonte du CSS de la navbar bleu clair (le menu)
- Refonte du CSS du SAS :
  - Page de photo
  - Page d'albums

* Added GA/Clubs Google Calendar to main page (#585)

* Added GA/Clubs google calendar to main page

* Made tables full width

* Create dependabot.yml (#587)

* Bump django from 3.2.16 to 3.2.18 (#574)

* [CSS] Follow up of #578 (#589)

* [FIX] Broken link in readme and license fix (& update) (#591)

* Fixes pour la mise à jour de mars (#598)

* Fix problème de cache dans le SAS & améliore le CSS du SAS

Co-authored-by: Bartuccio Antoine <klmp200@users.noreply.github.com>

* Fixes & améliorations du nouveau CSS (#616)

* [UPDATE] Bump sentry-sdk from 1.12.1 to 1.19.1 (#620)

* [FIX] Fixes supplémentaires pour la màj de mars (#622)

- Les photos de l'onglet de la page utilisateur utilise désormais leur version thumbnail au lieu de leur version HD
- Une des classes du CSS du SAS a été renommée car elle empiétait sur une class de la navbar
- Le profil utilisateur a été revu pour ajouter plus d'espacement entre le tableau des cotisations et le numéro de cotisants
- Les images de forum & blouse sont de nouveau cliquable pour les afficher en grands
- Sur mobile, lorsqu'on cliquait sur le premier élément de la navbar, ce dernier avait un overlay avec des angles arrondis
- Sur mobile, les utilisateurs avec des images de profils non carrées dépassait dans l'onglet Famille

* [UPDATE] Bump dict2xml from 1.7.2 to 1.7.3 (#592)

Bumps [dict2xml](https://github.com/delfick/python-dict2xml) from 1.7.2 to 1.7.3.
- [Release notes](https://github.com/delfick/python-dict2xml/releases)
- [Commits](https://github.com/delfick/python-dict2xml/compare/release-1.7.2...release-1.7.3)

---
updated-dependencies:
- dependency-name: dict2xml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

* [UPDATE] Bump django-debug-toolbar from 3.8.1 to 4.0.0 (#593)

Bumps [django-debug-toolbar](https://github.com/jazzband/django-debug-toolbar) from 3.8.1 to 4.0.0.
- [Release notes](https://github.com/jazzband/django-debug-toolbar/releases)
- [Changelog](https://github.com/jazzband/django-debug-toolbar/blob/main/docs/changes.rst)
- [Commits](https://github.com/jazzband/django-debug-toolbar/compare/3.8.1...4.0.0)

---
updated-dependencies:
- dependency-name: django-debug-toolbar
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [UPDATE] Bump cryptography from 37.0.4 to 40.0.1 (#594)

* [UPDATE] Bump cryptography from 37.0.4 to 40.0.1

Bumps [cryptography](https://github.com/pyca/cryptography) from 37.0.4 to 40.0.1.
- [Release notes](https://github.com/pyca/cryptography/releases)
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/37.0.4...40.0.1)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Updated pyOpenSSL to match cryptography requirements

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Julien Constant <julienconstant190@gmail.com>

* Mise à jour de Black vers la version 23.3 (#629)

* update link for poetry install

* [UPDATE] Bump django-countries from 7.5 to 7.5.1 (#624)

Bumps [django-countries](https://github.com/SmileyChris/django-countries) from 7.5 to 7.5.1.
- [Release notes](https://github.com/SmileyChris/django-countries/releases)
- [Changelog](https://github.com/SmileyChris/django-countries/blob/main/CHANGES.rst)
- [Commits](https://github.com/SmileyChris/django-countries/compare/v7.5...v7.5.1)

---
updated-dependencies:
- dependency-name: django-countries
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [UPDATE] Bump sentry-sdk from 1.19.1 to 1.21.0

Bumps [sentry-sdk](https://github.com/getsentry/sentry-python) from 1.19.1 to 1.21.0.
- [Release notes](https://github.com/getsentry/sentry-python/releases)
- [Changelog](https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-python/compare/1.19.1...1.21.0)

---
updated-dependencies:
- dependency-name: sentry-sdk
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Speed up tests (#638)

* Better usage of cache for groups and clubs related operations (#634)

* Better usage of cache for group retrieval

* Cache clearing on object deletion or update

* replace signals by save and delete override

* add is_anonymous check in is_owned_by

Add in many is_owned_by(self, user) methods that user is not anonymous. Since many of those functions do db queries, this should reduce a little bit the load of the db.

* Stricter usage of User.is_in_group

Constrain the parameters that can be passed to the function to make sure only a str or an int can be used. Also force to explicitly specify if the group id or the group name is used.

* write test and correct bugs

* remove forgotten populate commands

* Correct test

* [FIX] Correction de bugs (#617)

* Fix #600

* Fix #602

* Fixes & améliorations du nouveau CSS (#616)

* Fix #604

* should fix #605

* Fix #608

* Update core/views/site.py

Co-Authored-By: thomas girod <56346771+imperosol@users.noreply.github.com>

* Added back the permission denied

* Should fix #609

* Fix failing test when 2 user are merged

* Should fix #610

* Should fix #627

* Should fix #109

Block les URLs suivantes lorsque le fichier se trouve dans le dir `profiles` ou `SAS` :
- `/file/<id>/`
- `/file/<id>/[delete|prop|edit]`

> Les urls du SAS restent accessiblent pour les roots & les admins SAS
> Les urls de profiles sont uniquement accessiblent aux roots

* Fix root dir of SAS being unnaccessible for sas admins

⚠️ need to edit the SAS directory & save it (no changes required in sas directory properties)

* Remove overwritten code

* Should fix duplicated albums in user profile (wtf)

* Fix typo

* Extended profiles picture access to board members

* Should fix #607

* Fix keyboard navigation not working properly

* Fix user tagged pictures section inside python rather than in the template

* Update utils.py

* Apply suggested changes

* Fix #604

* Fix #608

* Added back the permission denied

* Should fix duplicated albums in user profile (wtf)

* Fix user tagged pictures section inside python rather than in the template

* Apply suggested changes

---------

Co-authored-by: thomas girod <56346771+imperosol@users.noreply.github.com>

* Remove duplicated css

* Galaxy improvements (#628)

* galaxy: improve logging and performance reporting

* galaxy: add a full galaxy state test

* galaxy: optimize user self score computation

* galaxy: add 'generate_galaxy_test_data' command for development at scale

* galaxy: big refactor

Main changes:
  - Multiple Galaxy objects can now exist at the same time in DB. This allows for ruling a new galaxy while still
    displaying the old one.
  - The criteria to quickly know whether a user is a possible citizen is now a simple query on picture count. This
    avoids a very complicated query to database, that could often result in huge working memory load. With this change,
    it should be possible to run the galaxy even on a vanilla Postgres that didn't receive fine tuning for the Sith's
    galaxy.

* galaxy: template: make the galaxy graph work and be usable with a lot of stars

- Display focused star and its connections clearly
- Display star label faintly by default for other stars to avoid overloading the graph
- Hide non-focused lanes
- Avoid clicks on non-highlighted, too far stars
- Make the canva adapt its width to initial screen size, doesn't work dynamically

* galaxy: better docstrings

* galaxy: use bulk_create whenever possible

This is a big performance gain, especially for the tests.

Examples:

----

`./manage.py test galaxy.tests.GalaxyTest.test_full_galaxy_state`

Measurements averaged over 3 run on *my machine*™:
Before: 2min15s
After: 1m41s

----

`./manage.py generate_galaxy_test_data --user-pack-count 1`

Before: 48s
After: 25s

----

`./manage.py rule_galaxy` (for 600 citizen, corresponding to 1 user-pack)

Before: 14m4s
After: 12m34s

* core: populate: use a less ambiguous 'timezone.now()'

When running the tests around midnight, the day is changing, leading to some values being offset to the next day
depending on the timezone, and making some tests to fail. This ensure to use a less ambiguous `now` when populating
the database.

* write more extensive documentation

- add documentation to previously documented classes and functions and refactor some of the documented one, in accordance to the PEP257 and ReStructuredText standards ;
- add some type hints ;
- use a NamedTuple for the `Galaxy.compute_users_score` method instead of a raw tuple. Also change a little bit the logic in the function which call the latter ;
- add some additional parameter checks on a few functions ;
- change a little bit the logic of the log level setting for the galaxy related commands.

* galaxy: tests: split Model and View for more efficient data usage

---------

Co-authored-by: maréchal <thgirod@hotmail.com>

* [UPDATE] Bump libsass from 0.21.0 to 0.22.0 (#640)

Bumps [libsass](https://github.com/sass/libsass-python) from 0.21.0 to 0.22.0.
- [Release notes](https://github.com/sass/libsass-python/releases)
- [Changelog](https://github.com/sass/libsass-python/blob/main/docs/changes.rst)
- [Commits](https://github.com/sass/libsass-python/compare/0.21.0...0.22.0)

---
updated-dependencies:
- dependency-name: libsass
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [FIX] Fix cached groups (#647)

* Bump sqlparse from 0.4.3 to 0.4.4 (#645)

Bumps [sqlparse](https://github.com/andialbrecht/sqlparse) from 0.4.3 to 0.4.4.
- [Release notes](https://github.com/andialbrecht/sqlparse/releases)
- [Changelog](https://github.com/andialbrecht/sqlparse/blob/master/CHANGELOG)
- [Commits](https://github.com/andialbrecht/sqlparse/compare/0.4.3...0.4.4)

---
updated-dependencies:
- dependency-name: sqlparse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [UPDATE] Bump django-ordered-model from 3.6 to 3.7.4 (#625)

Bumps [django-ordered-model](https://github.com/django-ordered-model/django-ordered-model) from 3.6 to 3.7.4.
- [Release notes](https://github.com/django-ordered-model/django-ordered-model/releases)
- [Changelog](https://github.com/django-ordered-model/django-ordered-model/blob/master/CHANGES.md)
- [Commits](https://github.com/django-ordered-model/django-ordered-model/compare/3.6...3.7.4)

---
updated-dependencies:
- dependency-name: django-ordered-model
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fix immutable default variable in `get_start_of_semester` (#656)

Le serveur ne percevait pas le changement de semestre, parce
que la valeur par défaut passée à la fonction `get_start_of_semester()` était une fonction appelée une seule fois, lors du lancement du serveur. Bref, c'était ça : https://beta.ruff.rs/docs/rules/function-call-in-default-argument/

---------

Co-authored-by: imperosol <thgirod@hotmail.com>

* Add missing method on AnonymousUser (#649)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Thomas Girod <thgirod@hotmail.com>
Co-authored-by: thomas girod <56346771+imperosol@users.noreply.github.com>
Co-authored-by: Théo DURR <git@theodurr.fr>
Co-authored-by: Skia <skia@hya.sk>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bartuccio Antoine <klmp200@users.noreply.github.com>
2023-09-09 13:09:13 +02:00
thomas girod aaf30ab965 Add missing method on AnonymousUser (#649) 2023-09-07 23:53:42 +02:00
Julien Constant 2db66e6154 Merge branch 'master' into taiste 2023-09-07 23:44:09 +02:00
Julien Constant 38295e591d Fix immutable default variable in get_start_of_semester (#656)
Le serveur ne percevait pas le changement de semestre, parce
que la valeur par défaut passée à la fonction `get_start_of_semester()` était une fonction appelée une seule fois, lors du lancement du serveur. Bref, c'était ça : https://beta.ruff.rs/docs/rules/function-call-in-default-argument/

---------

Co-authored-by: imperosol <thgirod@hotmail.com>
2023-09-07 23:11:58 +02:00
dependabot[bot] 544b0248b2 [UPDATE] Bump django-ordered-model from 3.6 to 3.7.4 (#625)
Bumps [django-ordered-model](https://github.com/django-ordered-model/django-ordered-model) from 3.6 to 3.7.4.
- [Release notes](https://github.com/django-ordered-model/django-ordered-model/releases)
- [Changelog](https://github.com/django-ordered-model/django-ordered-model/blob/master/CHANGES.md)
- [Commits](https://github.com/django-ordered-model/django-ordered-model/compare/3.6...3.7.4)

---
updated-dependencies:
- dependency-name: django-ordered-model
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-06 12:01:44 +02:00
Julien Constant 2bccf633d5 Bump sqlparse from 0.4.3 to 0.4.4 (#645)
Bumps [sqlparse](https://github.com/andialbrecht/sqlparse) from 0.4.3 to 0.4.4.
- [Release notes](https://github.com/andialbrecht/sqlparse/releases)
- [Changelog](https://github.com/andialbrecht/sqlparse/blob/master/CHANGELOG)
- [Commits](https://github.com/andialbrecht/sqlparse/compare/0.4.3...0.4.4)

---
updated-dependencies:
- dependency-name: sqlparse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-06 11:37:28 +02:00
Julien Constant 4f9d5ae7b1 Revert "[PARTENARIAT] Ajout vitrine d'achat billets eurockéennes 2023 (#582)"
This reverts commit b12e8dc147.
2023-07-02 18:22:14 +02:00
Julien Constant 259337dff1 [FIX] Fix cached groups (#647) 2023-05-12 13:29:16 +02:00
Julien Constant 84768eb74e [FIX] Fix cached groups (#647) 2023-05-12 13:27:51 +02:00
dependabot[bot] 8852ef990e [UPDATE] Bump libsass from 0.21.0 to 0.22.0 (#640)
Bumps [libsass](https://github.com/sass/libsass-python) from 0.21.0 to 0.22.0.
- [Release notes](https://github.com/sass/libsass-python/releases)
- [Changelog](https://github.com/sass/libsass-python/blob/main/docs/changes.rst)
- [Commits](https://github.com/sass/libsass-python/compare/0.21.0...0.22.0)

---
updated-dependencies:
- dependency-name: libsass
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-11 14:19:19 +02:00
Skia 87295ad9b7 Galaxy improvements (#628)
* galaxy: improve logging and performance reporting

* galaxy: add a full galaxy state test

* galaxy: optimize user self score computation

* galaxy: add 'generate_galaxy_test_data' command for development at scale

* galaxy: big refactor

Main changes:
  - Multiple Galaxy objects can now exist at the same time in DB. This allows for ruling a new galaxy while still
    displaying the old one.
  - The criteria to quickly know whether a user is a possible citizen is now a simple query on picture count. This
    avoids a very complicated query to database, that could often result in huge working memory load. With this change,
    it should be possible to run the galaxy even on a vanilla Postgres that didn't receive fine tuning for the Sith's
    galaxy.

* galaxy: template: make the galaxy graph work and be usable with a lot of stars

- Display focused star and its connections clearly
- Display star label faintly by default for other stars to avoid overloading the graph
- Hide non-focused lanes
- Avoid clicks on non-highlighted, too far stars
- Make the canva adapt its width to initial screen size, doesn't work dynamically

* galaxy: better docstrings

* galaxy: use bulk_create whenever possible

This is a big performance gain, especially for the tests.

Examples:

----

`./manage.py test galaxy.tests.GalaxyTest.test_full_galaxy_state`

Measurements averaged over 3 run on *my machine*™:
Before: 2min15s
After: 1m41s

----

`./manage.py generate_galaxy_test_data --user-pack-count 1`

Before: 48s
After: 25s

----

`./manage.py rule_galaxy` (for 600 citizen, corresponding to 1 user-pack)

Before: 14m4s
After: 12m34s

* core: populate: use a less ambiguous 'timezone.now()'

When running the tests around midnight, the day is changing, leading to some values being offset to the next day
depending on the timezone, and making some tests to fail. This ensure to use a less ambiguous `now` when populating
the database.

* write more extensive documentation

- add documentation to previously documented classes and functions and refactor some of the documented one, in accordance to the PEP257 and ReStructuredText standards ;
- add some type hints ;
- use a NamedTuple for the `Galaxy.compute_users_score` method instead of a raw tuple. Also change a little bit the logic in the function which call the latter ;
- add some additional parameter checks on a few functions ;
- change a little bit the logic of the log level setting for the galaxy related commands.

* galaxy: tests: split Model and View for more efficient data usage

---------

Co-authored-by: maréchal <thgirod@hotmail.com>
2023-05-10 12:47:02 +02:00
Julien Constant 288764b551 Mise à jour d'avril (#643) 2023-05-10 11:56:33 +02:00
Julien Constant 5ab5ef681c Remove duplicated css 2023-05-09 23:08:32 +02:00
Julien Constant c9e70889dd Merge branch 'master' into taiste 2023-05-09 22:37:49 +02:00
Julien Constant b30ee0a27a [FIX] Correction de bugs (#617)
* Fix #600

* Fix #602

* Fixes & améliorations du nouveau CSS (#616)

* Fix #604

* should fix #605

* Fix #608

* Update core/views/site.py

Co-Authored-By: thomas girod <56346771+imperosol@users.noreply.github.com>

* Added back the permission denied

* Should fix #609

* Fix failing test when 2 user are merged

* Should fix #610

* Should fix #627

* Should fix #109

Block les URLs suivantes lorsque le fichier se trouve dans le dir `profiles` ou `SAS` :
- `/file/<id>/`
- `/file/<id>/[delete|prop|edit]`

> Les urls du SAS restent accessiblent pour les roots & les admins SAS
> Les urls de profiles sont uniquement accessiblent aux roots

* Fix root dir of SAS being unnaccessible for sas admins

⚠️ need to edit the SAS directory & save it (no changes required in sas directory properties)

* Remove overwritten code

* Should fix duplicated albums in user profile (wtf)

* Fix typo

* Extended profiles picture access to board members

* Should fix #607

* Fix keyboard navigation not working properly

* Fix user tagged pictures section inside python rather than in the template

* Update utils.py

* Apply suggested changes

* Fix #604

* Fix #608

* Added back the permission denied

* Should fix duplicated albums in user profile (wtf)

* Fix user tagged pictures section inside python rather than in the template

* Apply suggested changes

---------

Co-authored-by: thomas girod <56346771+imperosol@users.noreply.github.com>
2023-05-02 13:07:36 +02:00
thomas girod ef968f3673 Better usage of cache for groups and clubs related operations (#634)
* Better usage of cache for group retrieval

* Cache clearing on object deletion or update

* replace signals by save and delete override

* add is_anonymous check in is_owned_by

Add in many is_owned_by(self, user) methods that user is not anonymous. Since many of those functions do db queries, this should reduce a little bit the load of the db.

* Stricter usage of User.is_in_group

Constrain the parameters that can be passed to the function to make sure only a str or an int can be used. Also force to explicitly specify if the group id or the group name is used.

* write test and correct bugs

* remove forgotten populate commands

* Correct test
2023-05-02 12:36:59 +02:00
thomas girod 96dede5077 Speed up tests (#638) 2023-05-02 11:00:23 +02:00
thomas girod 66fcb76cb5 Merge pull request #635 from ae-utbm/dependabot/pip/taiste/sentry-sdk-1.21.0
[UPDATE] Bump sentry-sdk from 1.19.1 to 1.21.0
2023-04-26 22:17:13 +02:00
dependabot[bot] 63c8e51137 [UPDATE] Bump sentry-sdk from 1.19.1 to 1.21.0
Bumps [sentry-sdk](https://github.com/getsentry/sentry-python) from 1.19.1 to 1.21.0.
- [Release notes](https://github.com/getsentry/sentry-python/releases)
- [Changelog](https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-python/compare/1.19.1...1.21.0)

---
updated-dependencies:
- dependency-name: sentry-sdk
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-26 09:08:06 +00:00
dependabot[bot] 12bec5c553 [UPDATE] Bump django-countries from 7.5 to 7.5.1 (#624)
Bumps [django-countries](https://github.com/SmileyChris/django-countries) from 7.5 to 7.5.1.
- [Release notes](https://github.com/SmileyChris/django-countries/releases)
- [Changelog](https://github.com/SmileyChris/django-countries/blob/main/CHANGES.rst)
- [Commits](https://github.com/SmileyChris/django-countries/compare/v7.5...v7.5.1)

---
updated-dependencies:
- dependency-name: django-countries
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-26 02:48:04 +02:00
thomas girod 08460a6964 update link for poetry install 2023-04-22 22:29:43 +02:00
thomas girod b5a40cfda9 Mise à jour de Black vers la version 23.3 (#629) 2023-04-22 15:32:31 +02:00
dependabot[bot] c78953b036 [UPDATE] Bump cryptography from 37.0.4 to 40.0.1 (#594)
* [UPDATE] Bump cryptography from 37.0.4 to 40.0.1

Bumps [cryptography](https://github.com/pyca/cryptography) from 37.0.4 to 40.0.1.
- [Release notes](https://github.com/pyca/cryptography/releases)
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/37.0.4...40.0.1)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Updated pyOpenSSL to match cryptography requirements

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Julien Constant <julienconstant190@gmail.com>
2023-04-20 14:43:46 +02:00
dependabot[bot] 427f7ceaff [UPDATE] Bump django-debug-toolbar from 3.8.1 to 4.0.0 (#593)
Bumps [django-debug-toolbar](https://github.com/jazzband/django-debug-toolbar) from 3.8.1 to 4.0.0.
- [Release notes](https://github.com/jazzband/django-debug-toolbar/releases)
- [Changelog](https://github.com/jazzband/django-debug-toolbar/blob/main/docs/changes.rst)
- [Commits](https://github.com/jazzband/django-debug-toolbar/compare/3.8.1...4.0.0)

---
updated-dependencies:
- dependency-name: django-debug-toolbar
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-09 21:37:48 +02:00
dependabot[bot] 1055385bcc [UPDATE] Bump dict2xml from 1.7.2 to 1.7.3 (#592)
Bumps [dict2xml](https://github.com/delfick/python-dict2xml) from 1.7.2 to 1.7.3.
- [Release notes](https://github.com/delfick/python-dict2xml/releases)
- [Commits](https://github.com/delfick/python-dict2xml/compare/release-1.7.2...release-1.7.3)

---
updated-dependencies:
- dependency-name: dict2xml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...
2023-04-09 11:38:58 +02:00
Julien Constant c1022642a2 [FIX] Fixes supplémentaires pour la màj de mars (#622)
- Les photos de l'onglet de la page utilisateur utilise désormais leur version thumbnail au lieu de leur version HD
- Une des classes du CSS du SAS a été renommée car elle empiétait sur une class de la navbar
- Le profil utilisateur a été revu pour ajouter plus d'espacement entre le tableau des cotisations et le numéro de cotisants
- Les images de forum & blouse sont de nouveau cliquable pour les afficher en grands
- Sur mobile, lorsqu'on cliquait sur le premier élément de la navbar, ce dernier avait un overlay avec des angles arrondis
- Sur mobile, les utilisateurs avec des images de profils non carrées dépassait dans l'onglet Famille
2023-04-08 20:59:43 +02:00
Julien Constant 910a6f8b34 [FIX] Fixes supplémentaires pour la màj de mars (#622)
- Les photos de l'onglet de la page utilisateur utilise désormais leur version thumbnail au lieu de leur version HD
- Une des classes du CSS du SAS a été renommée car elle empiétait sur une class de la navbar
- Le profil utilisateur a été revu pour ajouter plus d'espacement entre le tableau des cotisations et le numéro de cotisants
- Les images de forum & blouse sont de nouveau cliquable pour les afficher en grands
- Sur mobile, lorsqu'on cliquait sur le premier élément de la navbar, ce dernier avait un overlay avec des angles arrondis
- Sur mobile, les utilisateurs avec des images de profils non carrées dépassait dans l'onglet Famille
2023-04-08 20:58:55 +02:00
dependabot[bot] 06253f029c [UPDATE] Bump sentry-sdk from 1.12.1 to 1.19.1 (#620) 2023-04-08 18:50:31 +00:00
Julien Constant fa6527b24f [FIX] Deuxième vague de fixes pour la mise à jour de mars (#619) 2023-04-06 16:09:29 +02:00
Julien Constant 0501e6417a Merge branch 'master' into taiste 2023-04-05 20:02:12 +02:00
Julien Constant a198f5252d Fixes & améliorations du nouveau CSS (#616) 2023-04-05 18:03:43 +02:00
Julien Constant d83842af27 Fix problème de cache dans le SAS & améliore le CSS du SAS
Co-authored-by: Bartuccio Antoine <klmp200@users.noreply.github.com>
2023-04-05 14:32:32 +02:00
Julien Constant f605f7dcc6 Fixes pour la mise à jour de mars (#598) 2023-04-04 22:55:26 +02:00
Julien Constant e638bc04ed Fixes pour la mise à jour de mars (#598) 2023-04-04 22:50:19 +02:00
Julien Constant 4830c3ea2d Mise à jour de mars (#586)
---------

Co-authored-by: Thomas Girod <thgirod@hotmail.com>
Co-authored-by: Théo DURR <git@theodurr.fr>
2023-04-04 19:17:44 +02:00
Julien Constant 8e7c025e47 [FIX] Broken link in readme and license fix (& update) (#591) 2023-04-04 18:39:45 +02:00
Julien Constant 1bfe929ab3 [CSS] Follow up of #578 (#589) 2023-04-04 15:21:09 +02:00
dependabot[bot] 93cc2c883e Bump django from 3.2.16 to 3.2.18 (#574) 2023-04-04 10:16:55 +02:00
Julien Constant 44290a20a6 Create dependabot.yml (#587) 2023-04-03 17:18:16 +02:00
Julien Constant 1f10a284f2 Added GA/Clubs Google Calendar to main page (#585)
* Added GA/Clubs google calendar to main page

* Made tables full width
2023-04-03 15:54:12 +02:00
Julien Constant 28f397574f Amélioration des pages utilisateurs pour les petits écrans (#578, #520)
- Refonte de l'organisation des pages utilisateurs (principalement du front)
  - Page des parrains/fillots
  - Page d'édition du profil
  - Page du profil
  - Page des outils
  - Page des préférences
  - Page des stats utilisateurs

- Refonte du CSS / organisation de la navbar principale (en haut de l'écran)
- Refonte du CSS de la navbar bleu clair (le menu)
- Refonte du CSS du SAS :
  - Page de photo
  - Page d'albums
2023-03-30 14:38:40 +02:00
thomas girod 6c1fa6de0b remove-useless-queries-counter-stats (#519) 2023-03-24 15:32:05 +01:00
Théo DURR f0a08afd31 Merge branch 'repair_NaN_bug_on_click' into taiste 2023-03-10 10:50:26 +01:00
thomas girod 982fc09908 Repair NaN bug for autocomplete on counter click (#583)
* Repair NaN bug for autocomplete on counter click
2023-03-10 10:49:14 +01:00
Théo DURR 9e0b5b0b82 Merge branch 'partenariat-eurocks' into taiste 2023-03-09 17:14:34 +01:00
Julien Constant b12e8dc147 [PARTENARIAT] Ajout vitrine d'achat billets eurockéennes 2023 (#582)
* Added eurocks links to eboutic
2023-03-09 17:13:45 +01:00
Thomas Girod 25c5a3297c Repair NaN bug for autocomplete on counter click 2023-03-09 14:21:12 +01:00
Théo DURR dd3ad42eb5 Mise à jour de février (#581)
Co-authored-by: Thomas Girod <thgirod@hotmail.com>
Co-authored-by: Julien Constant <julienconstant190@gmail.com>
Co-authored-by: Skia <skia@hya.sk>
2023-03-09 13:39:33 +01:00
Théo DURR 5ea181829e Edited unit tests
This test caused a breach in security due to the alert block displaying sensitive data.
2023-03-08 20:47:59 +01:00
Julien Constant 0cf203669f fix wording
Co-authored-by: Théo DURR <git@theodurr.fr>
2023-03-08 20:35:24 +01:00
Julien Constant 559bfcac60 fix typo 2023-03-08 20:13:12 +01:00
Julien Constant db8a1ed0ab Added eurocks links to eboutic 2023-03-08 20:10:54 +01:00
Théo DURR 16150905a0 Fixed broken test 2023-03-08 14:11:10 +01:00
Théo DURR 9a376887ac Update 404.jinja 2023-03-08 13:08:23 +01:00
Théo DURR 773808fa59 Disabled Galaxy button & Removed 404 exception display 2023-03-08 12:50:52 +01:00
Théo DURR c1e59a0676 Disabled galaxy feature (only visually) 2023-03-07 21:32:37 +01:00
Théo DURR 05febc60bd Merge branch 'master' into taiste 2023-03-04 16:35:41 +01:00
thomas girod a73fe598ef repair user merging tool (#498) 2023-03-04 15:01:08 +01:00
Skia b7f20fed6c Galaxy (#575)
Co-authored-by: Skia <florent.jacquet@eshard.com>
2023-03-02 15:11:23 +01:00
Skia 585923c827 Add galaxy (#562)
* style.scss: lint

* style.scss: add 'th' padding

* core: populate: add much more data for development

* Add galaxy
2023-02-07 12:08:25 +01:00
thomas girod 394e17d599 resolved importError (#565) 2023-01-13 02:22:53 +01:00
thomas girod 59136850b8 Merge pull request #530 from ae-utbm/redirection_for_barmen
redirect the user directly on counter when barman
2023-01-11 23:24:45 +01:00
thomas girod d726f4b1e8 Merge pull request #499 from ae-utbm/unify-account-creation
Unify account id creation
2023-01-11 13:26:00 +01:00
thomas girod 705b9b1e6a Passage de vue à Alpine pour les comptoirs (#561)
Vue, c'est cool, mais avec Django c'est un peu chiant à utiliser. Alpine a l'avantage d'être plus léger et d'avoir une syntaxe qui ne ressemble pas à celle de Jinja (ce qui évite d'avoir à mettre des {% raw %} partout).
2023-01-10 22:26:46 +01:00
Thomas Girod 31e8ad8a3e redirect directly on counter if user is barman 2023-01-10 17:37:26 +01:00
thomas girod 99827e005b upgrade re_path to path (#533) 2023-01-09 22:07:03 +01:00
Thomas Girod 751c8a8bc6 unify account_id creation 2023-01-09 21:40:38 +01:00
thomas girod 73305c0b28 Implémentation 3DSv2 + résolution bugs eboutic + amélioration pages admin (#558)
Eboutic :
- Implémentation de la norme 3DSecure v2 pour les paiement par carte bancaire
- Amélioration générale de l'interface utilisateur
- Résolution du problème avec les caractères spéciaux dans le panier sur Safari
- Réparation du cookie du panier de l'eboutic qui n'était pas fonctionnel

Autre :
- Mise à jour de la documentation
- Mise à jour des dépendances Javascript
- Suppression du code inutilisé dans `subscription/models.py`
- Amélioration des pages administrateur (back-office Django)

Co-authored-by: thomas girod <56346771+imperosol@users.noreply.github.com>
Co-authored-by: Théo DURR <git@theodurr.fr>
Co-authored-by: Julien Constant <julienconstant190@gmail.com>
2023-01-09 20:53:12 +01:00
Théo DURR 37216cd16b Updated lock file according to pyproject 2023-01-09 19:29:04 +01:00
Théo DURR dae68638cf Merge branch 'master' into taiste 2023-01-09 19:15:00 +01:00
Julien Constant 7cadc0bc28 Update doc/start/install.rst 2023-01-09 19:04:43 +01:00
Julien Constant cce686f3a8 Update doc/about/tech.rst 2023-01-09 19:04:32 +01:00
Théo DURR 4fe46fbcef [FIX] 3DSv2 - Echappement du XML et modif tables (#543)
* Fixed wrong HMAC signature generation
* Updated migration files

Co-authored-by: Julien Constant <julienconstant190@gmail.com>
2023-01-09 17:46:34 +01:00
Théo DURR fe8b8f46aa Fix 3DSv2 implementation (#542)
* Fixed wrong HMAC signature generation

* Fix xml du panier

Co-authored-by: Julien Constant <julienconstant190@gmail.com>
2023-01-06 20:02:45 +01:00
Julien Constant 310f1a2283 [FEATURE] Ajout du logo de la promo 23 & Amélioration des anciens logos (#541) 2023-01-05 18:37:13 +01:00
thomas girod 7079761ffe Merge pull request #540 from ae-utbm/3dsv2-encore-un-patch
remove csrf_token
2022-12-26 18:55:41 +01:00
Thomas Girod f681c981c6 remove csrf_token 2022-12-26 18:51:04 +01:00
thomas girod 5d97146d14 Merge pull request #531 from ae-utbm/remove_useless_tests
remove useless tests
2022-12-22 13:01:56 +01:00
thomas girod 7b56bd697d Merge pull request #536 from ae-utbm/refactor_admin
enhance admin pages
2022-12-21 17:10:51 +01:00
thomas girod 14cd268d69 Merge pull request #532 from ae-utbm/update-doc
update documentation
2022-12-21 16:02:17 +01:00
thomas girod 754be1c9c9 Update doc/about/tech.rst
Co-authored-by: Julien Constant <49886317+Juknum@users.noreply.github.com>
2022-12-20 21:17:52 +01:00
Thomas Girod da2c155254 update documentation 2022-12-20 17:26:28 +01:00
Thomas Girod ceb2888f82 enhance admin pages 2022-12-19 20:55:33 +01:00
Théo DURR ce3e2bb32b Revert "Bump cryptography from 37.0.4 to 38.0.3 (#515)" (#529)
This reverts commit 7b6eed9a47.
2022-12-17 14:05:53 +01:00
Julien Constant 26c94c9ec6 [Eboutic] Fix double quote issue & improved user experience on small screen (#522)
* Fix #511 Regex issue with escaped double quotes

* Fix basket being when reloading the page (when cookie != "")

+ Added JSDoc
+ Cleaned some code

* Fix #509 Improved user experience on small screens

* Fix css class not being added back when reloading page

* CSS Fixes (see description)

+ Fixed overlaping item title with the cart emoji on small screen
+ Fixed minimal size of the basket on small screen (full width)

* Added darkened background circle to items with no image

* Fix issue were the basket could be None


* Edited CSS to have bette img ratio & the 🛒 icon

Adapt, Improve, Overcome

* Moved basket down on small screen size
2022-12-16 00:37:07 +01:00
dependabot[bot] 7b6eed9a47 Bump cryptography from 37.0.4 to 38.0.3 (#515)
Bumps [cryptography](https://github.com/pyca/cryptography) from 37.0.4 to 38.0.3.
- [Release notes](https://github.com/pyca/cryptography/releases)
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/37.0.4...38.0.3)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-16 00:35:46 +01:00
thomas girod 639197f4c8 update some dependencies (#523) 2022-12-15 23:57:31 +01:00
Théo DURR 13bae8d2fa Update deploy.yml (#527) 2022-12-15 23:55:29 +01:00
Théo DURR 6b2027550c Revert "Dépendance poetry manquante (setuptools)" (#526)
This reverts commit 022b365bb2.
2022-12-15 23:18:41 +01:00
Théo DURR 022b365bb2 Dépendance poetry manquante (setuptools) 2022-12-15 22:36:56 +01:00
Théo DURR d8867fc9ea Edited workflows (#521)
Résoud le soucis lié à dependabot.

Le problème venait du fait que l'on faisait un poetry update et non un poetry Install. Un update écrit dans poetry.lock, alors qu'un Install lit ce fichier. C'est là toute la différence.

Cette PR change donc les workflows.

Laisser ce bot apporte beaucoup de sécurité, vu qu'il nous prévient des changement, et aussi des vulnérabilités au niveau des dépendances.
2022-12-15 19:02:29 +01:00
dependabot[bot] 118c58b5fa Bump django from 3.2.15 to 3.2.16 (#514)
Bumps [django](https://github.com/django/django) from 3.2.15 to 3.2.16.
- [Release notes](https://github.com/django/django/releases)
- [Commits](https://github.com/django/django/compare/3.2.15...3.2.16)

---
updated-dependencies:
- dependency-name: django
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-14 14:11:58 +01:00
Julien Constant faccc1367f Fix le panier de l'Eboutic pour Safari (#518)
Co-authored-by: Théo DURR <git@theodurr.fr>
Co-authored-by: thomas girod <56346771+imperosol@users.noreply.github.com>
2022-12-14 08:38:41 +01:00
Thomas Girod 22b83b0814 remove useless tests 2022-12-12 22:56:06 +01:00
thomas girod 1d82e2a7d9 Change country id to ISO 3166 1 numeric for 3DSV2 (#510) 2022-12-12 22:54:31 +01:00
Julien Constant 823bd578f2 Fix election page css (#508)
* Fix election candidate overflowing texte
* Fix "Show Less" invisible still occurring in production (wtf)
* Fix program text still overflowing still occurring in production (wtf)

Bonus:
* Fix miss-aligned links in navbar
2022-12-12 21:22:18 +01:00
Julien Constant 3e5c36b39e Fix election candidate overflowing texte (#506)
Le texte affiché lorsqu'on appuyait sur "Show more" dépassait horizontalement (programme des candidats)
2022-12-12 20:27:47 +01:00
thomas girod 8fb0897160 add a sentry capture for when eboutic basket regex validation fails. (#504)
Co-authored-by: Théo DURR <git@theodurr.fr>
2022-12-11 10:56:02 +01:00
thomas girod b8a72c57e1 escape html characters on xml (#505) 2022-12-10 20:41:35 +01:00
Théo DURR 6a0a8e8ab4 Edited bar manager club to pdf (pdfesti) (#503)
* Edited bar manager club to pdf (pdfesti)
* Fixed unit tests
2022-12-08 18:26:41 +01:00
thomas girod 9188565a86 Merge pull request #501 from ae-utbm/ci-cl-edit
Ci cl edit
2022-12-01 11:14:56 +01:00
Thomas Girod 4d7d22c337 edit yml to avoid git conflict when deploying on test 2022-12-01 10:07:03 +01:00
thomas girod b58116b023 Merge pull request #500 from ae-utbm/eboutic-3DSv2-patch
integration of 3D secure v2 for eboutic bank payment
2022-11-30 23:10:53 +01:00
Thomas Girod fe9e5ce861 integration of 3D secure v2 for eboutic bank payment 2022-11-30 22:52:56 +01:00
thomas girod e43d53e564 Merge pull request #497 from ae-utbm/eboutic-patch
Correct wrong et_autoanswer url
2022-11-16 23:47:24 +01:00
Thomas Girod d4a5039efc correct wrong et_autoanswer url 2022-11-16 23:33:22 +01:00
Thomas Girod 35506e0175 Revert "Merge pull request #496 from ae-utbm/eboutic-patch"
This reverts commit 1c27831f92, reversing
changes made to b92580943a.
2022-11-16 23:31:34 +01:00
thomas girod 1c27831f92 Merge pull request #496 from ae-utbm/eboutic-patch
hide bank payment button during investigation for bug
2022-11-16 22:17:04 +01:00
Thomas Girod cdbf07a835 hide bank payment button during investigation for bug 2022-11-16 22:14:16 +01:00
thomas girod b92580943a Merge pull request #495 from ae-utbm/eboutic-patch
Eboutic patch
2022-11-16 20:57:32 +01:00
Thomas Girod 60eff1000f second patch on eboutic 2022-11-16 20:41:24 +01:00
thomas girod 96510b270d bux fixing on new eboutic (#493)
- les alt des images des produits n'étaient pas bonnes
- les noms de produits avec une apostrophe dedans n'étaient pas cliquables
2022-11-16 19:08:58 +01:00
thomas girod 1281104d96 Merge pull request #490 from ae-utbm/taiste
Eboutic
2022-11-16 17:04:13 +01:00
Thomas Girod 3c1724fa81 Add warning message when user has no birthdate 2022-11-15 21:07:50 +01:00
Julien Constant 1630af4fbd Merge pull request #489 from TheRolfFR/remove-pinktober
Removing pinktober for AE
2022-11-14 21:04:58 +01:00
Yann LV e76e2b1537 Removing pinktober for AE 2022-11-14 20:40:19 +01:00
Thomas Girod 6c276dc596 resolved crash when user has no birthdate 2022-11-12 13:59:58 +01:00
thomas girod d3c115e3f9 Merge pull request #477 from imperosol/eboutic
Refonte de la boutique en ligne
2022-10-31 16:28:56 +01:00
Thomas Girod c245ef7149 refonte de la boutique en ligne 2022-10-31 16:15:16 +01:00
Thomas Girod 8b09ba2924 refonte de la boutique en ligne 2022-10-30 12:33:21 +01:00
thomas girod 52eb310f95 Merge pull request #486 from ae-utbm/taiste-ci-cl
add yaml config files for test deployment
2022-10-30 11:04:38 +01:00
Thomas Girod 5bff38fc7b add yaml config files for test deployment 2022-10-28 01:41:53 +02:00
Thomas Girod 2813a59323 Revert "add yaml config files for taiste deployment"
This reverts commit 89d6db4208.
2022-10-28 01:35:46 +02:00
Thomas Girod eef33fa263 Revert "revert push to wrong branch"
This reverts commit 241d3cea53.
2022-10-28 01:35:34 +02:00
Thomas Girod 241d3cea53 revert push to wrong branch 2022-10-28 01:10:00 +02:00
Thomas Girod 89d6db4208 add yaml config files for taiste deployment 2022-10-28 01:08:12 +02:00
thomas girod e0ad288cf4 Suppression des appels à la db de l'ancien site (#483) 2022-10-19 16:26:30 +02:00
TheRolf f4d7fae8ca Merge pull request #482 from ae-utbm/pinktober-patch-patch
Patch to fix the pinktober patch
2022-10-13 20:56:00 +02:00
Yann LV 95a7493fc1 Patch to fix the pinktober patch 2022-10-13 20:50:18 +02:00
thomas girod 8243dbcbef mend pinktober logo (#481)
* mend pinktober logo

* Increased contrast for links

Co-authored-by: Théo DURR <git@theodurr.fr>
2022-10-12 08:47:06 +02:00
Théo DURR c3a4071627 Edited navbar for pinktober (#480)
Design by @TheRolfFR
2022-10-11 21:55:19 +02:00
Alexandre cef3f22e0d Merge pull request #476 from ae-utbm/lsacienne/change_banner_to_invitation
Return to classical weekmail banner
2022-09-26 08:18:15 +02:00
lsacienne c206b965ad Return to classical weekmail banner 2022-09-25 21:44:56 +02:00
Julien Constant e868946fd7 Merge pull request #475 from imperosol/patch-1
update link for poetry install
2022-09-25 17:42:06 +02:00
Alexandre 254044c36b Merge pull request #474 from ae-utbm/lsacienne/change_banner_to_invitation
💄 Modification of banner
2022-09-25 17:26:48 +02:00
thomas girod c695d6f7a0 update link for poetry install 2022-09-25 12:06:29 +02:00
lsacienne feef855f01 💄 Modification of banner 2022-09-21 22:12:35 +02:00
Julien Constant b3a48ca5af Merge pull request #471 from ae-utbm/remove-gitlab-files
Added back the **git** .mailmap file
2022-09-11 23:54:03 +02:00
Julien Constant f3a52d094e Merge pull request #472 from ae-utbm/lsacienne/change_banner
💄 Modification of banner
2022-09-11 23:37:43 +02:00
lsacienne 2901bd919f 💄 Modification of banner 2022-09-11 23:17:29 +02:00
Julien Constant 0396a5bf2b Added back the **git** .mailmap file 2022-09-09 13:59:01 +02:00
Julien Constant b48ad16f04 Merge pull request #470 from ae-utbm/remove-gitlab-files
Remove old GitLab files
2022-09-02 20:13:20 +02:00
Julien Constant 7cc6250860 Delete thank_you.md 2022-09-02 19:53:41 +02:00
Julien Constant ae2e4b518d Removed old GitLab files & may fix auto_assign for reviewers 2022-09-02 19:49:28 +02:00
Julien Constant e9b9f3a62b Merge pull request #469 from ae-utbm/remove-calendar-page
Switched Calendar link to Elections list link (as it was unused)
2022-09-02 19:43:47 +02:00
Julien Constant 3321669726 Switched Calendar link to Elections list link (as it was unused) 2022-09-02 19:34:16 +02:00
Théo DURR 21fc85670e hot fix: Updated variable names & comments (#461)
- Fixed a wrong condition on the users subscribing history `read` permission.
- The comments are clearer and mentions how to specify clubs by their id.
2022-08-31 20:53:08 +02:00
Théo DURR 18a5ad6541 Merge pull request #460 from ae-utbm/integration-subscriptions 2022-08-31 18:51:40 +02:00
Théo DURR 71c5456225 Selected club members can now see subscriptions 2022-08-31 18:39:49 +02:00
Théo DURR 50e04164a2 Merge pull request #457 from ae-utbm/455-sentry-modal
Fixed some mess done on settings.py
2022-08-27 22:06:13 +02:00
Théo DURR 3b1d71f317 Merge pull request #458 from ae-utbm/actions
Editing workflow process
2022-08-27 22:00:54 +02:00
Théo DURR 65c2689578 Editing workflow process
Sentry new release only triggers when deployment is successful
2022-08-27 21:56:46 +02:00
Théo DURR b45673f04a Update settings.py 2022-08-27 21:54:20 +02:00
Théo DURR cb6e037f5e Fixed some mess done on settings.py 2022-08-27 21:52:16 +02:00
Théo DURR 5e6d60bb3a Merge pull request #456 from ae-utbm/455-sentry-modal
Updated sentry modal SDK
2022-08-27 21:47:59 +02:00
Théo DURR 64f8d9bad3 Function name refactor
So the name is clearer
2022-08-27 21:36:45 +02:00
Théo DURR 05b86e1f7a Black again 2022-08-27 21:23:49 +02:00
Théo DURR 700fed860d Code refactor and comments 2022-08-27 21:22:31 +02:00
Théo DURR 820bf6279b Modal window is now autocompleted if user is logged in 2022-08-27 20:14:31 +02:00
Théo DURR b97ce81dd2 Fixed black lint 2022-08-27 19:48:23 +02:00
Théo DURR f4dfd8f99c settings.DEBUG variable sets the sentry env to development
DSN still needs to be specified manually
2022-08-27 19:46:26 +02:00
Théo DURR 29139bf360 SENTRY_ENV can now be overriden in settings.py 2022-08-27 18:58:12 +02:00
Théo DURR 4f9c2724f5 Updated sentry modal SDK
Specified default environment for issues
2022-08-27 18:46:22 +02:00
Théo DURR 7a914f5e94 Merge pull request #451 from ae-utbm/django-3.2-migration
Edited deprecated code
2022-08-27 00:17:36 +02:00
Théo DURR 121d04e1d5 Merge branch 'master' into django-3.2-migration 2022-08-27 00:03:58 +02:00
Théo DURR fc6cdba8e2 Merge pull request #452 from ae-utbm/actions
Going back to actions again
2022-08-26 23:33:24 +02:00
Théo DURR 7f39ead159 This should work now 2022-08-26 23:32:43 +02:00
Théo DURR 1da82ac2dd Another regex 2022-08-26 23:31:33 +02:00
Théo DURR f2dcc39c14 No inspiration 2022-08-26 23:28:08 +02:00
Théo DURR 705dc56153 Testing another regex 2022-08-26 23:26:37 +02:00
Théo DURR 02047b62d7 Edited random file 2022-08-26 23:21:34 +02:00
Théo DURR 895d4b33a6 Going back to actions again 2022-08-26 23:19:29 +02:00
Théo DURR 142cb3316e Edited deprecated code
Fixes #449

See : https://docs.djangoproject.com/en/3.2/ref/forms/api/\#notes-on-field-ordering
2022-08-26 22:33:21 +02:00
Julien Constant 997fcc9fff Merge pull request #448 from ae-utbm/actions 2022-08-26 22:26:33 +02:00
Théo DURR ec65ca11d6 Added sentry release action (See: #444) 2022-08-26 21:33:18 +02:00
Théo DURR 0198027544 I forgot sth 2022-08-26 17:11:20 +02:00
Julien Constant 69e0550d4f Merge pull request #447 from ae-utbm/actions
Implemented diff file for CI
2022-08-26 17:09:13 +02:00
Théo DURR 9a1a5635e2 Implemented file diff (see: #445) 2022-08-26 17:04:09 +02:00
Théo DURR 863f9ff77e Added some safety to deploy script 2022-08-26 16:39:49 +02:00
Théo DURR 4146c4c5cb Merge pull request #443 from ae-utbm/actions
Unit tests do not run on master push
2022-08-26 16:24:23 +02:00
Théo DURR b3ad5c5df9 Unit tests do not run on master push
They are only trigerred on PRs
2022-08-26 16:12:17 +02:00
Théo DURR 9388e2dc88 Merge pull request #442 from ae-utbm/actions
Actions should work now
2022-08-26 14:54:42 +02:00
Julien Constant 56dec9eaa1 Added auto assign for PR 2022-08-26 14:43:51 +02:00
Théo DURR 596126f4f4 Actions seem to be operationnal 2022-08-26 14:39:10 +02:00
Théo DURR 8646b2c8f7 Rollback to previous version (see: https://github.com/appleboy/ssh-action/issues/174) 2022-08-26 14:10:37 +02:00
Julien Constant c81bb1fb90 Merge pull request #440 from ae-utbm/links-update
Updated links before moving to GitHub
2022-08-26 14:05:12 +02:00
Julien Constant d17a52a8d6 Updated links before moving to GitHub 2022-08-26 14:04:05 +02:00
Théo DURR 55e0eecc0b SSH Connection now works 2022-08-26 13:58:45 +02:00
Julien Constant 496adc17ea Updated links & moved to a markdown file 2022-08-26 13:58:21 +02:00
Théo DURR ab43d7d2df Testing things 2022-08-26 13:53:17 +02:00
Théo DURR 13f0bfe546 Enabled debug 2022-08-26 13:48:40 +02:00
Théo DURR 83a384145b Fixed spelling 2022-08-26 13:43:13 +02:00
Théo DURR 8a923761a5 Specified environment 2022-08-26 13:26:41 +02:00
Théo DURR 6e4a99eba3 Added sample deploy action 2022-08-26 13:20:57 +02:00
Théo DURR 0470aa185e Merge pull request #441 from ae-utbm/actions
First try for CI/CD using actions
2022-08-25 22:47:34 +02:00
Théo DURR 273371db8b Updated for merging into master 2022-08-25 22:46:30 +02:00
Théo DURR ed3aa0c328 Removed real tests during actions deployment 2022-08-25 22:45:33 +02:00
Théo DURR acfff6b103 Edited master to actions for testing purposes 2022-08-25 22:30:32 +02:00
Théo DURR ada4579193 Created deploy workflow & made a dry run 2022-08-25 22:23:13 +02:00
Théo DURR 3a17c3079e 0/10 en dictée 2022-08-25 21:23:48 +02:00
Théo DURR 26e46de8e1 Je sais pas écrire 2022-08-25 21:21:12 +02:00
Théo DURR 111bcc8e60 Fixed permission issue on apt-get 2022-08-25 21:19:23 +02:00
Théo DURR cdaa204ba2 Added bullshit 2022-08-25 21:17:19 +02:00
Théo DURR e85511fcb9 Initial unit testing action 2022-08-25 21:14:04 +02:00
klmp200 35c120a29f Merge branch 'download-all-my-pictures' into 'master'
Fix 'download all my picture button' being displayed in all albums sections

This MR fix the following issue where the download all button is displayed in each album (hence it's for all photos & not only by album)
![image](/uploads/c888e2bf8715d18cd2ea26e63f9fac28/image.png)

See merge request ae-utbm/Sith!320
2022-08-09 17:09:48 +00:00
klmp200 7c4c1bc387 Fix permissions on download pictures feature 2022-08-09 18:11:20 +02:00
Julien Constant 6e77edcf67 Fix 'download all my picture button' being displayed in all albums sections 2022-08-09 17:57:02 +02:00
Julien Constant | Tinople effed9c760 Merge branch 'download-all-my-pictures' into 'master'
Add feature to download all of your pictures as a user


See merge request ae-utbm/Sith!319
2022-08-09 13:51:04 +00:00
klmp200 0e5c8b53b0 Add missing translations and update doc 2022-08-07 16:45:18 +02:00
klmp200 47a332445c Add feature to download all of your pictures as a user 2022-08-07 16:08:56 +02:00
klmp200 c904b2d827 Merge branch 'fix/broken-js' into 'master'
Fix broken forms


See merge request ae-utbm/Sith!318
2022-08-06 12:53:30 +00:00
klmp200 f56263d6bd Fix broken forms 2022-08-06 14:28:35 +02:00
Théo | Ailé 0c2494cb34 Merge branch 'django-3.2' into 'master'
Upgrade to django 3.2

* Upgrade dependencies
* Fix ugettext
* Fix bad urls

See merge request ae-utbm/Sith!316
2022-08-05 18:46:24 +00:00
Théo | Ailé 9e5743a64c Merge branch 'defer-script-and-font-awesom' into 'master'
Update de base.jinja

Defer des balises script. Ajout de preload sur l'import de fontawesome. Changement de certains commentaires html en commentaires jinja.

Le deux premiers points devraient permettre de gagner un temps non-négligeable au chargement de la page.

See merge request ae-utbm/Sith!317
2022-08-05 18:12:29 +00:00
Maréchal | Thomas b5241ec75e Defer des balises script. Ajout de preload sur fa. 2022-08-05 13:22:09 +00:00
klmp200 4f00224f0d Update dependencies, apply black and fix wrong default SITH_COUNTER_OFFICES values 2022-08-04 18:42:29 +02:00
klmp200 320a896610 Fix tests and broken forms 2022-08-04 17:20:21 +02:00
klmp200 08924c5e05 Fix wrong url and set default auto field 2022-08-04 00:38:50 +02:00
klmp200 98bfc308a7 Minimal working version
* Upgrade dependencies
* Fix ugettext
* Fix bad urls
2022-08-04 00:28:09 +02:00
klmp200 dee24fbc9c Fix deprecation warnings 2022-08-03 21:48:37 +02:00
Alexandre | L'Sacienne 2556427c7d Merge branch 'lsacienne/invitation_banner2' into 'master'
💄 Change banner to invitation banner

We must set an invitation banner again. For the next one, we should create a new feature with a new button to avoid doing this switch every time.

See merge request ae-utbm/Sith!314
2022-07-04 19:23:28 +00:00
lsacienne a2b35e5bba 💄 Change banner to invitation banner 2022-07-04 14:03:50 +02:00
Alexandre | L'Sacienne 3e8f1acb96 Merge branch 'election-css' into 'master'
Improved Elections CSS for the table

- Everything can be seen without scrolling sideways (unless you're on a small screen)
- Each column makes the same size
- Candidate description/program is now below its profile picture
- If the candidate does not have any profile picture, the default one is shown
- The Edit/Delete message has been replaced with their corresponding emojis (they takes fewer spaces and doesn't need to be translated)
- Modified links at the bottom to look like buttons

<details><summary>Before</summary>
![image](/uploads/fd42e2fa027786612582d41c97090277/image.png)
</details>

<details><summary>This MR (root)</summary>
![image](/uploads/8350518422392f971d98f3c7ee48a558/image.png)
</details>

<details><summary>This MR (lambda user)</summary>
![image](/uploads/e6b66730e47556ea21230e89d2d06f83/image.png)
</details>

<details><summary>When a candidate is selected</summary>
![image](/uploads/adde527405fb321ba2023c36e06f4dc3/image.png)
</details>

See merge request ae-utbm/Sith!313
2022-06-15 19:13:47 +00:00
Julien Constant 85788977fe Moved file to correct place & improved CSS a bit 2022-06-15 15:32:16 +02:00
Julien Constant 066ca5bada This shouldn't be unminified 2022-06-15 01:57:57 +02:00
Julien Constant 41369f738e Improved Elections CSS for the table 2022-06-15 01:42:17 +02:00
Alexandre | L'Sacienne 67377b3cbf Merge branch 'lsacienne/change_weekmail_banner_P22_08_06_2022' into 'master'
Change the invitation banner in weekmail to regular weekmail banner

We now have the weekmail banner and not the invitation banner

See merge request ae-utbm/Sith!312
2022-06-14 09:18:26 +00:00
lsacienne ac3d668655 💄 CHange the invitation banner in weekmail
We now have the weekmail banner and not the invitation banner
2022-06-08 22:05:24 +02:00
Alexandre | L'Sacienne c57b15e159 Merge branch 'lsacienne/change_weekmail_banner_P22' into 'master'
Modification of the banner and footer for the Special General Meeting

There will be a special general meeting next week so we modify the banner to fit with this event.

See merge request ae-utbm/Sith!311
2022-06-01 21:14:38 +00:00
lsacienne 66efb8012e ♻️ Fix black pipeline 2022-06-01 22:46:12 +02:00
lsacienne cad0c0dadb 💄 Modification of the banner and footer
for the special invitation
2022-06-01 22:40:52 +02:00
lsacienne b32c90ed5d Add of weekmail footer 2022-06-01 22:39:44 +02:00
lsacienne 4d361dc67b Add of weekmail banner in 2 versions 2022-06-01 22:39:17 +02:00
lsacienne 2b170d91f7 Add of Invitation banner 2022-06-01 22:38:44 +02:00
Théo | Ailé 9e074d6ca6 Merge branch 'service_desk_reply' into 'master'
Update .gitlab/service_desk_templates/thank_you.md


See merge request ae-utbm/Sith!310
2022-05-26 13:46:54 +00:00
Théo | Ailé b655b2695b Update .gitlab/service_desk_templates/thank_you.md 2022-05-26 08:41:37 +00:00
Théo | Ailé 366aeed2ba Merge branch 'lsacienne/refilling_authorized_for_Bdf_ae' into 'master'
Add authorization to refill to the counters AE & BdF

Since the FIMU is coming, there is a necessity to allow access to physical refilling to the people who will manage the stands.

Therefore, We should authorize the refilling on the BdF and AE counter.

See merge request ae-utbm/Sith!309
2022-05-22 09:56:56 +00:00
Alexandre | L'Sacienne 454ae5f9e3 Add authorization to refill to the counters AE & BdF 2022-05-22 09:56:53 +00:00
lsacienne b811114425 fix black pipeline 2022-05-21 21:53:25 +02:00
lsacienne 712e7c8939 Add of verification on the counter 2022-05-21 12:23:34 +02:00
lsacienne 713cd92141 Modification of the settings to fit better with the code 2022-05-21 12:23:23 +02:00
lsacienne 4154b499b1 Add of a new settings for the counters AE & BdF 2022-05-21 09:45:28 +02:00
Théo | Ailé 253f204225 Merge branch '125-fix-family-tree' into 'master'
Ajout de pygraphviz en dépendance

Closes #125

On change également la version minimale de python (`3.7` -> `3.8`)

Closes #125

See merge request ae-utbm/Sith!306
2022-05-08 12:09:38 +00:00
Théo | Ailé 7241f3eb1d Ajout de pygraphviz en dépendance 2022-05-08 12:09:37 +00:00
Alexandre | L'Sacienne 2422f60898 Merge branch 'lsacienne/refilling_only_for_ae_member' into 'master'
Adds a Restriction for refilling

As it was asked by many members of the AE. I added a restriction applied to the barmens.
In fact, we oftenly loose money due to the physic refilling.
The goal with this change is to only allow **the members of the AE** to refill with physic money.

See merge request ae-utbm/Sith!303
2022-05-05 21:53:57 +00:00
lsacienne ba6599fa56 Add of tests 2022-05-05 23:24:08 +02:00
lsacienne f2666f6fb0 Replace the query by a function which already
existed
2022-05-02 00:04:00 +02:00
lsacienne b33839191d Fix black pipeline 2022-04-28 13:16:03 +02:00
lsacienne ee3e375dde Post request management 2022-04-28 11:13:07 +02:00
Théo | Ailé 5b0f7ca21b Merge branch 'skia/deploy_in_ci' into 'master'
gitlab-ci: deploy with Gitlab CI/CD

This MR is a proof-of-concept for deploying the Sith using Gitlab CI/CD. It leverage the CI variable to use a private key that is deployed for the `sith` user of `ae-web`. The `prod.sh` script shall do the rest.

TODO before merge:
* [x] Ensure the private key variable is protected (currently done, but may change during development to be used on this branch)
* [x] Remove this branch from the `only:refs` list
* [x] Change `test_prod.sh` for the real script

See merge request ae/Sith!293
2022-04-27 18:21:49 +00:00
Skia f581d91730 gitlab-ci: deploy with Gitlab CI/CD 2022-04-27 18:21:48 +00:00
lsacienne bbf362691b Change to use settings instead of hardcoding 2022-04-27 15:38:55 +02:00
lsacienne 15e2c8c7b3 Fix the balck pipeline 2022-04-27 15:38:14 +02:00
Théo | Ailé f838127730 Merge branch 'aile-master-patch-00174' into 'master'
Update badges and links on the readme


See merge request ae/Sith!305
2022-04-27 13:13:08 +00:00
Théo DURR d4c0bb3b0e Fix pipeline
Signed-off-by: Théo DURR <03ht@theodurr.fr>
2022-04-27 14:52:33 +02:00
Théo | Ailé b81aee3f1c Update badges and links 2022-04-27 09:50:38 +00:00
lsacienne c6caf5dbce Add of restriction for refilling 2022-04-20 14:01:33 +02:00
Théo | Ailé 7acc59f2cd Merge branch 'lsacienne/refilling_date' into 'master'
Add of date in the counter/refilling_list view

I only add a new field in the counter/refilling_list view which will *normally* display the date of each refilling.

See merge request ae/Sith!302
2022-04-19 10:28:09 +00:00
lsacienne 757ff7ead7 Add of date in the counter/refilling_list view 2022-04-19 12:02:22 +02:00
Théo | Ailé bc2fe16b74 Merge branch '117-django-2-2-not-compatible-with-psycopg-2-9' into 'master'
Resolve "Django 2.2 not compatible with psycopg 2.9"
Closes #117

See merge request ae/Sith!299
2022-04-18 20:21:19 +00:00
Théo | Ailé 35363d9ee7 Resolve "Django 2.2 not compatible with psycopg 2.9" 2022-04-18 20:21:18 +00:00
Théo | Ailé 52106db6fd Merge branch '118-black-pipeline-is-broken' into 'master'
Resolve "Black pipeline is broken"

Closes #118

Closes #118

See merge request ae/Sith!300
2022-04-18 18:33:39 +00:00
Théo | Ailé c4b1829e78 Resolve "Black pipeline is broken" 2022-04-18 18:33:36 +00:00
Théo | Ailé 489a9378c5 Merge branch 'poetry' into 'master'
Add missing dependencies and improve pipeline

* Use black version specified in requirements for checking with black
* Check if pyproject.toml file is valid at CI level
* Build documentation in CI
* Add missing postgres dependencie

See merge request ae/Sith!284
2022-03-26 21:27:22 +00:00
klmp200 28ae109b32 Add missing dependencies and improve pipeline 2022-03-26 21:27:20 +00:00
Alexandre | L'Sacienne e7a6a94ff2 Merge branch 'doc-windows-install' into 'master'
Added WSL Windows doc for the project install

Added steps to install the project on Windows using WSL :)

See merge request ae/Sith!291
2022-03-03 18:18:55 +00:00
Skia 234556a172 Merge branch 'skia/fix_eboutic' into 'master'
Multiple fixes

* Bump `black` and fix issues
* `club`: fix tests broken by inclusive translation
* `gitlab-ci`: use `poetry`, as `pip` was broken anyway
* `eboutic`: et_autoanswer: don't require 'Auto' to proceed checking the request: As described in the [doc](https://www.paybox.com/espace-integrateur-documentation/la-solution-paybox-system/gestion-de-la-reponse/), `Auto` may be missing if the payment failed. Thus, it's not required to proceed checking the bank's answer.

See merge request ae/Sith!296
2022-03-02 16:21:10 +00:00
Skia e4ddceabea club: fix tests with inclusive translation 2022-02-28 14:50:24 +01:00
Skia 05dd3ad642 gitlab-ci: use poetry 2022-02-28 10:34:15 +01:00
Skia 6c5db61a97 eboutic: et_autoanswer: don't require 'Auto' to proceed checking the request 2022-02-28 10:01:32 +01:00
Skia a0e4e9e8e3 Update 'black' version 2022-02-28 10:01:32 +01:00
lsacienne c66df77d4a Merge branch 'master' of https://ae-dev.utbm.fr/ae/Sith 2022-02-18 16:35:10 +01:00
lsacienne cfb6b34630 Updated roles to be more inclusive 2022-02-18 16:30:45 +01:00
Skia d8fd0adf47 Merge branch 'skia/et_autoanswer' into 'master'
eboutic: change HTTP return code to avoid blaming the bank's service

See merge request ae/Sith!295
2022-02-10 12:32:43 +00:00
Théo | Ailé 928ae13a8a Merge branch 'bugfix-113-error500' into 'master'
#113: bug fixed

See merge request ae/Sith!294
2022-02-10 12:30:55 +00:00
Skia c2e0ea70e4 eboutic: change HTTP return code to avoid blaming the bank's service 2022-01-04 15:50:36 +01:00
Julien Constant 782ce24895 Changed python3 to python 2021-12-02 12:22:34 +01:00
Cyrille b630742fd4 #113: bug fixed 2021-11-30 17:54:51 +01:00
Ailé b20df930a2 Merge branch 'feature-111-fixture_documentation' into 'master'
add fixture documentation

See merge request ae/Sith!292
2021-11-25 22:06:41 +00:00
Cyrille d60a96fc5c correct populate.rst 2021-11-23 23:44:34 +01:00
Julien Constant 05b0a0ab2f Adapted WSL doc to follow recommendation :) 2021-11-23 19:19:24 +01:00
Cyrille 9eb137e503 add fixture documentation 2021-11-22 21:37:10 +01:00
Julien Constant 7d797009bb Added WSL windows doc for project install 2021-11-19 13:10:18 +01:00
Ailé 3c1818f229 Merge branch 'family_rework' into 'master'
Updated text and translations to be more inclusive

See merge request ae/Sith!290
2021-11-18 15:38:13 +00:00
Ailé d8b69e9b45 Updated text and translations to be more inclusive 2021-11-18 16:24:14 +01:00
Ailé 9177c9d4c2 Merge branch 'bugfix-110-ClubSellings' into 'master'
Fix error 500 in club sellings

Closes #110

See merge request ae/Sith!289
2021-11-18 14:32:11 +00:00
Cyrille Stroesser 5195352975 fixed black pipeline 2021-11-18 15:14:39 +01:00
Cyrille Stroesser deb8f865df fix #110 2021-11-18 15:04:25 +01:00
Ailé 5b2c70e4fb Merge branch 'gender_options' into 'master'
Fix pronouns field being mandatory

See merge request ae/Sith!288
2021-11-18 09:07:21 +00:00
Cel f66db0859e Fix pronouns field being mandatory 2021-11-18 09:07:19 +00:00
Ailé b6488d1d00 Merge branch 'poor_logo_quality' into 'master'
Updated somo logo size where they looked blurry (we love responsive)

See merge request ae/Sith!287
2021-11-10 11:33:05 +00:00
Ailé 6a4ac336ad Updated somo logo size where they looked blurry (we love responsive) 2021-11-10 12:11:07 +01:00
Ailé 7ac6dcf8a0 Merge branch 'family_rework' into 'master'
Edited the word "GodFather" to "Family"

See merge request ae/Sith!286
2021-11-10 10:35:40 +00:00
Ailé c6a3677cc5 Fixed duplicated translation 2021-11-05 21:11:52 +01:00
Ailé 707459acd6 Changed word 'Godfather' to 'Family' 2021-11-05 21:01:19 +01:00
Ailé 6390c3320e Applied black on migration 2021-11-05 20:40:20 +01:00
Ailé b8aabc466c Fixed locales
+Pronoun description on the user's profile

Signed-off-by: Ailé <03ht@theodurr.fr>
2021-11-05 20:28:37 +01:00
Théo DURR c66e4232b9 Merge branch 'master' into gender_options
Signed-off-by: Théo DURR <03ht@theodurr.fr>
2021-11-05 17:18:17 +01:00
Ailé 336450d43f Merge branch 'add-promo-logos' into 'master'
Add missing promo logos

Closes #107

See merge request ae/Sith!285
2021-10-27 10:22:07 +00:00
Julien 7e66aadd6f Add missing promo logos 2021-10-27 08:37:58 +02:00
klmp200 bf2b796936 Merge branch 'poetry' into 'master'
Using poetry as a dependency system for development

See merge request ae/Sith!281
2021-10-15 16:12:59 +00:00
klmp200 85623f48a9 Using poetry as a dependency system for development 2021-10-15 16:12:56 +00:00
Celeste 4fbee9c3de Make pronouns visible on profile and miniprofile 2021-10-13 08:59:40 +02:00
Skia bfa3b45547 counter_click.jinja: fix error display with Vue 2021-10-11 22:09:45 +02:00
Celeste 677a9da469 Merge branch 'master' into gender_options 2021-10-11 17:13:06 +02:00
Céleste 1f7752d457 Add pronouns to profile ; Update gender settings
Add pronouns to option list in profile
Modify "Sex" translation to "Genre"
Added "Other" to sex option list (alongside Man and Woman)

update DB,add default value to Pronouns field

Update views.py
2021-10-06 14:12:34 +02:00
Skia 89979dbf61 com: news list: fix UI for admins 2021-10-03 19:08:14 +02:00
Skia 8d1abb8f33 Add .mailmap file for cleaner stats 2021-10-03 18:44:47 +02:00
Skia 2df3494c3b Merge branch 'skia/weekmail_fix' into 'master'
com: fix weekmail for the case of non-existing email addresses

See merge request ae/Sith!282
2021-10-03 16:35:41 +00:00
Skia 39bb490257 com: fix weekmail for the case of non-existing email addresses
If an email address is set as destination for the Weekmail, the SMTP may
refuse it, and `smtplib` will throw a `SMTPRecipientsRefused` error,
containing the list of refused addresses. This commit provides an
interface for the weekmail sender to quickly unsubscribe the faulty
users, so that the next try sending the weekmail can be performed
successfully.
2021-10-03 18:16:51 +02:00
Skia 7a7aad0503 style: fix header bar on medium size screens 2021-10-03 16:08:53 +02:00
Skia b157a3fa90 Merge branch 'skia/mobile_ui' into 'master'
Add a first version of a mobile friendly UI

Although not perfect and with many flaws, this should still allow far
easier navigation on mobile devices.

See merge request ae/Sith!280
2021-10-01 17:05:11 +00:00
Skia 1b688a8aa5 Add a first version of a mobile friendly UI
Although not perfect and with many flaws, this should still allow far
easier navigation on mobile devices.
2021-10-01 18:44:14 +02:00
Skia e8978cc065 sith/toolbar_debug: don't fail when there is no template 2021-10-01 14:08:57 +02:00
Skia 7fd68e4825 Merge branch 'skia/ci_speedup' into 'master'
CI speedup

* Put the Xapian search index in `/dev/shm`, which is an in-memory storage makes the tests go from about 1500s to about 600s.
* Keep the `pip` cache between jobs, to avoid re-downloading all the wheels all the time. This gains about 1min.

See merge request ae/Sith!279
2021-09-30 10:58:49 +00:00
Skia 4119eefe37 gitlab-ci: keep pip cache between jobs 2021-09-30 12:07:00 +02:00
Skia aafc2e6e96 gitlab-ci: put search_indexes in shared memory 2021-09-30 12:07:00 +02:00
Skia 2cbe6fa11c Merge branch 'genderMatmatroncheV2' into 'master'
Remove gender option of matmatronche & update gender settings

Afin de se mettre à jour il est dorénavant possible de ne pas définir son genre sexué sur l'édit de son profil. D'ailleurs j'ai découvert que de base pour un profil random le sexe était défini sur "Homme" maintenant il est en "-------" !

![image](/uploads/43e9f32dc545b35cbe422a53602b2457/image.png)

De plus afin que personnes n'utilisent l'outil matmatronche à des fins de site de rencontres en cherchant uniquement les "Homme" ou les "Femme" d'une promo etc... Le choix du sexe dans la recherche a été supprimé.

![image](/uploads/e6e75d5661862178acfbe71f3f7efc35/image.png)

C'est la première fois que je fais une modification en solo alors n'hésitez pas à me casser en deux et m'expliquer si j'ai fauté :D

See merge request ae/Sith!264
2021-09-29 15:57:52 +00:00
CHARMEAU eec7bcf296 Remove gender option of matmatronche & update gender settings 2021-09-29 17:29:01 +02:00
Skia 6c45de34a4 Merge branch 'poster' into 'master'
[com]: add helper_text for resolution and format of poster

See merge request ae/Sith!209
2021-09-29 14:56:30 +00:00
Cyl 61a40c47d2 [com]: add helper_text for resolution and format of poster 2021-09-29 16:09:05 +02:00
Skia 007157e2e8 Merge branch 'datetime-hell2' into 'master'
core: create TzAwareDateTimeField to replace forms.DateTimeField

Follow up of !267. I read about Gitlab's slash and merge just after I did my own kind by resetting back to the original commit and creating one commit manually. Sublime merge helps but I still need more practice. :)

What was the right way to group every commit under one?

See merge request ae/Sith!270
2021-09-29 13:53:12 +00:00
tleb 49a0ade315 core: create TzAwareDateTimeField to replace forms.DateTimeField 2021-09-29 15:24:06 +02:00
Skia 782cd9a45a Merge branch 'sexy-search' into 'master'
Sexy search

The goal of this MR is to solve the search issue #96. Let's assume we have a user with firstname `Jean-François`, lastname `Du Pont` and nickname `Ai'gnan`. Here is a list of search that did not include him previously but now includes him (was and still is case-insensitive):

* `jean françois` (missing -) ;
* `jean-francois` (missing ç) ;
* `jean francois` (both) ;
* `dupont` (space) ;
* `françois` (not the start of his name) ;
* `aignan` (missing ').

You get it, there are a lot of mistakes that humans can do. It also sorts results by `User.last_update` to avoid putting old accounts at the top of common requests (such as firstname-only or lastname-only requests).

### How it works

For those who don't know, the search is handled by Xapian (the search backend) through the haystack library which provides a Django-friendly interface to multiple search backends. Xapian maintains kind of a duplicate of the database (only for models against which we want to search something) which is optimised for search operations. Its "models" are called "indexes" (see `core.search_indexes.UserIndex` for the user model).

Every time a user is created or modified, it is indexed (through a signal handler) so that Xapian knows about it. For the user search, what is indexed is the string outputted by the `core/templates/search/indexes/core/user_auto.txt` template. For our example from above, it looks like this:

```
jean francois
du pont
aignan
jeanfrancois
dupont

jeanfrancoisdupont
```

As you can see, unicode is removed. There also are kind-of duplicates with different spacing as we are using an autocomplete algorithm: it searches from the beginning of words.

The one I am not sure about is the last one. Its goal is to allow searching without putting a space between the firstname and lastname. Is this useful?

The prod will have to do a `./manage.py update_index`, not sure it does it in the upgrade script.

See merge request ae/Sith!269
2021-09-28 00:14:38 +00:00
tleb 6382e631b6 search: reduce user index size 2021-09-28 01:44:15 +02:00
tleb 12493cffca search: make sure we don't have indexes that are too long 2021-09-28 01:44:15 +02:00
tleb a38ab57ddf search: sort by User.last_update 2021-09-28 01:44:15 +02:00
tleb 30091ef69c search: ascii everywhere and unformalized whitespace 2021-09-28 01:44:15 +02:00
Skia 1a483bfa2c Merge branch 'och' into 'master'
Settings: Added new subscription for the new CA offer

This year we made a new deal with the CA: if a student open an account, they give us 50€ and the student 80€ with on year of subscription.

See merge request ae/Sith!276
2021-09-27 23:31:46 +00:00
Francesco 1a091951e8 Added new subscription for the new CA offer 2021-09-28 01:11:23 +02:00
Skia bfb66b352a Merge branch 'dep-hell2' into 'master'
core: add ./manage.py check_front command and call it on runserver

See #92 and !268.

This simplifies checking that front-end dependencies are up to date. It does not allow one to update an outdated dependency. That must be done manually (would otherwise require depending on a CDN or add npm as a dependency). A manual update will make sure changelogs are read and changes will be made appropriately.

We add a `check_front` command to `manage.py` and run it on calls to `runserver`.

This MR does not update any dependency as it is not its goal. MR incoming!

Should doc be added? It seems pretty simple and I don't see what should be documented: if it's red, update it.

~"Review TODO" @sli

See merge request ae/Sith!271
2021-09-27 20:23:35 +00:00
tleb be26e3df7f core: add ./manage.py check_front command and call it on runserver 2021-09-27 22:00:36 +02:00
Skia cb3307509d Merge branch 'skia/counter_rework' into 'master'
counter: make click page dynamic to avoid repetitive loading

See merge request ae/Sith!278
2021-09-27 19:21:28 +00:00
Skia a3158253a7 Black update 2021-09-26 13:58:39 +02:00
Skia 406380e4f1 counter: make click page dynamic to avoid repetitive loading
This makes the whole click page load only once for a normal click
workflow. The current basket is now rendered client side with Vue.JS,
and the backend view is able to answer with JSON if asked to.

This should lighten the workflow a lot on the client side, especially
with poor connectivity, and the server should also feel lighter during
big events, due to far less complex Jinja pages to render.
2021-09-26 13:58:39 +02:00
Skia efb70652af counter: redirect to counter main when barman login is timed out 2021-09-26 13:58:39 +02:00
Skia 05256bb99a counter: templates: click: JS clean up 2021-09-26 13:58:39 +02:00
Skia 64d0cc2fa8 counter: don't display info boxes and navigation menu
This will lighten the pages and make the functionality directly
accessible without ever scrolling the header garbage that is never
needed on those pages.
2021-09-26 13:58:39 +02:00
Skia f5d7267ba7 Merge branch 'skia/fix_ci' into 'master'
Fix CI

See merge request ae/Sith!277
2021-07-21 13:16:02 +00:00
Skia 24c0a21cc1 locale: update with latest code version 2021-04-23 12:02:03 +02:00
Skia 6a352d642b accounting: fix tests with a computed date instead of hard-coded one 2021-04-23 12:02:03 +02:00
klmp200 48ae1f7c1c Merge branch 'och' into 'master'
Edited subscriptions

See merge request ae/Sith!275
2020-09-01 00:21:48 +02:00
Francesco Witz aaf1adaaa1 sith: Added a new subscription 2020-08-30 23:53:19 +02:00
klmp200 f34f5fe693 Upgrade black and format accordingly 2020-08-27 15:59:42 +02:00
klmp200 f485178422 Merge branch 'och' into 'master'
settings: Added a new subscription

See merge request ae/Sith!274
2020-06-18 00:23:51 +02:00
Och 797ca0f926 settings: Added a new subscription 2020-06-18 00:23:51 +02:00
klmp200 390a4b0064 Merge branch 'bugfix' into 'master'
cache: fix error 500 with new django version

See merge request ae/Sith!273
2020-06-16 19:11:49 +02:00
klmp200 94b029dc9c cache: fix error 500 with new django version 2020-06-12 20:44:37 +02:00
klmp200 45d5728c3e Merge branch 'skia/lazy_load_user_pictures' into 'master'
core: add lazy loading in user pictures page

See merge request ae/Sith!272
2020-06-12 20:19:34 +02:00
Skia 6eabbaf209 core: add lazy loading in user pictures page 2020-05-15 12:14:14 +02:00
klmp200 03fdd0b947 Merge branch 'trombi' into 'master'
trombi: raw tool for trombi admins to add a club membership to a trombi member

See merge request ae/Sith!266
2020-03-23 21:12:58 +01:00
klmp200 fb8faacddc trombi: raw tool for trombi admins to add a club membership to a trombi member 2020-03-22 16:14:37 +01:00
klmp200 7ee4557ab5 Merge branch 'fix-webcam-error' into 'master'
Front: turn Webcam.js error from an alert to a console log

See merge request ae/Sith!265
2020-03-05 19:20:22 +01:00
tleb 5accdbccbb Front: use Webcam.on() for error handling 2020-03-04 07:13:16 +01:00
tleb 7fb26f9e45 Front: turn Webcam.js error from an alert to a console log 2020-03-03 09:01:20 +01:00
CHARMEAU 26a07f722d Remove gender option of matmatronche & update gender settings 2020-02-16 17:51:51 +01:00
klmp200 9176a03a8a Merge branch 'bugfix' into 'master'
Fix some SAS and forum errors

Closes #89

See merge request ae/Sith!263
2019-12-17 12:03:28 +01:00
klmp200 4a1bfc366d sas: fix 500 error when tagging the same user twice or adding a non existing user 2019-12-17 11:25:17 +01:00
klmp200 ebee8c34e1 forum: fix ForumTopicSubscribeView error 500 with anonymous user 2019-12-16 15:00:33 +01:00
klmp200 4ecad1c73b Revert "PÈRE 200 !!!!!!!!!!! PÈRE 200 !!!!!!!! TRALALALALÈREEEEUUUU !!!!"
This reverts commit d1b3a4d3f6.
2019-12-10 15:31:37 +01:00
klmp200 d1b3a4d3f6 PÈRE 200 !!!!!!!!!!! PÈRE 200 !!!!!!!! TRALALALALÈREEEEUUUU !!!! 2019-12-09 03:16:57 +01:00
klmp200 40832bb3bf Merge branch 'clubs' into 'master'
Improve Sellings view for clubs

See merge request ae/Sith!262
2019-11-29 16:32:18 +01:00
klmp200 4a78157f9a club: fix typo on ClubSellingView 2019-11-28 15:14:51 +01:00
klmp200 bf5fc8750d club: steam CSV download for SellingView 2019-11-28 14:52:33 +01:00
klmp200 274a7b7137 core/club: allow adding custom js action to pagination link, useful for FormDetailView with pagination 2019-11-28 01:46:41 +01:00
klmp200 8dd2c02d3e club: add pagination for ClubSellingView 2019-11-28 00:30:51 +01:00
klmp200 a73f5cb270 club: use sums in bdd for ClubSellingView 2019-11-27 21:37:59 +01:00
klmp200 7d40e11144 club: ClubSellingView way faster and with multiple selections everywhere 2019-11-27 20:59:32 +01:00
klmp200 af48553e35 club: separation between archived products and non archived ones 2019-11-27 16:23:14 +01:00
klmp200 ad8bcc7282 Merge branch 'bugfix' into 'master'
com: fix 500 error when utbm mail server refuse weekmail

See merge request ae/Sith!260
2019-11-25 14:18:22 +01:00
klmp200 22a44415e4 Merge branch 'sli' into 'master'
core: add UserIsRootMixin and an admin delete view for memberships

See merge request ae/Sith!261
2019-11-25 13:32:46 +01:00
klmp200 6a153719f9 com: fix 500 error when utbm mail server refuse weekmail 2019-11-25 13:30:47 +01:00
klmp200 5c8fa1b9e7 core: add UserIsRootMixin and an admin delete view for memberships 2019-11-24 19:23:43 +01:00
klmp200 d82679e3d7 Merge branch 'documentation' into 'master'
add autoreload/build to documentation server and enhace documentation

See merge request ae/Sith!246
2019-11-21 15:06:13 +01:00
klmp200 9cb432a082 doc: correct documentation for groups 2019-11-21 11:11:25 +01:00
klmp200 869d29d4a4 doc: corrections for populate documentation 2019-11-21 11:10:31 +01:00
klmp200 c3d2e64a43 doc: add infos on populate command with group and users available 2019-11-20 18:51:13 +01:00
klmp200 e1770ec52c doc: add documentation for groups 2019-11-20 17:55:00 +01:00
klmp200 1256744f1b documentation: add autoreload and build for documentation server 2019-11-20 17:03:18 +01:00
klmp200 77dddbc581 documentation: add help ressources and update installation instructions 2019-11-20 17:03:18 +01:00
klmp200 bfa4000365 Merge branch 'eboutic' into 'master'
eboutic: don't display future account balance if contains refilling item

See merge request ae/Sith!258
2019-11-14 19:31:19 +01:00
klmp200 50c2f8164d Merge branch 'deletion_logs' into 'master'
Add generic operation logs and implements it for Sellings and Refilling deletions

See merge request ae/Sith!259
2019-11-14 19:29:55 +01:00
klmp200 5c30de5f22 core: redesign request middleware with django latest design and better use of threading 2019-11-14 16:32:29 +01:00
klmp200 1c03ce621f core: remove default value for OperationLog 2019-11-14 16:11:20 +01:00
klmp200 e634cda318 core/counter: add generic operation logs and implements it for Sellings and Refilling deletions 2019-11-14 01:14:44 +01:00
klmp200 3501703c15 eboutic: don't display future account balance if contains refilling item 2019-11-05 19:50:08 +01:00
klmp200 129f2e53ee Merge branch 'galaRequests' into 'master'
eticketListView: product id instead of eticket id

See merge request ae/Sith!257
2019-11-05 11:23:52 +01:00
klmp200 209867b3a8 black: makes new version happy 2019-11-04 13:46:09 +01:00
Robin Trioux 59511d255f eticketListView: product id instead of eticket id 2019-11-03 20:58:20 +01:00
klmp200 f42daa01c5 Merge branch 'add-account-amount' into 'master'
Add the account amount to the eboutic

See merge request ae/Sith!254
2019-10-28 23:37:33 +01:00
tleb 29ee1b05af Merge branch 'master' into 'add-account-amount'
# Conflicts:
#   locale/fr/LC_MESSAGES/django.po
2019-10-28 15:48:54 +01:00
klmp200 42055b9001 Merge branch 'auto-uv-pedagogy' into 'master'
Auto fill UVs in pedagogy

See merge request ae/Sith!253
2019-10-25 12:09:39 +02:00
tleb 00c96f5b71 eboutic: fix account amount 2019-10-24 14:40:26 +02:00
tleb 5cc7eff94f pedagogy: uv autofill finishing touches 2019-10-24 14:18:29 +02:00
klmp200 28077ef0b0 Merge branch 'fix-create-club' into 'master'
club: fix 500 on club_new

See merge request ae/Sith!256
2019-10-22 08:34:08 +02:00
tleb 143b128891 club: fix 500 on club_new 2019-10-21 22:56:24 +02:00
tleb 6b06b647bc eboutic: add p tag in makecommand 2019-10-21 22:10:38 +02:00
tleb 413c613c9f Fix translation for basket account amount 2019-10-21 22:06:56 +02:00
tleb 1c0d15ba2a settings: fix black report 2019-10-21 21:17:11 +02:00
tleb 28bd6b8708 uv: make autofill available on edit page 2019-10-21 17:10:16 +02:00
tleb 419a48ac3a /pedagogy/uv/create put urls in settings 2019-10-21 17:01:21 +02:00
tleb 6fce27113a /pedagogy/uv/create use quick notif 2019-10-21 16:52:51 +02:00
tleb 53a7633700 uv: Add error handler to uv autofill 2019-10-21 10:34:46 +02:00
tleb 4094394cef api: typo in doc comment 2019-10-21 08:13:36 +02:00
klmp200 f533c39e67 api: fix uv manager acquisition if uv is only available in spring 2019-10-21 02:10:09 +02:00
tleb 86bc491df4 Fix UV_endpoint auth 2019-10-20 18:26:11 +02:00
tleb 4759551c16 Autofull UV small changes 2019-10-20 17:09:36 +02:00
tleb b057dbfd60 Initial add account amount in eboutic 2019-10-18 21:41:39 +02:00
tleb bddb88d97f Comment UV API and fix little bugs 2019-10-18 18:13:53 +02:00
tleb dbe44a9c1c Fix hour count and submit button 2019-10-18 01:45:49 +02:00
tleb eeb791c460 Initial autofill on UV 2019-10-18 01:28:59 +02:00
klmp200 6d0eba6bcf Merge branch 'rework-front' into 'master'
Markdown widget follows the required attribute

See merge request ae/Sith!249
2019-10-17 14:47:56 +02:00
klmp200 4d04b21f04 Merge branch 'cleanup-forms' into 'master'
Remove unused multiple-select library

See merge request ae/Sith!250
2019-10-17 14:46:02 +02:00
klmp200 2f1b26053b Merge branch 'fix-news-form' into 'master'
Fix 500 when a news needs a start_date and/or end_date but we don't provide

See merge request ae/Sith!252
2019-10-17 14:42:41 +02:00
klmp200 1848945d64 Merge branch 'bugfix' into 'master'
Fix huge permission problem inducing server memory leaks for etickets

See merge request ae/Sith!251
2019-10-17 12:36:57 +02:00
klmp200 9278419345 core: rename GenericContentPermission into GenericContentPermissionMixinBuilder 2019-10-17 11:56:02 +02:00
klmp200 566dcc7aee counter: fix Selling view permission 2019-10-17 11:24:52 +02:00
klmp200 a6088c0e4a core: refactor permissions mixins 2019-10-17 11:24:51 +02:00
tleb 60c9498a56 Fix 500 on news creation/edition 2019-10-17 10:25:29 +02:00
klmp200 241650c171 counter: fix eticket server crash induced by old permission system and fix Selling permission 2019-10-16 21:21:51 +02:00
klmp200 811809895e club: fix mailing list form that unexpectedly relied on try catch in permissions 2019-10-16 21:21:06 +02:00
klmp200 fe9164bfef core: don't use try/except to catch type of view in permissions mixins 2019-10-16 19:28:32 +02:00
tleb ad3f003fbb Remove unused multiple-select library 2019-10-16 14:28:53 +02:00
tleb 7ecb057b68 Isolate easymde instances so that they can be referenced 2019-10-16 12:18:23 +02:00
tleb e932abfa74 Prevent pressing submit if the Markdown widget is empty 2019-10-15 10:41:10 +02:00
tleb 0011f4c7b0 Only register onchange once the submit button has been pressed 2019-10-15 10:23:15 +02:00
tleb 13312e9879 Highlight a markdown input in red if required and submit is pressed
Kind of copy the behaviour of a Firefox input
Once the submit button has been pressed, highlight in red the text
input if it's required but empty
2019-10-15 09:54:10 +02:00
tleb ced90c23db More JS-like, callback as last argument 2019-10-15 09:53:44 +02:00
klmp200 42f5773f51 Merge branch 'fix-guy-feature' into 'master'
Fix the guyguy "feature" on the profile page

See merge request ae/Sith!248
2019-10-15 00:26:04 +02:00
klmp200 b270c76249 Merge branch 'galaRequests' into 'master'
Some gala requests: new minor features

See merge request ae/Sith!247
2019-10-14 22:55:55 +02:00
tleb 34df825718 Fix the guyguy "feature" on the profile page 2019-10-14 23:49:32 +03:00
Cyl aac4e3b99c Minor fix for requestGala 2019-10-14 00:32:11 +02:00
Robin Trioux 5a55a6c642 E-ticket link is sent in the email 2019-10-13 19:02:25 +02:00
Robin Trioux 65c3483c1f core:login allow the user to create an account when not logged 2019-10-13 18:43:30 +02:00
klmp200 660a3161f5 Merge branch 'new_django' into 'master'
upgrade to django 2.2

See merge request ae/Sith!243
2019-10-12 23:19:26 +02:00
klmp200 9e6c4b32e3 Merge branch 'bugfix' into 'master'
Fix error when editing poster while being admin

See merge request ae/Sith!245
2019-10-09 18:11:05 +02:00
klmp200 25225fc451 com: fix error when editing poster while being admin 2019-10-09 17:43:23 +02:00
klmp200 c3f2d0a134 django2.2: unlock djangorestframework version limit 2019-10-08 22:46:38 +02:00
klmp200 cd2d3ee6b4 django2.2: fix tests for accounting 2019-10-08 22:46:38 +02:00
klmp200 81fcf411c1 django2.2: forms fixs for new API 2019-10-08 22:46:38 +02:00
klmp200 d7075eb762 django2.2: fix breaking change for getting uploaded files size 2019-10-08 22:46:38 +02:00
klmp200 cf3f5ea60c django2.2: fix django server crash because of breaking change in widget rendering method 2019-10-08 22:46:37 +02:00
klmp200 59185ab2a8 django2.2: rewrite login and password stack because of removed API 2019-10-08 22:46:37 +02:00
klmp200 a177fa8232 django2.2: replace deprecated base_name with basename in urls 2019-10-08 22:46:37 +02:00
klmp200 308cf30a5a django2.2: replace deprecated login view 2019-10-08 22:46:37 +02:00
klmp200 99c8d95443 django2.2: remove direct assignments to many-to-many fields 2019-10-08 22:46:37 +02:00
klmp200 97c316b62e django2.2: replace removed is_anonymous() and is_authenticated to their now used counterparts 2019-10-08 22:46:03 +02:00
klmp200 90921fd4cd django2.2: some migrations to make django happy 2019-10-08 22:46:03 +02:00
klmp200 296cc4144c django2.2: remove SessionAuthenticationMiddleware
See https://docs.djangoproject.com/en/2.2/releases/2.0/ for more details
2019-10-08 22:46:03 +02:00
klmp200 f7548ab8d1 django2.2: add on_delete on migrations for OneToOneField 2019-10-08 22:46:03 +02:00
klmp200 3cb306bc91 django2.2: add on_delete on migrations for ForeignKey 2019-10-08 22:46:03 +02:00
klmp200 c20d5855e4 django2.2: remove view_page permission as it clash with built-in permission
Need a bit of discussion as I'm not an expert in django built-in permissions
An issue on github says it's related to https://docs.djangoproject.com/en/2.1/releases/2.1/#considerations-for-the-new-model-view-permission
2019-10-08 22:46:02 +02:00
klmp200 00bd60ef4f django2.2: add exception parameter in forbidden and not_found views 2019-10-08 22:46:02 +02:00
klmp200 b8c7fb6f74 django2.2: adapt ChoiceField to the new API 2019-10-08 22:46:02 +02:00
klmp200 df531198c9 django2.2: fix urls and adapt them to new format 2019-10-08 22:46:02 +02:00
klmp200 12b6f0d488 django2.2: adapt DateTimeField in forms with the new API 2019-10-08 22:46:02 +02:00
klmp200 6cc234e8d3 django2.2: add default mandatory on_delete on OneToOneField 2019-10-08 22:46:02 +02:00
klmp200 4dadb1dbc0 django2.2: add default mandatory on_delete on all ForeignKey 2019-10-08 22:46:01 +02:00
klmp200 2616e8b24c django2.2: relpace django.core.urlresolvers by django.urls 2019-10-08 22:46:01 +02:00
klmp200 be855c6c90 django2.2: migrate url to re_path 2019-10-08 22:46:01 +02:00
klmp200 7be9077fce Merge branch 'documentation' into 'master'
write a new shiny and comprehensive documentation

See merge request ae/Sith!224
2019-10-08 22:42:19 +02:00
klmp200 d48c09a914 documentation: revise title levels on git documentation 2019-10-08 22:13:29 +02:00
krophil d5c3dbf864 Add git introduction 2019-10-08 20:22:36 +02:00
klmp200 2a9b89fd2a core: remove README wiki page that wasn't helpful and anyway broken with rst files 2019-10-08 11:12:22 +02:00
klmp200 c73f4ca847 documentation: add CONTRIBUTING 2019-10-08 11:08:47 +02:00
klmp200 d63b5335d4 documentation: apply corrections suggested in comments 2019-10-08 11:08:33 +02:00
klmp200 a766f7137c documentation: add instructions for direnv 2019-10-08 00:59:19 +02:00
klmp200 5c3c14ab37 core: wrap compilemessages to avoid compiling whole env and avoid crash at sphinx messages compilation 2019-10-08 00:59:00 +02:00
klmp200 775413ac7e documentation: weekmail documentation 2019-10-07 23:58:04 +02:00
klmp200 1f271c75f0 documentation: add instructions to add and edit subscriptions 2019-10-07 23:51:38 +02:00
klmp200 4df152185e documentation: rewrite README and remove TODO 2019-10-07 23:51:38 +02:00
klmp200 c83b30f27b documentation: add doc compile test in pipeline 2019-10-07 23:51:38 +02:00
klmp200 db10f7b963 documentation: tutorial about rights management 2019-10-07 23:51:37 +02:00
klmp200 ed68c2cb38 documentation: move documentation about usage in production 2019-10-07 23:51:37 +02:00
klmp200 a6c8dea190 documentation: move markdown syntax documentation and move helper for counting lines 2019-10-07 23:51:37 +02:00
klmp200 124eaf42cd documentation: add models manipulation in hello world tutorial 2019-10-07 23:51:37 +02:00
klmp200 5489096bf5 documentation: add explanation on MVT and explain project structure 2019-10-07 23:51:37 +02:00
klmp200 3a425c6792 documentation: add infos about fontawesome + tests instructions + more external doc 2019-10-07 23:51:37 +02:00
klmp200 8809753108 documentation fix tests because of missing README.md 2019-10-07 23:51:37 +02:00
klmp200 4428a2e89c documentation: add hello world app tutorial 2019-10-07 23:51:36 +02:00
klmp200 0616597bf2 documentation: remove CONTRIBUTING and migrate its content in the doc 2019-10-07 23:51:36 +02:00
klmp200 782a763046 documentation: update instructions, add down loadable files and add all pdf reports for download purpose 2019-10-07 23:51:36 +02:00
klmp200 8dcade6890 documentation: remove Doxygen, include README into doc update tech and install 2019-10-07 23:51:36 +02:00
klmp200 dd49d71cb7 documentation: installation instructions 2019-10-07 23:51:36 +02:00
klmp200 b0b52fd714 documentation: technologies presentation 2019-10-07 23:51:36 +02:00
klmp200 ef40baaa84 documentation: bump sphinx version 2019-10-07 23:51:35 +02:00
klmp200 7c259bf26b documentation: write introduction 2019-10-07 23:51:35 +02:00
klmp200 05e5008305 documentation: base structure for new documentation 2019-10-07 23:51:35 +02:00
klmp200 448f5ff40f Merge branch 'com' into 'master'
com: fix error 500 when editing poster with com admin

See merge request ae/Sith!242
2019-10-06 17:55:30 +02:00
klmp200 5482f1174d Merge branch 'trombi' into 'master'
trombi: permissions fixs

See merge request ae/Sith!241
2019-10-02 17:30:46 +02:00
klmp200 2da0560ec8 com: fix error 500 when editing poster with com admin 2019-10-02 15:32:33 +02:00
klmp200 5151fc3792 trombi: permissions fixs 2019-10-02 14:56:04 +02:00
klmp200 fd5cd56f81 Merge branch 'trombi' into 'master'
Trombi fixs

See merge request ae/Sith!240
2019-09-30 00:00:38 +02:00
klmp200 35d9c05abf trombi: fix trombi tools if user has a trombi profile but no trombi linked 2019-09-29 12:19:22 +02:00
klmp200 fcb3035b67 trombi: fix some 500 errors when accessing page without being in a trombi 2019-09-29 12:09:03 +02:00
klmp200 b7db969f08 Merge branch 'counter' into 'master'
[Counter] - Buying group is now required

See merge request ae/Sith!239
2019-09-20 14:03:07 +02:00
Cyl 14303fd46c [Counter] - Buying group is now required 2019-09-19 23:04:03 +02:00
klmp200 5e6b17cd19 Merge branch 'eticket' into 'master'
[Counter] - add the product ID for every Eticket

See merge request ae/Sith!237
2019-09-18 14:42:16 +02:00
Cyl 8232ff59a0 [Counter] - add the product ID for every Eticket 2019-09-16 23:41:06 +02:00
klmp200 411c117f0f Merge branch 'performances' into 'master'
Improve performances on forum and SAS

See merge request ae/Sith!235
2019-09-16 14:23:52 +02:00
klmp200 298499c749 sas: add cache on Picture permissions to avoid hitting the bdd too much 2019-09-16 11:33:32 +02:00
klmp200 b8ad2d4835 sas: add pagination on AlbumView 2019-09-16 01:26:20 +02:00
klmp200 d37eb134e2 Merge branch 'bugfix' into 'master'
Fix error 500 when editing properties of user without linked customer

See merge request ae/Sith!236
2019-09-15 17:48:21 +02:00
klmp200 63ec5d68f4 core: fix error 500 when editing properties of user without linked customer 2019-09-15 17:05:07 +02:00
klmp200 8330e1eaf2 sas: simplify and optimize permissions for SAS images 2019-09-15 16:43:17 +02:00
klmp200 1f86827e46 core: improve performances on not found images 2019-09-15 16:22:13 +02:00
klmp200 321e5e3ff5 forum: enhance performances on toggle_favorite 2019-09-15 16:12:24 +02:00
klmp200 3eb8292d15 Merge branch 'bugfix' into 'master'
Fix error 500 with expired reset password links

See merge request ae/Sith!234
2019-09-11 10:33:39 +02:00
klmp200 5a3f90fd28 core: fix error 500 with expired reset password links 2019-09-10 16:56:58 +02:00
klmp200 eb975f4de1 Merge branch 'performances' into 'master'
Speed up counter click interface and auto scroll

See merge request ae/Sith!233
2019-09-10 15:50:38 +02:00
klmp200 405b938e08 counter: speed counter click interface and auto scroll 2019-09-10 14:22:13 +02:00
klmp200 f899e32fb0 Merge branch 'performances' into 'master'
Improve overall performances on notifications, news pages and navbar

See merge request ae/Sith!232
2019-09-09 11:07:04 +02:00
klmp200 9181e77d55 core: add some cache on birthdays and counters_activity 2019-09-09 01:20:15 +02:00
klmp200 f1b3a174b6 core: improve performances on notification reads and display 2019-09-09 00:45:08 +02:00
klmp200 eb9821ed36 Merge branch 'sas' into 'master'
core: add index on folder and sas properties of SithFile to speed up SAS

See merge request ae/Sith!231
2019-09-06 16:47:18 +02:00
klmp200 defb7fb3a3 Merge branch 'pedagogy_v2' into 'master'
Disable having two comments from the same user for the same uv in uv guide

See merge request ae/Sith!229
2019-09-06 16:28:28 +02:00
klmp200 83e225a744 core: add index on folder and sas properties of SithFile to speed up SAS 2019-09-06 16:16:03 +02:00
klmp200 f30bea3dc9 pedagogy: add script to remove all previous doubled comments 2019-09-04 20:49:18 +02:00
klmp200 a69f7b12b1 pedagogy: add script to remove all previous doubled comments 2019-09-04 20:49:17 +02:00
klmp200 ca042fe75e Merge branch 'a19_subscriptions' into 'master'
SUBSCRIPTIONS: 5 new discounted subscriptions for integration

See merge request ae/Sith!226
2019-08-29 19:33:07 +02:00
Zar dc9111dbcd SUBSCRIPTIONS: 5 new discounted subscriptions for integration 2019-08-29 19:06:58 +02:00
klmp200 8a16a66299 Merge branch 'bugfix' into 'master'
com/core: remove links to index edition that caused error 500

See merge request ae/Sith!230
2019-08-29 18:03:34 +02:00
klmp200 d7a7613807 com: add basics tests for ComAlert and ComInfo to detect regressions on tabs 2019-08-29 17:29:38 +02:00
klmp200 3fc8688941 com/core: remove links to index edition that caused error 500 2019-08-29 17:23:27 +02:00
klmp200 d7b351a1aa Merge branch 'cyl' into 'master'
[COM] Make the news visible for non-authenticated user and birthday visible for subriber only

See merge request ae/Sith!225
2019-08-29 15:07:08 +02:00
Cyl 9e0c4e70d4 [COM] Make the news visible for non-authenticated user and birthday visible for subriber only 2019-08-28 20:40:31 +02:00
klmp200 2232c495be Merge branch 'bugfix' into 'master'
pedagogy: fix a bug when updating an UV from a different author

See merge request ae/Sith!228
2019-08-28 16:08:32 +02:00
klmp200 18b1bea664 Merge branch 'weekmail' into 'master'
com: add weekmail banner and footer for A19

See merge request ae/Sith!227
2019-08-28 02:35:04 +02:00
klmp200 a5d5c41dd6 pedagogy: fix a bug when updating an UV from a different author 2019-08-27 22:46:41 +02:00
klmp200 66d5c71a92 com: add weekmail banner and footer for A19 2019-08-27 18:56:43 +02:00
klmp200 824ea37f44 Merge branch 'pedagogy_v2' into 'master'
Better display on mobile for guide page

See merge request ae/Sith!221
2019-08-26 12:11:26 +02:00
klmp200 eb29f98c37 Merge branch 'bugfix' into 'master'
pedagogy: correctly fill star widget when editing comment

Closes #88

See merge request ae/Sith!223
2019-08-20 22:57:02 +02:00
klmp200 d903dc58cf pedagogy: correctly fill star widget when editing comment 2019-08-08 18:59:44 +02:00
klmp200 f09de0ab7d pedagogy: remove stars on small devices for grade 2019-08-08 12:46:51 +02:00
klmp200 d29603c584 pedagogy: fix display of guide on smaller devices 2019-08-07 20:03:21 +02:00
klmp200 3380980c5c pedagogy: add generic font for .radio-guide 2019-08-07 17:50:50 +02:00
klmp200 38ef13d9b6 Merge branch 'markdown-editor' into 'master'
core: upgrade easymde

See merge request ae/Sith!222
2019-07-29 15:28:35 +02:00
klmp200 6c43b1c43d pedagogy: better display on mobile for guide page
Widen search bar and use a grid template
Reduce zooming when clicking on the search bar (firexfox)
Remove zooming when clicking on search bar (chrome)
2019-07-25 19:01:53 +02:00
klmp200 2b34c46412 core: upgrade easymde 2019-07-19 23:36:56 +02:00
klmp200 f9227fa29d Merge branch 'bugfix' into 'master'
Fix error 500 when accessing user tools with anonymous user and fix dependancies

See merge request ae/Sith!220
2019-07-15 15:03:27 +02:00
klmp200 96a3eaff1c ci: fix django rest framework version 2019-07-15 14:40:03 +02:00
klmp200 65cb85a887 ci: fix building of pygraphviz 2019-07-15 14:29:47 +02:00
klmp200 640a72c52d core: add tests for UserToolsView 2019-07-15 12:36:05 +02:00
klmp200 9b7b96a310 core: add UserIsLoggedMixin to check if an user is not anonymous 2019-07-15 12:27:19 +02:00
klmp200 b18746e769 core: fix error 500 when accessing user tools with anonymous user 2019-07-13 04:58:23 +02:00
klmp200 a2b431b1ab Merge branch 'pedagogy_v2' into 'master'
New version of the pedagogy

See merge request ae/Sith!212
2019-07-11 00:05:27 +02:00
klmp200 d844bccb04 pedagogy: improve performances on json mode for UVListView 2019-07-10 12:26:37 +02:00
klmp200 49f928e754 Apply suggestion to pedagogy/views.py 2019-07-10 12:12:56 +02:00
klmp200 07fc1014be pedagogy: put methods after properties in models 2019-07-09 16:59:59 +02:00
klmp200 facb6faf75 Merge branch 'pedagogy_v2_front' into 'pedagogy_v2'
Frontend for pedagogy

See merge request ae/Sith!218
2019-07-09 16:57:00 +02:00
klmp200 e72338a7d9 pedagogy: enlarge shape around author 2019-07-09 16:33:06 +02:00
klmp200 f37c022538 pedagogy: put report button at left and author at right 2019-07-09 16:03:47 +02:00
klmp200 5229628d48 pedagogy: fix weird blank spacing in comment block 2019-07-09 15:08:48 +02:00
klmp200 b4b7bf05b4 pedagogy: remove scrolling on desktop for comments 2019-07-09 14:43:46 +02:00
klmp200 231415a772 pedagogy: hide scroll bar at bottom of comments 2019-07-08 23:43:27 +02:00
klmp200 f052d307d7 pedagogy: make report button less visible and author more important 2019-07-08 23:16:53 +02:00
klmp200 f15971cecf pedagogy: simplify moderation form for user 2019-07-08 17:34:23 +02:00
klmp200 99cf59c7a4 pedagogy: remove fira font to reduce downloaded content for user 2019-07-08 15:51:31 +02:00
klmp200 0d13014e8a pedagogy: simpler generation for department radio buttons 2019-07-08 15:36:30 +02:00
klmp200 fd1f89de1d pedagogy: wrap all css inside a class named pedagogy to avoid name clashes 2019-07-08 15:25:28 +02:00
klmp200 78b616427f Merge branch 'new_django' into 'master'
core: rename MIDDLEWARE_CLASSES into MIDDLEWARE

See merge request ae/Sith!219
2019-07-08 15:18:21 +02:00
klmp200 c15ea345dd pedagogy: generate search form radios trough loop and remove semester_translated 2019-07-08 15:17:12 +02:00
klmp200 1d319e90f0 pedagogy: don't make the anchor scroll with comment text 2019-07-08 09:47:54 +02:00
klmp200 e6e500e2f9 pedagogy: fix margins on stars for mobile devices 2019-07-08 09:37:30 +02:00
klmp200 cf1ec1dc86 pedagogy: add missing markdown treatment for key_concept 2019-07-08 09:26:22 +02:00
klmp200 46a042cde2 pedagogy: fix mobile display on chrome 2019-07-08 09:19:23 +02:00
klmp200 52129d7511 pedagogy: new mobile view and use of css grids for comment display 2019-07-08 02:54:49 +02:00
klmp200 d03835d737 pedagogy: allow search on uv title 2019-07-08 00:54:53 +02:00
klmp200 b4b7817baa pedagogy: auto send form when typing 2019-07-08 00:53:02 +02:00
klmp200 d85152e58c pedagogy: quick access to comment from moderation 2019-07-08 00:01:54 +02:00
klmp200 f118040432 pedagogy: add pedagogy in user tools 2019-07-08 00:01:38 +02:00
klmp200 9f1aff8c07 pedagogy: add retries on search form and make uv table clickable 2019-07-07 23:52:54 +02:00
klmp200 94bbdf372b pedagogy: fix css grids on chrome android 2019-07-07 22:14:46 +02:00
klmp200 240d94bd57 pedagogy: enhance display on mobile and fix some bugs with webkit 2019-07-07 21:56:59 +02:00
klmp200 3ee7ff2752 pedagogy: display hours of UVs 2019-07-07 21:38:00 +02:00
klmp200 2c5385cf5c pedagogy: enhance mobile view 2019-07-07 21:03:27 +02:00
klmp200 c8a691044f pedagogy: add translations 2019-07-07 19:36:47 +02:00
klmp200 f93eaff876 pedagogy: small fix for leave comment on desktop 2019-07-07 19:08:30 +02:00
klmp200 10faa14bef pedagogy: better display on mobile 2019-07-07 19:07:19 +02:00
klmp200 30ccbdc32d pedagogy: fix search api when searching one letter (case sensitivity) 2019-07-07 18:55:23 +02:00
klmp200 79243aece3 pedagogy: better display for uv_details 2019-07-07 18:51:36 +02:00
klmp200 a61322b83f pedagogy: fix search form display rights 2019-07-07 18:43:43 +02:00
klmp200 3df73f4d1f pedagogy: css class name consistency 2019-07-07 18:33:56 +02:00
klmp200 7165a63e97 pedagogy: polish uv_details 2019-07-07 18:29:31 +02:00
klmp200 2404edd289 pedagogy: clean up guide page 2019-07-07 16:52:28 +02:00
klmp200 3bff09b04c pedagogy: correctly display uv infos 2019-07-07 16:33:03 +02:00
klmp200 28748af5d3 pedagogy: smart back button in uv_detail 2019-07-07 14:44:25 +02:00
klmp200 a56a4e2cb8 pedagogy: better comment display on mobile 2019-07-06 03:54:46 +02:00
klmp200 339497b2c2 pedagogy: display semester in search view 2019-07-06 02:57:20 +02:00
klmp200 c05168a2b5 pedagogy: display most recent comment first 2019-07-06 02:33:05 +02:00
klmp200 782ee35779 pedagogy: incorpore all elements in comment block 2019-07-06 02:30:47 +02:00
klmp200 43acee8f1b pedagogy: enhance comment look 2019-07-06 02:16:04 +02:00
klmp200 4a19441a17 pedagogy: translations for semesters in details and handle markdown 2019-07-06 01:16:09 +02:00
klmp200 11acf5897f pedagogy: correctly hide AP input with its label 2019-07-06 00:34:41 +02:00
root 4be99fe828 guide design not finished 2019-07-06 00:14:15 -05:00
root 601193ff3c small change comment 2019-07-05 22:42:13 -05:00
klmp200 f500dec1f1 core: rename MIDDLEWARE_CLASSES into MIDDLEWARE
MIDDLEWARE_CLASSES is deprecated since django 1.11 and with last version of django-debug-toolbar it broke the dev server
See here for more details https://docs.djangoproject.com/fr/2.2/topics/http/middleware/#upgrading-pre-django-1-10-style-middleware
2019-07-05 22:01:30 +02:00
Cyl bfb7380715 [Pedagogy] Front comment nearly ended 2019-07-05 20:54:14 +02:00
klmp200 3e3c576ad7 pedagogy: live uv update on guide 2019-07-05 20:11:33 +02:00
klmp200 2aa1314fac pedagogy: basic display of the guide 2019-07-05 18:16:28 +02:00
klmp200 3063e4a24f pedagogy: auto fill search form from get arguments in URL 2019-07-05 16:40:14 +02:00
klmp200 6f8ec4740c pedagogy: simpler user interface for autumn and spring search 2019-07-05 16:40:14 +02:00
klmp200 cbcd84c931 pedagogy: add a search form 2019-07-05 16:40:14 +02:00
klmp200 e475273cd3 pedagogy: enhance StarList widget 2019-07-05 16:40:14 +02:00
Cyl 851231869b [pedagogy] Star for comment grades 2019-07-05 16:40:13 +02:00
klmp200 3376f4dfb4 pedagogy: fix typo for AUTUMN_AND_SPRING 2019-07-05 16:40:02 +02:00
klmp200 205f93569a pedagogy: grade averages for UVs 2019-07-04 18:07:51 +02:00
klmp200 4f7a8661ba Merge branch 'pedagogy_v2_moderation' into 'pedagogy_v2'
Pedagogy comments moderation

See merge request ae/Sith!215
2019-07-04 15:54:24 +02:00
klmp200 6e7d351e8e pedagogy: send notification to pedagogy admins at comment report 2019-07-04 15:32:00 +02:00
klmp200 73f1927ce4 Merge branch 'pedagogy_v2_old_base_import' into 'pedagogy_v2'
pedagogy: fix bdd id out of sync after old data base import

See merge request ae/Sith!216
2019-06-25 15:24:46 +02:00
klmp200 56e3f39de1 pedagogy: fix bdd id out of sync after old data base import 2019-06-20 19:20:06 +02:00
klmp200 75a2aefd69 pedagogy: display if comment is reported 2019-06-20 15:03:51 +02:00
klmp200 55e822412a pedagogy: full test suite for pedagogy moderation 2019-06-20 14:57:58 +02:00
klmp200 171d9a4381 pedagogy: tests and fixs for uv moderation form 2019-06-20 14:22:06 +02:00
klmp200 806084e707 pedagogy: allow to deny removal request for comment in moderation 2019-06-20 13:19:35 +02:00
klmp200 04009a6a5b pedagogy: moderation interface 2019-06-20 12:15:12 +02:00
klmp200 3d0f5c0a15 pedagogy: base for uv comment moderation 2019-06-20 01:29:12 +02:00
klmp200 437af4dd04 Merge branch 'pedagogy_v2_search_api' into 'pedagogy_v2'
Pedagogy v2 search api

See merge request ae/Sith!214
2019-06-19 10:36:27 +02:00
klmp200 ba61455017 Merge branch 'pedagogy_v2_old_base_import' into 'pedagogy_v2'
Pedagogy v2 old base import

See merge request ae/Sith!213
2019-06-19 10:35:50 +02:00
klmp200 624f1d653d pedagogy: tests for search API 2019-06-19 10:04:29 +02:00
klmp200 e21821ace5 pedagogy: handle one letter search 2019-06-19 02:00:00 +02:00
klmp200 22c028af11 pedagogy: rename query to search in search API 2019-06-19 01:53:02 +02:00
klmp200 f0560f0d2a pedagogy: fix import for HUMA on old database 2019-06-19 01:49:34 +02:00
klmp200 502ae09523 pedagogy: add filters to search api 2019-06-19 01:26:11 +02:00
klmp200 2cbef2babc pedagogy: support json response from search API 2019-06-19 00:58:20 +02:00
klmp200 e11d45b51e pedagogy: more details on uv_detail for tests purpose 2019-06-19 00:58:14 +02:00
klmp200 061320a5df pedagogy: search index for uvs and search api 2019-06-19 00:57:55 +02:00
klmp200 2aa465b138 pedagogy: don't update uv comment publish date at each save 2019-06-19 00:35:44 +02:00
klmp200 d18f0aa829 pedagogy: import results from old uv guide 2019-06-18 17:46:46 +02:00
klmp200 e7b8ddb631 pedagogy: importation from old uv guide 2019-06-18 17:20:10 +02:00
klmp200 358a625cc4 pedagogy: simplify and implement department system according to old database model 2019-06-18 10:56:05 +02:00
klmp200 d44fa73b2a pedagogy: Fix grade range on UVCOmment 2019-06-17 18:42:33 +02:00
klmp200 5ccb499665 pedagogy: full test suite for UVComment 2019-06-16 20:05:53 +02:00
klmp200 c467165bf3 pedagogy: fix error with author change on comment when edited by an admin 2019-06-16 18:34:11 +02:00
klmp200 8512f3c5d0 pedagogy: fix some previous tests never launched and test for display/create/delete of UVComment 2019-06-16 18:26:30 +02:00
klmp200 5003e57338 pedagogy: functional but basic uv comment system 2019-06-16 17:02:45 +02:00
klmp200 b7c2da53fe pedagogy: models for UVComment and UVResult 2019-06-16 16:02:27 +02:00
klmp200 598cdc0284 pedagogy: tests for uv deletion and update 2019-06-16 13:10:27 +02:00
klmp200 692d9a25e3 pedagogy: tests for uv display 2019-06-16 12:44:55 +02:00
klmp200 38f6c27983 pedagogy: tests for uv creation 2019-06-16 12:19:04 +02:00
klmp200 1172402166 pedagogy: basic uv detail view 2019-06-16 02:19:56 +02:00
klmp200 ab344ba02f pedagogy: complete CRUD for UV model 2019-06-16 00:29:46 +02:00
klmp200 ec33311715 pedagogy: basic display list of UV 2019-06-15 23:31:31 +02:00
klmp200 5bf5d0277c pedagogy: create view and form for UV
WARNING: A new group has been created, to be set by the infra team at deployment !!!
2019-06-15 17:01:25 +02:00
klmp200 31f6ee9ca4 pedagogy: create first iteration of UV model 2019-06-15 14:17:49 +02:00
klmp200 b49f204e20 pedagogy: more comprehensible urls for development 2019-06-15 12:49:14 +02:00
klmp200 57f2a5c260 pedagogy: rename Study into StudyField 2019-06-15 12:49:13 +02:00
klmp200 36831b4f4a pedagogy: rename TeachingDepartment into EducationDepartment 2019-06-15 12:49:13 +02:00
klmp200 17a375f89c pedagogy: structure of the app 2019-06-15 12:49:13 +02:00
klmp200 f922ab9272 Merge branch 'bugfix' into 'master'
counter: fix error for stats 500 on PermissionDenied

See merge request ae/Sith!208
2019-06-14 16:32:34 +02:00
klmp200 f0524a9f00 counter: fix error for stats 500 on PermissionDenied 2019-05-28 16:39:16 +02:00
klmp200 d466d645e6 Merge branch 'eboutic' into 'master'
eboutic: add some help and documentation for the payment system

See merge request ae/Sith!207
2019-05-27 11:42:37 +02:00
klmp200 8129e6923a eboutic: add some help and documentation for the payment system 2019-05-27 11:20:57 +02:00
klmp200 c219e47621 Merge branch 'nfc_card' into 'master'
fix a bug where you can't register UID card with only number inside

See merge request ae/Sith!206
2019-05-24 09:07:51 +02:00
klmp200 1f3220246a counter: fix a bug where you can't register UID card with only number inside 2019-05-24 08:38:15 +02:00
klmp200 0f832a2774 Merge branch 'nfc_card' into 'master'
Can identify user on counter with student card UID

See merge request ae/Sith!172
2019-05-23 19:49:45 +02:00
klmp200 b4c24ee997 Merge branch 'bugfix' into 'master'
counter: fix SellingFormBase import

See merge request ae/Sith!205
2019-05-21 11:08:07 +02:00
klmp200 275b89cdf0 club: fix SellingFormBase import 2019-05-21 10:53:18 +02:00
klmp200 3bddf176d8 Fix typo for NFC cards 2019-05-20 19:12:53 +02:00
klmp200 19e353970d Enforce uid with uppercase for Studentcard and test more edge cases 2019-05-20 17:56:14 +02:00
klmp200 5ae7d10e84 Add unit tests for student cards and fix edge cases 2019-05-20 17:56:09 +02:00
klmp200 e1ffdbe3f9 Translations on student card feature 2019-05-20 17:55:58 +02:00
klmp200 0ba0df0f29 Better handling of user rights for studentcards 2019-05-20 17:52:44 +02:00
klmp200 616b7ccfc8 Nice user interface and permission rework 2019-05-20 17:52:39 +02:00
klmp200 4669e5a4e9 Gui for studentcards in counters 2019-05-20 17:52:36 +02:00
klmp200 14d9fc04d1 Stronger bdd validation for studentcards 2019-05-20 17:52:33 +02:00
klmp200 577ad07a2b Can identify user on counter with student card UID 2019-05-20 17:52:29 +02:00
klmp200 9f2a0deeb9 Merge branch 'mailing' into 'master'
Enhance mailing list edition for clubs with brand new form

See merge request ae/Sith!200
2019-05-20 17:39:43 +02:00
klmp200 c26d1c423e Merge branch 'markdown-editor' into 'master'
Remove external resources once for all

See merge request ae/Sith!204
2019-05-18 03:41:35 +02:00
klmp200 e8f742b9f9 core: remove external resources once for all 2019-05-18 03:00:19 +02:00
klmp200 8ebf5af3d6 Merge branch 'markdown-editor' into 'master'
core: replace simplemde with easymde

See merge request ae/Sith!202
2019-05-18 02:49:36 +02:00
Cyl a4ed535b34 core: optimisation and take off the auto-download of Font Awesome 2019-05-10 15:49:20 +02:00
klmp200 827ec63ab3 Merge branch 'search' into 'master'
core: fix error 500 on user and forum search

See merge request ae/Sith!201
2019-05-10 11:06:13 +02:00
klmp200 81d470b977 clubs: add tests for MalingForm 2019-05-09 20:32:48 +02:00
klmp200 654099067e clubs: tests for adding mailings 2019-05-09 20:32:26 +02:00
Cyl 355a51d2ce core: fix special caracter in user and forum search 2019-05-09 19:51:55 +02:00
Cyl 3548c3e7c4 change fontAwesome from extra to intra reading 2019-05-09 19:06:35 +02:00
klmp200 d1fb9cc4c3 clubs: remove moderator and club from mailing form + display not moderated mailings 2019-05-09 17:43:47 +02:00
Cyl ad6f17d309 core: replace simplemde with easymde 2019-05-06 20:42:35 +02:00
Cyl bf06aea680 core: fix whitespaces in user and forum search 2019-05-06 20:11:49 +02:00
klmp200 1d07195881 clubs: add bulk deletion on mailing lists 2019-05-01 22:54:18 +02:00
klmp200 24fb714c5e clubs: set club_id and user_id as mandatory arguments for MailingForm 2019-05-01 18:59:41 +02:00
klmp200 da25480993 clubs: use standard rights for ClubMailingView 2019-05-01 15:50:03 +02:00
klmp200 a0e39b8904 clubs: rewrite MailingForm to include everything in one place
Everything is handled on the same view, no more redirection hacks

Remove get_context_data in DetailFormView since it's already done by django
2019-05-01 15:49:30 +02:00
klmp200 cfd4955672 clubs: clean up imports and move forms to external file 2019-05-01 03:32:55 +02:00
klmp200 a12edcda15 Merge branch 'navbar' into 'master'
Fix footer block

See merge request ae/Sith!199
2019-04-30 19:40:50 +02:00
klmp200 9e8f633037 core: fix footer block 2019-04-30 18:47:59 +02:00
klmp200 de680f032c Merge branch 'navbar' into 'master'
Update navbar with new links, remove old ones and fix translations

See merge request ae/Sith!198
2019-04-29 12:16:38 +02:00
klmp200 7bd44159de core: update navbar and fix some translations 2019-04-28 16:21:00 +02:00
klmp200 142299c0cd Merge branch 'clubs' into 'master'
Améliore la gestion de membres de clubs

See merge request ae/Sith!196
2019-04-26 18:19:05 +02:00
klmp200 01803c8cf0 clubs: remove useless self.request_user into ClubMemberView 2019-04-25 19:51:30 +02:00
klmp200 f72f0639ee clubs: display a message instead of a table when no member in a club 2019-04-25 17:38:17 +02:00
klmp200 68f61a432a clubs: adapt tests to new display and fix form validation issue for start_date 2019-04-25 17:31:42 +02:00
klmp200 3eb3565a63 clubs: nice display of bulk mark as old 2019-04-25 16:36:20 +02:00
klmp200 75328de5ca clubs: fix membership form and add bulk mark as old tests 2019-04-25 15:40:49 +02:00
klmp200 6964692556 clubs: basic bulk mark as old 2019-04-24 18:17:03 +02:00
klmp200 80f1f9699c clubs: move Membership form validation outside of model and fix and add tests 2019-04-24 17:12:20 +02:00
klmp200 d5ad2c5141 clubs: Handle bulk add of users in clubs and refresh of the form handling 2019-04-24 03:10:42 +02:00
klmp200 e8ee9122f9 Merge branch 'admin' into 'master'
Amélioration de l'administration des groupes

See merge request ae/Sith!148
2019-04-23 23:06:39 +02:00
klmp200 cf5fc1fecf Group: fix typo 2019-04-23 20:47:19 +02:00
klmp200 2ae10ee2fb core: add macro that selects/unselect all checkbox 2019-04-22 22:55:55 +02:00
klmp200 96e33815f5 Group: simplify GroupTemplateView and better group display 2019-04-22 22:55:55 +02:00
klmp200 c3b88aaeb4 Group: fix typo 2019-04-22 22:55:55 +02:00
klmp200 3d344b483d Group: improve group list display 2019-04-22 22:55:55 +02:00
klmp200 ee89327742 Group: add translations 2019-04-22 22:55:55 +02:00
klmp200 b693ee32f2 Group: add a label on users to delete 2019-04-22 22:55:54 +02:00
klmp200 08d03087a4 core: create a DetailFormView 2019-04-22 22:55:54 +02:00
klmp200 34459f83ec Group: Groups: allow bulk removing of users from a group 2019-04-22 22:55:54 +02:00
klmp200 5cc0760e2c Groups: allow bulk import of users on a group 2019-04-22 22:55:54 +02:00
klmp200 f6553a8f52 Group management enhacement 2019-04-22 22:55:53 +02:00
klmp200 a6f76f5279 Merge branch 'gitattributes' into 'master'
Configure GitLab to have a correct collor highlighting on jinja files and on po files

See merge request ae/Sith!195
2019-04-22 18:48:22 +02:00
klmp200 00259a0e31 Add mappings for .po and .jinja files 2019-04-22 18:20:22 +02:00
klmp200 bdd2fda024 Merge branch 'rootplace' into 'master'
rootplace: create a cli utility to delete user's forum message to avoid connection timeout error

See merge request ae/Sith!194
2019-04-22 17:36:56 +02:00
klmp200 d1f3fb2a15 Merge branch 'contribution-instructions' into 'master'
README : update instructions

See merge request ae/Sith!191
2019-04-20 02:47:57 +02:00
klmp200 6943d29857 README: fix typo in CONTRIBUTING and move dependencies before Get started instructions 2019-04-06 20:12:47 +02:00
klmp200 46db8b391a rootplace: make code clearer and fix typos 2019-03-19 17:23:02 +01:00
klmp200 f9d4f41b7c rootplace: create a cli utility to delete user's forum message to avoid connection timeout error 2019-03-18 20:52:35 +01:00
klmp200 6a586020f1 Merge branch 'rootplace' into 'master'
rootplace: add tool to delete all forum messages from a specified user

See merge request ae/Sith!193
2019-03-18 10:21:01 +01:00
klmp200 2ee50c0fbd rootplace: add tool to delete all forum messages from a specified user 2019-03-17 18:07:57 +01:00
klmp200 2480644f1c Merge branch 'eboutic_check_basket_amount' into 'master'
eboutic: check basket amount upon command validation

See merge request ae/Sith!192
2019-03-15 12:18:05 +01:00
Skia 03eeffdea0 eboutic: check basket amount upon command validation 2019-03-15 02:17:36 +01:00
klmp200 e3432794f5 README : update instructions 2019-03-14 11:07:55 +01:00
klmp200 d56990b91f Merge branch 'fix/better_str_comparison' into 'master'
small fix to follow python recommendations

See merge request ae/Sith!190
2019-02-04 00:10:02 +01:00
krophil 18f464a49f small fix to follow python recommendations 2019-02-02 00:32:34 +01:00
klmp200 0f7f80e9d3 Merge branch 'makdown-editor' into 'master'
Workaround for crsf token in production for MarkdownInput

See merge request ae/Sith!189
2018-12-20 18:36:05 +01:00
klmp200 d2c5908c89 core: workaround for crsf token in production for MarkdownInput
See https://docs.djangoproject.com/en/2.0/ref/csrf/#acquiring-the-token-if-csrf-use-sessions-is-true
2018-12-20 18:19:50 +01:00
Skia 3898a13b25 Merge branch 'makdown-editor' into 'master'
Add a nice markdown editor

See merge request ae/Sith!184
2018-12-20 17:11:43 +01:00
klmp200 3dda8eafc4 elections: use MarkdownInput for CandidateForm 2018-12-20 16:43:59 +01:00
klmp200 dc800b59f4 com: use MarkdownInput for alert_msg, info_msg and index_page editing 2018-12-20 15:13:59 +01:00
klmp200 24dd258d0a com: use MarkdownInput on news 2018-12-20 15:09:44 +01:00
klmp200 d2021ecf7e com: use MarkdownInput for weekmail 2018-12-20 15:06:20 +01:00
klmp200 d53d725415 core: fix validation error on generic create view with MarkdownInput 2018-12-20 15:03:41 +01:00
klmp200 f6ab993b8d wiki: remove old markdown preview 2018-12-20 14:32:52 +01:00
klmp200 bae45bcd38 forum: remove old markdown preview 2018-12-20 14:27:55 +01:00
klmp200 fdfe33dedc core: remove old markdown editor 2018-12-20 14:20:58 +01:00
klmp200 8111ae107a core: move centralized custom scripts on top of base.jinja and move getCookie inside 2018-12-20 14:15:57 +01:00
klmp200 97b06b160b core: add delay on live preview for MarkdownInput to avoid making too much request to the API 2018-12-20 14:06:30 +01:00
klmp200 19c1361e47 core: fix heading in MarkdownInput 2018-12-19 14:10:39 +01:00
klmp200 542a2ede32 core: translations for MarkdownInupt 2018-12-19 14:02:45 +01:00
klmp200 ea538dbab3 core: handle all basic editing actions in MarkdownInput 2018-12-19 12:25:59 +01:00
klmp200 d0771f3e2a Merge branch 'contribution-instructions' into 'master'
Fix contributing and readme

See merge request ae/Sith!186
2018-12-19 00:03:04 +01:00
klmp200 80248ec8d3 Merge branch 'patch/targets' into 'master'
Avoid error 500 when target is forgotten

See merge request ae/Sith!187
2018-12-19 00:02:25 +01:00
krophil 8388f4ee65 Avoid error 500 when target is forgotten 2018-12-18 23:50:24 +01:00
klmp200 27500a7820 Fix contributing and readme 2018-12-18 23:16:39 +01:00
klmp200 55ff492ec8 core: edit buttons on MarkdownInupt 2018-12-18 14:39:05 +01:00
klmp200 3b08603635 core: avoid inserting automatic whitespace in MarkdownInput 2018-12-18 14:13:15 +01:00
klmp200 4d866843e1 core: move jquery to header section 2018-12-18 13:54:53 +01:00
klmp200 4afd7a0023 core: avoid blinking in MarkdownInput preview 2018-12-14 18:02:01 +01:00
klmp200 d6f08d3706 core: use pure js to get cookie in markdown input 2018-12-14 17:53:25 +01:00
klmp200 775f456c40 core: introduce new markdown input
To fix
* Avoid blinking in preview
* Don't insert stupid space on empty textarea
2018-12-14 16:24:11 +01:00
Skia acfbdd1ad5 Merge branch 'feature/forum-search' into 'master'
Forum search

See merge request ae/Sith!181
2018-12-13 20:57:01 +01:00
Skia 835782fd7e forum/views: reduce number of queries with some 'prefetch_related' 2018-12-13 20:36:21 +01:00
Skia 82df424146 core: put User.group's names in cache 2018-12-13 20:36:21 +01:00
klmp200 af3e2fb951 forum: use generic macro to display breadcrumb and display it on search result 2018-12-13 20:33:34 +01:00
klmp200 84811af9f1 forum: fix translation when no search result found 2018-12-13 20:33:34 +01:00
klmp200 82ffd75372 forum: fix typo in search bar checkbox class name 2018-12-13 20:33:34 +01:00
klmp200 068a80519c forum: fix order by date 2018-12-13 20:33:34 +01:00
klmp200 fc7e45190d forum: use pure jinja for search bar 2018-12-13 20:33:34 +01:00
klmp200 6891174935 forum: implement order by date for search 2018-12-13 20:33:34 +01:00
klmp200 721b22a1e9 forum: improve search bar UX behavior 2018-12-13 20:33:34 +01:00
klmp200 e421a2b4cd forum: increase search speed by optimizing permission filter 2018-12-13 20:33:34 +01:00
Soldat a9bae46f45 changed design 2018-12-13 20:33:34 +01:00
klmp200 57454bffa0 forum: workaround size error while building index, handle malformed utf8 2018-12-13 20:33:34 +01:00
klmp200 641d564ec6 forum: add trigger to update index on ForumMessage update 2018-12-13 20:33:34 +01:00
klmp200 ee99ec1aed forum: workaround for building index with safety margin 2018-12-13 20:33:34 +01:00
klmp200 269242601a forum: workaround for error while indexing badly encoded text (legacy) 2018-12-13 20:33:34 +01:00
klmp200 545671bec3 forum: workaround for building index 2018-12-13 20:33:34 +01:00
klmp200 347caa3b6a forum and core: fix error 500 when query is empty on search 2018-12-13 20:33:34 +01:00
klmp200 65a0b7b2d4 forum: better display of search results 2018-12-13 20:33:34 +01:00
klmp200 107c6c196f forum: limit results and improve search engine speed 2018-12-13 20:33:34 +01:00
klmp200 884855c178 forum and core: remove CanViewSearchMixin and use specialized view instead 2018-12-13 20:33:34 +01:00
klmp200 1de77f2fdd core: fix typo 2018-12-13 20:33:34 +01:00
klmp200 076b10e325 forum and core: add a dedicated mixin to exclude unauthorized search results 2018-12-13 20:33:34 +01:00
klmp200 3fdb83c1c2 forum and core: add access rights on search query 2018-12-13 20:33:34 +01:00
klmp200 525b047b4f forum: display search bar on every forum pages 2018-12-13 20:33:34 +01:00
klmp200 404b825de4 forum: make search fuzzy 2018-12-13 20:33:34 +01:00
klmp200 286ba91c75 Adapt forum search to xapian and improve query 2018-12-13 20:33:34 +01:00
Grégoire Duvauchelle 9b8a881914 Add haystack index, and a view for forum search (WIP) 2018-12-13 20:33:34 +01:00
Skia a96aeba1fa Merge branch 'contribution-instructions' into 'master'
Update contributing and readme to xapian dependency

See merge request ae/Sith!183
2018-12-06 00:13:17 +01:00
klmp200 824060bc7a Update contributing and readme to xapian dependency 2018-12-05 23:26:42 +01:00
Skia aba4207423 core: improve search index with 'autocomplete' 2018-12-05 14:59:14 +01:00
Skia 65e0b15b31 Update Haystack indexer to use Xapian 2018-11-26 21:25:02 +01:00
klmp200 c071ed66bc Merge branch 'contribution-instructions' into 'master'
Add team chat badge into README.md

See merge request ae/Sith!178
2018-11-08 22:54:23 +01:00
klmp200 c42450ee2f Add team chat badge into README.md 2018-11-08 21:29:02 +01:00
klmp200 6355bad5b7 Merge branch 'ergonomie' into 'master'
Navbar translation improvements

See merge request ae/Sith!177
2018-11-08 00:39:14 +01:00
klmp200 2c61e797c6 Navbar translation improvements 2018-11-08 00:27:50 +01:00
Soldat c2d92eb114 Merge branch 'ergonomie' into 'master'
Change nav tab

See merge request ae/Sith!176
2018-11-07 23:17:27 +01:00
Soldat 2707b5b1f2 changed color adn local 2018-11-06 00:56:16 +01:00
Soldat aa8a514bf8 changed locale 2 2018-11-06 00:34:48 +01:00
Soldat b5b36e5d1c Changed local 2018-11-06 00:14:40 +01:00
Soldat 6baac88e63 format css correctly 2018-11-05 23:57:37 +01:00
Soldat 49d3123ad8 Changed tab v2 2018-11-05 23:57:37 +01:00
Soldat 29935cb5a8 Add dropdown in navtab 2018-11-05 23:57:37 +01:00
Soldat 3dc73ebb9a Change nav tab 2018-11-05 23:57:37 +01:00
Soldat ca4e23fbb1 add phonenumbers in requirements 2018-11-05 23:56:32 +01:00
Soldat 39c41f916d Merge branch 'il-faut-sauver-le-css' into 'master'
Message change color when unread

See merge request ae/Sith!171
2018-10-17 06:15:42 +02:00
Soldat bf321aaac3 Message change color when unread 2018-10-16 21:08:47 +02:00
klmp200 75dd171714 Merge branch 'historique_cotisations' into 'master'
user: allow subscription history to be visible when subscription is expired

See merge request ae/Sith!169
2018-10-16 15:43:23 +02:00
klmp200 4d3ff3e9dc user: allow subscription history to be visible when subscription is expired 2018-10-16 15:28:45 +02:00
klmp200 917b559b4a Merge branch 'historique_cotisations' into 'master'
user: add subscription history

See merge request ae/Sith!167
2018-10-16 15:17:57 +02:00
klmp200 9089fe3a6a Merge branch 'formulaire_cotisation' into 'master'
subscriptions: add date_of_birth for new users created in subscription form

See merge request ae/Sith!168
2018-10-16 15:01:25 +02:00
klmp200 72a4bde6a2 user: fix populate for dev and use native django function to fetch payment_method 2018-10-16 14:52:47 +02:00
klmp200 e24eb8ce37 subscriptions: add date_of_birth for new users created in subscription form 2018-10-16 00:44:32 +02:00
klmp200 f6968facbe user: add subscription history 2018-10-16 00:17:19 +02:00
klmp200 b2b03e530a Merge branch 'sentry' into 'master'
senrty: fix SENTRY_DSN in error page

See merge request ae/Sith!166
2018-10-10 16:40:57 +02:00
klmp200 f91ba25b25 senrty: fix SENTRY_DSN in error page 2018-10-10 16:33:12 +02:00
klmp200 6fd34bcaa0 Merge branch 'sentry' into 'master'
Intégration d'une page d'incident automatique

See merge request ae/Sith!165
2018-10-10 16:23:05 +02:00
klmp200 f4122bbc37 sentry: deal with sentry's js as external resource 2018-10-10 15:27:21 +02:00
Soldat e44c8bf828 Merge branch 'il-faut-sauver-le-css' into 'master'
Change design

See merge request ae/Sith!163
2018-10-10 10:13:49 +02:00
klmp200 bdd8427758 sentry: integration with error 500 page 2018-10-10 02:18:19 +02:00
Soldat 87b70d4597 Changed color 2018-10-09 22:04:17 +02:00
Soldat 20b513a381 Decrease nav and agenda border radius, change shadow, change tool bar border and margin 2018-10-09 22:04:17 +02:00
Soldat 680d29a2b4 Darker nav color 2018-10-09 22:04:17 +02:00
klmp200 f7be284b30 Merge branch 'sentry' into 'master'
Support de sentry pour récupérer les erreurs utilisateur

See merge request ae/Sith!161
2018-10-09 12:14:50 +02:00
Soldat 3ae0c3f3e1 Merge branch 'il-faut-sauver-le-css' into 'master'
Changed the design of the Sith.

See merge request ae/Sith!162
2018-10-07 22:21:12 +02:00
Soldat cce33d13b3 Change hex to hsl 2018-10-07 21:48:03 +02:00
Soldat a78f1101c3 Changed site design v1 2018-10-07 21:48:03 +02:00
Soldat 3a778e2105 First commit and fix overlapping text and logo 2018-10-07 14:59:04 +02:00
klmp200 b2d44e83b4 debug: add sentry support 2018-10-06 03:37:36 +02:00
Soldat a88430d43b Merge branch 'black' into 'master'
Passer black sur tout le repo et l'imposer

See merge request ae/Sith!159
2018-10-05 23:26:57 +02:00
klmp200 d2fe9e56cf Add black for sublime text in contributing 2018-10-05 23:18:35 +02:00
Soldat 66957750ba Ajout de black dans contributing 2018-10-05 23:03:45 +02:00
klmp200 d56a5138a8 contributing: freshen up infos while I'm at it 2018-10-05 22:30:54 +02:00
klmp200 839f585f87 CI: improve CI 2018-10-05 21:53:14 +02:00
klmp200 cb58b00b6e All: Apply Black coding rules 2018-10-05 21:52:55 +02:00
klmp200 0581c667de Club: blackify view file 2018-10-05 21:51:54 +02:00
klmp200 88d6f8dc8a CI: introduce black 2018-10-05 21:48:26 +02:00
Soldat d1d1ba4aff Merge branch 'clubs' into 'master'
clubs: un champ plus joli pour la short_description, crack vas être content

See merge request ae/Sith!158
2018-10-05 21:41:21 +02:00
klmp200 5a6c7aaadf clubs: un champ plus joli pour la short_description, crack vas être content 2018-10-04 00:15:47 +02:00
Soldat 9a9eb52768 Merge branch 'cotiz' into 'master'
add 1 day cotiz

See merge request ae/Sith!157
2018-09-20 19:28:04 +02:00
Soldat cd7672f08c Change local for one day cotiz 2018-09-20 14:48:40 +02:00
Soldat 2fca548e15 Add 1 day cotiz 2018-09-20 14:30:35 +02:00
Skia be36b7f38a com: fix birthdays query 2018-09-19 11:37:16 +02:00
krophil 09bde1bfdf Merge branch 'cotiz' into 'master'
added 6 month free cotiz and changed compute_end

See merge request ae/Sith!156
2018-09-01 18:42:13 +02:00
Soldat 7a1b9bd412 compute_end count day by day now (not month by month like before) to allow 6 weeks cotiz 2018-09-01 17:45:13 +02:00
Soldat f78d8e1d95 change sub 2 month free to 6 weeks free 2018-08-31 18:41:06 +02:00
klmp200 bef10c0fe3 Merge branch 'sli' into 'master'
Add subscription for 2018 Euroks

See merge request ae/Sith!155
2018-07-07 00:19:22 +02:00
klmp200 e3cb6d41f9 Add subscription for 2018 Euroks 2018-07-07 00:13:31 +02:00
Skia 290f6ca883 Merge branch 'feature/captcha' into 'master'
Add captcha to registration form

Closes #52

See merge request ae/Sith!154
2018-07-06 11:35:03 +02:00
Grégoire Duvauchelle afe78ea634 Add captcha to registration form 2018-07-06 11:35:02 +02:00
klmp200 b2abc78694 Merge branch 'new_django' into 'master'
Fix subscription bug for old subscribers on subscription page

See merge request ae/Sith!153
2018-06-12 15:07:09 +02:00
klmp200 f1e8d55b41 Fix subscription bug for old subscribers on subscription page 2018-06-12 15:00:51 +02:00
klmp200 7322882002 Merge branch 'new_django' into 'master'
Fix user pictures display

See merge request ae/Sith!152
2018-06-10 18:49:44 +02:00
klmp200 5c4a16d14c Fix user pictures display 2018-06-10 18:43:39 +02:00
klmp200 1cfc4f8092 Merge branch 'new_django' into 'master'
Migration to django 1.11

See merge request ae/Sith!146
2018-06-10 16:37:57 +02:00
klmp200 08de5dfe6a Migration to django 1.11 2018-06-10 16:31:58 +02:00
klmp200 39119f586a Merge branch 'sli' into 'master'
Image promo 19 et demande du bdf

See merge request ae/Sith!151
2018-06-10 16:16:37 +02:00
klmp200 a0a86ef8e1 Allow BDF's members to see subscriptions on users 2018-06-10 16:09:21 +02:00
klmp200 90e1e7c1bb Add promo logo 2018-06-10 16:09:04 +02:00
klmp200 c5be9b5597 Add promo 19's logo 2018-06-10 15:49:53 +02:00
Skia f2106a37a3 counter: fix tests 2018-06-07 19:57:56 +02:00
Skia eae7825260 core/static: fix Matmat results with long names 2018-06-07 00:10:33 +02:00
Skia 61d34b3a09 core, matmat: fix search form 2018-06-06 00:25:27 +02:00
Skia fecb1ae902 core/static: fix Markdown code vertical-align 2018-06-05 00:49:43 +02:00
Skia be1dc62848 core: make a nice user profile 2018-06-05 00:28:43 +02:00
Skia 9146251642 Prevent generation of useless migrations upon settings change 2018-05-08 18:51:29 +02:00
klmp200 01240ce75e Merge branch 'bugfix' into 'master'
Small modification in hope to fix communication screen deformations

See merge request ae/Sith!150
2018-04-29 14:12:22 +02:00
gnikwo 3fe4e64098 Small modification in hope to fix communication screen deformations 2018-04-29 13:53:55 +02:00
Skia 23291ac60e Merge branch 'bugfix' into 'master'
Forum and Com fixes

See merge request ae/Sith!147
2018-04-26 19:50:49 +02:00
klmp200 83f38e617b Forum Form optimisation 2018-04-26 19:38:39 +02:00
klmp200 443616a762 Forum permission fix and form display 2018-04-26 15:20:45 +02:00
klmp200 afa9bd8735 Fix Poster form 2018-04-26 14:48:29 +02:00
Skia 0cc3707059 subscription/tests: remove silly print 2018-04-19 01:10:06 +02:00
Skia bf57329bd8 sas/templates: Improve generation time display 2018-04-18 23:49:12 +02:00
Skia 4d36a961db core/models: improve repair_fs output 2018-04-18 23:02:19 +02:00
Skia 874dfa6cc3 sas/views: change categories ordering 2018-04-18 22:58:03 +02:00
Skia b5aee62558 core/models: don't always repair every single file 2018-04-18 22:54:30 +02:00
Skia 52832eed4d Merge branch 'skia' into 'master'
core/models: make some tools to repair the SithFiles FS regarding the DB

See merge request ae/Sith!144
2018-04-18 22:19:17 +02:00
Skia b2306b62d6 core/models: better handle broken files
Signed-off-by: Skia <skia@libskia.so>
2018-04-16 18:35:00 +02:00
Skia c7b918115d core/models: change thumbnails and compressed SithFile directories
Signed-off-by: Skia <skia@libskia.so>
2018-04-16 18:35:00 +02:00
Skia 0d3c34c155 core/models: refactor SithFile moving and add methods to manage filesystem
Signed-off-by: Skia <skia@libskia.so>
2018-04-16 18:35:00 +02:00
Skia e9e51d34d3 subscription: fix compute_start 2018-04-16 14:54:47 +02:00
Skia d619e0cd9b Merge branch 'weekmail' into 'master'
Weekmail images and colors

See merge request ae/Sith!143
2018-03-26 10:12:14 +02:00
Skia 847b8823af weekmail: reduce image weight 2018-03-26 09:57:50 +02:00
Soldat a84d54accb Change weekmail images and colors 2018-03-26 09:57:40 +02:00
klmp200 41c83b17df Merge branch 'nabos' into 'master'
Changed default display time for posters and permissions on it

See merge request ae/Sith!142
2018-03-18 22:45:11 +01:00
klmp200 cbd333eb47 Changed default display time for posters and permissions on it 2018-03-18 22:28:25 +01:00
Skia d83bb20547 core: small update on footnotes style
Signed-off-by: Skia <skia@libskia.so>
2018-02-22 22:56:15 +01:00
Skia 606f1af4d5 forum: add favorite topics
Signed-off-by: Skia <skia@libskia.so>
2018-02-22 22:28:28 +01:00
Skia f47f846d26 forum: add button CSS class
Signed-off-by: Skia <skia@libskia.so>
2018-02-22 22:15:10 +01:00
klmp200 80bffd00d1 Merge branch 'bugfix' into 'master'
Bugfix for mailing list and posters

See merge request ae/Sith!141
2017-12-22 12:59:51 +01:00
klmp200 43b4579a98 Fix datetime forms for posters 2017-12-22 12:53:43 +01:00
klmp200 c014a6e379 Fix translations 2017-12-22 12:22:37 +01:00
klmp200 b7483513be Fix for mailing lists 2017-12-22 12:06:23 +01:00
Skia 10dfb2c122 Merge branch 'nabos' into 'master'
Communication screens

See merge request ae/Sith!116
2017-12-21 18:25:56 +01:00
Skia a2ee017668 club/views: fix call to parent's get_context_data in PosterListView 2017-12-21 18:16:32 +01:00
gnikwo 22e277d4f7 merged migrations 2017-12-21 16:15:11 +01:00
gnikwo 903f07ecbd Added screen list on poster + Added unmoderated poster artefact + discussions fixes 2017-12-21 12:25:07 +01:00
klmp200 72d2862e3e Posters now working + notifications for com admin 2017-12-16 20:48:36 +01:00
klmp200 5132eb49e4 Merge branch 'elections' into 'master'
It's better to delete an object in delete

See merge request ae/Sith!140
2017-12-12 14:58:02 +01:00
klmp200 5915de9603 It's better to delete an object in delete 2017-12-12 14:52:08 +01:00
krophil 73bd8b0fd3 Merge branch 'revert-3c2f48b7' into 'master'
Revert "Merge branch 'pere200' into 'master'"

See merge request ae/Sith!139
2017-12-12 13:12:10 +01:00
krophil d2c278ba0e Revert "Merge branch 'pere200' into 'master'"
This reverts merge request !138
2017-12-12 13:01:09 +01:00
krophil 3c2f48b750 Merge branch 'pere200' into 'master'
Pere200

See merge request ae/Sith!138
2017-12-11 05:19:30 +01:00
krophil 93f430ac38 PERE 200 2017-12-11 05:11:23 +01:00
klmp200 6335d60ad6 Merge branch 'quickux' into 'master'
Better ui for group selection on election and wiki

See merge request ae/Sith!137
2017-12-10 21:43:54 +01:00
klmp200 d49f7858d3 Better ui for group selection on election and wiki 2017-12-10 21:37:50 +01:00
klmp200 cc99cecaa0 Fix tab mixin on clubs 2017-12-05 15:53:36 +01:00
gnikwo 91d3e9e4dc Delete function + club tabs 2017-12-05 15:24:46 +01:00
klmp200 c8fae39ff0 Merge branch 'elections' into 'master'
Avoid moving role order in election by reloading page

See merge request ae/Sith!136
2017-12-05 14:30:52 +01:00
klmp200 4217b92941 Avoid moving role order in election by reloading page 2017-12-05 14:22:59 +01:00
klmp200 bc7cfc2dba Merge branch 'elections' into 'master'
Election improvements

See merge request ae/Sith!135
2017-12-04 13:36:25 +01:00
klmp200 2f3b481037 Improve deletion and add ordering on roles 2017-12-02 19:05:48 +01:00
klmp200 625b5132c4 Election list deletion and ux improvements 2017-12-01 19:45:28 +01:00
Skia 9ca82af219 Merge branch 'counter' into 'master'
fix can_buy in customer

See merge request ae/Sith!134
2017-12-01 16:03:16 +01:00
krophil 4af3239f4c fix can_buy in customer 2017-12-01 01:44:38 +01:00
gnikwo 88d68ea510 Ready for review 2017-11-28 15:12:25 +01:00
gnikwo 5cd031f579 Ready for review 2017-11-28 15:12:25 +01:00
gnikwo 21b24f2891 Club views and discussions fixes 2017-11-28 15:12:04 +01:00
gnikwo 693c3ed27e Moved club field + migrations 2017-11-28 15:09:21 +01:00
gnikwo 17d3860ec5 Fix bad merge 2017-11-28 15:09:20 +01:00
gnikwo 8d1c648032 Communication screen - without club tool 2017-11-28 15:09:05 +01:00
Skia 23d86464c8 Merge branch 'admin_area' into 'master'
Search field in Subscription admin area

See merge request ae/Sith!133
2017-11-17 12:02:31 +01:00
krophil bb47ad97a3 Search field in Subscription admin area 2017-11-17 11:48:16 +01:00
Skia 64c479a02e Merge branch 'bugfix' into 'master'
Bugfix

See merge request ae/Sith!132
2017-11-16 15:43:54 +01:00
krophil 33964e0bab Better way to check if a user is subscriber 2017-11-16 13:50:34 +01:00
klmp200 42f8ee3518 Merge branch 'teeshirt' into 'master'
Fix translations error for gifts

See merge request ae/Sith!131
2017-11-14 10:23:32 +01:00
klmp200 eb485215d9 Fix translations error for gifts 2017-11-13 18:30:05 +01:00
Skia 6ee1ee365b Merge branch 'bugfix' into 'master'
Fix AGAIN subscription display

See merge request ae/Sith!130
2017-11-09 15:22:06 +01:00
krophil 0ba69da3b6 Fix AGAIN subscription display 2017-11-09 14:49:07 +01:00
Skia 3793321c37 Update README and Markdown test assets
Signed-off-by: Skia <skia@libskia.so>
2017-11-09 14:37:29 +01:00
Skia 4bf805e2f5 Merge branch 'krophil' into 'master'
Add comment in product type

See merge request ae/Sith!126
2017-11-07 12:10:49 +01:00
krophil 846be54431 Merge branch 'teeshirt' into 'master'
Add gift function

See merge request ae/Sith!129
2017-11-06 00:55:28 +01:00
klmp200 c6847ebc47 Translations for gifts 2017-11-06 00:44:18 +01:00
klmp200 e3fd3b81ab Add gift function 2017-11-06 00:30:37 +01:00
klmp200 9ab7cb98dc Merge branch 'bugfix' into 'master'
Fix external ressources

See merge request ae/Sith!128
2017-11-05 23:31:29 +01:00
krophil f1a9344524 Fix external ressources 2017-11-05 13:27:58 +01:00
Skia 6ebdd53d98 club: make clubs viewable by old subscribers
Signed-off-by: Skia <skia@libskia.so>
2017-11-01 14:51:55 +01:00
krophil 6113de33ec Add comment in product type 2017-10-25 23:02:46 +02:00
Skia 4810934a10 Merge branch 'bugfix' into 'master'
Fix date displaying in user_detail

See merge request ae/Sith!127
2017-10-25 20:23:43 +02:00
Skia bc24baef09 Merge branch 'Tresorerie' into 'master'
Add possibility to not link an operation

See merge request ae/Sith!125
2017-10-25 20:20:08 +02:00
krophil 2bb510932b Fix date displaying in user_detail 2017-10-24 13:08:18 +02:00
krophil 5fb57e97f7 Add possibility to not link an operation 2017-10-22 22:29:36 +02:00
Skia cd4b0d8e0c Merge branch 'external_option' into 'master'
Integrate external_res variable

See merge request ae/Sith!120
2017-10-18 15:32:06 +02:00
krophil 6c957e3ce4 Integrate external_res variable 2017-10-18 14:44:47 +02:00
Skia 578fa1495d sas: fix notification callback
Signed-off-by: Skia <skia@libskia.so>
2017-10-15 12:00:33 +02:00
Skia d5c6695f80 core: improve notification callback system
Signed-off-by: Skia <skia@libskia.so>
2017-10-15 12:00:33 +02:00
Skia 9b0b381fa3 core: make populate command more predictable (should fix the random failing test)
Signed-off-by: Skia <skia@libskia.so>
2017-10-14 13:51:50 +02:00
Skia 69c7036089 Merge branch 'krophil' into 'master'
Add search form in admin

See merge request ae/Sith!124
2017-10-12 09:29:02 +02:00
Skia 56a1e09a28 Fix requirements.txt: keep django-rest-framework <3.7
Signed-off-by: Skia <skia@libskia.so>
2017-10-11 12:45:57 +02:00
Skia 3c50aa554a Add pygraphviz to requirements
Signed-off-by: Skia <skia@libskia.so>
2017-10-11 12:31:17 +02:00
Skia 7879b6dd6b core: add family graphs
Signed-off-by: Skia <skia@libskia.so>
2017-10-11 12:30:33 +02:00
krophil 3994a58a2f Add search form in admin 2017-10-11 00:01:24 +02:00
Skia 47bace2057 Merge branch 'Tresorerie' into 'master'
Enhanced display in journals

See merge request ae/Sith!123
2017-10-09 17:21:37 +02:00
Skia 7c2e562c1e locale: fix translation
Signed-off-by: Skia <skia@libskia.so>
2017-10-09 17:15:46 +02:00
krophil 3104270675 Few changes in accounting design 2017-10-09 16:24:34 +02:00
Skia 43f51813e0 sas: fix album preview
Signed-off-by: Skia <skia@libskia.so>
2017-10-06 17:57:54 +02:00
klmp200 8492903a39 Merge branch 'clubs' into 'master'
Found a way to avoid strange error for club page

See merge request ae/Sith!122
2017-10-06 17:50:59 +02:00
klmp200 4369d9f593 Found a way to avoid strange error for club page 2017-10-06 17:44:41 +02:00
Skia 87abdf7e68 trombi: update export page again
Signed-off-by: Skia <skia@libskia.so>
2017-10-06 17:29:23 +02:00
Skia a09c634ac6 core: add phonenumber template filter
Signed-off-by: Skia <skia@libskia.so>
2017-10-06 17:28:51 +02:00
Skia 8a58055d06 trombi: update export page
Signed-off-by: Skia <skia@libskia.so>
2017-10-06 16:38:36 +02:00
Skia fae2a572b1 Merge branch 'fontawesome' into 'master'
Few changes in design

See merge request ae/Sith!119
2017-10-06 15:30:30 +02:00
Skia e0517c5f4f Merge branch 'facebook-button' into 'master'
Small fix for logo in news

See merge request ae/Sith!121
2017-10-06 15:09:50 +02:00
krophil be958bca7e Small fix for logo in news 2017-10-06 12:00:12 +02:00
krophil c8c60b8b7d Few changes in design 2017-10-06 11:58:51 +02:00
Skia 0bef8d33d3 Merge branch 'clubs' into 'master'
Club tools enhacement

See merge request ae/Sith!108
2017-10-06 11:48:02 +02:00
klmp200 cec3ec8164 Club tools translations 2017-10-06 11:24:48 +02:00
klmp200 30f7835cef Operations documentation 2017-10-06 11:09:31 +02:00
klmp200 8146186447 Fix some bugs in mailings with new club tools 2017-10-06 11:09:31 +02:00
klmp200 4800db3c2c Add auto generation for mailing lists 2017-10-06 11:09:31 +02:00
klmp200 4310441269 Redirect directly on member page when adding a new member. Still has a bug : an user already member always show when success 2017-10-06 11:09:31 +02:00
klmp200 baa7be69e4 Better integration of wiki pages on clubs 2017-10-06 11:09:31 +02:00
klmp200 2c1cf2d7af Fix for club tools 2017-10-06 11:09:31 +02:00
klmp200 4026d076b3 Forgoten migration from skia and fixed migration 2017-10-06 11:09:30 +02:00
klmp200 db509bf060 Nice club presentation 2017-10-06 11:09:30 +02:00
klmp200 790d723d08 Fix page creation method for clubs 2017-10-06 11:09:30 +02:00
klmp200 f4bc1b140c Fix is_active migration 2017-10-06 11:09:30 +02:00
klmp200 12c49b285a Fix page permissions and fix migration when on sqlite backend 2017-10-06 11:09:30 +02:00
klmp200 aa49b2d4ce Fix regex for pages 2017-10-06 11:09:30 +02:00
klmp200 e2078a8c15 Sync club pages with club tree 2017-10-06 11:09:30 +02:00
klmp200 939146bddd Sync pages with club unix_name 2017-10-06 11:09:29 +02:00
klmp200 fe69cbcee1 Add page for clubs and inactive clubs 2017-10-06 11:09:29 +02:00
Skia 13620de754 Merge branch 'facebook-button' into 'master'
Enhanced news

See merge request ae/Sith!117
2017-10-05 19:29:36 +02:00
krophil 3089b484d3 Enhanced news 2017-10-02 14:29:36 +02:00
klmp200 aab589b5d1 Merge branch 'fontawesome' into 'master'
add font-awesome

See merge request ae/Sith!118
2017-09-29 14:55:25 +02:00
krophil acbeb3d3c8 add font-awesome 2017-09-29 14:35:06 +02:00
Skia 13a2cc22dd core: fix some CSS
Signed-off-by: Skia <skia@libskia.so>
2017-09-26 14:05:19 +02:00
Skia b87990e3db com: add birthdays block
Signed-off-by: Skia <skia@libskia.so>
2017-09-26 13:45:40 +02:00
Skia 7b48156259 locale: update translation
Signed-off-by: Skia <skia@libskia.so>
2017-09-26 12:13:36 +02:00
Skia cda89d66cd com: improve news page
Signed-off-by: Skia <skia@libskia.so>
2017-09-26 12:13:23 +02:00
Skia a2dc00f4e5 club: add club logo
Signed-off-by: Skia <skia@libskia.so>
2017-09-25 20:13:35 +02:00
Skia 49b77480e6 sas: clean up old notif trigger
Signed-off-by: Skia <skia@libskia.so>
2017-09-25 12:50:02 +02:00
Skia 144a56570b locale: update translations
Signed-off-by: Skia <skia@libskia.so>
2017-09-25 12:40:39 +02:00
Skia f0c34fe70c sas: add permanent notification for SAS moderation
Signed-off-by: Skia <skia@libskia.so>
2017-09-25 12:35:56 +02:00
Skia 469304585c sas: update models managers
Signed-off-by: Skia <skia@libskia.so>
2017-09-25 12:34:05 +02:00
Skia 3a16c7aab4 trombi: change comments format in export
Signed-off-by: Skia <skia@libskia.so>
2017-09-25 11:08:20 +02:00
Skia c7f5203122 trombi: add dpt/option to export
Signed-off-by: Skia <skia@libskia.so>
2017-09-24 19:39:20 +02:00
Skia d2fccdb09b Merge branch 'bugfix' into 'master'
Small fix on news deletion

See merge request !115
2017-09-18 19:46:54 +02:00
krophil 56b5fa733b Small fixes on news 2017-09-18 16:28:11 +02:00
Skia 3e769195e3 Merge branch 'facebook-button' into 'master'
Add facebook button

See merge request !112
2017-09-17 15:18:07 +02:00
krophil a89109b4e8 Add translations and small fix 2017-09-17 15:04:30 +02:00
klmp200 9318292ed8 Merge branch 'sli' into 'master'
Logo for 18

See merge request !114
2017-09-13 18:34:22 +02:00
klmp200 b1c3ea9e2c Logo for 18 2017-09-13 18:28:18 +02:00
krophil d888a6b68a Add Twitter button 2017-09-12 19:20:12 +02:00
krophil a40c48a792 Add facebook button 2017-09-12 19:04:37 +02:00
Skia d797003028 coverage: blacklist some files
Signed-off-by: Skia <skia@libskia.so>
2017-09-07 11:50:05 +02:00
Skia 04fdb251e2 subscription: fix tests
Signed-off-by: Skia <skia@libskia.so>
2017-09-07 11:21:32 +02:00
Skia 96d0ae36be subscription: rename test
Signed-off-by: Skia <skia@libskia.so>
2017-09-07 01:27:49 +02:00
krophil 2f912a197c Allow to subscribe before subscription end 2017-09-06 19:55:14 +02:00
Skia 53696b7750 locale: make news notif translation
Signed-off-by: Skia <skia@libskia.so>
2017-09-06 13:19:47 +02:00
Skia 0184b9c29b core, com: make permanent notifications for news to moderate
This needs to be made for other stuff, like the SAS or the files...

Signed-off-by: Skia <skia@libskia.so>
2017-09-06 13:17:23 +02:00
Skia dd5926b404 core: fix notif ordering
Signed-off-by: Skia <skia@libskia.so>
2017-09-06 13:05:51 +02:00
Skia 4c1b231ec9 com: add NewsDeleteView
Signed-off-by: Skia <skia@libskia.so>
2017-09-06 12:47:21 +02:00
Skia 6456d18fc4 core, com: tool bar and agenda design updates
Signed-off-by: Skia <skia@libskia.so>
2017-09-03 19:05:45 +02:00
Skia e0067c3956 Merge branch 'krophil' into 'master'
Link to old site updated

See merge request !107
2017-09-03 18:13:22 +02:00
Skia 6bad524ede com: fix news edit display
Signed-off-by: Skia <skia@libskia.so>
2017-09-03 18:12:52 +02:00
Skia 896007aedd com: fix news display
Signed-off-by: Skia <skia@libskia.so>
2017-09-03 18:10:59 +02:00
krophil 97cdf0e9d8 Link to old site updated 2017-09-03 18:04:05 +02:00
Skia 2847a4547e forum: display only viewable topics in "last unread"
Signed-off-by: Skia <skia@libskia.so>
2017-09-03 12:23:26 +02:00
Skia caa0c2099b core: fix notifications colors
Signed-off-by: Skia <skia@libskia.so>
2017-09-03 12:01:52 +02:00
Skia 283e128e93 core: jQuery UI widget theme overrides
Signed-off-by: Skia <skia@libskia.so>
2017-09-02 22:33:13 +02:00
Skia f5abfc3c12 core: still some design improvements
Signed-off-by: Skia <skia@libskia.so>
2017-09-02 20:59:45 +02:00
klmp200 6d09a9e9b0 Merge branch 'krophil' into 'master'
Oups, I did it again...

See merge request !106
2017-09-02 15:39:01 +02:00
krophil 9489b52304 Oups, I did it again... 2017-09-02 15:31:20 +02:00
klmp200 e581de0a94 Merge branch 'krophil' into 'master'
Add color palette creator + add list of refillings

See merge request !105
2017-09-02 15:28:19 +02:00
krophil e71db5a997 Add translations 2017-09-02 15:22:50 +02:00
krophil 39ce14804a Add refillings list 2017-09-02 15:16:29 +02:00
krophil 63ae89b30a Add color palette creator 2017-09-02 13:41:29 +02:00
Skia 9f259b35bd core, counter: add preferences for counter notifications
Signed-off-by: Skia <skia@libskia.so>
2017-09-02 12:42:07 +02:00
Skia 914feffbd8 locale: update translations
Signed-off-by: Skia <skia@libskia.so>
2017-09-02 02:19:48 +02:00
Skia 8b9c3fb5c6 core: improve notification box
Signed-off-by: Skia <skia@libskia.so>
2017-09-02 02:19:34 +02:00
Skia 4ca3aebc77 core: improve alert and info boxes
Signed-off-by: Skia <skia@libskia.so>
2017-09-02 02:06:22 +02:00
Skia 5c709a5416 core: great rework of the header bar
Signed-off-by: Skia <skia@libskia.so>
2017-09-01 18:31:48 +02:00
Skia 22151ef3b3 core: display news page in place of index for logged in users
Signed-off-by: Skia <skia@libskia.so>
2017-09-01 12:33:23 +02:00
Skia 4edb9a78c6 com: add agenda on news page
Signed-off-by: Skia <skia@libskia.so>
2017-09-01 12:22:38 +02:00
Skia 0532f7337a Merge branch 'jewels_subscription' into 'master'
Jewels subscription

See merge request !98
2017-08-31 17:45:54 +02:00
krophil 3be64d6a8f New subscription type for jewels
New condition to consider floats in subscriptions
2017-08-31 16:37:03 +02:00
krophil 94582a2d96 Free subscription for jewels 2017-08-31 16:18:28 +02:00
Skia 02b317eee8 locale: fix translations
Signed-off-by: Skia <skia@libskia.so>
2017-08-31 15:37:05 +02:00
klmp200 bb40d48b62 Merge branch 'nintendo_switch' into 'master'
New Sponsors page

See merge request !104
2017-08-31 14:19:05 +02:00
krophil 2bd1927e39 New Sponsors page 2017-08-31 14:11:18 +02:00
Skia 7ec9d7f8c6 gitignore: ignore coverage artifacts
Signed-off-by: Skia <skia@libskia.so>
2017-08-29 16:45:18 +02:00
Skia 0232953260 CI: add coverage report
Signed-off-by: Skia <skia@libskia.so>
2017-08-29 16:01:01 +02:00
Skia 9ee5c387c5 subscription: add tests
Signed-off-by: Skia <skia@libskia.so>
2017-08-29 15:07:03 +02:00
klmp200 5e8ae83cf2 Merge branch 'mailing' into 'master'
mailing: Oups, forgot some \n in mailing format that I couldn't see at the first time

See merge request !103
2017-08-25 16:23:01 +02:00
klmp200 1f8b035558 mailing: Oups, forgot some \n in mailing format that I couldn't see at the first time 2017-08-25 16:14:02 +02:00
Skia 5504142efa core, templates: fix logo link
Signed-off-by: Skia <skia@libskia.so>
2017-08-25 14:28:17 +02:00
Skia 0d5595c683 core: add test for Markdown syntax
Signed-off-by: Skia <skia@libskia.so>
2017-08-24 16:30:46 +02:00
Skia 30f650ecce core: use more AJAX forms in admin UI
Signed-off-by: Skia <skia@libskia.so>
2017-08-24 15:35:17 +02:00
klmp200 c0b3024cc2 Merge branch 'mailing' into 'master'
Fix permission for club in user profile

See merge request !102
2017-08-24 14:49:04 +02:00
klmp200 b0ce8b1b83 Fix permission for club in user profile 2017-08-24 14:42:57 +02:00
Skia b5e7a0d747 Merge branch 'mailing' into 'master'
Fix error when deleting user from mailing when only email provided

See merge request !101
2017-08-24 00:26:38 +02:00
Skia 6c66ae6b39 Merge branch 'disable_CB' into 'master'
Allow disabling CB in crisis time

See merge request !100
2017-08-24 00:22:29 +02:00
klmp200 f65f261cfd mailing: Fix error when deleting user from mailing when only email provided 2017-08-24 00:20:20 +02:00
klmp200 6f6ad123af Allow disabling CB in crisis time 2017-08-24 00:14:36 +02:00
klmp200 8e166b75e4 Merge branch 'nintendo_switch' into 'master'
Changing urls

See merge request !99
2017-08-22 23:53:56 +02:00
krophil b74600b3f3 Changing urls 2017-08-22 23:47:55 +02:00
Skia 4ad923ff06 Merge branch 'mailing' into 'master'
Mailing list system

See merge request !96
2017-08-22 23:02:46 +02:00
klmp200 4f6109e27c Refactor mailings email 2017-08-22 22:39:12 +02:00
klmp200 c83a990165 Wtf migration blocking me 2017-08-22 16:03:24 +02:00
klmp200 62b59f92fd Translations 2017-08-22 15:51:09 +02:00
klmp200 d179a0a6d0 Fix typo and merge migrations 2017-08-22 15:36:39 +02:00
klmp200 470680e760 Add moderation for mailing lists 2017-08-22 15:36:39 +02:00
klmp200 fe187dae38 Only begining of the mail is now needed 2017-08-22 15:36:39 +02:00
klmp200 ce9e17ea24 Some mailing list fixs 2017-08-22 15:36:39 +02:00
klmp200 9e5159152a Little right fix 2017-08-22 15:36:39 +02:00
klmp200 cc8991a938 Fix migration for mailing 2017-08-22 15:36:39 +02:00
klmp200 51992e1c30 Mailing migration 2017-08-22 15:36:39 +02:00
klmp200 72d968e9a5 Mailing migrations 2017-08-22 15:36:39 +02:00
klmp200 76efb91e40 Move mailing list admin to com 2017-08-22 15:36:39 +02:00
klmp200 69e997d587 Refactoring mailings 2017-08-22 15:36:39 +02:00
klmp200 3a6f7009fd Fix display rights in user profile for mailing 2017-08-22 15:36:39 +02:00
klmp200 e82e338e76 Fix mailing settings position 2017-08-22 15:36:39 +02:00
klmp200 8c9f02a142 Add fetch function for DSI 2017-08-22 15:36:39 +02:00
klmp200 9cb88a878d Even better mailing 2017-08-22 15:36:39 +02:00
klmp200 feaf6b73b7 Begin mailing list system 2017-08-22 15:36:39 +02:00
klmp200 df42617cda Merge branch 'krophil' into 'master'
Add a new subscription for the Welcome Week

See merge request !97
2017-08-21 21:34:20 +02:00
krophil e785ad985f Add a new subscription for the Welcome Week 2017-08-21 21:06:05 +02:00
Skia d511bdef03 Merge branch 'consignes' into 'master'
Wtf forgot this little guy

See merge request !95
2017-08-17 11:51:43 +02:00
klmp200 6cfdcb093f Wtf forgot this little guy 2017-08-17 00:10:12 +02:00
Skia 83b00450eb com: improve news admin view
Signed-off-by: Skia <skia@libskia.so>
2017-08-16 15:37:35 +02:00
klmp200 d864c00472 Merge branch 'matmatronch' into 'master'
Translations fix for matmatronch

See merge request !94
2017-08-15 19:11:12 +02:00
klmp200 f49f889d5b Translations fix 2017-08-15 18:57:50 +02:00
Skia b5599db9bf Merge branch 'matmatronch' into 'master'
Nouveau matmatronch

See merge request !92
2017-08-15 18:13:11 +02:00
klmp200 0f408d9d89 Translations 2017-08-15 18:08:32 +02:00
klmp200 a9e23920ee Matmat renames 2017-08-15 18:05:07 +02:00
klmp200 dc571836ae Fixed issues with department and sex form 2017-08-15 18:05:07 +02:00
klmp200 86d62f12e7 Fully functionnal Matmatronch 2017-08-15 18:05:07 +02:00
klmp200 349475cd37 Functionnal search engine 2017-08-15 18:05:07 +02:00
klmp200 39616874a8 Fix broken pagination by remembering last search 2017-08-15 18:05:07 +02:00
klmp200 9ff8f02a45 Form remember last entered values 2017-08-15 18:05:07 +02:00
klmp200 b7c382a1a8 Basic search structure 2017-08-15 18:05:07 +02:00
Skia 0ffd7485e3 Merge branch 'consignes' into 'master'
Add limit for ecocup recording

See merge request !90
2017-08-15 18:03:51 +02:00
klmp200 3e950e1dd1 Migration fix 2017-08-15 17:37:25 +02:00
klmp200 de4521c192 Ecocup limit comments 2017-08-15 14:03:56 +02:00
klmp200 748e3ae326 Refactor and migration corrections 2017-08-15 13:57:49 +02:00
klmp200 240b68f98d Allow negative amount for customer 2017-08-15 13:57:49 +02:00
klmp200 d60e14a303 Migration from old database 2017-08-15 13:57:49 +02:00
klmp200 7588cc8f73 Hardcoding ecocup values 2017-08-15 13:57:49 +02:00
klmp200 40927fa13d Add limit for ecocup recording 2017-08-15 13:57:49 +02:00
Skia 2058d58db6 Merge branch 'bottomLinks' into 'master'
Bottom links migrations to internal wiki

See merge request !93
2017-08-15 12:00:19 +02:00
klmp200 22407e2f85 Bottom links migrations to internal wiki 2017-08-15 03:30:39 +02:00
Skia 6f79c6c590 core: fix paragraph annoying scroll bar
Signed-off-by: Skia <skia@libskia.so>
2017-08-09 22:02:41 +02:00
Skia d3796479ee core: put the AE logo in the CSS
Signed-off-by: Skia <skia@libskia.so>
2017-08-09 16:40:03 +02:00
Skia 61d2765510 core: refactor user picture page algorithm
Signed-off-by: Skia <skia@libskia.so>
2017-08-02 20:12:41 +02:00
Skia 3eea8ed4e3 trombi: make the export page
Signed-off-by: Skia <skia@libskia.so>
2017-08-01 13:54:35 +02:00
Skia 8bf72daa31 trombi: prevent double comment using "Precedent" browser button
Signed-off-by: Skia <skia@libskia.so>
2017-07-30 11:52:10 +02:00
Skia e4e4eae11b Merge branch 'subscriptions' into 'master'
Some selected club members can now make people subscribe and fix major security …

Le bdf m'as demandé si c'était possible pour eux de faire des cotisations pour les nouveaux
Je retire WIP quand j'ai la confirmation du bureau que je peux faire ça
Par contre il j'y ai patché une grosse faille de sécurité : se mettre curieux à l'AE suffit à avoir tous les droits de board_member

See merge request !91
2017-07-26 20:48:01 +02:00
klmp200 c56094eaaf Some selected club members can now make people subscribe and fix major security hole in board_member verification 2017-07-26 20:31:29 +02:00
Skia b99bbc385a css: fix overflow problem
Signed-off-by: Skia <skia@libskia.so>
2017-07-26 18:41:21 +02:00
Skia e085556def sas: allow ancient subscriber to add people on pictures
Signed-off-by: Skia <skia@libskia.so>
2017-07-26 16:55:00 +02:00
Skia 8501df0bef trombi: improve templates
Signed-off-by: Skia <skia@libskia.so>
2017-07-26 16:53:40 +02:00
Skia e80f5b6f0f Merge branch 'krophil' into 'master'
Add a nice favicon

See merge request !88
2017-07-06 14:14:09 +02:00
krophil 2ae4e36eea Add a nice favicon 2017-07-06 14:04:24 +02:00
Skia 8a95f71596 trombi: add missing quick notif
Signed-off-by: Skia <skia@libskia.so>
2017-07-05 21:54:32 +02:00
Skia de96c07ba8 trombi: allow admins to manually add users
Signed-off-by: Skia <skia@libskia.so>
2017-07-05 21:41:33 +02:00
Skia a108291422 trombi: update people ordering
Signed-off-by: Skia <skia@libskia.so>
2017-07-05 21:41:33 +02:00
Skia 282d9cd180 trombi: add TrombiUser to admin
Signed-off-by: Skia <skia@libskia.so>
2017-07-05 21:41:33 +02:00
Skia 15a9eff599 forum: fix time localization
Signed-off-by: Skia <skia@libskia.so>
2017-07-05 21:41:33 +02:00
Skia 3c22db5bd2 Merge branch 'bugfix' into 'master'
Small fix on accounting permissions

See merge request !87
2017-06-26 11:23:07 +02:00
krophil f8e0147bf5 Small fix on accounting permissions 2017-06-26 11:17:30 +02:00
Skia 71f9e359c0 Merge branch 'forum' into 'master'
Remove ambiguity for topic creation in a category

See merge request !85
2017-06-14 08:35:17 +02:00
krophil 7515e826f8 Remove ambiguity 2017-06-14 00:47:16 +02:00
Skia 58dc179163 Merge branch 'bugfix' into 'master'
Fix import in trombi views

See merge request !84
2017-06-13 11:57:04 +02:00
krophil e08a8c4927 Fix import in trombi views 2017-06-13 11:45:17 +02:00
Skia fbcf525378 Merge branch 'pep8' into 'master'
Pep8

See merge request !81
2017-06-13 11:39:38 +02:00
Skia 753fe0d176 Merge branch 'bugfix' into 'master'
Fix trombi creation

See merge request !83
2017-06-13 11:39:17 +02:00
krophil 890943ea48 Fix trombi creation 2017-06-13 10:55:12 +02:00
krophil 9447de4468 fix merging 2017-06-13 10:49:11 +02:00
krophil 69c95cfd37 Format trombi 2017-06-13 10:22:41 +02:00
krophil 113c9e696b Format subscription 2017-06-13 10:07:57 +02:00
krophil cd46e099b6 Format sith 2017-06-13 10:04:13 +02:00
krophil e2311dcb71 Format sas 2017-06-13 10:04:13 +02:00
krophil 13ec91e7e5 Format launderette 2017-06-13 10:04:13 +02:00
krophil 6a43c2cef6 Format forum 2017-06-13 10:04:13 +02:00
krophil b3466237ca Format settings 2017-06-13 10:04:13 +02:00
krophil 4395d62cd8 Format eboutic 2017-06-13 10:04:13 +02:00
krophil d722efc40f Format counter 2017-06-13 10:04:13 +02:00
krophil e7de8b2aec Format core 2017-06-13 10:04:13 +02:00
krophil 4f4ea5dde9 Format com 2017-06-13 09:48:24 +02:00
krophil 73b2c9d4c5 Format club 2017-06-13 09:48:24 +02:00
krophil 544ff630a5 Format accounting 2017-06-13 09:48:24 +02:00
Skia 38026025af trombi: add safeguard on user deletion
Signed-off-by: Skia <skia@libskia.so>
2017-06-13 00:35:49 +02:00
Skia f85ce96225 trombi: Many UI/UX improvements
Signed-off-by: Skia <skia@libskia.so>
2017-06-13 00:23:56 +02:00
Skia f26f2f4229 trombi: add custom club memberships
Signed-off-by: Skia <skia@libskia.so>
2017-06-12 23:52:59 +02:00
Skia 5df9be9188 Move computing of start of semester to core/utils
Signed-off-by: Skia <skia@libskia.so>
2017-06-12 22:53:25 +02:00
Skia a96efafc8e Merge branch 'counter' into 'master'
Fix operation form

See merge request !82
2017-06-12 22:38:21 +02:00
Skia 8ca455a398 Epic fix
Signed-off-by: Skia <skia@libskia.so>
2017-06-12 22:35:22 +02:00
krophil 43b1d1f3b5 Fix operation form 2017-06-12 19:29:47 +02:00
Skia 37a5db537b Re-fix AnonymousUser
Signed-off-by: Skia <skia@libskia.so>
2017-06-12 14:01:28 +02:00
Skia b06f270ea5 Revert "Fix AnonymousUser"
This reverts commit e7f7c57558.
2017-06-12 13:57:08 +02:00
Skia ecf5465716 Merge branch 'Tresorerie' 2017-06-12 08:13:05 +02:00
Skia 88d81df23d Fix Trombi edit comment view
Signed-off-by: Skia <skia@libskia.so>
2017-06-11 23:16:35 +02:00
Skia b4be40a3a7 Change the Markdown super and sub texts not to break the Ragots
Signed-off-by: Skia <skia@libskia.so>
2017-06-10 21:39:56 +02:00
Skia 58beb551e8 Fix unread messages in topic
Signed-off-by: Skia <skia@libskia.so>
2017-06-10 21:05:36 +02:00
Skia ca047d9655 Damn, I broke the tests!
Signed-off-by: Skia <skia@libskia.so>
2017-06-10 20:28:01 +02:00
Skia a89fb23d33 That's just a ridiculous little fix
Signed-off-by: Skia <skia@libskia.so>
2017-06-10 20:03:37 +02:00
Skia ce46a9d9da Some small clean up and refactoring
Signed-off-by: Skia <skia@libskia.so>
2017-06-10 19:56:47 +02:00
Skia 2925cde8ab Add a MarkdownInput widget, and make use of it
Signed-off-by: Skia <skia@libskia.so>
2017-06-10 19:40:47 +02:00
Skia 4b9fa0cd57 Fix some Markdown and add basic textarea helper
Signed-off-by: Skia <skia@libskia.so>
2017-06-10 19:14:58 +02:00
Skia 457fc36e16 Fix markdown rendering on some pages, and add a link to the syntax help
Signed-off-by: Skia <skia@libskia.so>
2017-06-10 16:54:19 +02:00
krophil 8ba21b94dc add translations 2017-06-09 16:39:38 +02:00
krophil 0e171fbc8f add some validationErrors on OperationForm 2017-06-09 16:06:18 +02:00
Skia 1bcde80a28 Fix cache clearing
Signed-off-by: Skia <skia@libskia.so>
2017-06-07 22:51:17 +02:00
Skia 23293ea88e Small style update to improve Markdown rendering
Signed-off-by: Skia <skia@libskia.so>
2017-06-07 22:49:59 +02:00
Skia 10ee5e1708 Merge branch 'counter' into 'master'
Tests for counter

See merge request !77
2017-06-07 19:45:05 +02:00
Skia 99ed1c0c79 Merge branch 'elections' into 'master'
Amélioration des élections

See merge request !79
2017-06-07 19:41:35 +02:00
klmp200 ea09604b2e Other line fix 2017-06-07 19:36:55 +02:00
krophil eb510e102c Test for click 2017-06-07 19:28:15 +02:00
klmp200 b6a68fa090 Fix some ugly lines 2017-06-07 19:16:55 +02:00
klmp200 41a9bf9953 Elections : Fix tests, cleaned urls and add nice description 2017-06-07 18:49:24 +02:00
klmp200 c4389bb9cd Add a way for admin to delete elections and add archive system 2017-06-07 18:42:16 +02:00
klmp200 0076c9cdb4 Macro for pagination 2017-06-07 18:39:42 +02:00
klmp200 d3fbc65cdc Pep8 for elections 2017-06-07 18:39:42 +02:00
krophil 0af72500c6 Add some tests on counter 2017-06-07 18:36:26 +02:00
Skia 63acf588ca Add basic unfinished counter test 2017-06-07 18:36:26 +02:00
Skia 969d5699fa Merge branch 'subscriptions' into 'master'
Subscriptions stats

Des « statistiques » de cotisations
C'est pratique

See merge request !78
2017-06-07 18:05:55 +02:00
klmp200 801d287c0c Random colors for stats graphs 2017-06-07 15:23:32 +02:00
klmp200 22945483d6 Add some graphics for subscriptions stats 2017-06-07 14:12:03 +02:00
klmp200 88762c492f Subscriptions stats optimisations + form for start and end date 2017-06-06 23:27:57 +02:00
klmp200 1c05671784 Added forgotten column and a link in tools 2017-06-06 22:03:56 +02:00
klmp200 e97135bf47 Add subscriptions stats 2017-06-06 22:03:56 +02:00
Skia e7f7c57558 Fix AnonymousUser
Signed-off-by: Skia <skia@libskia.so>
2017-06-06 19:37:45 +02:00
Skia cef2230640 Merge branch 'bugfix' into 'master'
fix topic creation

See merge request !76
2017-06-02 10:57:24 +02:00
krophil 1ebfcdedec fix topic creation 2017-06-02 10:55:50 +02:00
Skia 3521ad699e forum: fix reply page
Signed-off-by: Skia <skia@libskia.so>
2017-06-02 08:47:47 +02:00
Skia 38622c98e9 Merge branch 'wip' into 'master'
Forum improvements

See merge request !75
2017-06-01 13:31:35 +02:00
Skia f3c1ab4ae4 forum: use short names
Signed-off-by: Skia <skia@libskia.so>
2017-05-31 23:56:47 +02:00
Skia 11d20f43e5 Add some missing translations
Signed-off-by: Skia <skia@libskia.so>
2017-05-31 23:43:22 +02:00
Skia 978b891137 Add a cache clearing mechanism to fix rights update problems
Signed-off-by: Skia <skia@libskia.so>
2017-05-31 21:49:54 +02:00
Skia 22330e6d9f forum: add on_delete=models.SET_NULL on _last_message fields
Signed-off-by: Skia <skia@libskia.so>
2017-05-31 19:50:41 +02:00
Skia e5ce9658ee Fix images and links parsing in doku_to_markdown
Signed-off-by: Skia <skia@libskia.so>
2017-05-31 19:13:43 +02:00
Skia 463e0b7055 Again some small forum improvements
Signed-off-by: Skia <skia@libskia.so>
2017-05-31 00:41:39 +02:00
Skia 136d0f3fa0 Add basic BBcode translator
Signed-off-by: Skia <skia@libskia.so>
2017-05-30 23:40:01 +02:00
Skia 32ac6640ab Small fix with forum topic titles
Signed-off-by: Skia <skia@libskia.so>
2017-05-30 23:37:06 +02:00
Skia 06b67f1d27 Still reducing the number of queries on the Forum
Signed-off-by: Skia <skia@libskia.so>
2017-05-30 23:37:06 +02:00
Skia ba65dc5d46 Fix doku_to_markdown
Signed-off-by: Skia <skia@libskia.so>
2017-05-30 19:33:09 +02:00
Skia 1f0a34fb6c Finish the Forum migrate script 2017-05-30 19:33:09 +02:00
Skia 97a39b0652 Make **a lot** of Forum improvements in reducing the number of queries per page 2017-05-30 19:33:09 +02:00
Skia d7135e4d27 Make a lot of pimp in the Forum 2017-05-30 19:33:09 +02:00
Skia ec307cd5df Add db index in counter 2017-05-30 19:33:09 +02:00
Skia cf062a35d3 Add query reductions in core 2017-05-30 19:33:09 +02:00
Skia e689f7f1db Add index and query reduction in clubs 2017-05-30 19:33:09 +02:00
Skia 2f5bd7d2ef Fix Weekmail article creation view's rights 2017-05-17 10:56:38 +02:00
Skia 23fe797a9e Make less DB queries (particularly in the Forum) 2017-05-14 04:38:33 +02:00
Skia 862a4619b3 Add doku_to_markdown function 2017-05-14 03:17:42 +02:00
Skia 8c151fa498 Add support for image sizing in Markdown 2017-05-14 01:03:50 +02:00
Skia 0a84ef8438 Allow to unmoderate news 2017-05-13 18:32:13 +02:00
Skia 231cb236dc Add moderation tool to Trombi 2017-05-12 18:42:52 +02:00
Skia adeda41b52 Add profiles to Trombi 2017-05-12 10:25:26 +02:00
Skia d88ffae51b Change Trombi permissions 2017-05-12 09:07:35 +02:00
Skia a0bd5ee8ff Some more trombi pimping 2017-05-11 18:34:05 +02:00
Skia a485ff1b8e Remove useless timezone import 2017-05-11 16:18:30 +02:00
krophil d79416f80a fix date format in Trombi model 2017-05-11 13:25:51 +02:00
Skia 47a96829d0 Reset trombi's migrations 2017-05-10 23:33:24 +02:00
Skia d913b8b64f Some more pimp in Trombi + translations 2017-05-10 23:30:20 +02:00
Skia 35f983131f Improve Trombi again with pictures, notifs, and style! 2017-05-10 23:05:05 +02:00
Skia f2b2ff533d Rename Matmat to Trombi 2017-05-10 22:17:05 +02:00
Skia dec1a2cdd7 Add profile form in matmat 2017-05-10 21:59:22 +02:00
Skia e00c948da9 Improve Matmat, still needs a profile form 2017-05-10 19:19:33 +02:00
Skia b3bc33a319 Add first Matmat' app 2017-05-10 19:19:33 +02:00
Skia 5060114305 Add missing forum migration (and tiny translation fix) 2017-05-10 19:18:33 +02:00
Skia 319bb0c2d1 Fix important rights problem in clubs 2017-05-10 19:16:18 +02:00
Skia bf38de2db8 Merge branch 'tempcss' into 'master'
Few modifications in accordance with com

See merge request !74
2017-05-10 16:19:33 +02:00
krophil 05d1f43b55 Few modifications in accordance with com 2017-05-10 15:32:50 +02:00
Skia a0f47cac80 Merge branch 'tempcss' into 'master'
[style|design].[sass|css]

See merge request !69
2017-05-10 11:20:30 +02:00
klmp200 e59d769dac Doc for scss 2017-05-10 11:13:49 +02:00
klmp200 200af57971 Put scss in renderer 2017-05-10 10:49:34 +02:00
klmp200 f87ec1e395 Better lisibility for scss 2017-05-10 10:49:34 +02:00
klmp200 d083a67725 Change year of license on some files 2017-05-10 10:49:34 +02:00
klmp200 acef5be8b3 New lite home made scss processor 2017-05-10 10:49:34 +02:00
klmp200 630fdf93a4 Refactoring for compilestatic 2017-05-10 10:49:34 +02:00
klmp200 79c769351d Add simple way to compile scss files 2017-05-10 10:49:34 +02:00
klmp200 b23d322a29 Instruction for prod with scss 2017-05-10 10:49:34 +02:00
klmp200 ee7fd1c423 Rename temporary_design 2017-05-10 10:49:34 +02:00
krophil 2048f27d58 New temporary design 2017-05-10 10:49:34 +02:00
Skia b401efc6a5 Merge branch 'krophil' into 'master'
Add small explanation in subscriptions

See merge request !67
2017-05-10 10:42:32 +02:00
krophil 95d5907a3e Add translation 2017-05-10 10:37:49 +02:00
krophil 87c457498c Add small explanation in subscriptions 2017-05-10 10:32:30 +02:00
Skia 5920e0e52a Merge branch 'bugfix' into 'master'
Fix crash when no target_type specified on accounting

Il y a aussi d'autres commit que j'ai oublié de faire merge

See merge request !71
2017-05-07 19:43:55 +02:00
klmp200 2ef3c0260a Fix error on accounting when no target_type specified 2017-05-06 21:15:44 +02:00
klmp200 7cb9ea40ac Anonymous users can't edit weekmail 2017-05-06 20:48:48 +02:00
klmp200 5a7b743c83 Try fix right issues in counter admin 2017-05-06 20:48:48 +02:00
Skia 7c069bb3ee Merge branch 'weekmail' into 'master'
color to hexa and change email for weekmail

See merge request !70
2017-05-05 15:33:13 +02:00
krophil 635702b58f color to hexa and change email for weekmail 2017-05-05 15:28:53 +02:00
Skia ca4152aaf2 Reset right public key for Eboutic 2017-05-04 23:25:58 +02:00
Skia 778b7b22f2 Add Eboutic user guides and reference examples 2017-05-02 18:23:46 +02:00
Skia a12b772587 Add some Eboutic tests 2017-05-01 19:39:28 +02:00
Skia c7f48bd5f7 Fix counter view with no stock 2017-05-01 19:39:28 +02:00
Skia 58fdb36911 Merge branch 'Elections' into 'master'
Some tests for election

See merge request !47
2017-05-01 15:58:49 +02:00
Skia 8b1a19e2ff Delete django.mo file that reappeared with the stock app 2017-05-01 15:10:18 +02:00
klmp200 0b81d6a4c6 Merge branch 'weekmail' into 'master'
New css for weekmail

See merge request !68
2017-05-01 13:17:58 +02:00
krophil d7305488b6 Add new banner 2017-04-28 13:59:10 +02:00
krophil 7815796d8b New css for weekmail 2017-04-27 15:31:18 +02:00
Skia c0531feb27 Merge branch 'stock' into 'master'
Stock

See merge request !65
2017-04-25 16:17:24 +02:00
Skia a99cb3e0db Add header to stock files 2017-04-25 16:17:04 +02:00
klmp200 f2aadae8e8 Fix errors on election tests 2017-04-25 15:30:57 +02:00
klmp200 b5363c2987 Firsts tests for elections 2017-04-25 15:30:57 +02:00
Skia e26ad85729 Reset stock migrations 2017-04-25 09:49:05 +02:00
Skia 116aa6b8b5 Update stock URLs 2017-04-25 09:45:13 +02:00
Skia 423313f008 Update stock translations 2017-04-25 09:41:05 +02:00
Skia df20bf6dde Reindent stock app 2017-04-25 08:57:07 +02:00
Skia 20deda8a8e Merge branch 'master' into stock 2017-04-24 18:07:25 +02:00
Skia 83deae5964 Apply GPLv3 to Sith, and add header to every concerned file 2017-04-24 17:51:12 +02:00
Skia 8c82c27483 Add helpers in CONTRIBUTING 2017-04-24 17:35:55 +02:00
Skia 16b6b137d7 Merge branch 'krophil' into 'master'
Proposal for summary sending confirmation

See merge request !66
2017-04-19 11:06:19 +02:00
krophil 553b33c313 Proposal for summary sending confirmation 2017-04-19 11:01:56 +02:00
Skia 6a815e5a21 Small news improvement and bug fixes 2017-04-12 21:08:51 +02:00
Skia 44dacce9f2 Add forum signature 2017-04-12 19:38:54 +02:00
Skia 3aa5070a38 Add preview button in the Forum 2017-04-12 19:26:27 +02:00
Skia 830e94d73c Show that a message exists even if we can't see it 2017-04-10 23:27:34 +02:00
Skia 24c02f4638 Fix last message when the real last is deleted 2017-04-10 16:18:13 +02:00
Skia 9e61b11827 Mark all messages as read even if user can't see them 2017-04-10 15:33:49 +02:00
Skia cbfaf13536 Merge branch 'counter' into 'master'
Add CB sums in invoice calls

See merge request !64
2017-04-05 15:11:46 +02:00
klmp200 edc438bc0e More readability for sum 2017-04-05 15:08:11 +02:00
klmp200 6ca183ad55 Better sum writing 2017-04-05 14:23:51 +02:00
klmp200 53a2a160be Add CB refills sum 2017-04-05 13:48:43 +02:00
Skia ec8ee15d0e Merge branch 'bugfix' into 'master'
Serious counter fix

See merge request !62
2017-04-04 15:48:59 +02:00
klmp200 34f3fadd3d Rename counter mixin 2017-04-04 15:45:02 +02:00
klmp200 d4815df55f Better right counter management 2017-04-03 15:21:07 +02:00
klmp200 824411b13d Rights fix for counters 2017-04-03 13:50:28 +02:00
klmp200 1430479a1d Some rights fix 2017-04-03 11:57:28 +02:00
klmp200 5d89786c8f Serious counter fix 2017-04-03 10:46:53 +02:00
Skia a38d711c62 Merge branch 'bugfix' into 'master'
Hide start_date for non root user from clubs

See merge request !61
2017-04-03 09:47:48 +02:00
klmp200 fb09719317 Hide start_date for non root user from clubs 2017-04-03 09:41:35 +02:00
Skia 41c9f6381a Merge branch 'bugfix' into 'master'
Fix continuous tests

See merge request !60
2017-03-31 11:35:12 +02:00
Skia 231922cbaa Merge branch 'sas' into 'master'
Fixed some issues with filepaths and see the future with some preload

See merge request !59
2017-03-31 11:34:10 +02:00
klmp200 9f2566a244 Fix continuous integration 2017-03-30 22:18:03 +02:00
klmp200 60e2e0d4f9 Better to use os.path.join for paths 2017-03-30 19:13:47 +02:00
klmp200 1f844da005 Preload on sas 2017-03-28 18:46:10 +02:00
Skia 33e4cd6ca4 Merge branch 'bugfix' into 'master'
Better protection for stats

See merge request !58
2017-03-28 15:58:30 +02:00
klmp200 8787e5e708 Better protection for stats 2017-03-28 15:00:09 +02:00
Skia a078bae260 Merge branch 'bugfix' into 'master'
Fix broken accounting + security fixs

See merge request !57
2017-03-28 08:11:02 +02:00
klmp200 63506b1506 Protect stats from other users 2017-03-28 01:03:31 +02:00
klmp200 dfd465c7f9 Fix bug where customer can't buy an item when they have the just amount 2017-03-28 00:55:25 +02:00
klmp200 0d918d80d3 Avoid negative value in refilings 2017-03-28 00:34:58 +02:00
klmp200 ccd67e50b8 Avoid unothorised customer to buy in counter by modifying url 2017-03-27 23:28:06 +02:00
klmp200 5eb1e609cc Fixed tests issues 2017-03-27 22:47:24 +02:00
Skia 50413abf76 Fix a weekmail deleteview, and make some translate fix 2017-03-27 15:16:01 +02:00
Skia b28ce200e6 Fix some translations 2017-03-27 14:31:58 +02:00
Skia 3cf1628435 Fix weekmail new article link 2017-03-24 14:01:05 +01:00
Skia 39b32d456c Some com templates improvments and reordering some models 2017-03-24 09:19:15 +01:00
Skia d2da5716ba Automodere profile files 2017-03-24 08:43:13 +01:00
Skia e56b2476b7 Fix notifications local time 2017-03-17 18:11:30 +01:00
Skia 0887fe6c9e Arg, forgot another Ariadne's thread fix 2017-03-16 08:15:16 +01:00
Skia 825228cad6 Forum cosmetic 2017-03-15 19:24:01 +01:00
Skia 3993d17efe Fix forum Ariadne's thread 2017-03-15 18:35:15 +01:00
Skia f400be3a79 Refactor topic to use paginator instead of custom paging 2017-03-15 18:34:22 +01:00
Skia 701f23b539 Merge branch 'bugfix' into 'master'
forgotten o of shame (not for me)

See merge request !55
2017-03-15 08:15:17 +01:00
klmp200 cfcb671bf0 forgoten o of shame (not for me) 2017-03-14 19:09:12 +01:00
Skia 5e0f790247 Merge branch 'counter' into 'master'
Pagination for cash sumary

See merge request !53
2017-03-14 17:39:03 +01:00
klmp200 493d48bcca Pagination length in settings 2017-03-13 23:33:43 +01:00
klmp200 e4deacbe56 Pagination for cash sumary 2017-03-13 16:32:59 +01:00
Skia 3fd4d4b04b Merge branch 'Tresorerie' into 'master'
Tresorerie

Many modifications linked to the issue #23

See merge request !48
2017-03-12 23:05:44 +01:00
Skia 729a3608ba Add some pagination on forum topics 2017-03-12 20:40:37 +01:00
krophil 5932aad9fa Improve journal removing 2017-03-12 20:33:17 +01:00
krophil 5f9ec9a2ab Merge branch 'Tresorerie' of https://ae-dev.utbm.fr/ae/Sith into Tresorerie 2017-03-12 20:22:52 +01:00
Skia 65e2514df2 Small template fixes in forum 2017-03-12 18:31:35 +01:00
Skia a56d3a3088 Add a help_text to Weekmail edit form 2017-03-12 18:13:04 +01:00
Skia 73cbfd3e82 Add Forum ordering number 2017-03-12 18:06:01 +01:00
klmp200 0bf457de50 Hiding some already forbidden stuff 2017-03-11 11:57:37 +01:00
krophil 8329a19cc2 fix permissions 2017-03-11 11:57:37 +01:00
krophil 95775d3b9b adaptations for settings and deletion checked 2017-03-11 11:57:37 +01:00
klmp200 6c8671c160 Better club roles in settings 2017-03-11 11:57:37 +01:00
krophil 1acac17d7e Several modifications in accounting 2017-03-11 11:57:37 +01:00
krophil 8133db804e fix permission for companies 2017-03-11 11:57:37 +01:00
krophil 554929b4ec small fix in canViewList 2017-03-11 11:57:37 +01:00
Skia ffbad7e2e7 Merge branch 'wiki' into 'master'
Fix accents in wiki page name and allow to delete a page

See merge request !52
2017-03-08 14:37:59 +01:00
klmp200 95f984824a Fix accents in wiki page name and allow to delete a page 2017-03-08 14:11:56 +01:00
Skia b90d930594 Merge branch 'bugfix' into 'master'
No negative values for cash summary

See merge request !51
2017-03-03 00:04:47 +01:00
klmp200 158a140aa4 No negative values for cash summary 2017-03-01 10:21:57 +01:00
Skia 39b102d8aa README: add counting lines of code 2017-02-27 15:41:25 +01:00
krophil ebe76c83c7 fix permissions 2017-02-27 01:10:01 +01:00
krophil 9152688efd adaptations for settings and deletion checked 2017-02-26 18:04:58 +01:00
klmp200 92bc6cf96f Better club roles in settings 2017-02-26 18:04:58 +01:00
krophil c19e2d1cb0 Several modifications in accounting 2017-02-26 18:04:58 +01:00
krophil 346e07f0a8 fix permission for companies 2017-02-26 18:04:58 +01:00
krophil b3c2c79975 small fix in canViewList 2017-02-26 18:04:58 +01:00
klmp200 fa1a4599b6 Merge branch 'sas_right_fix' into 'master'
Sas right fix

See merge request !50
2017-02-26 17:38:20 +01:00
klmp200 86c74b22de Fix sas rights 2017-02-26 17:35:01 +01:00
klmp200 b02d72eab4 Fix debug-toolbar with jinja 2017-02-26 17:00:09 +01:00
Skia 7d99f02a4d forum: reply page, CSS, and first_unread fix 2017-02-25 14:38:10 +01:00
Skia 777fdd7bd5 Again, lot of forum improvements 2017-02-24 17:22:13 +01:00
Skia fe07ee0963 Still lot of forum improvements, both rights and cosmetic 2017-02-24 15:55:50 +01:00
Skia 10d96de385 Translations 2017-02-24 04:37:14 +01:00
Skia f262014f9b Some various forum fixes and improvements 2017-02-24 04:37:01 +01:00
Skia d6b5db4a4b Sanitize page name 2017-02-24 04:36:36 +01:00
Skia 4d6c4314e2 Bugfix with property/callable 2017-02-24 04:36:10 +01:00
Skia 801f6ec786 Translations and small fix in the forum 2017-02-24 03:28:44 +01:00
Skia aa07749a47 Reset forum migrations 2017-02-24 03:16:21 +01:00
Skia 59dfcbd567 Merge branch 'forum' into 'master'
Forum

See merge request !49
2017-02-24 03:08:07 +01:00
Skia dea234f98a Change is_subscriber and was_subscriber to cached_properties 2017-02-24 02:59:59 +01:00
Skia 11e05050f7 Fix tests and force Markdown renderer to escape HTML 2017-02-24 02:45:37 +01:00
Skia daee59f772 Change spans to sub and sup markups 2017-02-24 02:04:39 +01:00
Skia 5f1e4ebede Merge branch 'markdown' into forum 2017-02-24 02:02:59 +01:00
Skia 5897318cc6 Fix user picture view with Jinja update 2017-02-24 01:52:26 +01:00
Skia d3514e85f4 Fix settings to work with toolbar 2017-02-24 01:52:26 +01:00
Skia a4abf50d18 Allow former subscribers to see user profiles 2017-02-24 01:52:26 +01:00
Skia a4984317e9 Add Django debug toolbar 2017-02-24 01:52:22 +01:00
Skia 1e95fb6873 Make use of cached_property in User model 2017-02-24 01:50:14 +01:00
Skia c66b9b0512 Lot of small improvement in the forum 2017-02-24 01:50:09 +01:00
Skia 3b16704227 Add basic moderation to forum 2017-02-24 01:50:05 +01:00
Skia 138711c70c Some tiny fixes in the forum 2017-02-24 01:50:00 +01:00
Skia 6764224856 Fix quote answer and unread messages display 2017-02-24 01:49:48 +01:00
Skia aa93211025 Add support for editing album date 2017-02-21 14:29:58 +01:00
Skia 318c9ff9ad Add trigger to update Whoosh index on User update 2017-02-15 22:01:33 +01:00
Skia 52a671583e Fix blockquote 2017-02-07 00:10:00 +01:00
Skia ecbfe0822f Another version of the indice/exposants 2017-02-06 20:21:34 +01:00
Skia 579a68362d Add some rules 2017-02-06 20:21:34 +01:00
Skia 254126fd79 Add last unread function 2017-02-06 20:20:39 +01:00
Skia 494062fbbe Fix thumbnail generation for album upload view 2017-02-02 23:07:45 +01:00
Skia bf8a2a03ff Allow former subscribers to lookup people 2017-02-02 22:56:05 +01:00
Skia 4cc57c183e Add some better right management to forum 2017-01-28 20:58:54 +01:00
Skia 653d9d4707 Some other great forum improvements 2017-01-21 22:47:30 +01:00
Skia 93f5096140 Improve forum style and templates 2017-01-21 12:28:32 +01:00
Skia ff77df3646 Add basic right management to forum. Need to test it! 2017-01-21 04:51:37 +01:00
Skia 4dd6f01e60 Add Ariadne's thread 2017-01-21 04:19:15 +01:00
Skia ea52462217 Add Forum 2017-01-21 03:42:06 +01:00
Skia fcaa740710 Merge branch 'bilanTresorerie' into 'master'
small fix in pdf generation for operations

See merge request !46
2017-01-20 17:41:23 +01:00
krophil 6f48b4a2b0 small fix in pdf generation for operations 2017-01-20 16:00:02 +01:00
Skia 27e69fd3b8 Bad hack to fix Firefox broken autofocus 2017-01-18 19:09:58 +01:00
Skia e8b69defe7 Add report covers 2017-01-16 14:56:30 +01:00
Skia 4954c610f8 Add basic rights to weekmail 2017-01-15 23:09:30 +01:00
Skia ae0b7699f3 Finish weekmail, and fix preferences page 2017-01-15 23:02:03 +01:00
Skia 147809bb5d Some great weekmail improvements 2017-01-15 22:58:38 +01:00
Skia 83555a3640 Add preferences and improve weekmail 2017-01-15 22:58:38 +01:00
Skia d988c09315 Almost finish the weekmail 2017-01-15 22:58:38 +01:00
Skia 176b1bf588 Fix QuickNotifMixin 2017-01-15 22:58:37 +01:00
Skia 097d238962 Improve weekmail 2017-01-15 22:58:37 +01:00
Skia 0aef7656b8 Add quick notifications prototype 2017-01-15 22:58:37 +01:00
Skia 9d1eaed625 Make some weekmail views 2017-01-15 22:58:37 +01:00
Skia 8bd8191030 WIP: first Weekmail models 2017-01-15 22:58:37 +01:00
Skia d8c9575f88 Finish the report 2017-01-15 22:57:35 +01:00
Skia f6f78533e8 Almost finish the report 2017-01-15 22:57:35 +01:00
Skia 2d808e0724 Finish slides 2017-01-15 22:57:35 +01:00
Skia 3cac563389 Add first slides and continue report 2017-01-15 22:57:35 +01:00
guillaume-renaud 2ed566b75c Stock application report addition 2017-01-15 22:57:34 +01:00
Skia 9083dfb224 First TO report 2017-01-15 22:57:34 +01:00
Skia a826fd40a3 Small update on last operations view 2017-01-13 13:13:31 +01:00
guillaume-renaud 7d10c5d837 Forms initial quantity addition 2017-01-13 12:38:04 +01:00
Skia 93e51776c1 Merge branch 'eticketUpdate' into 'master'
partners banner added

See merge request !33
2017-01-13 08:58:15 +01:00
Skia 5a305354cb Add recursive option to file props form 2017-01-12 20:55:47 +01:00
Skia 9efd85d99b Update README with dependancies 2017-01-11 00:35:04 +01:00
Skia 881afd9e0a Improve SAS main view, and make some translations 2017-01-10 23:32:17 +01:00
Skia 3f6199f6c2 Merge branch 'Elections' into 'master'
Less precise election results

See merge request !45
2017-01-10 20:29:46 +01:00
klmp200 e3711533da Less precise election results 2017-01-10 19:06:34 +01:00
Skia 766d913afe Change SAS upload pool size 2017-01-09 13:05:50 +01:00
Skia cc2caf4ba1 Merge branch 'CR' into 'master'
Add CR 01.05

See merge request !43
2017-01-08 15:01:36 +01:00
guillaume-renaud 6f88d0cf8c Translations update 2017-01-08 11:46:25 +01:00
krophil 41b5be1fba Add CR 01.05 2017-01-07 17:39:47 +01:00
krophil 4a5d789d9f partners banner added 2017-01-07 17:39:21 +01:00
guillaume-renaud 539faccab2 Update shopping list history (ShoppingListItem creation) 2017-01-07 11:17:06 +01:00
Skia d400995e9d Update setup command to ease development 2017-01-07 10:36:54 +01:00
Skia 70aaf0b1c6 Merge branch 'CR' into 'master'
add CR

See merge request !42
2017-01-05 19:55:20 +01:00
krophil 83938a69dd add CR 2017-01-05 19:44:11 +01:00
Skia 57bb072008 Merge branch 'Tresorerie' into 'master'
Add benefit on sellings view

See merge request !41
2017-01-05 18:05:32 +01:00
klmp200 2c71c18d1b --amend 2017-01-05 18:02:02 +01:00
klmp200 86e3c09bae Add benefit on sellings view 2017-01-05 15:48:06 +01:00
guillaume-renaud 62200827c2 Finish back up app Stock 2017-01-05 11:24:54 +01:00
guillaume-renaud fa97929da8 Some classes defined twice -- correction 2017-01-05 11:24:26 +01:00
guillaume-renaud 8f88f7cb70 Take item from stock form addition 2017-01-05 11:16:25 +01:00
guillaume-renaud 2f721592f1 Update stock items quantity after shopping 2017-01-05 11:15:45 +01:00
guillaume-renaud 0660ea5e64 MAJ translations ; stock acces addition in user tool 2017-01-05 11:15:04 +01:00
guillaume-renaud 21c05cc779 Addition of the ShoppingList view to know the item to buy 2017-01-05 11:14:41 +01:00
guillaume-renaud 75af525945 Addition of the StockItem class
addition of Stock app, model, templates, urls

Addition of the stock parameter to the counter admin list

Fix translation files

Creation of the Stock list, edit, create views and creation StockItem create view

Stock application creation

Addition of the StockItem class

addition of Stock app, model, templates, urls

Addition of the stock parameter to the counter admin list

Fix translation files

Creation of the Stock list, edit, create views and creation StockItem create view

Initial StockItem create form value addition

general modifications

Stock admin gestion, items list views, create and edit items

remove stock_main.jinja

Stock application creation

Addition of the StockItem class

addition of Stock app, model, templates, urls

Addition of the stock parameter to the counter admin list

Fix translation files

Creation of the Stock list, edit, create views and creation StockItem create view

Addition of the StockItem class

addition of Stock app, model, templates, urls

Addition of the stock parameter to the counter admin list

Fix translation files

Creation of the Stock list, edit, create views and creation StockItem create view

Initial StockItem create form value addition

general modifications

Stock admin gestion, items list views, create and edit items

Shopping list structure view addition

correct missing endif

a

correct missing endif

Stock application creation

addition of Stock app, model, templates, urls

Addition of the stock parameter to the counter admin list

Fix translation files

Creation of the Stock list, edit, create views and creation StockItem create view

Stock application creation

addition of Stock app, model, templates, urls

Fix translation files

Creation of the Stock list, edit, create views and creation StockItem create view

Initial StockItem create form value addition

general modifications

Stock admin gestion, items list views, create and edit items

remove stock_main.jinja

Stock application creation

addition of Stock app, model, templates, urls

Addition of the stock parameter to the counter admin list

Fix translation files

Creation of the Stock list, edit, create views and creation StockItem create view

Fix translation files

Creation of the Stock list, edit, create views and creation StockItem create view

Initial StockItem create form value addition

general modifications

Shopping list structure view addition

correct missing endif
2017-01-05 11:07:34 +01:00
guillaume-renaud c6310c5315 correct missing endif 2017-01-05 11:07:05 +01:00
guillaume-renaud 5b2f126eee Shopping list structure view addition 2017-01-05 11:06:55 +01:00
guillaume-renaud 9d8264bcbb remove stock_main.jinja 2017-01-05 11:04:58 +01:00
guillaume-renaud 6c54b246ca Stock admin gestion, items list views, create and edit items 2017-01-05 11:04:12 +01:00
guillaume-renaud 5cb75ec3eb general modifications 2017-01-05 11:02:21 +01:00
guillaume-renaud 587ad96326 Initial StockItem create form value addition 2017-01-05 11:00:09 +01:00
guillaume-renaud 887893fb2d Creation of the Stock list, edit, create views and creation StockItem create view 2017-01-05 11:00:08 +01:00
guillaume-renaud ccb339b9bd Fix translation files 2017-01-05 11:00:08 +01:00
guillaume-renaud 29fb0af893 Addition of the stock parameter to the counter admin list 2017-01-05 11:00:08 +01:00
guillaume-renaud 33c7e7db9f addition of Stock app, model, templates, urls 2017-01-05 11:00:08 +01:00
guillaume-renaud fdfd7e7388 Addition of the StockItem class 2017-01-05 11:00:08 +01:00
guillaume-renaud 402a14d69a Stock application creation 2017-01-05 11:00:08 +01:00
Skia a90a553939 Some fixes on SAS upload form 2017-01-05 10:05:27 +01:00
Skia 72685618a6 Many right fix on counters 2017-01-04 19:39:37 +01:00
Skia 114272df2f Add simple club stats 2017-01-04 17:38:54 +01:00
Skia c48449cd50 Add barman stats 2017-01-04 17:38:09 +01:00
Skia dcd0c1fe75 Allow more than one bar if someone can connect to the counter 2017-01-04 16:14:17 +01:00
Skia 52a0913993 Tiny fix in the counter 2017-01-03 16:42:45 +01:00
Skia b347b87433 Many typo fixes and some updates in the TW report 2017-01-02 16:46:46 +01:00
Skia 0a9eb2fd33 Fix club tests 2016-12-29 01:30:37 +01:00
Skia fbb41c3cd5 Improve UX for accounting linked operation 2016-12-29 01:08:08 +01:00
Skia 17b4e24aaa Small club update 2016-12-29 00:42:26 +01:00
klmp200 2f2d5292de Some permissions fixs and security for atomic vote 2016-12-26 23:30:13 +01:00
Skia 729659e358 Don't ignore */static 2016-12-26 01:59:54 +01:00
Skia c6422fdd30 Add SYNTAX.md 2016-12-26 01:42:45 +01:00
Skia 1dd28672b0 Add Markdown test to populate 2016-12-26 01:36:07 +01:00
Skia f77856852d Working file:// link 2016-12-26 01:34:44 +01:00
Skia 323b946e1f First dfile:// parsing, not working into links, need to investigate 2016-12-26 01:34:44 +01:00
Skia 15e52d1ae8 Reset election migrations 2016-12-26 00:56:22 +01:00
Skia 78e00c3bd4 Merge branch 'Elections' into 'master'
Election app

See merge request !27
2016-12-26 00:45:40 +01:00
klmp200 3609952db5 Some translation fixs 2016-12-26 00:37:32 +01:00
Skia bf4d0693c6 Reformat templates to fit with the rest of the Sith 2016-12-26 00:10:41 +01:00
klmp200 61e67898e1 Coherent create/edit/delete templates for elections 2016-12-25 23:49:02 +01:00
klmp200 cd97901db1 Some date fix 2016-12-25 23:37:42 +01:00
klmp200 772a3b5827 Squashmigrations for elections 2016-12-25 22:09:59 +01:00
klmp200 5449a4fca2 Little permission fix 2016-12-25 22:04:31 +01:00
klmp200 e17fd22a37 Fix populate after rebase 2016-12-25 20:24:18 +01:00
klmp200 4d067165aa Election's trad 2016-12-25 20:09:18 +01:00
klmp200 c07f49305b Full CRUD for elections 2016-12-25 19:54:10 +01:00
klmp200 4f62863599 Pimp role and list forms and add edit for election 2016-12-25 19:54:10 +01:00
klmp200 d7387005c0 Better role creation 2016-12-25 19:54:10 +01:00
klmp200 02913d91e6 Refactors Candidate form 2016-12-25 19:54:10 +01:00
klmp200 9d9c86ea0f Refactored has_voted 2016-12-25 19:54:10 +01:00
klmp200 37decde04d Adds an S in electionS 2016-12-25 19:54:10 +01:00
Jean-Baptiste Lenglet da77c18871 Really display results when election is finished. 2016-12-25 19:54:10 +01:00
Jean-Baptiste Lenglet 64f5fef89f Display results only when the polls close 2016-12-25 19:54:10 +01:00
Jean-Baptiste Lenglet 1c761f9db2 Added results when the user is not voting 2016-12-25 19:54:10 +01:00
klmp200 e8d54764bd Add election results 2016-12-25 19:54:10 +01:00
Jean-Baptiste Lenglet baf39d8f3b Hide input if user can not vote 2016-12-25 19:54:10 +01:00
Jean-Baptiste Lenglet 9bb5951dac Removed request.user as user bc it already exists 2016-12-25 19:54:10 +01:00
Jean-Baptiste Lenglet 1a34dcdafe Changed plain form action to reversed URL. 2016-12-25 19:54:10 +01:00
Jean-Baptiste Lenglet fa9e4e5dc6 Tweaked Election view and added request.user as user 2016-12-25 19:54:10 +01:00
Jean-Baptiste Lenglet a9d154506f Added js validation for max_choice 2016-12-25 19:54:10 +01:00
klmp200 33d8c14da5 can_vote in Election 2016-12-25 19:54:10 +01:00
klmp200 2c76784007 Fixed Election.has_voted 2016-12-25 19:54:10 +01:00
Jean-Baptiste Lenglet 89362bae79 Hide inputs when user already voted. 2016-12-25 19:54:10 +01:00
Jean-Baptiste Lenglet dfcddbd1fa Hide election detail parts when user cannot candidate or edit. 2016-12-25 19:54:10 +01:00
Jean-Baptiste Lenglet a3a5a0446d Finished main view. Some tuning are to be done. 2016-12-25 19:54:10 +01:00
klmp200 9ac1cab983 Add vote in database 2016-12-25 19:54:10 +01:00
klmp200 97f835eb4e Convert indent with space, fix populate and add an s 2016-12-25 19:54:10 +01:00
klmp200 a27fd267d7 Remove useless methods on elections 2016-12-25 19:54:10 +01:00
klmp200 1f60fbd484 Uses election_detail for vote form 2016-12-25 19:54:10 +01:00
klmp200 938e2ce0a9 Fix rights in election 2016-12-25 19:54:10 +01:00
Skia 177e39bd6e Fix RuntimeWarning in populate 2016-12-25 19:54:10 +01:00
klmp200 67630fc9f8 Vote template 2016-12-25 19:53:04 +01:00
Jean-Baptiste Lenglet 9dbff0cd50 Finished election details. 2016-12-25 19:53:04 +01:00
Jean-Baptiste Lenglet 94d15684b7 Added profile pictures for users 2016-12-25 19:53:04 +01:00
Jean-Baptiste Lenglet 6784d66403 Building the new vote/display for a election. 2016-12-25 19:52:14 +01:00
Jean-Baptiste Lenglet 2095dd621e Reworked election list view with datetime ranges and a description. 2016-12-25 19:52:14 +01:00
Jean-Baptiste Lenglet e6b37ef332 Added date ranges in the elections list view. 2016-12-25 19:52:14 +01:00
klmp200 521b61517b Functionnal vote form 2016-12-25 19:52:14 +01:00
klmp200 e8ead338d0 Removed useless widget added previously + began voteform 2016-12-25 19:52:14 +01:00
klmp200 03754aba8a Can now add candidature 2016-12-25 19:52:14 +01:00
klmp200 51bb6c8472 Can add ElectionList and start of candidature form 2016-12-25 19:52:14 +01:00
klmp200 d72d8366cf Add new widget (not tested) and new bdd scheme for elections 2016-12-25 19:52:14 +01:00
klmp200 7956067686 Election right update 2016-12-25 19:52:14 +01:00
klmp200 2764f6d2d2 Refactor List Model 2016-12-25 19:52:14 +01:00
klmp200 c604282b77 Nice display for elections 2016-12-25 19:52:14 +01:00
klmp200 52e69b0ac1 Refactor elections 2016-12-25 19:52:14 +01:00
klmp200 a284637190 Normally fixs tests 2016-12-25 19:52:14 +01:00
klmp200 d14af8e452 New bdd arch 2016-12-25 19:52:14 +01:00
klmp200 fd3309fc5f Refactor election bdd 2016-12-25 19:52:14 +01:00
klmp200 135fa00e25 Fix database and add some view 2016-12-25 19:52:14 +01:00
klmp200 d685e9ba29 Election bdd + first view 2016-12-25 19:52:14 +01:00
Skia 0280a65623 Merge branch 'bilanTresorerie' into 'master'
Accounting tests

See merge request !37
2016-12-25 18:24:57 +01:00
krophil 16979aa3c1 tests for accounting 2016-12-25 12:09:32 +01:00
krophil 493148f761 new tests for operations 2016-12-24 16:16:14 +01:00
krophil f7b4258f20 populate updated 2016-12-24 16:16:14 +01:00
krophil 418537bc8e tests for accounting added 2016-12-24 16:16:14 +01:00
Skia df7b0a5ffe Clean migrations for news system 2016-12-24 02:12:46 +01:00
Skia b79c77f268 Add notification with a fresh new 2016-12-23 20:11:27 +01:00
Skia be44a3ab0b Add preview button to news 2016-12-23 19:43:59 +01:00
Skia 1dc1a0a42c Add news moderation tool 2016-12-23 18:40:37 +01:00
Skia c95e7565e7 Make news translations 2016-12-23 03:17:38 +01:00
Skia 1ca6bf7c62 Add news system, still miss nices templates and moderation tools 2016-12-23 03:02:46 +01:00
Skia f79ffbee7d Merge branch 'bilanTresorerie' into 'master'
Bilan tresorerie

See merge request !36
2016-12-21 20:24:49 +01:00
Skia b07b408ecf Fix statements 2016-12-21 13:09:40 +01:00
Skia f6d34baf59 Refactor statement by person, make it work 2016-12-21 05:42:33 +01:00
Skia 33ee449fb5 Make translations 2016-12-21 05:23:01 +01:00
Skia e6e4929eff Rename bilan to statement 2016-12-21 05:19:16 +01:00
Skia bdcc0bf6e9 Remake the statement by nature 2016-12-21 05:19:16 +01:00
krophil 6d756423d9 tabs added 2016-12-21 05:19:16 +01:00
krophil 93211d8ada operations added in populate 2016-12-21 05:19:16 +01:00
krophil 1457a7bf74 Bilan for accounting added 2016-12-21 05:19:16 +01:00
krophil 96c6bf8067 bilan added 2016-12-21 05:19:16 +01:00
krophil 5cd64fb384 bilan in development 2016-12-21 05:19:16 +01:00
krophil 6bb1e0e418 person bilan added and renamed classes 2016-12-21 05:19:16 +01:00
krophil 147287f9a9 Now, I understand how ORM works... or not 2016-12-21 05:19:16 +01:00
krophil bfa09c0bcd template added for bilan 2016-12-21 05:19:16 +01:00
Skia 168622a04d Add com app with first parametric texts 2016-12-21 02:38:21 +01:00
Skia 13785fd520 Prevent users that have never subscribed to subscribe on Eboutic 2016-12-20 23:27:54 +01:00
Skia 4edd535460 Change DateField to DateTimeField to improve indexing efficency 2016-12-20 16:28:30 +01:00
Skia bdd29a4d65 Allow quick index updates 2016-12-20 15:19:11 +01:00
Skia e66b274f0e Add index to search function 2016-12-20 14:46:08 +01:00
Skia 5b95299bde Add Whoosh index 2016-12-20 14:46:08 +01:00
Skia ac31c182c5 Merge branch 'companiesManagement' into 'master'
Management for companies added

See merge request !35
2016-12-20 14:39:54 +01:00
krophil c372b22197 Management for companies added 2016-12-20 12:29:13 +01:00
Skia 397778af1c Quick counter fix 2016-12-19 16:58:43 +01:00
Skia 68517a5d33 Merge branch 'Tresorerie' into 'master'
Separate counter for account refounding

See merge request !28
2016-12-19 16:50:44 +01:00
Skia 4ae4d2b6db Add overwrite mode and change compressed size width in picture resizing 2016-12-19 16:20:50 +01:00
Skia f09cea4033 Merge branch 'krophil' into 'master'
Signature and date added

See merge request !32
2016-12-19 11:35:40 +01:00
krophil 9567c8efca remove translations 2016-12-18 23:11:23 +01:00
Skia 352b8f0b4f Add recursive option to apply rights in the SAS 2016-12-18 19:08:25 +01:00
Skia dd2be2a31e Auto generate album thumbnails 2016-12-18 18:34:48 +01:00
Skia 94e740fb04 Small improvement in file prop view 2016-12-18 17:59:08 +01:00
Skia 9f35f74082 Huge performance improvement in SAS, miss the album thumbnail in most cases 2016-12-18 12:35:23 +01:00
Skia 4a7df31f5e Some other performance improvements 2016-12-18 11:55:45 +01:00
Skia bf6483039d Fix performance issue in rights check 2016-12-18 11:55:03 +01:00
Skia 8de0d54940 Allow to delete a launderette slot 2016-12-15 16:11:43 +01:00
Skia 57d8926a3f Improve SAS moderation interface 2016-12-15 13:10:05 +01:00
klmp200 7227a5d6f9 Refactor refounding function 2016-12-15 12:17:19 +01:00
klmp200 e231c612c6 Separate counter for account refounding 2016-12-15 11:46:36 +01:00
Skia 39b7349034 Add CSS to the notifications 2016-12-14 19:15:53 +01:00
Skia 81e11b4c33 Refactor Can*Mixin 2016-12-14 18:05:30 +01:00
Skia 642249e7fb Notification fix 2016-12-14 09:11:26 +01:00
Skia 97f7214f01 Small right fix 2016-12-14 09:10:41 +01:00
Skia d7a065c4e2 Update SAS rights 2016-12-13 18:36:08 +01:00
Skia e3c86c1d05 Add "Mark all as read" 2016-12-13 17:53:44 +01:00
Skia bf9aa29a54 Add clipboard to SAS 2016-12-13 17:17:58 +01:00
Skia f594a99751 Clean up, fix, and improve templates around clipboard 2016-12-13 01:24:23 +01:00
Skia 0859648bd4 Add cut/paste function in files 2016-12-13 00:45:38 +01:00
Skia 8b63fa9aea Store file moderator 2016-12-12 17:23:06 +01:00
Skia 2919f3a133 Allow former subscribers to see pictures 2016-12-12 16:35:52 +01:00
Skia 7be4f00440 Fix is_in_group 2016-12-11 17:51:44 +01:00
Skia 7ee4d36c3d Merge branch 'fixLaunderette' into 'master'
small fix for launderette

just a little fix for laverie. maybe I'm wrong

See merge request !29
2016-12-11 16:52:35 +01:00
krophil 77aa7d8561 small fix for launderette 2016-12-11 16:22:16 +01:00
Skia 28431ec9be Big refactor: remove Subscriber class 2016-12-10 01:58:30 +01:00
Skia 0d4b697079 Refactor group settings 2016-12-10 01:29:56 +01:00
Skia 1649d14518 Fix migration scripts 2016-12-10 00:30:52 +01:00
Skia d92a706920 Refactor notifications 2016-12-10 00:06:17 +01:00
Skia b53531c391 Add another method to moderate pictures in SAS 2016-12-09 19:35:23 +01:00
Skia 66d73d69ec Improve SAS moderation page 2016-12-09 18:42:02 +01:00
Skia 4542753812 Add two tests for file upload 2016-12-09 15:48:17 +01:00
Skia a02d5a65cb Improve a bit SAS moderation 2016-12-09 15:46:47 +01:00
Skia 80fa99d2ac Add notification 2016-12-08 19:47:28 +01:00
Skia c1397ef5a5 Small fix, episode two 2016-12-08 15:30:41 +01:00
Skia 9847186b06 Small fixes 2016-12-08 15:16:42 +01:00
Skia d2c580dd81 Close issue #26: improve SAS ergonomy 2016-12-06 13:53:16 +01:00
Skia b7b9820d70 Revert "Père 200, Père 200, tralalalalère!!!!"
This reverts commit edaa1b0082.
2016-12-06 12:37:25 +01:00
Skia edaa1b0082 Père 200, Père 200, tralalalalère!!!! 2016-12-05 02:58:53 +01:00
Skia 3970965781 Merge branch 'Tresorerie' into 'master'
Refound Account

See merge request !26
2016-11-30 15:44:43 +01:00
Skia 8771cc9b86 Enhance user picture view 2016-11-30 12:59:03 +01:00
Skia 7453b857fb Add thumbnails to albums 2016-11-30 09:28:54 +01:00
Skia 7e335cfbd7 Update rotating function 2016-11-30 09:28:53 +01:00
klmp200 3c8a4f068e Refound Account 2016-11-30 08:19:52 +01:00
Skia 00feca44d8 Merge branch 'krophil' into 'master'
pdf generation for operations

See merge request !21
2016-11-29 12:38:18 +01:00
krophil 0b4f826594 Add PDF operations generation 2016-11-29 12:35:37 +01:00
Skia a60063f009 Oops, syntax error + styling footer 2016-11-29 11:49:41 +01:00
Skia 7f0561234f SAS fixes 2016-11-29 11:35:31 +01:00
Skia 7969e9ba5f Update SAS migration script 2016-11-29 11:29:53 +01:00
Skia 47cb5e60ce Merge branch 'juste' into 'master'
First footer + css improvements

Just little improvements such as a footer and deletion of border-radius on log header, it's rather a first try.

See merge request !13
2016-11-29 11:28:49 +01:00
Skia c1861755bc Translation update 2016-11-29 11:26:18 +01:00
juste ff9ed9002e a simple footer + traductions 2016-11-28 11:26:06 +01:00
Skia 064abe0741 UTF-8 fix 2016-11-25 18:59:22 +01:00
Skia cfbb6f4e1f Lot of small improvement in SAS 2016-11-25 13:47:09 +01:00
Skia 0b23d39e15 Fix migrations after rebase 2016-11-23 11:55:10 +01:00
Skia b8c9aa4e7f WIP: Begin SAS migration script 2016-11-23 11:46:45 +01:00
Skia 9bccc6a5d1 Small fix in the JS 2016-11-23 11:46:45 +01:00
Jean-Baptiste Lenglet e66d9bd472 Added asynchronous image upload. 2016-11-23 11:46:45 +01:00
Skia 1c5e658e4b Remove shitty AJAX upload 2016-11-23 11:46:45 +01:00
Skia da35292cd5 Add is_in_sas field, to perform queries on it 2016-11-23 11:46:45 +01:00
Skia 5481a79f64 WIP: AJAX upload 2016-11-23 11:46:45 +01:00
Skia 0e788dd876 Small refactoring 2016-11-23 11:46:45 +01:00
Skia 0e0e57458f Improve SAS UX 2016-11-23 11:46:45 +01:00
Skia 7dff98d853 Small template improvements 2016-11-23 11:46:45 +01:00
Skia f900db0dd2 Make SAS translations 2016-11-23 11:46:45 +01:00
Skia 815ef03860 Better handle rotations 2016-11-23 11:46:45 +01:00
Skia 869634d6e1 Add thumbnail generation 2016-11-23 11:46:45 +01:00
Skia 71d22e367b Add picture view to users 2016-11-23 11:46:45 +01:00
Skia 22ab21e4e1 Add picture-people relation and ask for removal thing 2016-11-23 11:46:45 +01:00
Skia b619619b85 Improve moderation tool in SAS 2016-11-23 11:46:45 +01:00
Skia e681cc65fe Add SAS moderation tool 2016-11-23 11:46:45 +01:00
Skia 157b1e4c78 Add file moderation tool 2016-11-23 11:46:45 +01:00
Skia 5ea41de91d WIP SAS 2016-11-23 11:46:45 +01:00
Skia 585ba55e5e Continue SAS 2016-11-23 11:46:40 +01:00
Skia d554a5ee8d Begin SAS 2016-11-23 11:38:01 +01:00
Skia 0b068d3e92 Improve file moderation 2016-11-23 11:30:57 +01:00
Skia 9e32840549 Add file moderation tool 2016-11-23 00:51:20 +01:00
Skia 02be5e1629 Protect query on Eboutic to prevend double basket validation 2016-11-22 17:04:12 +01:00
Skia cfbd610305 Revert "Merge branch 'fond-gala' into 'master'"
This reverts merge request !25
2016-11-21 14:10:29 +01:00
Skia 98d47727e0 Merge branch 'fond-gala' into 'master'
Add background for gala 2016

See merge request !25
2016-11-13 23:38:13 +01:00
klmp200 d418da679b Add background for gala 2016 2016-11-13 22:55:32 +01:00
Skia e98ffb5cd5 Fix unappropriate behavior when delete selling 2016-11-10 13:51:56 +01:00
Skia 11c263b6e7 Hotfix: better handle atomicity in eboutic basket validation 2016-11-10 00:35:13 +01:00
Skia 9f4f3bf436 Fix CI 2016-11-08 19:27:04 +01:00
Skia e9c19438d4 Fix tests and CI 2016-11-08 19:07:25 +01:00
Skia 321dead0de Translation updates, and make the binary compiled translation file ignored 2016-11-08 18:56:57 +01:00
guillaume-renaud 57b663c4c5 counter inactive state with settings variable, traduction file problem fixed 2016-11-08 18:48:27 +01:00
guillaume-renaud 7f6424d51e Fix the number of minutes for a counter to be inactive to 10 2016-11-08 18:47:50 +01:00
guillaume-renaud 0d6b93d085 Add inactive state for counters 2016-11-08 18:47:40 +01:00
guillaume-renaud be7e0401dd Fix the number of minutes for a counter to be inactive to 10 2016-11-08 18:42:31 +01:00
guillaume-renaud 63f10c13d4 Add inactive state for counters 2016-11-08 18:42:12 +01:00
Skia ba6e2c3712 Merge branch 'sli' into 'master'
Download sellings as csv

See merge request !24
2016-11-08 15:00:58 +01:00
klmp200 2dd2189314 Download sellings as csv 2016-11-08 14:57:09 +01:00
Skia fa57d6cd63 Merge branch 'diagramUpdate' into 'master'
Diagram update

See merge request !23
2016-11-07 23:23:14 +01:00
krophil 4527407b93 final correction 2016-11-07 01:53:32 +01:00
krophil 9d8d86dd47 Correction on graphs 2016-11-07 01:53:32 +01:00
krophil 66b4f06c34 graphs corrected 2016-11-07 01:53:32 +01:00
krophil fa98339bcd new diagrams added 2016-11-07 01:53:32 +01:00
Skia 7e71ffcb75 Merge branch 'sli' into 'master'
Fix company display for operation creation

See merge request !22
2016-11-06 23:38:42 +01:00
klmp200 5d5f2522c4 Fix company display for operation creation 2016-11-06 23:34:38 +01:00
Skia 54d3ca8e65 Merge branch 'sli' into 'master'
Edit CONTRIBUTING instructions

See merge request !20
2016-11-06 23:27:00 +01:00
klmp200 160c7806df Fix contributing.md and fix quantity display on eticket 2016-11-06 23:15:43 +01:00
Skia 20ff409547 Fix tests 2016-11-06 11:36:54 +01:00
Skia 59f5917b8c Fix Page locking 2016-11-05 13:37:39 +01:00
klmp200 d0cd8a8997 Fix the contributing fix 2016-11-04 00:45:10 +01:00
klmp200 b6966c9502 Add number of places on ebticket 2016-11-04 00:43:28 +01:00
klmp200 ea0eb89410 Edit CONTRIBUTING instructions 2016-11-04 00:38:49 +01:00
krophil c0c8b295ba Update CONTRIBUTING.md 2016-11-03 19:58:58 +01:00
krophil 2f8b069118 Update CONTRIBUTING.md 2016-11-03 19:57:41 +01:00
Skia ea85d26cdd Almost revert "Add link to create club in rootplace"
Keep the links, but revert and fix the translation file

This reverts commit 029bc7cc7c.
2016-11-03 11:52:04 +01:00
Skia 9cfc029fb2 Permission fix 2016-10-27 18:39:40 +02:00
Skia 6251e38668 Tiny translation fix 2016-10-26 20:01:05 +02:00
Skia 7fe0964ae1 Merge branch 'sli' into 'master'
Add automatic mail when an eticket has been bought

See merge request !19
2016-10-26 19:03:05 +02:00
klmp200 677c50a4b1 Add unknown event translation 2016-10-25 21:53:40 +02:00
klmp200 bafa9ac10c Small fix for auto-mail about eticket 2016-10-25 18:25:59 +02:00
klmp200 b00fc23fc4 Add automatic mail when an eticket has been bought 2016-10-21 17:47:56 +02:00
Skia 3e99f97b7a Merge branch 'sli' into 'master'
Add ban for alcohol



See merge request !17
2016-10-21 11:00:40 +02:00
Skia 933afd4fb7 Update eboutic main template 2016-10-19 21:30:41 +02:00
klmp200 224374f5e8 More readable user_account 2016-10-19 01:57:54 +02:00
klmp200 029bc7cc7c Add link to create club in rootplace 2016-10-18 23:36:26 +02:00
klmp200 c40171fe86 Clean permission check for alcohol and counter ban 2016-10-18 23:02:53 +02:00
Skia 47c01d6d10 Fix request in cash summary list 2016-10-18 14:48:47 +02:00
klmp200 2daaf992f2 Add groups, allow to ban users from counters and from buying alcohol 2016-10-16 03:45:06 +02:00
klmp200 1c97c8a74f Swag dropdown on user account + autofocus for refillings on counters 2016-10-16 02:47:21 +02:00
klmp200 132bae72a7 Fix club account name display for clubs 2016-10-16 00:23:13 +02:00
klmp200 c9005e2c31 Fix for etickets 2016-10-15 19:58:51 +02:00
klmp200 ba86219b74 Translations for alcool ban 2016-10-15 19:58:32 +02:00
klmp200 257cb9cfe7 Add ban for alcohol 2016-10-15 02:33:38 +02:00
Skia a0319887c8 Merge branch 'sli' into 'master'
Deny date of birth, first and last name modification for non board or root user



See merge request !16
2016-10-13 23:24:12 +02:00
klmp200 178a4af196 Add lazy way to make an user property editable once only 2016-10-13 22:58:26 +02:00
klmp200 579c25d63a Deny date of birth, first and last name modification for non board or root user 2016-10-13 22:32:13 +02:00
Skia 5931351c0a Another tiny template improvement 2016-10-12 12:32:04 +02:00
Skia 0d8bebcd80 Tiny template update 2016-10-10 18:43:40 +02:00
Skia 13265e6a0d Allow more control on the dates for cash summaries sums 2016-10-10 18:29:13 +02:00
Skia 31d62532be Merge branch 'sli' into 'master'
Add account number and suscription on counter



See merge request !15
2016-10-09 16:08:48 +02:00
klmp200 d285fbe04a Add account number and suscription on counter 2016-10-08 23:07:10 +02:00
Skia c66d61ee85 Merge branch 'LoJ' into 'master'
Lo j : Addition of the user's club page

When a user check his profile, he can access a new tab "Clubs" to see his currents and olds Clubs

See merge request !14
2016-10-07 13:36:35 +02:00
guillaume-renaud 5b50cc9598 Traduction's addition for user_clubs templates 2016-10-07 13:17:43 +02:00
guillaume-renaud 760b33728b Addition of the user's club tab as table 2016-10-06 11:08:32 +02:00
guillaume-renaud 1b63d58586 Addition of the user's club tab 2016-10-06 11:08:32 +02:00
Skia 0acc97fa90 Fix operation create view 2016-10-05 20:17:37 +02:00
Skia 63217b2ead Improve product display 2016-10-05 15:57:04 +02:00
Skia 7fdcb0c815 Finish labels in accounting 2016-10-05 15:54:11 +02:00
Skia e169e4ff6f Update .gitlab-ci.yml, try to fix CI 2016-10-04 11:26:20 +02:00
Skia 64b4484620 Some templating 2016-10-04 00:41:08 +02:00
Skia deeb2b5b6f Migrate and fix etickets 2016-10-04 00:32:07 +02:00
Skia cd23fdf3ef Add missing eticket banner 2016-10-03 19:43:22 +02:00
Skia d6138a7a0c Make the etickets 2016-10-03 19:30:05 +02:00
Skia a12f9dd53e Fix club sellings 2016-10-03 13:55:20 +02:00
Skia 2ef5a4d37b Runtime error fix 2016-09-30 18:43:53 +02:00
Skia ca3b7fda5a Improve invoice call template 2016-09-29 18:34:58 +02:00
Skia 51f342a7d3 Add invoices calls 2016-09-29 18:19:58 +02:00
Skia ddceb82abf Display uncategorized products 2016-09-29 16:19:05 +02:00
Skia 52184c4012 Merge branch 'sli' into 'master'
Godfathers deletion



See merge request !11
2016-09-29 15:12:19 +02:00
klmp200 2c6f17063a Can delete Godfathers 2016-09-29 15:06:39 +02:00
Skia db07b54ed1 Allow the counter admin to edit cash registers summaries 2016-09-29 14:54:03 +02:00
Skia c2276dab2b Remove useless mixin 2016-09-29 12:53:09 +02:00
klmp200 a008f34288 Fix bug where slots appears when slot expired 2016-09-28 17:22:34 +02:00
Skia 2e7e78b8ce Add last ops view to the bars 2016-09-28 11:09:54 +02:00
Skia fd482195f8 Merge branch 'sli' into 'master'
AutoCompleteSelectField on clubs



See merge request !10
2016-09-28 10:59:13 +02:00
klmp200 8ef45bf03c Rename is_token to check_token 2016-09-28 10:53:27 +02:00
klmp200 1c6df0909b Fixes double check on board member in club view 2016-09-28 10:46:06 +02:00
klmp200 17b098ca2a Fixed lookup for loged barmen 2016-09-27 22:57:06 +02:00
klmp200 17b483bd21 AutoCompleteSelectField on clubs 2016-09-27 21:05:57 +02:00
Skia f152791d90 Merge branch 'sli' into 'master'
Only club members can view counter's stats

N'importe qui peut accéder aux tops 100, c'est pas très cool de voir ce que dépensent les autres…

See merge request !9
2016-09-27 20:12:57 +02:00
klmp200 3c408551aa Remove nested exception for stats and added property on AnonymusUser 2016-09-27 16:56:30 +02:00
klmp200 f7722ed564 Fixed permissions on stats 2016-09-27 16:44:12 +02:00
klmp200 f22f2cbde6 Only club members can view counter's stats 2016-09-26 23:56:24 +02:00
Skia 303db0bc7d Translation and explicit string 2016-09-26 11:31:45 +02:00
Skia a4ad7f0e85 Add token to counter to see pictures and to prevend misuses 2016-09-26 11:17:56 +02:00
Skia 37072e1640 Clean up some useless prints 2016-09-26 11:17:55 +02:00
Skia 7a2985b186 Add product top 10 2016-09-26 11:17:55 +02:00
Skia 24d744ee9c Merge branch 'krophil' into 'master'
Krophil

Few changes in css

See merge request !7
2016-09-26 09:25:13 +02:00
Skia 4749c45c97 Merge branch 'sli' into 'master'
Hided launderette slots and tokens for non authorized users and added is_office and is_launderette



See merge request !8
2016-09-26 09:23:35 +02:00
klmp200 380f41445a Modify property names 2016-09-22 13:07:22 +02:00
klmp200 e250acf82d Used settings for office and launderette 2016-09-22 13:00:00 +02:00
Skia ffd4dac2e2 Allow club staff to delete their sellings 2016-09-22 12:52:15 +02:00
Skia ae6a613f9a Add promo_17.png 2016-09-21 15:41:12 +02:00
Skia 9e4e9597d1 Add the merge user function 2016-09-21 14:09:26 +02:00
klmp200 748ad1c5c2 Fixed some mistakes 2016-09-21 14:01:44 +02:00
klmp200 2d16b9c296 Hided launderette slots and tokens for non authorized users and added is_office and is_launderette 2016-09-21 13:33:02 +02:00
Skia f1e54439e1 Small stats fix 2016-09-21 12:19:34 +02:00
Skia 324bd69312 Small templates fixes 2016-09-20 20:38:12 +02:00
krophil 1d9c058132 Revert "radius removed"
This reverts commit 26a1300417.
2016-09-20 17:12:09 +02:00
krophil 521c2f2afb Merge branch 'krophil' of https://ae-dev.utbm.fr/ae/Sith into krophil 2016-09-20 13:23:36 +02:00
krophil 62c4036dee radius removed 2016-09-20 13:22:05 +02:00
krophil b11c5bbd1d Merging 2016-09-20 13:19:44 +02:00
krophil 4ee858c130 README updated 2016-09-20 13:18:05 +02:00
Skia 1e0904b48e Merge branch 'sli' into 'master'
Quick fix to hide account number in profile page when not owner user or root

Faut vite cacher les numéros de compte des gens à qui ils n'apartiennent pas, sinon c'est la faille de sécu D:

See merge request !6
2016-09-19 20:43:33 +02:00
Skia 5b83aff351 Small UI fix 2016-09-19 20:40:38 +02:00
Skia d88da0abd8 Make translations for godfathers 2016-09-19 20:32:30 +02:00
Skia 5ba2ab925d Add godfathers 2016-09-19 20:29:43 +02:00
krophil 26a1300417 radius removed 2016-09-19 11:20:37 +02:00
klmp200 584025acf0 Quick fix to hide account number in profile page when not owner user or root 2016-09-18 22:50:10 +02:00
Skia 95b22cafe0 Template fixes 2016-09-15 11:51:05 +02:00
Skia 35d811317c Add top 100 to counters 2016-09-15 11:07:03 +02:00
Skia 6aaeb7cdc9 Rename membership to memberships 2016-09-15 11:06:51 +02:00
Skia 3d9dfbc43a Fix gitignore 2016-09-14 13:46:43 +02:00
Skia f29e5ecabb Fix static files for dev 2016-09-14 13:46:17 +02:00
Skia 64761a83ed Don't come with MySQL by default 2016-09-14 13:19:56 +02:00
Skia 6cf253365b Add cash register summary view 2016-09-13 02:04:49 +02:00
Skia b0ce448ec7 Add missing translation 2016-09-12 17:38:35 +02:00
Skia 09f61eb61c Only root can create a new launderette 2016-09-12 17:35:25 +02:00
Skia 6cacfb8d8d Add counter activity 2016-09-12 17:34:33 +02:00
Skia c748bb8450 Fix slow selling page in clubs 2016-09-12 17:34:17 +02:00
Skia b63923d956 Refactor settings 2016-09-12 14:04:50 +02:00
Skia 54444b31ba Some template improvements 2016-09-11 19:00:12 +02:00
krophil 07363c607b Few proposals in CSS 2016-09-11 14:53:55 +02:00
krophil 1b728e3a8b README updated 2016-09-11 14:53:55 +02:00
Skia 7aec32cef0 Some quick improvement on account view 2016-09-09 20:38:27 +02:00
Skia 5e26e5bde7 Merge branch 'sli' 2016-09-09 19:56:48 +02:00
Skia 5b5006892d Make sellings for clubs 2016-09-09 16:23:35 +02:00
Skia 90e47c9d7d Add a restriction on the counter login view to authorize only the sellers 2016-09-09 01:54:26 +02:00
klmp200 2f7dc9ec19 Used lambda function in user detail 2016-09-08 04:15:34 +02:00
klmp200 41d5a02d77 Fixed account order and detail account view 2016-09-08 03:38:28 +02:00
klmp200 8d060af46c Removed wierd hack 2016-09-08 03:21:39 +02:00
Skia 4c2bf9cbf9 Launderette and product list fixes 2016-09-08 02:09:17 +02:00
klmp200 bca8dc039a Added macros for slots and tokens display 2016-09-07 23:06:38 +02:00
klmp200 61c77a7877 Added address on profile 2016-09-07 02:07:01 +02:00
klmp200 c0296b9ada Added slots on user profile 2016-09-07 01:51:34 +02:00
klmp200 a64b10776e Monthly user account 2016-09-06 22:13:48 +02:00
klmp200 78bf4b7b84 Fixed markdown api issue 2016-09-06 21:59:13 +02:00
Skia d23e07363d Fix settings 2016-09-04 19:26:50 +02:00
Skia b1f6754e6e Refactor lots of tabed templates, and create TabedViewMixin 2016-09-04 19:25:03 +02:00
Skia 976ae09e55 Fix subscriptions with Sith account 2016-09-04 18:35:20 +02:00
Skia 4503fae287 Merge branch 'sli' into 'master'
Fixed get_age



See merge request !3
2016-09-04 16:54:30 +02:00
klmp200 80549c7a33 Fixed get_age 2016-09-04 16:26:02 +02:00
Skia e1ce661a04 Improvements in counter admin templates 2016-09-04 15:50:43 +02:00
Skia d93dda1c0e Merge branch 'sli' into 'master'
Fixed old database bug in dev env



See merge request !2
2016-09-04 15:00:16 +02:00
klmp200 b0215e7445 Organized settings 2016-09-04 14:56:47 +02:00
klmp200 5ca8a22123 Fixed Settings 2016-09-04 14:19:56 +02:00
Skia 25dea832be Display bar list with "openness" 2016-09-04 14:17:49 +02:00
klmp200 8328e668bd Fixed old database bug in dev env 2016-09-02 21:24:10 +02:00
Skia c62d3f4f4a Add old membership views 2016-09-02 21:21:57 +02:00
Skia c5fd9d0076 Small template fixes 2016-09-02 19:31:47 +02:00
Skia a0b1fa32e7 Fix subscription form 2016-09-02 12:29:50 +02:00
Skia bae34c4b1c Fix double user creation 2016-09-02 09:47:33 +02:00
Skia 29f565f514 Improve club templates 2016-09-02 09:23:21 +02:00
Skia b2df8fbf18 Fix LoginForm 2016-09-01 17:50:13 +02:00
Skia 3239a2e481 Fix counter if no date of birth 2016-09-01 16:55:43 +02:00
Skia d27f62dca9 Small fixes 2016-09-01 16:43:21 +02:00
Skia f7e3251ae5 Right fix and translation 2016-09-01 11:27:00 +02:00
Skia a4c5d48159 Some bug fixes 2016-09-01 10:00:31 +02:00
Skia 1f31d3b56f Send a mail when someone is subscribed 2016-08-31 18:40:17 +02:00
Skia 6af16cc893 Some basic templating 2016-08-31 17:18:21 +02:00
Skia 37d303634c Fix form with files 2016-08-31 15:29:16 +02:00
Skia a47cca1b1e Very small CSS improvement 2016-08-31 04:08:28 +02:00
Skia 0db7180d43 Do some user profile templating 2016-08-31 04:04:28 +02:00
Skia 55ea2ac763 Change link color 2016-08-31 03:32:55 +02:00
Skia 4a29a431af Display user amount without the account page 2016-08-31 03:25:26 +02:00
Skia f66b999f24 Improve login form 2016-08-31 02:44:46 +02:00
Skia fcfbfb3a0b Small file fix 2016-08-31 02:05:04 +02:00
Skia cb90ab8e57 Fix link to old site 2016-08-30 17:41:42 +02:00
Skia b21d9f6ff2 Add price for subscriptions 2016-08-30 17:33:45 +02:00
Skia 9cfdf4798d Fix OperationEditView 2016-08-29 20:13:53 +02:00
Skia e8713b3c22 Merge remote-tracking branch 'origin/api' 2016-08-29 19:50:38 +02:00
Skia fe2438ef0c Fix subscription right and typo 2016-08-29 19:48:29 +02:00
Skia 3305a19f44 Fix permissions on sellings and refillings 2016-08-29 16:07:14 +02:00
Skia 3667a12174 Fix webcam upload 2016-08-29 04:58:25 +02:00
Skia c4b1494eee Update settings 2016-08-29 03:34:43 +02:00
Skia f0499cdb26 Make a better index page 2016-08-29 03:25:47 +02:00
Skia 4215baec26 Make the bar menu 2016-08-29 03:14:53 +02:00
Skia 325da79e45 Add support for subscription typed products in eboutic 2016-08-29 03:02:13 +02:00
Skia dfb13c37f2 Add INSERT to old DB for subscriptions and users 2016-08-29 02:19:29 +02:00
Skia 2b4a623e4a First link to old site's DB 2016-08-29 01:34:08 +02:00
Skia e61b5e7690 Small fixes 2016-08-29 01:31:58 +02:00
Skia b2f13e935e Add missing migration 2016-08-26 23:31:25 +02:00
Skia 3e0b964e9b Small AnonymousUser fix (le gaulois) 2016-08-26 21:09:32 +02:00
Skia 01c3991988 Add cash register summaries 2016-08-26 20:57:04 +02:00
Skia 9927310f6e Update login system to support the multiple threads of UWSGI 2016-08-26 20:56:16 +02:00
Skia b33c3b20bb Add account check to migration 2016-08-26 18:34:49 +02:00
Skia ce7230751e Fix email sending by setting password to all migrated users + refactor migrate.py 2016-08-25 17:43:28 +02:00
Skia bea7b71f2c Delete unwanted obsolete migration files 2016-08-24 22:10:58 +02:00
Skia 4f67bf4c04 Reset all migrations and migrate companies 2016-08-24 22:09:23 +02:00
Skia fb8e7ceb5b Some templating and migration fix 2016-08-24 21:49:46 +02:00
Skia 078b63d970 Migrate accounting 2016-08-24 19:50:22 +02:00
Skia a4df1ae9a5 Add language chooser 2016-08-24 19:11:09 +02:00
Skia f2c3c7dc25 Add viewable flag for user 2016-08-22 18:44:03 +02:00
Skia eef5dfd275 Make JPEG progressive when resizing 2016-08-22 14:21:17 +02:00
Skia 8e3eb1e2bf Some templating and add webcam support for profile editing 2016-08-22 02:56:27 +02:00
Skia 4cbfd58660 Add pictures to products 2016-08-21 03:07:15 +02:00
Skia a49d9850ab Pimp the counter click view 2016-08-21 02:30:49 +02:00
Skia 7797f87dd0 Clean up some useless prints 2016-08-20 22:15:54 +02:00
Skia dbf0653baf Add support for product buying groups + many cosmetics and form pimping 2016-08-20 22:12:46 +02:00
Skia 00f05c71c5 Fix migrate script 2016-08-20 16:10:16 +02:00
Skia d54f0f4c65 At last we support trays! 2016-08-20 16:09:46 +02:00
Skia 62745e89fa User profile template fix 2016-08-20 13:57:27 +02:00
Skia 84efcd87e7 Translate datepicker and add age limit to products 2016-08-20 02:55:48 +02:00
Skia 7e90e657a7 Add ajax-select app and improve some templates 2016-08-19 23:24:23 +02:00
klmp200 2f7030d964 Fixed api's list bug 2016-08-19 17:25:23 +02:00
klmp200 6c107ed3d4 Splited api across sevral files, deactivated readonly 2016-08-19 16:13:40 +02:00
klmp200 cc619daf45 Renaming and commenting in api 2016-08-19 14:41:33 +02:00
Skia bfb2dc5f82 Kinda fix the refilling migration: there were some traps! 2016-08-19 14:39:28 +02:00
klmp200 8455ff3f7b Turned the api readonly and fixed permissions on it 2016-08-19 12:37:30 +02:00
Skia da96e9da84 Search improvement 2016-08-19 03:12:20 +02:00
Skia f1105d704e Add basic search bar 2016-08-19 02:53:44 +02:00
Skia 0689f864d2 Migrate permanencies and add user stats view 2016-08-18 21:32:18 +02:00
Skia b69c3a6792 Improve and fix user accounts 2016-08-18 21:06:10 +02:00
Skia 05bd177a9d Migrate invoices and lot of eboutic improvements 2016-08-18 19:52:20 +02:00
Skia 50c452c287 Fix migrate script 2016-08-18 03:06:46 +02:00
Skia 84364d9018 Improve counter app and migrate products/producttypes/refillings/sellings 2016-08-18 03:04:50 +02:00
Skia d4f87e7581 Improve file popup 2016-08-15 21:04:06 +02:00
Skia 66fdf6cbf7 Migrate and improve subscriptions 2016-08-14 19:28:14 +02:00
Skia e1474c7a74 Add is_root property to user 2016-08-14 04:35:08 +02:00
Skia 792563999b Allow root to reset user password 2016-08-13 17:15:45 +02:00
Skia a033c4dfd2 Improve launderette rights to match with launderette club 2016-08-13 16:39:09 +02:00
Skia 4ec328556e Migrate clubs 2016-08-13 16:08:22 +02:00
Skia 2e9fa1a27d Begin migration script 2016-08-13 05:33:24 +02:00
Skia c0a66f9a38 Finish profile of users 2016-08-13 05:33:09 +02:00
Skia 5113d8fda5 Small user profile fix 2016-08-11 04:57:07 +02:00
Skia 43b709bfd5 Make file modale chooser and complete user profile 2016-08-11 04:30:24 +02:00
Skia a8858fa781 Add home for users and clubs 2016-08-10 16:23:12 +02:00
Skia 830c15a585 Better right handling in files 2016-08-10 14:48:18 +02:00
Skia 1775569ecf Reset all migrations 2016-08-10 13:52:57 +02:00
Skia 792d66da33 Add nice whole file support 2016-08-10 05:48:06 +02:00
Skia 6fbf607492 Fix settings 2016-08-08 00:35:35 +02:00
klmp200 cefb3828bc Started launderette API 2016-08-08 00:33:02 +02:00
klmp200 bfa966e3d8 Birthday API and some more enhacements 2016-08-07 22:57:38 +02:00
klmp200 8e8ee808b5 Fixed api permissions 2016-08-07 20:52:53 +02:00
klmp200 2822d947d9 Enhaced API : look for permissions, automaticly add /{pk}/id, added
users, groups and clubs
2016-08-07 20:45:06 +02:00
Skia 1a6373e9ce Add barman list in API 2016-08-07 20:45:06 +02:00
klmp200 b9ea687df1 Fixed comment 2016-08-07 20:45:06 +02:00
klmp200 c2ccf63021 Added counters in api 2016-08-07 20:45:06 +02:00
klmp200 feb7b4689b First steps with the api 2016-08-07 20:45:06 +02:00
Skia ad36c1c6f6 Better handle 403 with next argument 2016-08-07 20:36:06 +02:00
Skia a0f7150c55 Update accounting to have a target 2016-08-07 20:10:50 +02:00
Skia d824d0d928 Uppercase some choices in settings 2016-08-07 20:06:47 +02:00
Skia 1529af32c5 Add token handling form in launderette 2016-08-06 15:20:38 +02:00
Skia 31ecb50c1d Move user account view into core 2016-08-05 09:52:19 +02:00
Skia aa17c44bcc Add location when subscribing 2016-08-05 00:51:04 +02:00
Skia 260a17ae4f Improve generation of account id 2016-08-05 00:51:04 +02:00
Skia 44a6621aac Update settings 2016-08-04 13:36:33 +02:00
Skia 70e723337d Update settings 2016-08-02 22:32:13 +02:00
Skia db712c86b8 Fix tests 2016-08-02 22:20:06 +02:00
Skia 7002139176 Finish the launderette click view 2016-08-02 00:32:55 +02:00
Skia 2cf39671e2 Make some more validation on the token click form 2016-08-01 19:59:22 +02:00
Skia 4d8e7b0875 Improve launderette, need to finish the click view 2016-08-01 16:36:16 +02:00
Skia ba48adab6d Improve launderette plannings and admin part 2016-07-29 13:00:32 +02:00
Skia fc170cfc49 Delete unwanted templates 2016-07-29 12:17:11 +02:00
Skia ef17e66351 Improve launderette plannings 2016-07-29 01:38:46 +02:00
Skia a01fc63a82 Begin launderette 2016-07-28 20:05:56 +02:00
Skia 4c62816816 Add rights to Product and Product Type views 2016-07-28 16:11:18 +02:00
Skia 3c4a9a89a8 Fix README 2016-07-28 13:02:10 +02:00
Skia e3705f9fe2 Make sliding subscriptions for 1 or 2 semesters 2016-07-28 12:41:29 +02:00
Skia 80f72df1de Add product type management views 2016-07-27 20:05:45 +02:00
Skia f230fbc135 Add product management views 2016-07-27 17:23:02 +02:00
Skia 4408890ab2 Templating and translation 2016-07-27 00:13:20 +02:00
Skia 4e6b592911 Fix eboutic 2016-07-26 19:58:36 +02:00
Skia 45f5a58b4a Improve Eboutic basket 2016-07-26 19:39:19 +02:00
Skia c099f1c5d7 Make eboutic working 2016-07-26 18:28:36 +02:00
Skia 60e606b370 Improve ET auto answer view 2016-07-26 15:10:48 +02:00
Skia d837b624e2 Implement parts of the ET API 2016-07-24 18:26:03 +02:00
Skia 0ecb78a101 Fix some counter stuff 2016-07-22 13:34:34 +02:00
Skia 256651f580 Translation fix 2016-07-22 02:20:13 +02:00
Skia a0322fa931 Templating pages 2016-07-22 02:05:29 +02:00
Skia f04cf9d4d4 Add basics of eboutic, still need to implement the ET API to get bank payment 2016-07-22 01:19:50 +02:00
Skia 525d7e6709 Add atomic transaction in counters 2016-07-22 01:19:04 +02:00
Skia 1f3e186e27 Update counters and some views 2016-07-21 20:03:56 +02:00
Skia 724f3d8d6f Templates and views 2016-07-21 12:09:57 +02:00
Skia 28aa143f39 Improve Operation numbering in accounting 2016-07-20 18:48:18 +02:00
Skia 150147c69f Fix the removing of built in permissions for admin app 2016-07-20 16:34:18 +02:00
Skia 7a267dbc3f Create the customer when subscribing if it does not exists yet 2016-07-20 00:28:49 +02:00
Skia 97ff4341a7 Translate most of the Sith 2016-07-19 19:03:16 +02:00
Skia 1b4324f38f Add french translation file 2016-07-18 17:47:43 +02:00
Skia beebe6361c Update gitlab-ci.yml to change ln to cp 2016-07-18 13:27:47 +02:00
Skia 46eb659d7d Update gitlab-ci.yml to fix the builds with new settings.py 2016-07-18 13:24:31 +02:00
Skia 2147f6a468 Add permanencies tracking to counters 2016-07-18 13:22:50 +02:00
Skia 593050d9e2 Improve greatly the counter right management 2016-07-18 00:47:56 +02:00
Skia e92a73dfb1 Add basic account view for user and refactor user tool bar 2016-07-17 12:38:02 +02:00
Skia c099cc489b Improve refilling form to handle the checks and the banks 2016-07-17 11:38:19 +02:00
Skia 14595936e2 Some design 2016-07-17 11:37:52 +02:00
Skia 4498877283 Small fix on counters 2016-07-16 16:48:56 +02:00
Skia f600e174b1 CSS and templating, Sith begins to look nice 2016-07-16 16:35:45 +02:00
Skia 171303cfcc Delete settings.py 2016-07-14 17:55:02 +02:00
Skia 67114f51e1 Fix populate to work with Postgres 2016-07-14 17:51:26 +02:00
Skia e29e94711a Move settings to settings_sample 2016-07-14 16:15:38 +02:00
Skia 0eb203b18b Fix populate with subscriptions 2016-07-14 16:13:43 +02:00
Skia 0248bdf6d1 Update SubscriptionForm to allow creating user on the fly 2016-07-07 00:52:30 +02:00
Skia bab3a38a2e Small subscription fix 2016-07-06 01:32:41 +02:00
Skia 5355492c76 Date of birth is no longer mandatory 2016-07-06 01:09:31 +02:00
Skia 1feea061f6 Add basic refill support 2016-06-26 20:07:29 +02:00
Skia 9989b75b3e Add string parser in counters 2016-06-26 19:30:28 +02:00
Skia 9429dbccc2 Add link to counters in club tools 2016-06-26 18:15:23 +02:00
Skia 50efc07eaa Add basic close journal functions 2016-06-24 21:55:52 +02:00
Skia e9544f2581 Update CanCreateView and fix accounting views in consequence 2016-06-24 21:07:59 +02:00
Skia 1396f2ca84 Improve accounting ease of use 2016-06-24 19:59:49 +02:00
Skia ace58f54b5 Update Doxyfile 2016-06-22 14:52:53 +02:00
Skia e25c4a4e4a Add some TODOs 2016-06-22 13:40:30 +02:00
Skia d244618dd0 Improve accounting views 2016-06-22 13:19:35 +02:00
Skia d06540086d Small orhtograph fix 2016-06-21 11:52:45 +02:00
Skia 95a3dd02e1 Add final PDF report 2016-06-21 00:49:20 +02:00
Skia 3a746d010a Finish the report 2016-06-21 00:47:11 +02:00
Skia 13461268d0 Add license 2016-06-21 00:42:33 +02:00
Skia 3023d6d744 Add CanCreateMixin, and add amount in journals 2016-06-20 15:47:26 +02:00
Skia 18db95cfd2 Update again the report 2016-06-20 12:24:44 +02:00
Skia 109e23cee0 Update report, again 2016-06-20 00:01:26 +02:00
Skia aa92bc9467 Update report 2016-06-19 21:16:04 +02:00
Skia 12b361be70 Update report 2016-06-18 18:06:57 +02:00
Skia 4ca431877e Update report 2016-06-17 14:55:55 +02:00
Skia e5d60b8c72 Begin report 2016-06-17 14:55:55 +02:00
Skia aafcc9c174 Almost finish the counter views, still need the plateaux 2016-06-02 14:55:12 +02:00
Skia b6904ad88c WIP: Improve counters view (counter is broken for now) 2016-06-02 00:26:31 +02:00
Skia ffe2aec980 Implement barman prices and improve counter views 2016-06-01 01:33:20 +02:00
Skia 6c48b7c718 Add Selling and Refilling classes 2016-05-31 19:32:15 +02:00
Skia 356a2d2683 Refactor page handling 2016-05-31 13:00:52 +02:00
Skia 8da149c979 Some refactoring between accounting and counter 2016-05-31 13:00:52 +02:00
Skia e75da927c3 Improve group views 2016-05-31 13:00:52 +02:00
Skia ac37d3328c Merge branch 'undefined' into 'master'
Added data model for the BdF app.



See merge request !1
2016-05-10 10:54:49 +02:00
Skia b388b96da8 Fix club test 2016-05-10 10:52:16 +02:00
Skia 27805640a1 Improve right handling for accounting 2016-05-09 11:49:01 +02:00
François Brachais 1b974c6d45 Added data model for the BdF app. 2016-05-07 18:47:59 +02:00
Skia 39661b8de7 Add new club view 2016-05-03 12:06:03 +02:00
Skia 6ef39257ee Fix user template 2016-05-03 09:01:54 +02:00
Skia 6e05207e84 "Finish" the accounting views 2016-05-03 08:50:54 +02:00
Skia 9c0b17a9ae Fix custom special views 403,404 to return the right HTTP code 2016-05-02 11:33:38 +02:00
Skia 08ae6a19bc Remove setup step from CI, it was not needed 2016-04-20 03:33:03 +02:00
Skia b4c3f2f4dc Fix tests 2016-04-20 03:30:49 +02:00
Skia e5c085c706 Add setup step to CI 2016-04-20 03:05:23 +02:00
Skia 5fcb3e1412 Add basic accounting views 2016-04-20 03:01:14 +02:00
Skia c6a3559bf5 Improve accounting model according to current site's one 2016-04-20 02:07:01 +02:00
Skia 9a135ade50 Refactor counters view a bit, and protect ClickView if no barman is logged 2016-04-19 19:58:57 +02:00
Skia 6eb0ec1620 Tiny fix (le gaulois) 2016-04-19 03:43:13 +02:00
Skia 25c1e6dc58 Add the basket handling in the click view of the counter
Now there is still to handle the validation by generating the appropriate invoice(s)
2016-04-19 01:54:55 +02:00
Skia 7a9689a20d Improve the click view, the total is computed, but there is still a lot of work 2016-04-18 17:34:21 +02:00
Skia 1f98993871 It worked, really deleting APT lines! We have now CI! :) 2016-04-18 05:09:23 +02:00
Skia 8bc19d8e73 New CI test, without APT 2016-04-18 05:06:16 +02:00
Skia 785e34b2d6 Add CI file, testing 2016-04-18 04:58:15 +02:00
Skia a5118ef457 Finish the functionnality of CounterMain
We now redirect correctly to CounterClick, providing a valid user
2016-04-18 04:37:37 +02:00
Skia 478d1ed876 Continue the counter views 2016-04-15 11:50:31 +02:00
Skia c1a151d754 Add timeout for barmen 2016-04-12 13:08:37 +02:00
Skia 20a97526d4 Make counter login forms 2016-04-12 10:00:47 +02:00
Skia 3302fdc6f2 Small club fix 2016-04-12 10:00:15 +02:00
Skia e4070c86fd Add contacts 2016-04-07 10:44:34 +02:00
Skia 52153438ac Rename and refactor some settings 2016-03-31 10:36:00 +02:00
Skia be826ed616 Add the Guide to the Tresorerie 2016-03-30 18:33:21 +02:00
Skia debba55350 Add MetaGroup system 2016-03-29 12:45:10 +02:00
Skia 5bcc94f992 Improve counters views 2016-03-29 10:30:48 +02:00
Skia 21f1393097 Add basic counter model 2016-03-28 14:54:35 +02:00
Skia 7d7652e319 Small fix (le gaulois) 2016-03-24 11:55:39 +01:00
Skia c3fb581f97 Refactor a bit right handling 2016-03-22 17:46:26 +01:00
Skia 18f856af24 Small right fix 2016-03-22 12:00:57 +01:00
Skia 2e84ee7d4f Fix subscription and improve views 2016-03-22 11:42:00 +01:00
Skia 0dba76e02e Make some tests for clubs 2016-03-22 09:01:24 +01:00
Skia 6aed36c31f Add club migration 2016-03-21 17:49:22 +01:00
Skia fe8f5bb2e3 Fix club rights 2016-03-15 18:26:03 +01:00
Skia d90c0f86f4 Update requirements.txt 2016-03-10 13:53:40 +01:00
krophil bad581fec7 jumplines 2016-03-07 13:36:06 +01:00
krophil bdc164e1ac Jumplines 2016-03-07 13:34:22 +01:00
krophil ed8f5856d4 Tuto updated 2016-03-07 13:31:38 +01:00
krophil d5c44d6be6 Initialize contribution guide 2016-03-07 13:11:48 +01:00
Skia e2b0668ee8 Improve Club views 2016-02-08 17:09:52 +01:00
Skia a14d940db2 Some refactoring and misc improvements 2016-02-05 16:59:42 +01:00
Skia ed080b76a2 WIP: Club member form 2016-02-04 08:59:03 +01:00
Skia d51ab088d8 Add first club views, this still sucks, particularly on the right managment 2016-02-02 16:34:36 +01:00
Skia afc87888a6 Finish the move to Jinja2 2016-02-02 11:00:08 +01:00
Skia 239133e355 Fix generate_username for accents 2016-02-02 10:59:00 +01:00
Skia 6b81210ba1 Fix permissions Mixins 2016-02-02 10:15:50 +01:00
Skia 03bc0973fe WIP: Move to Jinja2 2016-02-01 17:35:55 +01:00
Skia abb8dc0c5e Add Subscription to setup 2016-02-01 09:55:23 +01:00
Skia bc7ab19e86 Update README 2016-01-29 16:29:24 +01:00
Skia 7f163ffc9e Add Doxyfile for generating doc 2016-01-29 16:23:41 +01:00
Skia 4322318c31 Club model implementation, various other changes 2016-01-29 15:20:00 +01:00
Skia 7f4955d15c Update diagramm 2016-01-29 09:45:59 +01:00
Skia 8fc360a977 Improve subscription and add it to admin app 2016-01-28 17:42:22 +01:00
Skia f71ce2f7df Add first accounting implementation 2016-01-28 16:53:37 +01:00
Skia 2b999d87ba Another date field update 2016-01-28 10:13:45 +01:00
Skia 367fddbdab Alter date_of_birth 2016-01-28 09:36:24 +01:00
Skia 8ea1727475 Fix URLs 2016-01-11 10:13:30 +01:00
Skia 8b0939ca79 Core: rename full_name in _full_name because this attribute is for internal use only 2016-01-11 10:02:41 +01:00
Skia 1f4c49ac49 Make a previsualization button in page edit 2016-01-11 09:56:42 +01:00
Skia 771056d6e4 Add a begining of API and CSS+JS (static files folder) 2016-01-08 17:11:38 +01:00
Skia f5b07887a5 Fix typo in setup 2016-01-08 16:27:59 +01:00
Skia 8ebd6c64a7 Add Markdown support and better url tolerance for pages 2016-01-08 16:15:06 +01:00
Skia b35483d2a9 WIP: Begin ae app with subscription handling 2015-12-15 17:50:50 +01:00
Skia a6aac76d75 Alter date_join field in User 2015-12-15 09:27:50 +01:00
Skia 787fd2f484 Settingize some stuff and add custom AnonymousUser 2015-12-14 15:43:30 +01:00
Skia a6edfcc048 Update UserPropForm 2015-12-14 10:49:15 +01:00
Skia 376b5101c1 Add docstring to PageRev 2015-12-09 11:22:50 +01:00
Skia 268a33255b Refactor user groups to user prop 2015-12-09 11:01:11 +01:00
Skia 77803596fb Add class wide permissions and clean up migrations 2015-12-09 10:33:55 +01:00
Skia e3cbe70319 WIP: Improve many views and a bit user permissions (idea for class scale perm) 2015-12-08 17:22:50 +01:00
Skia 475bff14cb Refactor rights handling 2015-12-08 11:10:29 +01:00
Skia dc37e79f14 WIP: Refactor permissions 2015-12-08 09:46:48 +01:00
Skia f7bfd6daed Add getattribute to PageRev for getting owner_group&co 2015-12-08 09:46:40 +01:00
Skia aa732a4ec0 WIP: Add custom 403 and 404, but break a bit the permissions! To be fixed 2015-12-07 17:23:52 +01:00
Skia 6cc7851487 Repair all tests and update requirements.txt 2015-12-07 16:08:24 +01:00
Skia 185b35ed18 Improve setup script 2015-12-04 16:14:05 +01:00
Skia 078276cead Merge branch 'sli' 2015-12-03 20:36:53 +01:00
Skia 2557af270a Merge branch 'krophil' 2015-12-03 20:33:40 +01:00
klmp200 e750b5a12f Edited gitignore and README to make everything work proprely with virtualenv 2015-12-03 20:29:07 +01:00
krophil f3896cb22e SimpleTestCase -> TestCase. Now, test are almost ok 2015-12-03 18:41:22 +01:00
Skia 2c4bac7c9f Add setup custom command to manage.py 2015-12-03 18:00:08 +01:00
Skia 5f07237d70 Improve a bit user views's rights 2015-12-03 16:47:03 +01:00
Skia 50f53e7a6e Fix users tests and pages fixtures 2015-12-02 17:14:47 +01:00
Skia f17fb6e466 Add lock handling in Wiki 2015-12-02 16:43:40 +01:00
Skia 92f68f5b42 Add complete revision and history handling in the wiki 2015-12-02 11:09:50 +01:00
Skia 80926dd4ac Revert "Begin a PageRevision implementation, but this breaks currently everything!"
This reverts commit 979fc7bcb7.
2015-11-30 13:04:46 +01:00
Skia 979fc7bcb7 Begin a PageRevision implementation, but this breaks currently everything! 2015-11-27 16:40:16 +01:00
Skia edcbf7a367 Update fixture and PagePropFrom 2015-11-27 16:09:47 +01:00
Skia 0b962e2380 Make the group management more generic in the model 2015-11-27 16:05:43 +01:00
Skia 5c9e5a24ab Implement generic right checking for any View with the right parents 2015-11-27 15:39:42 +01:00
Skia b19ec084b6 Basic group view and permissions management on the pages 2015-11-26 17:40:31 +01:00
Skia 48e3f88b87 Improve user views 2015-11-26 16:32:56 +01:00
Skia 385f91a9db Add a missing template 2015-11-26 11:27:52 +01:00
Skia 431b81cd42 Make all the lost password procedure 2015-11-26 10:57:26 +01:00
Skia 6e54fa075e WIP: password change/reset forms 2015-11-25 17:03:18 +01:00
Skia 04bbf0db5b Refactor login and logout with built-in views 2015-11-25 16:20:28 +01:00
Skia b237cdbaae Refactor page view with Django's black magic powered DetailView&co 2015-11-25 14:45:18 +01:00
Skia d72b18c120 Add basic page view permission, not really working 2015-11-25 10:29:25 +01:00
Skia 5b8b3746e6 Update README 2015-11-25 08:47:35 +01:00
Skia cdcf4099fc Prevent loop in Wiki 2015-11-24 20:09:44 +01:00
Skia 18115a0dc4 Put view into a module 2015-11-24 16:09:46 +01:00
Skia ebcdcf4245 Basic user profile edit form 2015-11-24 15:52:27 +01:00
Skia 259182c1c4 Add page properties view 2015-11-24 14:01:10 +01:00
Skia 7b093f6fbd Fix page table integrity 2015-11-24 14:00:41 +01:00
Skia ce8ceb80d6 Update README again 2015-11-24 10:57:30 +01:00
Skia 611779ce76 Update README 2015-11-24 10:55:15 +01:00
Skia 9a9541088d Fix wiki, plus clean up and add tests 2015-11-24 10:53:16 +01:00
Skia 8753e020a1 Wiki is working quit well 2015-11-23 17:32:31 +01:00
Skia d2005ff997 Almost working wiki before refactoring again 2015-11-23 17:23:37 +01:00
Skia ace66bba0a Almost working wiki before refactoring 2015-11-23 13:30:30 +01:00
Skia e9c18748b0 Make date of birth mandatory 2015-11-22 18:23:21 +01:00
Skia c434e093a0 Update diagrams 2015-11-20 16:21:51 +01:00
Skia 6253c06235 Add very basic and not safe pages 2015-11-20 15:47:01 +01:00
Skia c6b35071db Amend: add migration file 2015-11-19 17:36:05 +01:00
Skia c877fa7b84 Fix default date of birth with aware timezone 2015-11-19 17:34:11 +01:00
Skia 7a65215bb5 Basic user permissions for user editing 2015-11-19 16:33:40 +01:00
Skia d3896ad676 Update login system and add tests 2015-11-19 14:44:48 +01:00
Skia 5ee2baedba Add registering tests 2015-11-19 11:23:08 +01:00
Skia 898490324a Basic user profile 2015-11-19 09:46:05 +01:00
Skia c8680ec87d Update README.md 2015-11-19 08:47:24 +01:00
Skia 6c8f2c5555 Add README 2015-11-19 08:45:21 +01:00
Skia 619e27eb52 Basic auth system 2015-11-18 17:09:06 +01:00
Skia 5bd40b2ec4 First commit: basic users 2015-11-18 09:44:06 +01:00
938 changed files with 85783 additions and 381560 deletions
+17
View File
@@ -0,0 +1,17 @@
[run]
source = .
branch = False
omit =
*test*
*/migrations/*
doc/*
env/*
sith/toolbar_debug.py
sith/wsgi.py
migrate.py
[report]
show_missing = False
include = *.py
[html]
title = Sith Code Coverage
directory = coverage_report
+6
View File
@@ -0,0 +1,6 @@
if [[ ! -d .venv ]]; then
log_error 'No .venv folder found. Use `uv sync` to create one first.'
exit 2
fi
. .venv/bin/activate
+2
View File
@@ -0,0 +1,2 @@
/locale/fr/LC_MESSAGES/django.po gitlab-language=python
*.jinja gitlab-language=jinja
+46
View File
@@ -0,0 +1,46 @@
name: "Setup project"
description: "Setup Python and Poetry"
runs:
using: composite
steps:
- name: Install apt packages
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: gettext
version: 1.0 # increment to reset cache
- name: Install uv
uses: astral-sh/setup-uv@v5
with:
version: "0.5.14"
enable-cache: true
cache-dependency-glob: "uv.lock"
- name: "Set up Python"
uses: actions/setup-python@v5
with:
python-version-file: ".python-version"
- name: Restore cached virtualenv
uses: actions/cache/restore@v4
with:
key: venv-${{ runner.os }}-${{ hashFiles('.python-version') }}-${{ hashFiles('pyproject.toml') }}-${{ env.CACHE_SUFFIX }}
path: .venv
- name: Install dependencies
run: uv sync
shell: bash
- name: Install Xapian
run: uv run ./manage.py install_xapian
shell: bash
- name: Save cached virtualenv
uses: actions/cache/save@v4
with:
key: venv-${{ runner.os }}-${{ hashFiles('.python-version') }}-${{ hashFiles('pyproject.toml') }}-${{ env.CACHE_SUFFIX }}
path: .venv
- name: Compile gettext messages
run: uv run ./manage.py compilemessages
shell: bash
+13
View File
@@ -0,0 +1,13 @@
# Set to true to add reviewers to pull requests
addReviewers: true
# Set to true to add assignees to pull requests
addAssignees: author
# A list of team reviewers to be added to pull requests (GitHub team slug)
reviewers:
- ae-utbm/sith-3-developers
# Number of reviewers has no impact on GitHub teams
# Set 0 to add all the reviewers (default: 0)
numberOfReviewers: 0
+14
View File
@@ -0,0 +1,14 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "pip" # See documentation for possible values
directory: "/" # Location of package manifests
schedule:
interval: "weekly"
target-branch: "taiste"
commit-message:
prefix: "[UPDATE] "
+47
View File
@@ -0,0 +1,47 @@
name: Sith CI
on:
push:
branches: [master, taiste]
pull_request:
branches: [master, taiste]
workflow_dispatch:
jobs:
pre-commit:
name: Launch pre-commits checks (ruff)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version-file: ".python-version"
- uses: pre-commit/action@v3.0.1
with:
extra_args: --all-files
tests:
name: Run tests and generate coverage report
runs-on: ubuntu-latest
strategy:
fail-fast: false # don't interrupt the other test processes
matrix:
pytest-mark: [slow, not slow]
steps:
- name: Check out repository
uses: actions/checkout@v4
- uses: ./.github/actions/setup_project
env:
# To avoid race conditions on environment cache
CACHE_SUFFIX: ${{ matrix.pytest-mark }}
- name: Run tests
run: uv run coverage run -m pytest -m "${{ matrix.pytest-mark }}"
- name: Generate coverage report
run: |
uv run coverage report
uv run coverage html
- name: Archive code coverage results
uses: actions/upload-artifact@v3
with:
name: coverage-report
path: coverage_report
+65
View File
@@ -0,0 +1,65 @@
name: Deploy to production
concurrency: production
on:
push:
branches: [master]
workflow_dispatch:
jobs:
deployment:
runs-on: ubuntu-latest
environment: production
timeout-minutes: 30
steps:
- name: SSH Remote Commands
uses: appleboy/ssh-action@v1.1.0
with:
# Proxy
proxy_host : ${{secrets.PROXY_HOST}}
proxy_port : ${{secrets.PROXY_PORT}}
proxy_username : ${{secrets.PROXY_USER}}
proxy_passphrase: ${{secrets.PROXY_PASSPHRASE}}
proxy_key: ${{secrets.PROXY_KEY}}
# Serveur web
host: ${{secrets.HOST}}
port : ${{secrets.PORT}}
username : ${{secrets.USER}}
key: ${{secrets.KEY}}
script_stop: true
# See https://github.com/ae-utbm/sith/wiki/GitHub-Actions#deployment-action
script: |
cd ${{secrets.SITH_PATH}}
git fetch
git reset --hard origin/master
uv sync --group prod
npm install
uv run ./manage.py install_xapian
uv run ./manage.py migrate
uv run ./manage.py collectstatic --clear --noinput
uv run ./manage.py compilemessages
sudo systemctl restart uwsgi
sentry:
runs-on: ubuntu-latest
environment: production
timeout-minutes: 30
needs: deployment
steps:
- uses: actions/checkout@v4
- name: Sentry Release
uses: getsentry/action-release@v1.7.0
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
SENTRY_URL: ${{ secrets.SENTRY_URL }}
with:
environment: production
+21
View File
@@ -0,0 +1,21 @@
name: deploy_docs
on:
push:
branches:
- master
permissions:
contents: write
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup_project
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
- uses: actions/cache@v3
with:
key: mkdocs-material-${{ env.cache_id }}
path: .cache
restore-keys: |
mkdocs-material-
- run: uv run mkdocs gh-deploy --force
+46
View File
@@ -0,0 +1,46 @@
name: Sith taiste
on:
push:
branches: [taiste]
workflow_dispatch:
jobs:
deployment:
runs-on: ubuntu-latest
environment: taiste
timeout-minutes: 30
steps:
- name: SSH Remote Commands
uses: appleboy/ssh-action@v1.1.0
with:
# Proxy
proxy_host : ${{secrets.PROXY_HOST}}
proxy_port : ${{secrets.PROXY_PORT}}
proxy_username : ${{secrets.PROXY_USER}}
proxy_passphrase: ${{secrets.PROXY_PASSPHRASE}}
proxy_key: ${{secrets.PROXY_KEY}}
# Serveur web
host: ${{secrets.HOST}}
port : ${{secrets.PORT}}
username : ${{secrets.USER}}
key: ${{secrets.KEY}}
script_stop: true
# See https://github.com/ae-utbm/sith/wiki/GitHub-Actions#deployment-action
script: |
cd ${{secrets.SITH_PATH}}
git fetch
git reset --hard origin/taiste
uv sync --group prod
npm install
uv run ./manage.py install_xapian
uv run ./manage.py migrate
uv run ./manage.py collectstatic --clear --noinput
uv run ./manage.py compilemessages
sudo systemctl restart uwsgi
+23
View File
@@ -0,0 +1,23 @@
*.sqlite3
*.log
*.pyc
*.mo
*__pycache__*
.DS_Store
pyrightconfig.json
dist/
.vscode/
.idea/
.venv/
doc/html
data/
galaxy/test_galaxy_state.json
/static/
sith/settings_custom.py
sith/search_indexes/
.coverage
coverage_report/
node_modules/
# compiled documentation
site/
+19
View File
@@ -0,0 +1,19 @@
Code <gregoire.duvauchelle@utbm.fr>
Cyl <labetowiez@aol.fr>
Juste <maaxleblanc@gmail.com>
Krophil <pierre.brunet@krophil.fr>
Lo-J <renaudg779@gmail.com>
Nabos <gnikwo@hotmail.com>
Och <francescowitz68@gmail.com>
Partoo <joqaste@gmail.com>
Skia <skia@hya.sk> <lordbanana25@mailoo.org>
Skia <skia@hya.sk> <skia@libskia.so>
Sli <klmp200@klmp200.net> <antoine@bartuccio.fr>
Soldat <ryan-68@live.fr>
Terre <jbaptiste.lenglet+git@gmail.com>
Vial <robin.trioux@utbm.fr>
Zar <antoine.charmeau@utbm.fr> <antoine.charmeau@laposte.net>
root <root@localhost.localdomain>
tleb <tleb@openmailbox.org> <theo.lebrun@live.fr>
tleb <tleb@openmailbox.org> <theo.lebrun@utbm.fr>
Maréchal <thgirod@hotmail.com>
+26
View File
@@ -0,0 +1,26 @@
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.8.3
hooks:
- id: ruff # just check the code, and print the errors
- id: ruff # actually fix the fixable errors, but print nothing
args: ["--fix", "--silent"]
# Run the formatter.
- id: ruff-format
- repo: https://github.com/biomejs/pre-commit
rev: "v0.1.0" # Use the sha / tag you want to point at
hooks:
- id: biome-check
additional_dependencies: ["@biomejs/biome@1.9.3"]
- repo: https://github.com/rtts/djhtml
rev: 3.0.7
hooks:
- id: djhtml
name: format templates
entry: djhtml --tabwidth 2
types: ["jinja"]
- id: djcss
name: format scss files
entry: djcss --tabwidth 2
types: ["scss"]
+1
View File
@@ -0,0 +1 @@
3.12
-3576
View File
File diff suppressed because it is too large Load Diff
+3
View File
@@ -0,0 +1,3 @@
Pour contribuer au projet, vous pouvez vous référer à la documentation disponible à https://sith-ae.readthedocs.io/.
Et n'oubliez pas, contribuer c'est la vie !
+674
View File
@@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+21
View File
@@ -0,0 +1,21 @@
# Sith
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](#)
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
[![CI status](https://github.com/ae-utbm/sith/actions/workflows/ci.yml/badge.svg)](#)
[![Docs status](https://github.com/ae-utbm/sith/actions/workflows/deploy_docs.yml/badge.svg)](https://ae-utbm.github.io/sith)
[![Built with Material for MkDocs](https://img.shields.io/badge/Material_for_MkDocs-526CFE?style=default&logo=MaterialForMkDocs&logoColor=white)](https://squidfunk.github.io/mkdocs-material/)
[![Checked with Biome](https://img.shields.io/badge/Checked_with-Biome-60a5fa?style=flat&logo=biome)](https://biomejs.dev)
[![discord](https://img.shields.io/discord/971448179075731476?label=discord&logo=discord&style=default)](https://discord.gg/xk9wfpsufm)
### This is the source code of the UTBM's student association available at [https://ae.utbm.fr/](https://ae.utbm.fr/).
All documentation is in the `docs` directory and online at [https://ae-utbm.github.io/sith](https://ae-utbm.github.io/sith). This documentation is written in French because it targets a French audience and it's too much work to maintain two versions. The code and code comments are strictly written in English.
#### If you want to contribute, here's how we recommend to read the docs:
* First, it's advised to read the about part of the project to understand the goals and the mindset of the current and previous maintainers and know what to expect to learn.
* If in the first part you realize that you need more background about what we use, we provide some links to tutorials and documentation at the end of our documentation. Feel free to use it and complete it with what you found helpful.
* Keep in mind that this documentation is thought to be read in order.
> This project is licensed under GNU GPL, see the LICENSE file at the top of the repository for more details.
+14
View File
@@ -0,0 +1,14 @@
#
# Copyright 2023 © AE UTBM
# ae@utbm.fr / ae.info@utbm.fr
#
# This file is part of the website of the UTBM Student Association (AE UTBM),
# https://ae.utbm.fr.
#
# You can find the source code of the website at https://github.com/ae-utbm/sith
#
# LICENSED UNDER THE GNU GENERAL PUBLIC LICENSE VERSION 3 (GPLv3)
# SEE : https://raw.githubusercontent.com/ae-utbm/sith/master/LICENSE
# OR WITHIN THE LOCAL FILE "LICENSE"
#
#
+36
View File
@@ -0,0 +1,36 @@
#
# Copyright 2023 © AE UTBM
# ae@utbm.fr / ae.info@utbm.fr
#
# This file is part of the website of the UTBM Student Association (AE UTBM),
# https://ae.utbm.fr.
#
# You can find the source code of the website at https://github.com/ae-utbm/sith
#
# LICENSED UNDER THE GNU GENERAL PUBLIC LICENSE VERSION 3 (GPLv3)
# SEE : https://raw.githubusercontent.com/ae-utbm/sith/master/LICENSE
# OR WITHIN THE LOCAL FILE "LICENSE"
#
#
from django.contrib import admin
from accounting.models import (
AccountingType,
BankAccount,
ClubAccount,
Company,
GeneralJournal,
Label,
Operation,
SimplifiedAccountingType,
)
admin.site.register(BankAccount)
admin.site.register(ClubAccount)
admin.site.register(GeneralJournal)
admin.site.register(AccountingType)
admin.site.register(SimplifiedAccountingType)
admin.site.register(Operation)
admin.site.register(Label)
admin.site.register(Company)
+23
View File
@@ -0,0 +1,23 @@
from typing import Annotated
from annotated_types import MinLen
from ninja_extra import ControllerBase, api_controller, paginate, route
from ninja_extra.pagination import PageNumberPaginationExtra
from ninja_extra.schemas import PaginatedResponseSchema
from accounting.models import ClubAccount, Company
from accounting.schemas import ClubAccountSchema, CompanySchema
from core.api_permissions import CanAccessLookup
@api_controller("/lookup", permissions=[CanAccessLookup])
class AccountingController(ControllerBase):
@route.get("/club-account", response=PaginatedResponseSchema[ClubAccountSchema])
@paginate(PageNumberPaginationExtra, page_size=50)
def search_club_account(self, search: Annotated[str, MinLen(1)]):
return ClubAccount.objects.filter(name__icontains=search).values()
@route.get("/company", response=PaginatedResponseSchema[CompanySchema])
@paginate(PageNumberPaginationExtra, page_size=50)
def search_company(self, search: Annotated[str, MinLen(1)]):
return Company.objects.filter(name__icontains=search).values()
+280
View File
@@ -0,0 +1,280 @@
from __future__ import unicode_literals
import django.core.validators
import django.db.models.deletion
from django.db import migrations, models
import accounting.models
class Migration(migrations.Migration):
dependencies = []
operations = [
migrations.CreateModel(
name="AccountingType",
fields=[
(
"id",
models.AutoField(
primary_key=True,
serialize=False,
verbose_name="ID",
auto_created=True,
),
),
(
"code",
models.CharField(
max_length=16,
verbose_name="code",
validators=[
django.core.validators.RegexValidator(
"^[0-9]*$",
"An accounting type code contains only numbers",
)
],
),
),
("label", models.CharField(max_length=128, verbose_name="label")),
(
"movement_type",
models.CharField(
choices=[
("CREDIT", "Credit"),
("DEBIT", "Debit"),
("NEUTRAL", "Neutral"),
],
max_length=12,
verbose_name="movement type",
),
),
],
options={
"verbose_name": "accounting type",
"ordering": ["movement_type", "code"],
},
),
migrations.CreateModel(
name="BankAccount",
fields=[
(
"id",
models.AutoField(
primary_key=True,
serialize=False,
verbose_name="ID",
auto_created=True,
),
),
("name", models.CharField(max_length=30, verbose_name="name")),
(
"iban",
models.CharField(max_length=255, blank=True, verbose_name="iban"),
),
(
"number",
models.CharField(
max_length=255, blank=True, verbose_name="account number"
),
),
],
options={"verbose_name": "Bank account", "ordering": ["club", "name"]},
),
migrations.CreateModel(
name="ClubAccount",
fields=[
(
"id",
models.AutoField(
primary_key=True,
serialize=False,
verbose_name="ID",
auto_created=True,
),
),
("name", models.CharField(max_length=30, verbose_name="name")),
],
options={
"verbose_name": "Club account",
"ordering": ["bank_account", "name"],
},
),
migrations.CreateModel(
name="Company",
fields=[
(
"id",
models.AutoField(
primary_key=True,
serialize=False,
verbose_name="ID",
auto_created=True,
),
),
("name", models.CharField(max_length=60, verbose_name="name")),
],
options={"verbose_name": "company"},
),
migrations.CreateModel(
name="GeneralJournal",
fields=[
(
"id",
models.AutoField(
primary_key=True,
serialize=False,
verbose_name="ID",
auto_created=True,
),
),
("start_date", models.DateField(verbose_name="start date")),
(
"end_date",
models.DateField(
null=True, verbose_name="end date", default=None, blank=True
),
),
("name", models.CharField(max_length=40, verbose_name="name")),
(
"closed",
models.BooleanField(verbose_name="is closed", default=False),
),
(
"amount",
accounting.models.CurrencyField(
decimal_places=2,
default=0,
verbose_name="amount",
max_digits=12,
),
),
(
"effective_amount",
accounting.models.CurrencyField(
decimal_places=2,
default=0,
verbose_name="effective_amount",
max_digits=12,
),
),
],
options={"verbose_name": "General journal", "ordering": ["-start_date"]},
),
migrations.CreateModel(
name="Operation",
fields=[
(
"id",
models.AutoField(
primary_key=True,
serialize=False,
verbose_name="ID",
auto_created=True,
),
),
("number", models.IntegerField(verbose_name="number")),
(
"amount",
accounting.models.CurrencyField(
decimal_places=2, max_digits=12, verbose_name="amount"
),
),
("date", models.DateField(verbose_name="date")),
("remark", models.CharField(max_length=128, verbose_name="comment")),
(
"mode",
models.CharField(
choices=[
("CHECK", "Check"),
("CASH", "Cash"),
("TRANSFERT", "Transfert"),
("CARD", "Credit card"),
],
max_length=255,
verbose_name="payment method",
),
),
(
"cheque_number",
models.CharField(
max_length=32,
null=True,
verbose_name="cheque number",
default="",
blank=True,
),
),
("done", models.BooleanField(verbose_name="is done", default=False)),
(
"target_type",
models.CharField(
choices=[
("USER", "User"),
("CLUB", "Club"),
("ACCOUNT", "Account"),
("COMPANY", "Company"),
("OTHER", "Other"),
],
max_length=10,
verbose_name="target type",
),
),
(
"target_id",
models.IntegerField(
null=True, verbose_name="target id", blank=True
),
),
(
"target_label",
models.CharField(
max_length=32,
blank=True,
verbose_name="target label",
default="",
),
),
(
"accounting_type",
models.ForeignKey(
null=True,
related_name="operations",
verbose_name="accounting type",
to="accounting.AccountingType",
blank=True,
on_delete=django.db.models.deletion.CASCADE,
),
),
],
options={"ordering": ["-number"]},
),
migrations.CreateModel(
name="SimplifiedAccountingType",
fields=[
(
"id",
models.AutoField(
primary_key=True,
serialize=False,
verbose_name="ID",
auto_created=True,
),
),
("label", models.CharField(max_length=128, verbose_name="label")),
(
"accounting_type",
models.ForeignKey(
verbose_name="simplified accounting types",
to="accounting.AccountingType",
related_name="simplified_types",
on_delete=django.db.models.deletion.CASCADE,
),
),
],
options={
"verbose_name": "simplified type",
"ordering": ["accounting_type__movement_type", "accounting_type__code"],
},
),
]
@@ -0,0 +1,105 @@
from __future__ import unicode_literals
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("club", "0001_initial"),
("accounting", "0001_initial"),
("core", "0001_initial"),
]
operations = [
migrations.AddField(
model_name="operation",
name="invoice",
field=models.ForeignKey(
null=True,
related_name="operations",
verbose_name="invoice",
to="core.SithFile",
blank=True,
on_delete=django.db.models.deletion.CASCADE,
),
),
migrations.AddField(
model_name="operation",
name="journal",
field=models.ForeignKey(
verbose_name="journal",
to="accounting.GeneralJournal",
related_name="operations",
on_delete=django.db.models.deletion.CASCADE,
),
),
migrations.AddField(
model_name="operation",
name="linked_operation",
field=models.OneToOneField(
on_delete=django.db.models.deletion.CASCADE,
blank=True,
to="accounting.Operation",
null=True,
related_name="operation_linked_to",
verbose_name="linked operation",
default=None,
),
),
migrations.AddField(
model_name="operation",
name="simpleaccounting_type",
field=models.ForeignKey(
null=True,
related_name="operations",
verbose_name="simple type",
to="accounting.SimplifiedAccountingType",
blank=True,
on_delete=django.db.models.deletion.CASCADE,
),
),
migrations.AddField(
model_name="generaljournal",
name="club_account",
field=models.ForeignKey(
verbose_name="club account",
to="accounting.ClubAccount",
related_name="journals",
on_delete=django.db.models.deletion.CASCADE,
),
),
migrations.AddField(
model_name="clubaccount",
name="bank_account",
field=models.ForeignKey(
verbose_name="bank account",
to="accounting.BankAccount",
related_name="club_accounts",
on_delete=django.db.models.deletion.CASCADE,
),
),
migrations.AddField(
model_name="clubaccount",
name="club",
field=models.ForeignKey(
verbose_name="club",
to="club.Club",
related_name="club_account",
on_delete=django.db.models.deletion.CASCADE,
),
),
migrations.AddField(
model_name="bankaccount",
name="club",
field=models.ForeignKey(
verbose_name="club",
to="club.Club",
related_name="bank_accounts",
on_delete=django.db.models.deletion.CASCADE,
),
),
migrations.AlterUniqueTogether(
name="operation", unique_together={("number", "journal")}
),
]
@@ -0,0 +1,48 @@
from __future__ import unicode_literals
import phonenumber_field.modelfields
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [("accounting", "0002_auto_20160824_2152")]
operations = [
migrations.AddField(
model_name="company",
name="city",
field=models.CharField(blank=True, verbose_name="city", max_length=60),
),
migrations.AddField(
model_name="company",
name="country",
field=models.CharField(blank=True, verbose_name="country", max_length=32),
),
migrations.AddField(
model_name="company",
name="email",
field=models.EmailField(blank=True, verbose_name="email", max_length=254),
),
migrations.AddField(
model_name="company",
name="phone",
field=phonenumber_field.modelfields.PhoneNumberField(
blank=True, verbose_name="phone", max_length=128
),
),
migrations.AddField(
model_name="company",
name="postcode",
field=models.CharField(blank=True, verbose_name="postcode", max_length=10),
),
migrations.AddField(
model_name="company",
name="street",
field=models.CharField(blank=True, verbose_name="street", max_length=60),
),
migrations.AddField(
model_name="company",
name="website",
field=models.CharField(blank=True, verbose_name="website", max_length=64),
),
]
@@ -0,0 +1,50 @@
from __future__ import unicode_literals
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [("accounting", "0003_auto_20160824_2203")]
operations = [
migrations.CreateModel(
name="Label",
fields=[
(
"id",
models.AutoField(
verbose_name="ID",
primary_key=True,
auto_created=True,
serialize=False,
),
),
("name", models.CharField(max_length=64, verbose_name="label")),
(
"club_account",
models.ForeignKey(
related_name="labels",
verbose_name="club account",
to="accounting.ClubAccount",
on_delete=django.db.models.deletion.CASCADE,
),
),
],
),
migrations.AddField(
model_name="operation",
name="label",
field=models.ForeignKey(
on_delete=django.db.models.deletion.SET_NULL,
related_name="operations",
null=True,
blank=True,
verbose_name="label",
to="accounting.Label",
),
),
migrations.AlterUniqueTogether(
name="label", unique_together={("name", "club_account")}
),
]
@@ -0,0 +1,17 @@
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [("accounting", "0004_auto_20161005_1505")]
operations = [
migrations.AlterField(
model_name="operation",
name="remark",
field=models.CharField(
null=True, max_length=128, blank=True, verbose_name="comment"
),
)
]
+520
View File
@@ -0,0 +1,520 @@
#
# Copyright 2023 © AE UTBM
# ae@utbm.fr / ae.info@utbm.fr
#
# This file is part of the website of the UTBM Student Association (AE UTBM),
# https://ae.utbm.fr.
#
# You can find the source code of the website at https://github.com/ae-utbm/sith
#
# LICENSED UNDER THE GNU GENERAL PUBLIC LICENSE VERSION 3 (GPLv3)
# SEE : https://raw.githubusercontent.com/ae-utbm/sith/master/LICENSE
# OR WITHIN THE LOCAL FILE "LICENSE"
#
#
from decimal import Decimal
from django.conf import settings
from django.core import validators
from django.core.exceptions import ValidationError
from django.db import models
from django.template import defaultfilters
from django.urls import reverse
from django.utils.translation import gettext_lazy as _
from phonenumber_field.modelfields import PhoneNumberField
from club.models import Club
from core.models import SithFile, User
class CurrencyField(models.DecimalField):
"""Custom database field used for currency."""
def __init__(self, *args, **kwargs):
kwargs["max_digits"] = 12
kwargs["decimal_places"] = 2
super().__init__(*args, **kwargs)
def to_python(self, value):
try:
return super().to_python(value).quantize(Decimal("0.01"))
except AttributeError:
return None
if settings.TESTING:
from model_bakery import baker
baker.generators.add(
CurrencyField,
lambda: baker.random_gen.gen_decimal(max_digits=8, decimal_places=2),
)
else: # pragma: no cover
# baker is only used in tests, so we don't need coverage for this part
pass
# Accounting classes
class Company(models.Model):
name = models.CharField(_("name"), max_length=60)
street = models.CharField(_("street"), max_length=60, blank=True)
city = models.CharField(_("city"), max_length=60, blank=True)
postcode = models.CharField(_("postcode"), max_length=10, blank=True)
country = models.CharField(_("country"), max_length=32, blank=True)
phone = PhoneNumberField(_("phone"), blank=True)
email = models.EmailField(_("email"), blank=True)
website = models.CharField(_("website"), max_length=64, blank=True)
class Meta:
verbose_name = _("company")
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse("accounting:co_edit", kwargs={"co_id": self.id})
def get_display_name(self):
return self.name
def is_owned_by(self, user):
"""Check if that object can be edited by the given user."""
return user.is_in_group(pk=settings.SITH_GROUP_ACCOUNTING_ADMIN_ID)
def can_be_edited_by(self, user):
"""Check if that object can be edited by the given user."""
return user.memberships.filter(
end_date=None, club__role=settings.SITH_CLUB_ROLES_ID["Treasurer"]
).exists()
def can_be_viewed_by(self, user):
"""Check if that object can be viewed by the given user."""
return user.memberships.filter(
end_date=None, club__role_gte=settings.SITH_CLUB_ROLES_ID["Treasurer"]
).exists()
class BankAccount(models.Model):
name = models.CharField(_("name"), max_length=30)
iban = models.CharField(_("iban"), max_length=255, blank=True)
number = models.CharField(_("account number"), max_length=255, blank=True)
club = models.ForeignKey(
Club,
related_name="bank_accounts",
verbose_name=_("club"),
on_delete=models.CASCADE,
)
class Meta:
verbose_name = _("Bank account")
ordering = ["club", "name"]
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse("accounting:bank_details", kwargs={"b_account_id": self.id})
def is_owned_by(self, user):
"""Check if that object can be edited by the given user."""
if user.is_anonymous:
return False
if user.is_in_group(pk=settings.SITH_GROUP_ACCOUNTING_ADMIN_ID):
return True
m = self.club.get_membership_for(user)
return m is not None and m.role >= settings.SITH_CLUB_ROLES_ID["Treasurer"]
class ClubAccount(models.Model):
name = models.CharField(_("name"), max_length=30)
club = models.ForeignKey(
Club,
related_name="club_account",
verbose_name=_("club"),
on_delete=models.CASCADE,
)
bank_account = models.ForeignKey(
BankAccount,
related_name="club_accounts",
verbose_name=_("bank account"),
on_delete=models.CASCADE,
)
class Meta:
verbose_name = _("Club account")
ordering = ["bank_account", "name"]
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse("accounting:club_details", kwargs={"c_account_id": self.id})
def is_owned_by(self, user):
"""Check if that object can be edited by the given user."""
if user.is_anonymous:
return False
return user.is_in_group(pk=settings.SITH_GROUP_ACCOUNTING_ADMIN_ID)
def can_be_edited_by(self, user):
"""Check if that object can be edited by the given user."""
m = self.club.get_membership_for(user)
return m and m.role == settings.SITH_CLUB_ROLES_ID["Treasurer"]
def can_be_viewed_by(self, user):
"""Check if that object can be viewed by the given user."""
m = self.club.get_membership_for(user)
return m and m.role >= settings.SITH_CLUB_ROLES_ID["Treasurer"]
def has_open_journal(self):
return self.journals.filter(closed=False).exists()
def get_open_journal(self):
return self.journals.filter(closed=False).first()
def get_display_name(self):
return _("%(club_account)s on %(bank_account)s") % {
"club_account": self.name,
"bank_account": self.bank_account,
}
class GeneralJournal(models.Model):
"""Class storing all the operations for a period of time."""
start_date = models.DateField(_("start date"))
end_date = models.DateField(_("end date"), null=True, blank=True, default=None)
name = models.CharField(_("name"), max_length=40)
closed = models.BooleanField(_("is closed"), default=False)
club_account = models.ForeignKey(
ClubAccount,
related_name="journals",
null=False,
verbose_name=_("club account"),
on_delete=models.CASCADE,
)
amount = CurrencyField(_("amount"), default=0)
effective_amount = CurrencyField(_("effective_amount"), default=0)
class Meta:
verbose_name = _("General journal")
ordering = ["-start_date"]
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse("accounting:journal_details", kwargs={"j_id": self.id})
def is_owned_by(self, user):
"""Check if that object can be edited by the given user."""
if user.is_anonymous:
return False
if user.is_in_group(pk=settings.SITH_GROUP_ACCOUNTING_ADMIN_ID):
return True
return self.club_account.can_be_edited_by(user)
def can_be_edited_by(self, user):
"""Check if that object can be edited by the given user."""
if user.is_in_group(pk=settings.SITH_GROUP_ACCOUNTING_ADMIN_ID):
return True
return self.club_account.can_be_edited_by(user)
def can_be_viewed_by(self, user):
return self.club_account.can_be_viewed_by(user)
def update_amounts(self):
self.amount = 0
self.effective_amount = 0
for o in self.operations.all():
if o.accounting_type.movement_type == "CREDIT":
if o.done:
self.effective_amount += o.amount
self.amount += o.amount
else:
if o.done:
self.effective_amount -= o.amount
self.amount -= o.amount
self.save()
class Operation(models.Model):
"""An operation is a line in the journal, a debit or a credit."""
number = models.IntegerField(_("number"))
journal = models.ForeignKey(
GeneralJournal,
related_name="operations",
null=False,
verbose_name=_("journal"),
on_delete=models.CASCADE,
)
amount = CurrencyField(_("amount"))
date = models.DateField(_("date"))
remark = models.CharField(_("comment"), max_length=128, null=True, blank=True)
mode = models.CharField(
_("payment method"),
max_length=255,
choices=settings.SITH_ACCOUNTING_PAYMENT_METHOD,
)
cheque_number = models.CharField(
_("cheque number"), max_length=32, default="", null=True, blank=True
)
invoice = models.ForeignKey(
SithFile,
related_name="operations",
verbose_name=_("invoice"),
null=True,
blank=True,
on_delete=models.CASCADE,
)
done = models.BooleanField(_("is done"), default=False)
simpleaccounting_type = models.ForeignKey(
"SimplifiedAccountingType",
related_name="operations",
verbose_name=_("simple type"),
null=True,
blank=True,
on_delete=models.CASCADE,
)
accounting_type = models.ForeignKey(
"AccountingType",
related_name="operations",
verbose_name=_("accounting type"),
null=True,
blank=True,
on_delete=models.CASCADE,
)
label = models.ForeignKey(
"Label",
related_name="operations",
verbose_name=_("label"),
null=True,
blank=True,
on_delete=models.SET_NULL,
)
target_type = models.CharField(
_("target type"),
max_length=10,
choices=[
("USER", _("User")),
("CLUB", _("Club")),
("ACCOUNT", _("Account")),
("COMPANY", _("Company")),
("OTHER", _("Other")),
],
)
target_id = models.IntegerField(_("target id"), null=True, blank=True)
target_label = models.CharField(
_("target label"), max_length=32, default="", blank=True
)
linked_operation = models.OneToOneField(
"self",
related_name="operation_linked_to",
verbose_name=_("linked operation"),
null=True,
blank=True,
default=None,
on_delete=models.CASCADE,
)
class Meta:
unique_together = ("number", "journal")
ordering = ["-number"]
def __str__(self):
return f"{self.amount} € | {self.date} | {self.accounting_type} | {self.done}"
def save(self, *args, **kwargs):
if self.number is None:
self.number = self.journal.operations.count() + 1
super().save(*args, **kwargs)
self.journal.update_amounts()
def get_absolute_url(self):
return reverse("accounting:journal_details", kwargs={"j_id": self.journal.id})
def __getattribute__(self, attr):
if attr == "target":
return self.get_target()
else:
return object.__getattribute__(self, attr)
def clean(self):
super().clean()
if self.date is None:
raise ValidationError(_("The date must be set."))
elif self.date < self.journal.start_date:
raise ValidationError(
_(
"""The date can not be before the start date of the journal, which is
%(start_date)s."""
)
% {
"start_date": defaultfilters.date(
self.journal.start_date, settings.DATE_FORMAT
)
}
)
if self.target_type != "OTHER" and self.get_target() is None:
raise ValidationError(_("Target does not exists"))
if self.target_type == "OTHER" and self.target_label == "":
raise ValidationError(
_("Please add a target label if you set no existing target")
)
if not self.accounting_type and not self.simpleaccounting_type:
raise ValidationError(
_(
"You need to provide ether a simplified accounting type or a standard accounting type"
)
)
if self.simpleaccounting_type:
self.accounting_type = self.simpleaccounting_type.accounting_type
@property
def target(self):
return self.get_target()
def get_target(self):
tar = None
if self.target_type == "USER":
tar = User.objects.filter(id=self.target_id).first()
elif self.target_type == "CLUB":
tar = Club.objects.filter(id=self.target_id).first()
elif self.target_type == "ACCOUNT":
tar = ClubAccount.objects.filter(id=self.target_id).first()
elif self.target_type == "COMPANY":
tar = Company.objects.filter(id=self.target_id).first()
return tar
def is_owned_by(self, user):
"""Check if that object can be edited by the given user."""
if user.is_anonymous:
return False
if user.is_in_group(pk=settings.SITH_GROUP_ACCOUNTING_ADMIN_ID):
return True
if self.journal.closed:
return False
m = self.journal.club_account.club.get_membership_for(user)
return m is not None and m.role >= settings.SITH_CLUB_ROLES_ID["Treasurer"]
def can_be_edited_by(self, user):
"""Check if that object can be edited by the given user."""
if user.is_in_group(pk=settings.SITH_GROUP_ACCOUNTING_ADMIN_ID):
return True
if self.journal.closed:
return False
m = self.journal.club_account.club.get_membership_for(user)
return m is not None and m.role == settings.SITH_CLUB_ROLES_ID["Treasurer"]
class AccountingType(models.Model):
"""Accounting types.
Those are numbers used in accounting to classify operations
"""
code = models.CharField(
_("code"),
max_length=16,
validators=[
validators.RegexValidator(
r"^[0-9]*$", _("An accounting type code contains only numbers")
)
],
)
label = models.CharField(_("label"), max_length=128)
movement_type = models.CharField(
_("movement type"),
choices=[
("CREDIT", _("Credit")),
("DEBIT", _("Debit")),
("NEUTRAL", _("Neutral")),
],
max_length=12,
)
class Meta:
verbose_name = _("accounting type")
ordering = ["movement_type", "code"]
def __str__(self):
return self.code + " - " + self.get_movement_type_display() + " - " + self.label
def get_absolute_url(self):
return reverse("accounting:type_list")
def is_owned_by(self, user):
"""Check if that object can be edited by the given user."""
if user.is_anonymous:
return False
return user.is_in_group(pk=settings.SITH_GROUP_ACCOUNTING_ADMIN_ID)
class SimplifiedAccountingType(models.Model):
"""Simplified version of `AccountingType`."""
label = models.CharField(_("label"), max_length=128)
accounting_type = models.ForeignKey(
AccountingType,
related_name="simplified_types",
verbose_name=_("simplified accounting types"),
on_delete=models.CASCADE,
)
class Meta:
verbose_name = _("simplified type")
ordering = ["accounting_type__movement_type", "accounting_type__code"]
def __str__(self):
return (
f"{self.get_movement_type_display()} "
f"- {self.accounting_type.code} - {self.label}"
)
def get_absolute_url(self):
return reverse("accounting:simple_type_list")
@property
def movement_type(self):
return self.accounting_type.movement_type
def get_movement_type_display(self):
return self.accounting_type.get_movement_type_display()
class Label(models.Model):
"""Label allow a club to sort its operations."""
name = models.CharField(_("label"), max_length=64)
club_account = models.ForeignKey(
ClubAccount,
related_name="labels",
verbose_name=_("club account"),
on_delete=models.CASCADE,
)
class Meta:
unique_together = ("name", "club_account")
def __str__(self):
return "%s (%s)" % (self.name, self.club_account.name)
def get_absolute_url(self):
return reverse(
"accounting:label_list", kwargs={"clubaccount_id": self.club_account.id}
)
def is_owned_by(self, user):
if user.is_anonymous:
return False
return self.club_account.is_owned_by(user)
def can_be_edited_by(self, user):
return self.club_account.can_be_edited_by(user)
def can_be_viewed_by(self, user):
return self.club_account.can_be_viewed_by(user)
+15
View File
@@ -0,0 +1,15 @@
from ninja import ModelSchema
from accounting.models import ClubAccount, Company
class ClubAccountSchema(ModelSchema):
class Meta:
model = ClubAccount
fields = ["id", "name"]
class CompanySchema(ModelSchema):
class Meta:
model = Company
fields = ["id", "name"]
@@ -0,0 +1,60 @@
import { AjaxSelect } from "#core:core/components/ajax-select-base";
import { registerComponent } from "#core:utils/web-components";
import type { TomOption } from "tom-select/dist/types/types";
import type { escape_html } from "tom-select/dist/types/utils";
import {
type ClubAccountSchema,
type CompanySchema,
accountingSearchClubAccount,
accountingSearchCompany,
} from "#openapi";
@registerComponent("club-account-ajax-select")
export class ClubAccountAjaxSelect extends AjaxSelect {
protected valueField = "id";
protected labelField = "name";
protected searchField = ["code", "name"];
protected async search(query: string): Promise<TomOption[]> {
const resp = await accountingSearchClubAccount({ query: { search: query } });
if (resp.data) {
return resp.data.results;
}
return [];
}
protected renderOption(item: ClubAccountSchema, sanitize: typeof escape_html) {
return `<div class="select-item">
<span class="select-item-text">${sanitize(item.name)}</span>
</div>`;
}
protected renderItem(item: ClubAccountSchema, sanitize: typeof escape_html) {
return `<span>${sanitize(item.name)}</span>`;
}
}
@registerComponent("company-ajax-select")
export class CompanyAjaxSelect extends AjaxSelect {
protected valueField = "id";
protected labelField = "name";
protected searchField = ["code", "name"];
protected async search(query: string): Promise<TomOption[]> {
const resp = await accountingSearchCompany({ query: { search: query } });
if (resp.data) {
return resp.data.results;
}
return [];
}
protected renderOption(item: CompanySchema, sanitize: typeof escape_html) {
return `<div class="select-item">
<span class="select-item-text">${sanitize(item.name)}</span>
</div>`;
}
protected renderItem(item: CompanySchema, sanitize: typeof escape_html) {
return `<span>${sanitize(item.name)}</span>`;
}
}
@@ -0,0 +1,27 @@
{% extends "core/base.jinja" %}
{% block title %}
{% trans %}Accounting type list{% endtrans %}
{% endblock %}
{% block content %}
<div id="accounting">
<p>
<a href="{{ url('accounting:bank_list') }}">{% trans %}Accounting{% endtrans %}</a> >
{% trans %}Accounting types{% endtrans %}
</p>
<hr>
<p><a href="{{ url('accounting:type_new') }}">{% trans %}New accounting type{% endtrans %}</a></p>
{% if accountingtype_list %}
<h3>{% trans %}Accounting type list{% endtrans %}</h3>
<ul>
{% for a in accountingtype_list %}
<li><a href="{{ url('accounting:type_edit', type_id=a.id) }}">{{ a }}</a></li>
{% endfor %}
</ul>
{% else %}
{% trans %}There is no types in this website.{% endtrans %}
{% endif %}
</div>
{% endblock %}
@@ -0,0 +1,38 @@
{% extends "core/base.jinja" %}
{% block title %}
{% trans %}Bank account: {% endtrans %}{{ object.name }}
{% endblock %}
{% block content %}
<div id="accounting">
<p>
<a href="{{ url('accounting:bank_list') }}">{% trans %}Accounting{% endtrans %}</a> >
{{ object.name }}
</p>
<hr>
<h2>{% trans %}Bank account: {% endtrans %}{{ object.name }}</h2>
{% if user.is_in_group(pk=settings.SITH_GROUP_ACCOUNTING_ADMIN_ID) and not object.club_accounts.exists() %}
<a href="{{ url('accounting:bank_delete', b_account_id=object.id) }}">{% trans %}Delete{% endtrans %}</a>
{% endif %}
<h4>{% trans %}Infos{% endtrans %}</h4>
<ul>
<li><strong>{% trans %}IBAN: {% endtrans %}</strong>{{ object.iban }}</li>
<li><strong>{% trans %}Number: {% endtrans %}</strong>{{ object.number }}</li>
</ul>
<p><a href="{{ url('accounting:club_new') }}?parent={{ object.id }}">{% trans %}New club account{% endtrans %}</a></p>
<ul>
{% for c in object.club_accounts.all() %}
<li><a href="{{ url('accounting:club_details', c_account_id=c.id) }}">{{ c }}</a>
- <a href="{{ url('accounting:club_edit', c_account_id=c.id) }}">{% trans %}Edit{% endtrans %}</a>
{% if c.journals.count() == 0 %}
- <a href="{{ url('accounting:club_delete', c_account_id=c.id) }}">{% trans %}Delete{% endtrans %}</a>
{% endif %}
</li>
{% endfor %}
</ul>
</div>
{% endblock %}
@@ -0,0 +1,33 @@
{% extends "core/base.jinja" %}
{% block title %}
{% trans %}Bank account list{% endtrans %}
{% endblock %}
{% block content %}
<div id="accounting">
<h4>
{% trans %}Accounting{% endtrans %}
</h4>
{% if user.is_in_group(pk=settings.SITH_GROUP_ACCOUNTING_ADMIN_ID) %}
<p><a href="{{ url('accounting:simple_type_list') }}">{% trans %}Manage simplified types{% endtrans %}</a></p>
<p><a href="{{ url('accounting:type_list') }}">{% trans %}Manage accounting types{% endtrans %}</a></p>
<p><a href="{{ url('accounting:bank_new') }}">{% trans %}New bank account{% endtrans %}</a></p>
{% endif %}
{% if bankaccount_list %}
<h3>{% trans %}Bank account list{% endtrans %}</h3>
<ul>
{% for a in object_list %}
<li><a href="{{ url('accounting:bank_details', b_account_id=a.id) }}">{{ a }}</a>
- <a href="{{ url('accounting:bank_edit', b_account_id=a.id) }}">{% trans %}Edit{% endtrans %}</a>
</li>
{% endfor %}
</ul>
{% else %}
{% trans %}There is no accounts in this website.{% endtrans %}
{% endif %}
</div>
{% endblock %}
@@ -0,0 +1,68 @@
{% extends "core/base.jinja" %}
{% block title %}
{% trans %}Club account:{% endtrans %} {{ object.name }}
{% endblock %}
{% block content %}
<div id="accounting">
<p>
<a href="{{ url('accounting:bank_list') }}">{% trans %}Accounting{% endtrans %}</a> >
<a href="{{ url('accounting:bank_details', b_account_id=object.bank_account.id) }}">{{object.bank_account }}</a> >
{{ object }}
</p>
<hr>
<h2>{% trans %}Club account:{% endtrans %} {{ object.name }}</h2>
{% if user.is_root and not object.journals.exists() %}
<a href="{{ url('accounting:club_delete', c_account_id=object.id) }}">{% trans %}Delete{% endtrans %}</a>
{% endif %}
{% if user.is_in_group(pk=settings.SITH_GROUP_ACCOUNTING_ADMIN_ID) %}
<p><a href="{{ url('accounting:label_new') }}?parent={{ object.id }}">{% trans %}New label{% endtrans %}</a></p>
{% endif %}
<p><a href="{{ url('accounting:label_list', clubaccount_id=object.id) }}">{% trans %}Label list{% endtrans %}</a></p>
{% if not object.has_open_journal() %}
<p><a href="{{ url('accounting:journal_new') }}?parent={{ object.id }}">{% trans %}New journal{% endtrans %}</a></p>
{% else %}
<p>{% trans %}You can not create new journal while you still have one opened{% endtrans %}</p>
{% endif %}
<table>
<thead>
<tr>
<td>{% trans %}Name{% endtrans %}</td>
<td>{% trans %}Start{% endtrans %}</td>
<td>{% trans %}End{% endtrans %}</td>
<td>{% trans %}Amount{% endtrans %}</td>
<td>{% trans %}Effective amount{% endtrans %}</td>
<td>{% trans %}Closed{% endtrans %}</td>
<td>{% trans %}Actions{% endtrans %}</td>
</tr>
</thead>
<tbody>
{% for j in object.journals.all() %}
<tr>
<td>{{ j.name }}</td>
<td>{{ j.start_date }}</td>
{% if j.end_date %}
<td>{{ j.end_date }}</td>
{% else %}
<td> - </td>
{% endif %}
<td>{{ j.amount }} €</td>
<td>{{ j.effective_amount }} €</td>
{% if j.closed %}
<td>{% trans %}Yes{% endtrans %}</td>
{% else %}
<td>{% trans %}No{% endtrans %}</td>
{% endif %}
<td> <a href="{{ url('accounting:journal_details', j_id=j.id) }}">{% trans %}View{% endtrans %}</a>
<a href="{{ url('accounting:journal_edit', j_id=j.id) }}">{% trans %}Edit{% endtrans %}</a>
{% if user.is_in_group(pk=settings.SITH_GROUP_ACCOUNTING_ADMIN_ID) and j.operations.count() == 0 %}
<a href="{{ url('accounting:journal_delete', j_id=j.id) }}">{% trans %}Delete{% endtrans %}</a>
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endblock %}
@@ -0,0 +1,30 @@
{% extends "core/base.jinja" %}
{% block title %}
{% trans %}Company list{% endtrans %}
{% endblock %}
{% block content %}
<div id="accounting">
{% if user.is_root
or user.is_in_group(pk=settings.SITH_GROUP_ACCOUNTING_ADMIN_ID)
%}
<p><a href="{{ url('accounting:co_new') }}">{% trans %}Create new company{% endtrans %}</a></p>
{% endif %}
<br/>
<table>
<thead>
<tr>
<td>{% trans %}Companies{% endtrans %}</td>
</tr>
</thead>
<tbody>
{% for o in object_list %}
<tr>
<td><a href="{{ url('accounting:co_edit', co_id=o.id) }}">{{ o.get_display_name() }}</a></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endblock %}
@@ -0,0 +1,103 @@
{% extends "core/base.jinja" %}
{% block title %}
{% trans %}General journal:{% endtrans %} {{ object.name }}
{% endblock %}
{% block content %}
<div id="accounting">
<p>
<a href="{{ url('accounting:bank_list') }}">{% trans %}Accounting{% endtrans %}</a> >
<a href="{{ url('accounting:bank_details', b_account_id=object.club_account.bank_account.id) }}">{{object.club_account.bank_account }}</a> >
<a href="{{ url('accounting:club_details', c_account_id=object.club_account.id) }}">{{ object.club_account }}</a> >
{{ object.name }}
</p>
<hr>
<h2>{% trans %}General journal:{% endtrans %} {{ object.name }}</h2>
<p><a href="{{ url('accounting:label_new') }}?parent={{ object.club_account.id }}">{% trans %}New label{% endtrans %}</a></p>
<p><a href="{{ url('accounting:label_list', clubaccount_id=object.club_account.id) }}">{% trans %}Label list{% endtrans %}</a></p>
<p><a href="{{ url('accounting:co_list') }}">{% trans %}Company list{% endtrans %}</a></p>
<p><strong>{% trans %}Amount: {% endtrans %}</strong>{{ object.amount }} € -
<strong>{% trans %}Effective amount: {% endtrans %}</strong>{{ object.effective_amount }} €</p>
{% if object.closed %}
<p>{% trans %}Journal is closed, you can not create operation{% endtrans %}</p>
{% else %}
<p><a href="{{ url('accounting:op_new', j_id=object.id) }}">{% trans %}New operation{% endtrans %}</a></p>
</br>
{% endif %}
<div class="journal-table">
<table>
<thead>
<tr>
<td>{% trans %}Nb{% endtrans %}</td>
<td>{% trans %}Date{% endtrans %}</td>
<td>{% trans %}Label{% endtrans %}</td>
<td>{% trans %}Amount{% endtrans %}</td>
<td>{% trans %}Payment mode{% endtrans %}</td>
<td>{% trans %}Target{% endtrans %}</td>
<td>{% trans %}Code{% endtrans %}</td>
<td>{% trans %}Nature{% endtrans %}</td>
<td>{% trans %}Done{% endtrans %}</td>
<td>{% trans %}Comment{% endtrans %}</td>
<td>{% trans %}File{% endtrans %}</td>
<td>{% trans %}Actions{% endtrans %}</td>
<td>{% trans %}PDF{% endtrans %}</td>
</tr>
</thead>
<tbody>
{% for o in object.operations.all() %}
<tr>
<td>{{ o.number }}</td>
<td>{{ o.date }}</td>
<td>{{ o.label or "" }}</td>
{% if o.accounting_type.movement_type == "DEBIT" %}
<td class="neg-amount">&nbsp;{{ o.amount }}&nbsp;€</td>
{% else %}
<td class="pos-amount">&nbsp;{{ o.amount }}&nbsp;€</td>
{% endif %}
<td>{{ o.get_mode_display() }}</td>
{% if o.target_type == "OTHER" %}
<td>{{ o.target_label }}</td>
{% else %}
<td><a href="{{ o.target.get_absolute_url() }}">{{ o.target.get_display_name() }}</a></td>
{% endif %}
<td>{{ o.accounting_type.code }}</td>
<td>{{ o.accounting_type.label }}</td>
{% if o.done %}
<td>{% trans %}Yes{% endtrans %}</td>
{% else %}
<td>{% trans %}No{% endtrans %}</td>
{% endif %}
<td>{{ o.remark }}
{% if not o.linked_operation and o.target_type == "ACCOUNT" and not o.target.has_open_journal() %}
<p><strong>
{% trans %}Warning: this operation has no linked operation because the targeted club account has no opened journal.{% endtrans %}
</strong></p>
<p><strong>
{% trans url=o.target.get_absolute_url() %}Open a journal in <a href="{{ url }}">this club account</a>, then save this operation again to make the linked operation.{% endtrans %}
</strong></p>
{% endif %}
</td>
{% if o.invoice %}
<td><a href="{{ url('core:download', file_id=o.invoice.id) }}">{{ o.invoice.name }}</a></td>
{% else %}
<td>-</td>
{% endif %}
<td>
{%
if o.journal.club_account.bank_account.name not in ["AE TI", "TI"]
or user.is_in_group(pk=settings.SITH_GROUP_ACCOUNTING_ADMIN_ID)
%}
{% if not o.journal.closed %}
<a href="{{ url('accounting:op_edit', op_id=o.id) }}">{% trans %}Edit{% endtrans %}</a>
{% endif %}
{% endif %}
</td>
<td><a href="{{ url('accounting:op_pdf', op_id=o.id) }}">{% trans %}Generate{% endtrans %}</a></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endblock %}
@@ -0,0 +1,33 @@
{% extends "core/base.jinja" %}
{% block title %}
{% trans %}General journal:{% endtrans %} {{ object.name }}
{% endblock %}
{% block content %}
<div id="accounting">
<h3>{% trans %}Accounting statement: {% endtrans %} {{ object.name }}</h3>
<table>
<thead>
<tr>
<td>{% trans %}Operation type{% endtrans %}</td>
<td>{% trans %}Sum{% endtrans %}</td>
</tr>
</thead>
<tbody>
{% for k,v in statement.items() %}
<tr>
<td>{{ k }}</td>
<td>{{ "%.2f" % v }}</td>
</tr>
{% endfor %}
</tbody>
</table>
<p><strong>{% trans %}Amount: {% endtrans %}</strong>{{ "%.2f" % object.amount }} €</p>
<p><strong>{% trans %}Effective amount: {% endtrans %}</strong>{{ "%.2f" %object.effective_amount }} €</p>
</div>
{% endblock %}
@@ -0,0 +1,57 @@
{% extends "core/base.jinja" %}
{% block title %}
{% trans %}General journal:{% endtrans %} {{ object.name }}
{% endblock %}
{% macro display_tables(dict) %}
<div id="accounting">
<h6>{% trans %}Credit{% endtrans %}</h6>
<table>
<thead>
<tr>
<td>{% trans %}Nature of operation{% endtrans %}</td>
<td>{% trans %}Sum{% endtrans %}</td>
</tr>
</thead>
<tbody>
{% for k,v in dict['CREDIT'].items() %}
<tr>
<td>{{ k }}</td>
<td>{{ "%.2f" % v }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% trans %}Total: {% endtrans %}{{ "%.2f" % dict['CREDIT_sum'] }}
<h6>{% trans %}Debit{% endtrans %}</h6>
<table>
<thead>
<tr>
<td>{% trans %}Nature of operation{% endtrans %}</td>
<td>{% trans %}Sum{% endtrans %}</td>
</tr>
</thead>
<tbody>
{% for k,v in dict['DEBIT'].items() %}
<tr>
<td>{{ k }}</td>
<td>{{ "%.2f" % v }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% trans %}Total: {% endtrans %}{{ "%.2f" % dict['DEBIT_sum'] }}
{% endmacro %}
{% block content %}
<h3>{% trans %}Statement by nature: {% endtrans %} {{ object.name }}</h3>
{% for k,v in statement.items() %}
<h4 style="background: lightblue; padding: 4px;">{{ k }} : {{ "%.2f" % (v['CREDIT_sum'] - v['DEBIT_sum']) }}</h4>
{{ display_tables(v) }}
<hr>
{% endfor %}
</div>
{% endblock %}
@@ -0,0 +1,68 @@
{% extends "core/base.jinja" %}
{% block title %}
{% trans %}General journal:{% endtrans %} {{ object.name }}
{% endblock %}
{% block content %}
<div id="accounting">
<h3>{% trans %}Statement by person: {% endtrans %} {{ object.name }}</h3>
<h4>{% trans %}Credit{% endtrans %}</h4>
<table>
<thead>
<tr>
<td>{% trans %}Target of the operation{% endtrans %}</td>
<td>{% trans %}Sum{% endtrans %}</td>
</tr>
</thead>
<tbody>
{% for key in credit_statement.keys() %}
<tr>
{% if key.target_type == "OTHER" %}
<td>{{ o.target_label }}</td>
{% elif key %}
<td><a href="{{ key.get_absolute_url() }}">{{ key.get_display_name() }}</a></td>
{% else %}
<td></td>
{% endif %}
<td>{{ "%.2f" % credit_statement[key] }}</td>
</tr>
{% endfor %}
</tbody>
</table>
<p>Total : {{ "%.2f" % total_credit }}</p>
<h4>{% trans %}Debit{% endtrans %}</h4>
<table>
<thead>
<tr>
<td>{% trans %}Target of the operation{% endtrans %}</td>
<td>{% trans %}Sum{% endtrans %}</td>
</tr>
</thead>
<tbody>
{% for key in debit_statement.keys() %}
<tr>
{% if key.target_type == "OTHER" %}
<td>{{ o.target_label }}</td>
{% elif key %}
<td><a href="{{ key.get_absolute_url() }}">{{ key.get_display_name() }}</a></td>
{% else %}
<td></td>
{% endif %}
<td>{{ "%.2f" % debit_statement[key] }}</td>
</tr>
{% endfor %}
</tbody>
</table>
<p>Total : {{ "%.2f" % total_debit }}</p>
</div>
{% endblock %}
@@ -0,0 +1,36 @@
{% extends "core/base.jinja" %}
{% block title %}
{% trans %}Label list{% endtrans %}
{% endblock %}
{% block content %}
<div id="accounting">
<p>
<a href="{{ url('accounting:bank_list') }}">{% trans %}Accounting{% endtrans %}</a> >
<a href="{{ url('accounting:bank_details', b_account_id=object.bank_account.id) }}">{{object.bank_account }}</a> >
<a href="{{ url('accounting:club_details', c_account_id=object.id) }}">{{ object }}</a>
</p>
<hr>
<p><a href="{{ url('accounting:club_details', c_account_id=object.id) }}">{% trans %}Back to club account{% endtrans %}</a></p>
{% if user.is_in_group(pk=settings.SITH_GROUP_ACCOUNTING_ADMIN_ID) %}
<p><a href="{{ url('accounting:label_new') }}?parent={{ object.id }}">{% trans %}New label{% endtrans %}</a></p>
{% endif %}
{% if object.labels.all() %}
<h3>{% trans %}Label list{% endtrans %}</h3>
<ul>
{% for l in object.labels.all() %}
<li><a href="{{ url('accounting:label_edit', label_id=l.id) }}">{{ l }}</a>
{% if user.is_in_group(pk=settings.SITH_GROUP_ACCOUNTING_ADMIN_ID) %}
-
<a href="{{ url('accounting:label_delete', label_id=l.id) }}">{% trans %}Delete{% endtrans %}</a>
{% endif %}
</li>
{% endfor %}
</ul>
{% else %}
{% trans %}There is no label in this club account.{% endtrans %}
{% endif %}
</div>
{% endblock %}
@@ -0,0 +1,123 @@
{% extends "core/base.jinja" %}
{% block title %}
{% trans %}Edit operation{% endtrans %}
{% endblock %}
{% block content %}
<div id="accounting">
<p>
<a href="{{ url('accounting:bank_list') }}">{% trans %}Accounting{% endtrans %}</a> >
<a href="{{ url('accounting:bank_details', b_account_id=object.club_account.bank_account.id) }}">{{object.club_account.bank_account }}</a> >
<a href="{{ url('accounting:club_details', c_account_id=object.club_account.id) }}">{{ object.club_account }}</a> >
<a href="{{ url('accounting:journal_details', j_id=object.id) }}">{{ object.name }}</a> >
{% trans %}Edit operation{% endtrans %}
</p>
<hr>
<h2>{% trans %}Edit operation{% endtrans %}</h2>
<form action="" method="post">
{% csrf_token %}
{{ form.non_field_errors() }}
{{ form.journal }}
{{ form.target_id }}
<p>{{ form.amount.errors }}<label for="{{ form.amount.name }}">{{ form.amount.label }}</label> {{ form.amount }}</p>
<p>{{ form.remark.errors }}<label for="{{ form.remark.name }}">{{ form.remark.label }}</label> {{ form.remark }}</p>
<br />
<strong>{% trans %}Warning: if you select <em>Account</em>, the opposite operation will be created in the target account. If you don't want that, select <em>Club</em> instead of <em>Account</em>.{% endtrans %}</strong>
<p>{{ form.target_type.errors }}<label for="{{ form.target_type.name }}">{{ form.target_type.label }}</label> {{ form.target_type }}</p>
{{ form.user }}
{{ form.club }}
{{ form.club_account }}
{{ form.company }}
{{ form.target_label }}
<span id="id_need_link_full"><label>{{ form.need_link.label }}</label> {{ form.need_link }}</span>
<p>{{ form.date.errors }}<label for="{{ form.date.name }}">{{ form.date.label }}</label> {{ form.date }}</p>
<p>{{ form.mode.errors }}<label for="{{ form.mode.name }}">{{ form.mode.label }}</label> {{ form.mode }}</p>
<p>{{ form.cheque_number.errors }}<label for="{{ form.cheque_number.name }}">{{ form.cheque_number.label }}</label> {{
form.cheque_number }}</p>
<p>{{ form.invoice.errors }}<label for="{{ form.invoice.name }}">{{ form.invoice.label }}</label> {{ form.invoice }}</p>
<p>{{ form.simpleaccounting_type.errors }}<label for="{{ form.simpleaccounting_type.name }}">{{
form.simpleaccounting_type.label }}</label> {{ form.simpleaccounting_type }}</p>
<p>{{ form.accounting_type.errors }}<label for="{{ form.accounting_type.name }}">{{ form.accounting_type.label }}</label> {{
form.accounting_type }}</p>
<p>{{ form.label.errors }}<label for="{{ form.label.name }}">{{ form.label.label }}</label> {{ form.label }}</p>
<p>{{ form.done.errors }}<label for="{{ form.done.name }}">{{ form.done.label }}</label> {{ form.done }}</p>
{% if form.instance.linked_operation %}
{% set obj = form.instance.linked_operation %}
<p><strong>{% trans %}Linked operation:{% endtrans %}</strong><br>
<a href="{{ url('accounting:bank_details', b_account_id=obj.journal.club_account.bank_account.id) }}">
{{obj.journal.club_account.bank_account }}</a> >
<a href="{{ url('accounting:club_details', c_account_id=obj.journal.club_account.id) }}">{{ obj.journal.club_account }}</a> >
<a href="{{ url('accounting:journal_details', j_id=obj.journal.id) }}">{{ obj.journal }}</a> >
{{ obj.number }}
</p>
{% endif %}
<p><input type="submit" value="{% trans %}Save{% endtrans %}" /></p>
</form>
{% endblock %}
{% block script %}
{{ super() }}
<script>
$( function() {
var target_type = $('#id_target_type');
var user = $('user-ajax-select');
var club = $('club-ajax-select');
var club_account = $('club-account-ajax-select');
var company = $('company-ajax-select');
var other = $('#id_target_label');
var need_link = $('#id_need_link_full');
function update_targets () {
if (target_type.val() == "USER") {
console.log(user);
user.show();
club.hide();
club_account.hide();
company.hide();
other.hide();
need_link.hide();
} else if (target_type.val() == "ACCOUNT") {
club_account.show();
need_link.show();
user.hide();
club.hide();
company.hide();
other.hide();
} else if (target_type.val() == "CLUB") {
club.show();
user.hide();
club_account.hide();
company.hide();
other.hide();
need_link.hide();
} else if (target_type.val() == "COMPANY") {
company.show();
user.hide();
club_account.hide();
club.hide();
other.hide();
need_link.hide();
} else if (target_type.val() == "OTHER") {
other.show();
user.hide();
club.hide();
club_account.hide();
company.hide();
need_link.hide();
} else {
company.hide();
user.hide();
club_account.hide();
club.hide();
other.hide();
need_link.hide();
}
}
update_targets();
target_type.change(update_targets);
} );
</script>
</div>
{% endblock %}
@@ -0,0 +1,16 @@
{% extends "core/base.jinja" %}
{% block title %}
{% trans %}Refound account{% endtrans %}
{% endblock %}
{% block content %}
<div id="accounting">
<h3>{% trans %}Refound account{% endtrans %}</h3>
<form action="" method="post">
{% csrf_token %}
{{ form.as_p() }}
<p><input type="submit" value="{% trans %}Refound{% endtrans %}" /></p>
</form>
</div>
{% endblock %}
@@ -0,0 +1,27 @@
{% extends "core/base.jinja" %}
{% block title %}
{% trans %}Simplified type list{% endtrans %}
{% endblock %}
{% block content %}
<div id="accounting">
<p>
<a href="{{ url('accounting:bank_list') }}">{% trans %}Accounting{% endtrans %}</a> >
{% trans %}Simplified types{% endtrans %}
</p>
<hr>
<p><a href="{{ url('accounting:simple_type_new') }}">{% trans %}New simplified type{% endtrans %}</a></p>
{% if simplifiedaccountingtype_list %}
<h3>{% trans %}Simplified type list{% endtrans %}</h3>
<ul>
{% for a in simplifiedaccountingtype_list %}
<li><a href="{{ url('accounting:simple_type_edit', type_id=a.id) }}">{{ a }}</a></li>
{% endfor %}
</ul>
{% else %}
{% trans %}There is no types in this website.{% endtrans %}
{% endif %}
</div>
{% endblock %}
+292
View File
@@ -0,0 +1,292 @@
#
# Copyright 2023 © AE UTBM
# ae@utbm.fr / ae.info@utbm.fr
#
# This file is part of the website of the UTBM Student Association (AE UTBM),
# https://ae.utbm.fr.
#
# You can find the source code of the website at https://github.com/ae-utbm/sith
#
# LICENSED UNDER THE GNU GENERAL PUBLIC LICENSE VERSION 3 (GPLv3)
# SEE : https://raw.githubusercontent.com/ae-utbm/sith/master/LICENSE
# OR WITHIN THE LOCAL FILE "LICENSE"
#
#
from datetime import date, timedelta
from django.test import TestCase
from django.urls import reverse
from accounting.models import (
AccountingType,
GeneralJournal,
Label,
Operation,
SimplifiedAccountingType,
)
from core.models import User
class TestRefoundAccount(TestCase):
@classmethod
def setUpTestData(cls):
cls.skia = User.objects.get(username="skia")
# reffil skia's account
cls.skia.customer.amount = 800
cls.skia.customer.save()
cls.refound_account_url = reverse("accounting:refound_account")
def test_permission_denied(self):
self.client.force_login(User.objects.get(username="guy"))
response_post = self.client.post(
self.refound_account_url, {"user": self.skia.id}
)
response_get = self.client.get(self.refound_account_url)
assert response_get.status_code == 403
assert response_post.status_code == 403
def test_root_granteed(self):
self.client.force_login(User.objects.get(username="root"))
response = self.client.post(self.refound_account_url, {"user": self.skia.id})
self.assertRedirects(response, self.refound_account_url)
self.skia.refresh_from_db()
response = self.client.get(self.refound_account_url)
assert response.status_code == 200
assert '<form action="" method="post">' in str(response.content)
assert self.skia.customer.amount == 0
def test_comptable_granteed(self):
self.client.force_login(User.objects.get(username="comptable"))
response = self.client.post(self.refound_account_url, {"user": self.skia.id})
self.assertRedirects(response, self.refound_account_url)
self.skia.refresh_from_db()
response = self.client.get(self.refound_account_url)
assert response.status_code == 200
assert '<form action="" method="post">' in str(response.content)
assert self.skia.customer.amount == 0
class TestJournal(TestCase):
@classmethod
def setUpTestData(cls):
cls.journal = GeneralJournal.objects.get(id=1)
def test_permission_granted(self):
self.client.force_login(User.objects.get(username="comptable"))
response_get = self.client.get(
reverse("accounting:journal_details", args=[self.journal.id])
)
assert response_get.status_code == 200
assert "<td>M\\xc3\\xa9thode de paiement</td>" in str(response_get.content)
def test_permission_not_granted(self):
self.client.force_login(User.objects.get(username="skia"))
response_get = self.client.get(
reverse("accounting:journal_details", args=[self.journal.id])
)
assert response_get.status_code == 403
assert "<td>M\xc3\xa9thode de paiement</td>" not in str(response_get.content)
class TestOperation(TestCase):
def setUp(self):
self.tomorrow_formatted = (date.today() + timedelta(days=1)).strftime(
"%d/%m/%Y"
)
self.journal = GeneralJournal.objects.filter(id=1).first()
self.skia = User.objects.filter(username="skia").first()
at = AccountingType(
code="443", label="Ce code n'existe pas", movement_type="CREDIT"
)
at.save()
label = Label.objects.create(club_account=self.journal.club_account, name="bob")
self.client.force_login(User.objects.get(username="comptable"))
self.op1 = Operation(
journal=self.journal,
date=date.today(),
amount=1,
remark="Test bilan",
mode="CASH",
done=True,
label=label,
accounting_type=at,
target_type="USER",
target_id=self.skia.id,
)
self.op1.save()
self.op2 = Operation(
journal=self.journal,
date=date.today(),
amount=2,
remark="Test bilan",
mode="CASH",
done=True,
label=label,
accounting_type=at,
target_type="USER",
target_id=self.skia.id,
)
self.op2.save()
def test_new_operation(self):
at = AccountingType.objects.get(code="604")
response = self.client.post(
reverse("accounting:op_new", args=[self.journal.id]),
{
"amount": 30,
"remark": "Un gros test",
"journal": self.journal.id,
"target_type": "OTHER",
"target_id": "",
"target_label": "Le fantome de la nuit",
"date": self.tomorrow_formatted,
"mode": "CASH",
"cheque_number": "",
"invoice": "",
"simpleaccounting_type": "",
"accounting_type": at.id,
"label": "",
"done": False,
},
)
self.assertFalse(response.status_code == 403)
self.assertTrue(
self.journal.operations.filter(
target_label="Le fantome de la nuit"
).exists()
)
response_get = self.client.get(
reverse("accounting:journal_details", args=[self.journal.id])
)
self.assertTrue("<td>Le fantome de la nuit</td>" in str(response_get.content))
def test_bad_new_operation(self):
AccountingType.objects.get(code="604")
response = self.client.post(
reverse("accounting:op_new", args=[self.journal.id]),
{
"amount": 30,
"remark": "Un gros test",
"journal": self.journal.id,
"target_type": "OTHER",
"target_id": "",
"target_label": "Le fantome de la nuit",
"date": self.tomorrow_formatted,
"mode": "CASH",
"cheque_number": "",
"invoice": "",
"simpleaccounting_type": "",
"accounting_type": "",
"label": "",
"done": False,
},
)
self.assertTrue(
"Vous devez fournir soit un type comptable simplifi\\xc3\\xa9 ou un type comptable standard"
in str(response.content)
)
def test_new_operation_not_authorized(self):
self.client.force_login(self.skia)
at = AccountingType.objects.filter(code="604").first()
response = self.client.post(
reverse("accounting:op_new", args=[self.journal.id]),
{
"amount": 30,
"remark": "Un gros test",
"journal": self.journal.id,
"target_type": "OTHER",
"target_id": "",
"target_label": "Le fantome du jour",
"date": self.tomorrow_formatted,
"mode": "CASH",
"cheque_number": "",
"invoice": "",
"simpleaccounting_type": "",
"accounting_type": at.id,
"label": "",
"done": False,
},
)
self.assertTrue(response.status_code == 403)
self.assertFalse(
self.journal.operations.filter(target_label="Le fantome du jour").exists()
)
def test_operation_simple_accounting(self):
sat = SimplifiedAccountingType.objects.all().first()
response = self.client.post(
reverse("accounting:op_new", args=[self.journal.id]),
{
"amount": 23,
"remark": "Un gros test",
"journal": self.journal.id,
"target_type": "OTHER",
"target_id": "",
"target_label": "Le fantome de l'aurore",
"date": self.tomorrow_formatted,
"mode": "CASH",
"cheque_number": "",
"invoice": "",
"simpleaccounting_type": sat.id,
"accounting_type": "",
"label": "",
"done": False,
},
)
assert response.status_code != 403
assert self.journal.operations.filter(amount=23).exists()
response_get = self.client.get(
reverse("accounting:journal_details", args=[self.journal.id])
)
assert "<td>Le fantome de l&#39;aurore</td>" in str(response_get.content)
assert (
self.journal.operations.filter(amount=23)
.values("accounting_type")
.first()["accounting_type"]
== AccountingType.objects.filter(code=6).values("id").first()["id"]
)
def test_nature_statement(self):
response = self.client.get(
reverse("accounting:journal_nature_statement", args=[self.journal.id])
)
self.assertContains(response, "bob (Troll Penché) : 3.00", status_code=200)
def test_person_statement(self):
response = self.client.get(
reverse("accounting:journal_person_statement", args=[self.journal.id])
)
self.assertContains(response, "Total : 5575.72", status_code=200)
self.assertContains(response, "Total : 71.42")
content = response.content.decode()
self.assertInHTML(
"""<td><a href="/user/1/">S&#39; Kia</a></td><td>3.00</td>""", content
)
self.assertInHTML(
"""<td><a href="/user/1/">S&#39; Kia</a></td><td>823.00</td>""", content
)
def test_accounting_statement(self):
response = self.client.get(
reverse("accounting:journal_accounting_statement", args=[self.journal.id])
)
assert response.status_code == 200
self.assertInHTML(
"""
<tr>
<td>443 - Crédit - Ce code n&#39;existe pas</td>
<td>3.00</td>
</tr>""",
response.content.decode(),
)
self.assertContains(
response,
"""
<p><strong>Montant : </strong>-5504.30 €</p>
<p><strong>Montant effectif: </strong>-5504.30 €</p>""",
)
+173
View File
@@ -0,0 +1,173 @@
#
# Copyright 2023 © AE UTBM
# ae@utbm.fr / ae.info@utbm.fr
#
# This file is part of the website of the UTBM Student Association (AE UTBM),
# https://ae.utbm.fr.
#
# You can find the source code of the website at https://github.com/ae-utbm/sith
#
# LICENSED UNDER THE GNU GENERAL PUBLIC LICENSE VERSION 3 (GPLv3)
# SEE : https://raw.githubusercontent.com/ae-utbm/sith/master/LICENSE
# OR WITHIN THE LOCAL FILE "LICENSE"
#
#
from django.urls import path
from accounting.views import (
AccountingTypeCreateView,
AccountingTypeEditView,
AccountingTypeListView,
BankAccountCreateView,
BankAccountDeleteView,
BankAccountDetailView,
BankAccountEditView,
BankAccountListView,
ClubAccountCreateView,
ClubAccountDeleteView,
ClubAccountDetailView,
ClubAccountEditView,
CompanyCreateView,
CompanyEditView,
CompanyListView,
JournalAccountingStatementView,
JournalCreateView,
JournalDeleteView,
JournalDetailView,
JournalEditView,
JournalNatureStatementView,
JournalPersonStatementView,
LabelCreateView,
LabelDeleteView,
LabelEditView,
LabelListView,
OperationCreateView,
OperationEditView,
OperationPDFView,
RefoundAccountView,
SimplifiedAccountingTypeCreateView,
SimplifiedAccountingTypeEditView,
SimplifiedAccountingTypeListView,
)
urlpatterns = [
# Accounting types
path(
"simple_type/",
SimplifiedAccountingTypeListView.as_view(),
name="simple_type_list",
),
path(
"simple_type/create/",
SimplifiedAccountingTypeCreateView.as_view(),
name="simple_type_new",
),
path(
"simple_type/<int:type_id>/edit/",
SimplifiedAccountingTypeEditView.as_view(),
name="simple_type_edit",
),
# Accounting types
path("type/", AccountingTypeListView.as_view(), name="type_list"),
path("type/create/", AccountingTypeCreateView.as_view(), name="type_new"),
path(
"type/<int:type_id>/edit/",
AccountingTypeEditView.as_view(),
name="type_edit",
),
# Bank accounts
path("", BankAccountListView.as_view(), name="bank_list"),
path("bank/create", BankAccountCreateView.as_view(), name="bank_new"),
path(
"bank/<int:b_account_id>/",
BankAccountDetailView.as_view(),
name="bank_details",
),
path(
"bank/<int:b_account_id>/edit/",
BankAccountEditView.as_view(),
name="bank_edit",
),
path(
"bank/<int:b_account_id>/delete/",
BankAccountDeleteView.as_view(),
name="bank_delete",
),
# Club accounts
path("club/create/", ClubAccountCreateView.as_view(), name="club_new"),
path(
"club/<int:c_account_id>/",
ClubAccountDetailView.as_view(),
name="club_details",
),
path(
"club/<int:c_account_id>/edit/",
ClubAccountEditView.as_view(),
name="club_edit",
),
path(
"club/<int:c_account_id>/delete/",
ClubAccountDeleteView.as_view(),
name="club_delete",
),
# Journals
path("journal/create/", JournalCreateView.as_view(), name="journal_new"),
path(
"journal/<int:j_id>/",
JournalDetailView.as_view(),
name="journal_details",
),
path(
"journal/<int:j_id>/edit/",
JournalEditView.as_view(),
name="journal_edit",
),
path(
"journal/<int:j_id>/delete/",
JournalDeleteView.as_view(),
name="journal_delete",
),
path(
"journal/<int:j_id>/statement/nature/",
JournalNatureStatementView.as_view(),
name="journal_nature_statement",
),
path(
"journal/<int:j_id>/statement/person/",
JournalPersonStatementView.as_view(),
name="journal_person_statement",
),
path(
"journal/<int:j_id>/statement/accounting/",
JournalAccountingStatementView.as_view(),
name="journal_accounting_statement",
),
# Operations
path(
"operation/create/<int:j_id>/",
OperationCreateView.as_view(),
name="op_new",
),
path("operation/<int:op_id>/", OperationEditView.as_view(), name="op_edit"),
path("operation/<int:op_id>/pdf/", OperationPDFView.as_view(), name="op_pdf"),
# Companies
path("company/list/", CompanyListView.as_view(), name="co_list"),
path("company/create/", CompanyCreateView.as_view(), name="co_new"),
path("company/<int:co_id>/", CompanyEditView.as_view(), name="co_edit"),
# Labels
path("label/new/", LabelCreateView.as_view(), name="label_new"),
path(
"label/<int:clubaccount_id>/",
LabelListView.as_view(),
name="label_list",
),
path("label/<int:label_id>/edit/", LabelEditView.as_view(), name="label_edit"),
path(
"label/<int:label_id>/delete/",
LabelDeleteView.as_view(),
name="label_delete",
),
# User account
path("refound/account/", RefoundAccountView.as_view(), name="refound_account"),
]
+893
View File
@@ -0,0 +1,893 @@
#
# Copyright 2023 © AE UTBM
# ae@utbm.fr / ae.info@utbm.fr
#
# This file is part of the website of the UTBM Student Association (AE UTBM),
# https://ae.utbm.fr.
#
# You can find the source code of the website at https://github.com/ae-utbm/sith
#
# LICENSED UNDER THE GNU GENERAL PUBLIC LICENSE VERSION 3 (GPLv3)
# SEE : https://raw.githubusercontent.com/ae-utbm/sith/master/LICENSE
# OR WITHIN THE LOCAL FILE "LICENSE"
#
#
import collections
from django import forms
from django.conf import settings
from django.core.exceptions import PermissionDenied, ValidationError
from django.db import transaction
from django.db.models import Sum
from django.forms import HiddenInput
from django.forms.models import modelform_factory
from django.http import HttpResponse
from django.urls import reverse, reverse_lazy
from django.utils.translation import gettext_lazy as _
from django.views.generic import DetailView, ListView
from django.views.generic.edit import CreateView, DeleteView, FormView, UpdateView
from accounting.models import (
AccountingType,
BankAccount,
ClubAccount,
Company,
GeneralJournal,
Label,
Operation,
SimplifiedAccountingType,
)
from accounting.widgets.select import (
AutoCompleteSelectClubAccount,
AutoCompleteSelectCompany,
)
from club.models import Club
from club.widgets.select import AutoCompleteSelectClub
from core.models import User
from core.views import (
CanCreateMixin,
CanEditMixin,
CanEditPropMixin,
CanViewMixin,
TabedViewMixin,
)
from core.views.forms import SelectDate, SelectFile
from core.views.widgets.select import AutoCompleteSelectUser
from counter.models import Counter, Product, Selling
# Main accounting view
class BankAccountListView(CanViewMixin, ListView):
"""A list view for the admins."""
model = BankAccount
template_name = "accounting/bank_account_list.jinja"
ordering = ["name"]
# Simplified accounting types
class SimplifiedAccountingTypeListView(CanViewMixin, ListView):
"""A list view for the admins."""
model = SimplifiedAccountingType
template_name = "accounting/simplifiedaccountingtype_list.jinja"
class SimplifiedAccountingTypeEditView(CanViewMixin, UpdateView):
"""An edit view for the admins."""
model = SimplifiedAccountingType
pk_url_kwarg = "type_id"
fields = ["label", "accounting_type"]
template_name = "core/edit.jinja"
class SimplifiedAccountingTypeCreateView(CanCreateMixin, CreateView):
"""Create an accounting type (for the admins)."""
model = SimplifiedAccountingType
fields = ["label", "accounting_type"]
template_name = "core/create.jinja"
# Accounting types
class AccountingTypeListView(CanViewMixin, ListView):
"""A list view for the admins."""
model = AccountingType
template_name = "accounting/accountingtype_list.jinja"
class AccountingTypeEditView(CanViewMixin, UpdateView):
"""An edit view for the admins."""
model = AccountingType
pk_url_kwarg = "type_id"
fields = ["code", "label", "movement_type"]
template_name = "core/edit.jinja"
class AccountingTypeCreateView(CanCreateMixin, CreateView):
"""Create an accounting type (for the admins)."""
model = AccountingType
fields = ["code", "label", "movement_type"]
template_name = "core/create.jinja"
# BankAccount views
class BankAccountEditView(CanViewMixin, UpdateView):
"""An edit view for the admins."""
model = BankAccount
pk_url_kwarg = "b_account_id"
fields = ["name", "iban", "number", "club"]
template_name = "core/edit.jinja"
class BankAccountDetailView(CanViewMixin, DetailView):
"""A detail view, listing every club account."""
model = BankAccount
pk_url_kwarg = "b_account_id"
template_name = "accounting/bank_account_details.jinja"
class BankAccountCreateView(CanCreateMixin, CreateView):
"""Create a bank account (for the admins)."""
model = BankAccount
fields = ["name", "club", "iban", "number"]
template_name = "core/create.jinja"
class BankAccountDeleteView(
CanEditPropMixin, DeleteView
): # TODO change Delete to Close
"""Delete a bank account (for the admins)."""
model = BankAccount
pk_url_kwarg = "b_account_id"
template_name = "core/delete_confirm.jinja"
success_url = reverse_lazy("accounting:bank_list")
# ClubAccount views
class ClubAccountEditView(CanViewMixin, UpdateView):
"""An edit view for the admins."""
model = ClubAccount
pk_url_kwarg = "c_account_id"
fields = ["name", "club", "bank_account"]
template_name = "core/edit.jinja"
class ClubAccountDetailView(CanViewMixin, DetailView):
"""A detail view, listing every journal."""
model = ClubAccount
pk_url_kwarg = "c_account_id"
template_name = "accounting/club_account_details.jinja"
class ClubAccountCreateView(CanCreateMixin, CreateView):
"""Create a club account (for the admins)."""
model = ClubAccount
fields = ["name", "club", "bank_account"]
template_name = "core/create.jinja"
def get_initial(self):
ret = super().get_initial()
if "parent" in self.request.GET:
obj = BankAccount.objects.filter(id=int(self.request.GET["parent"])).first()
if obj is not None:
ret["bank_account"] = obj.id
return ret
class ClubAccountDeleteView(
CanEditPropMixin, DeleteView
): # TODO change Delete to Close
"""Delete a club account (for the admins)."""
model = ClubAccount
pk_url_kwarg = "c_account_id"
template_name = "core/delete_confirm.jinja"
success_url = reverse_lazy("accounting:bank_list")
# Journal views
class JournalTabsMixin(TabedViewMixin):
def get_tabs_title(self):
return _("Journal")
def get_list_of_tabs(self):
return [
{
"url": reverse(
"accounting:journal_details", kwargs={"j_id": self.object.id}
),
"slug": "journal",
"name": _("Journal"),
},
{
"url": reverse(
"accounting:journal_nature_statement",
kwargs={"j_id": self.object.id},
),
"slug": "nature_statement",
"name": _("Statement by nature"),
},
{
"url": reverse(
"accounting:journal_person_statement",
kwargs={"j_id": self.object.id},
),
"slug": "person_statement",
"name": _("Statement by person"),
},
{
"url": reverse(
"accounting:journal_accounting_statement",
kwargs={"j_id": self.object.id},
),
"slug": "accounting_statement",
"name": _("Accounting statement"),
},
]
class JournalCreateView(CanCreateMixin, CreateView):
"""Create a general journal."""
model = GeneralJournal
form_class = modelform_factory(
GeneralJournal,
fields=["name", "start_date", "club_account"],
widgets={"start_date": SelectDate},
)
template_name = "core/create.jinja"
def get_initial(self):
ret = super().get_initial()
if "parent" in self.request.GET:
obj = ClubAccount.objects.filter(id=int(self.request.GET["parent"])).first()
if obj is not None:
ret["club_account"] = obj.id
return ret
class JournalDetailView(JournalTabsMixin, CanViewMixin, DetailView):
"""A detail view, listing every operation."""
model = GeneralJournal
pk_url_kwarg = "j_id"
template_name = "accounting/journal_details.jinja"
current_tab = "journal"
class JournalEditView(CanEditMixin, UpdateView):
"""Update a general journal."""
model = GeneralJournal
pk_url_kwarg = "j_id"
fields = ["name", "start_date", "end_date", "club_account", "closed"]
template_name = "core/edit.jinja"
class JournalDeleteView(CanEditPropMixin, DeleteView):
"""Delete a club account (for the admins)."""
model = GeneralJournal
pk_url_kwarg = "j_id"
template_name = "core/delete_confirm.jinja"
success_url = reverse_lazy("accounting:club_details")
def dispatch(self, request, *args, **kwargs):
self.object = self.get_object()
if self.object.operations.count() == 0:
return super().dispatch(request, *args, **kwargs)
else:
raise PermissionDenied
# Operation views
class OperationForm(forms.ModelForm):
class Meta:
model = Operation
fields = [
"amount",
"remark",
"journal",
"target_type",
"target_id",
"target_label",
"date",
"mode",
"cheque_number",
"invoice",
"simpleaccounting_type",
"accounting_type",
"label",
"done",
]
widgets = {
"journal": HiddenInput,
"target_id": HiddenInput,
"date": SelectDate,
"invoice": SelectFile,
}
user = forms.ModelChoiceField(
help_text=None,
required=False,
widget=AutoCompleteSelectUser,
queryset=User.objects.all(),
)
club_account = forms.ModelChoiceField(
help_text=None,
required=False,
widget=AutoCompleteSelectClubAccount,
queryset=ClubAccount.objects.all(),
)
club = forms.ModelChoiceField(
help_text=None,
required=False,
widget=AutoCompleteSelectClub,
queryset=Club.objects.all(),
)
company = forms.ModelChoiceField(
help_text=None,
required=False,
widget=AutoCompleteSelectCompany,
queryset=Company.objects.all(),
)
need_link = forms.BooleanField(
label=_("Link this operation to the target account"),
required=False,
initial=False,
)
def __init__(self, *args, **kwargs):
club_account = kwargs.pop("club_account", None)
super().__init__(*args, **kwargs)
if club_account:
self.fields["label"].queryset = club_account.labels.order_by("name").all()
if self.instance.target_type == "USER":
self.fields["user"].initial = self.instance.target_id
elif self.instance.target_type == "ACCOUNT":
self.fields["club_account"].initial = self.instance.target_id
elif self.instance.target_type == "CLUB":
self.fields["club"].initial = self.instance.target_id
elif self.instance.target_type == "COMPANY":
self.fields["company"].initial = self.instance.target_id
def clean(self):
self.cleaned_data = super().clean()
if "target_type" in self.cleaned_data:
if (
self.cleaned_data.get("user") is None
and self.cleaned_data.get("club") is None
and self.cleaned_data.get("club_account") is None
and self.cleaned_data.get("company") is None
and self.cleaned_data.get("target_label") == ""
):
self.add_error(
"target_type", ValidationError(_("The target must be set."))
)
else:
if self.cleaned_data["target_type"] == "USER":
self.cleaned_data["target_id"] = self.cleaned_data["user"].id
elif self.cleaned_data["target_type"] == "ACCOUNT":
self.cleaned_data["target_id"] = self.cleaned_data[
"club_account"
].id
elif self.cleaned_data["target_type"] == "CLUB":
self.cleaned_data["target_id"] = self.cleaned_data["club"].id
elif self.cleaned_data["target_type"] == "COMPANY":
self.cleaned_data["target_id"] = self.cleaned_data["company"].id
if self.cleaned_data.get("amount") is None:
self.add_error("amount", ValidationError(_("The amount must be set.")))
return self.cleaned_data
def save(self):
ret = super().save()
if (
self.instance.target_type == "ACCOUNT"
and not self.instance.linked_operation
and self.instance.target.has_open_journal()
and self.cleaned_data["need_link"]
):
inst = self.instance
club_account = inst.target
acc_type = (
AccountingType.objects.exclude(movement_type="NEUTRAL")
.exclude(movement_type=inst.accounting_type.movement_type)
.order_by("code")
.first()
) # Select a random opposite accounting type
op = Operation(
journal=club_account.get_open_journal(),
amount=inst.amount,
date=inst.date,
remark=inst.remark,
mode=inst.mode,
cheque_number=inst.cheque_number,
invoice=inst.invoice,
done=False, # Has to be checked by hand
simpleaccounting_type=None,
accounting_type=acc_type,
target_type="ACCOUNT",
target_id=inst.journal.club_account.id,
target_label="",
linked_operation=inst,
)
op.save()
self.instance.linked_operation = op
self.save()
return ret
class OperationCreateView(CanCreateMixin, CreateView):
"""Create an operation."""
model = Operation
form_class = OperationForm
template_name = "accounting/operation_edit.jinja"
def get_form(self, form_class=None):
self.journal = GeneralJournal.objects.filter(id=self.kwargs["j_id"]).first()
ca = self.journal.club_account if self.journal else None
return self.form_class(club_account=ca, **self.get_form_kwargs())
def get_initial(self):
ret = super().get_initial()
if self.journal is not None:
ret["journal"] = self.journal.id
return ret
def get_context_data(self, **kwargs):
"""Add journal to the context."""
kwargs = super().get_context_data(**kwargs)
if self.journal:
kwargs["object"] = self.journal
return kwargs
class OperationEditView(CanEditMixin, UpdateView):
"""An edit view, working as detail for the moment."""
model = Operation
pk_url_kwarg = "op_id"
form_class = OperationForm
template_name = "accounting/operation_edit.jinja"
def get_context_data(self, **kwargs):
"""Add journal to the context."""
kwargs = super().get_context_data(**kwargs)
kwargs["object"] = self.object.journal
return kwargs
class OperationPDFView(CanViewMixin, DetailView):
"""Display the PDF of a given operation."""
model = Operation
pk_url_kwarg = "op_id"
def get(self, request, *args, **kwargs):
from reportlab.lib import colors
from reportlab.lib.pagesizes import letter
from reportlab.lib.units import cm
from reportlab.lib.utils import ImageReader
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfgen import canvas
from reportlab.platypus import Table, TableStyle
pdfmetrics.registerFont(TTFont("DejaVu", "DejaVuSerif.ttf"))
self.object = self.get_object()
amount = self.object.amount
remark = self.object.remark
nature = self.object.accounting_type.movement_type
num = self.object.number
date = self.object.date
mode = self.object.mode
club_name = self.object.journal.club_account.name
ti = self.object.journal.name
op_label = self.object.label
club_address = self.object.journal.club_account.club.address
id_op = self.object.id
if self.object.target_type == "OTHER":
target = self.object.target_label
else:
target = self.object.target.get_display_name()
response = HttpResponse(content_type="application/pdf")
response["Content-Disposition"] = 'filename="op-%d(%s_on_%s).pdf"' % (
num,
ti,
club_name,
)
p = canvas.Canvas(response)
p.setFont("DejaVu", 12)
p.setTitle("%s %d" % (_("Operation"), num))
width, height = letter
im = ImageReader("core/static/core/img/logo.jpg")
iw, ih = im.getSize()
p.drawImage(im, 40, height - 50, width=iw / 2, height=ih / 2)
labelStr = [["%s %s - %s %s" % (_("Journal"), ti, _("Operation"), num)]]
label = Table(labelStr, colWidths=[150], rowHeights=[20])
label.setStyle(TableStyle([("ALIGN", (0, 0), (-1, -1), "RIGHT")]))
w, h = label.wrapOn(label, 0, 0)
label.drawOn(p, width - 180, height)
p.drawString(
90, height - 100, _("Financial proof: ") + "OP%010d" % (id_op)
) # Justificatif du libellé
p.drawString(
90, height - 130, _("Club: %(club_name)s") % ({"club_name": club_name})
)
p.drawString(
90,
height - 160,
_("Label: %(op_label)s")
% {"op_label": op_label if op_label is not None else ""},
)
p.drawString(90, height - 190, _("Date: %(date)s") % {"date": date})
data = []
data += [
["%s" % (_("Credit").upper() if nature == "CREDIT" else _("Debit").upper())]
]
data += [[_("Amount: %(amount).2f") % {"amount": amount}]]
payment_mode = ""
for m in settings.SITH_ACCOUNTING_PAYMENT_METHOD:
if m[0] == mode:
payment_mode += "[\u00d7]"
else:
payment_mode += "[ ]"
payment_mode += " %s\n" % (m[1])
data += [[payment_mode]]
data += [
[
"%s : %s"
% (_("Debtor") if nature == "CREDIT" else _("Creditor"), target),
"",
]
]
data += [["%s \n%s" % (_("Comment:"), remark)]]
t = Table(
data, colWidths=[(width - 90 * 2) / 2] * 2, rowHeights=[20, 20, 70, 20, 80]
)
t.setStyle(
TableStyle(
[
("ALIGN", (0, 0), (-1, -1), "CENTER"),
("VALIGN", (-2, -1), (-1, -1), "TOP"),
("VALIGN", (0, 0), (-1, -2), "MIDDLE"),
("INNERGRID", (0, 0), (-1, -1), 0.25, colors.black),
("SPAN", (0, 0), (1, 0)), # line DEBIT/CREDIT
("SPAN", (0, 1), (1, 1)), # line amount
("SPAN", (-2, -1), (-1, -1)), # line comment
("SPAN", (0, -2), (-1, -2)), # line creditor/debtor
("SPAN", (0, 2), (1, 2)), # line payment_mode
("ALIGN", (0, 2), (1, 2), "LEFT"), # line payment_mode
("ALIGN", (-2, -1), (-1, -1), "LEFT"),
("BOX", (0, 0), (-1, -1), 0.25, colors.black),
]
)
)
signature = []
signature += [[_("Signature:")]]
tSig = Table(signature, colWidths=[(width - 90 * 2)], rowHeights=[80])
tSig.setStyle(
TableStyle(
[
("VALIGN", (0, 0), (-1, -1), "TOP"),
("BOX", (0, 0), (-1, -1), 0.25, colors.black),
]
)
)
w, h = tSig.wrapOn(p, 0, 0)
tSig.drawOn(p, 90, 200)
w, h = t.wrapOn(p, 0, 0)
t.drawOn(p, 90, 350)
p.drawCentredString(10.5 * cm, 2 * cm, club_name)
p.drawCentredString(10.5 * cm, 1 * cm, club_address)
p.showPage()
p.save()
return response
class JournalNatureStatementView(JournalTabsMixin, CanViewMixin, DetailView):
"""Display a statement sorted by labels."""
model = GeneralJournal
pk_url_kwarg = "j_id"
template_name = "accounting/journal_statement_nature.jinja"
current_tab = "nature_statement"
def statement(self, queryset, movement_type):
ret = collections.OrderedDict()
statement = collections.OrderedDict()
total_sum = 0
for sat in [
None,
*list(SimplifiedAccountingType.objects.order_by("label")),
]:
amount = queryset.filter(
accounting_type__movement_type=movement_type, simpleaccounting_type=sat
).aggregate(amount_sum=Sum("amount"))["amount_sum"]
label = sat.label if sat is not None else ""
if amount:
total_sum += amount
statement[label] = amount
ret[movement_type] = statement
ret[movement_type + "_sum"] = total_sum
return ret
def big_statement(self):
label_list = (
self.object.operations.order_by("label").values_list("label").distinct()
)
labels = Label.objects.filter(id__in=label_list).all()
statement = collections.OrderedDict()
gen_statement = collections.OrderedDict()
no_label_statement = collections.OrderedDict()
gen_statement.update(self.statement(self.object.operations.all(), "CREDIT"))
gen_statement.update(self.statement(self.object.operations.all(), "DEBIT"))
statement[_("General statement")] = gen_statement
no_label_statement.update(
self.statement(self.object.operations.filter(label=None).all(), "CREDIT")
)
no_label_statement.update(
self.statement(self.object.operations.filter(label=None).all(), "DEBIT")
)
statement[_("No label operations")] = no_label_statement
for label in labels:
l_stmt = collections.OrderedDict()
journals = self.object.operations.filter(label=label).all()
l_stmt.update(self.statement(journals, "CREDIT"))
l_stmt.update(self.statement(journals, "DEBIT"))
statement[label] = l_stmt
return statement
def get_context_data(self, **kwargs):
"""Add infos to the context."""
kwargs = super().get_context_data(**kwargs)
kwargs["statement"] = self.big_statement()
return kwargs
class JournalPersonStatementView(JournalTabsMixin, CanViewMixin, DetailView):
"""Calculate a dictionary with operation target and sum of operations."""
model = GeneralJournal
pk_url_kwarg = "j_id"
template_name = "accounting/journal_statement_person.jinja"
current_tab = "person_statement"
def sum_by_target(self, target_id, target_type, movement_type):
return self.object.operations.filter(
accounting_type__movement_type=movement_type,
target_id=target_id,
target_type=target_type,
).aggregate(amount_sum=Sum("amount"))["amount_sum"]
def statement(self, movement_type):
statement = collections.OrderedDict()
for op in (
self.object.operations.filter(accounting_type__movement_type=movement_type)
.order_by("target_type", "target_id")
.distinct()
):
statement[op.target] = self.sum_by_target(
op.target_id, op.target_type, movement_type
)
return statement
def total(self, movement_type):
return sum(self.statement(movement_type).values())
def get_context_data(self, **kwargs):
"""Add journal to the context."""
kwargs = super().get_context_data(**kwargs)
kwargs["credit_statement"] = self.statement("CREDIT")
kwargs["debit_statement"] = self.statement("DEBIT")
kwargs["total_credit"] = self.total("CREDIT")
kwargs["total_debit"] = self.total("DEBIT")
return kwargs
class JournalAccountingStatementView(JournalTabsMixin, CanViewMixin, DetailView):
"""Calculate a dictionary with operation type and sum of operations."""
model = GeneralJournal
pk_url_kwarg = "j_id"
template_name = "accounting/journal_statement_accounting.jinja"
current_tab = "accounting_statement"
def statement(self):
statement = collections.OrderedDict()
for at in AccountingType.objects.order_by("code").all():
sum_by_type = self.object.operations.filter(
accounting_type__code__startswith=at.code
).aggregate(amount_sum=Sum("amount"))["amount_sum"]
if sum_by_type:
statement[at] = sum_by_type
return statement
def get_context_data(self, **kwargs):
"""Add journal to the context."""
kwargs = super().get_context_data(**kwargs)
kwargs["statement"] = self.statement()
return kwargs
# Company views
class CompanyListView(CanViewMixin, ListView):
model = Company
template_name = "accounting/co_list.jinja"
class CompanyCreateView(CanCreateMixin, CreateView):
"""Create a company."""
model = Company
fields = ["name"]
template_name = "core/create.jinja"
success_url = reverse_lazy("accounting:co_list")
class CompanyEditView(CanCreateMixin, UpdateView):
"""Edit a company."""
model = Company
pk_url_kwarg = "co_id"
fields = ["name"]
template_name = "core/edit.jinja"
success_url = reverse_lazy("accounting:co_list")
# Label views
class LabelListView(CanViewMixin, DetailView):
model = ClubAccount
pk_url_kwarg = "clubaccount_id"
template_name = "accounting/label_list.jinja"
class LabelCreateView(
CanCreateMixin, CreateView
): # FIXME we need to check the rights before creating the object
model = Label
form_class = modelform_factory(
Label, fields=["name", "club_account"], widgets={"club_account": HiddenInput}
)
template_name = "core/create.jinja"
def get_initial(self):
ret = super().get_initial()
if "parent" in self.request.GET:
obj = ClubAccount.objects.filter(id=int(self.request.GET["parent"])).first()
if obj is not None:
ret["club_account"] = obj.id
return ret
class LabelEditView(CanEditMixin, UpdateView):
model = Label
pk_url_kwarg = "label_id"
fields = ["name"]
template_name = "core/edit.jinja"
class LabelDeleteView(CanEditMixin, DeleteView):
model = Label
pk_url_kwarg = "label_id"
template_name = "core/delete_confirm.jinja"
def get_success_url(self):
return self.object.get_absolute_url()
class CloseCustomerAccountForm(forms.Form):
user = forms.ModelChoiceField(
label=_("Refound this account"),
help_text=None,
required=True,
widget=AutoCompleteSelectUser,
queryset=User.objects.all(),
)
class RefoundAccountView(FormView):
"""Create a selling with the same amount than the current user money."""
template_name = "accounting/refound_account.jinja"
form_class = CloseCustomerAccountForm
def permission(self, user):
if user.is_root or user.is_in_group(pk=settings.SITH_GROUP_ACCOUNTING_ADMIN_ID):
return True
else:
raise PermissionDenied
def dispatch(self, request, *arg, **kwargs):
res = super().dispatch(request, *arg, **kwargs)
if self.permission(request.user):
return res
def post(self, request, *arg, **kwargs):
self.operator = request.user
if self.permission(request.user):
return super().post(self, request, *arg, **kwargs)
def form_valid(self, form):
self.customer = form.cleaned_data["user"]
self.create_selling()
return super().form_valid(form)
def get_success_url(self):
return reverse("accounting:refound_account")
def create_selling(self):
with transaction.atomic():
uprice = self.customer.customer.amount
refound_club_counter = Counter.objects.get(
id=settings.SITH_COUNTER_REFOUND_ID
)
refound_club = refound_club_counter.club
s = Selling(
label=_("Refound account"),
unit_price=uprice,
quantity=1,
seller=self.operator,
customer=self.customer.customer,
club=refound_club,
counter=refound_club_counter,
product=Product.objects.get(id=settings.SITH_PRODUCT_REFOUND_ID),
)
s.save()
+39
View File
@@ -0,0 +1,39 @@
from pydantic import TypeAdapter
from accounting.models import ClubAccount, Company
from accounting.schemas import ClubAccountSchema, CompanySchema
from core.views.widgets.select import AutoCompleteSelect, AutoCompleteSelectMultiple
_js = ["bundled/accounting/components/ajax-select-index.ts"]
class AutoCompleteSelectClubAccount(AutoCompleteSelect):
component_name = "club-account-ajax-select"
model = ClubAccount
adapter = TypeAdapter(list[ClubAccountSchema])
js = _js
class AutoCompleteSelectMultipleClubAccount(AutoCompleteSelectMultiple):
component_name = "club-account-ajax-select"
model = ClubAccount
adapter = TypeAdapter(list[ClubAccountSchema])
js = _js
class AutoCompleteSelectCompany(AutoCompleteSelect):
component_name = "company-ajax-select"
model = Company
adapter = TypeAdapter(list[CompanySchema])
js = _js
class AutoCompleteSelectMultipleCompany(AutoCompleteSelectMultiple):
component_name = "company-ajax-select"
model = Company
adapter = TypeAdapter(list[CompanySchema])
js = _js
View File
+10
View File
@@ -0,0 +1,10 @@
from django.contrib import admin
from antispam.models import ToxicDomain
@admin.register(ToxicDomain)
class ToxicDomainAdmin(admin.ModelAdmin):
list_display = ("domain", "is_externally_managed", "created")
search_fields = ("domain", "is_externally_managed", "created")
list_filter = ("is_externally_managed",)
+7
View File
@@ -0,0 +1,7 @@
from django.apps import AppConfig
class AntispamConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
verbose_name = "antispam"
name = "antispam"
+18
View File
@@ -0,0 +1,18 @@
import re
from django import forms
from django.core.validators import EmailValidator
from django.utils.translation import gettext_lazy as _
from antispam.models import ToxicDomain
class AntiSpamEmailField(forms.EmailField):
"""An email field that email addresses with a known toxic domain."""
def run_validators(self, value: str):
super().run_validators(value)
# Domain part should exist since email validation is guaranteed to run first
domain = re.search(EmailValidator.domain_regex, value)
if ToxicDomain.objects.filter(domain=domain[0]).exists():
raise forms.ValidationError(_("Email domain is not allowed."))
@@ -0,0 +1,69 @@
import requests
from django.conf import settings
from django.core.management import BaseCommand
from django.db.models import Max
from django.utils import timezone
from antispam.models import ToxicDomain
class Command(BaseCommand):
"""Update blocked ips/mails database"""
help = "Update blocked ips/mails database"
def add_arguments(self, parser):
parser.add_argument(
"--force", action="store_true", help="Force re-creation even if up to date"
)
def _should_update(self, *, force: bool = False) -> bool:
if force:
return True
oldest = ToxicDomain.objects.filter(is_externally_managed=True).aggregate(
res=Max("created")
)["res"]
return not (oldest and timezone.now() < (oldest + timezone.timedelta(days=1)))
def _download_domains(self, providers: list[str]) -> set[str]:
domains = set()
for provider in providers:
res = requests.get(provider)
if not res.ok:
self.stderr.write(
f"Source {provider} responded with code {res.status_code}"
)
continue
domains |= set(res.content.decode().splitlines())
return domains
def _update_domains(self, domains: set[str]):
# Cleanup database
ToxicDomain.objects.filter(is_externally_managed=True).delete()
# Create database
ToxicDomain.objects.bulk_create(
[
ToxicDomain(domain=domain, is_externally_managed=True)
for domain in domains
],
ignore_conflicts=True,
)
self.stdout.write("Domain database updated")
def handle(self, *args, **options):
if not self._should_update(force=options["force"]):
self.stdout.write("Domain database is up to date")
return
self.stdout.write("Updating domain database")
domains = self._download_domains(settings.TOXIC_DOMAINS_PROVIDERS)
if not domains:
self.stderr.write(
"No domains could be fetched from settings.TOXIC_DOMAINS_PROVIDERS. "
"Please, have a look at your settings."
)
return
self._update_domains(domains)
+35
View File
@@ -0,0 +1,35 @@
# Generated by Django 4.2.14 on 2024-08-03 23:05
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = []
operations = [
migrations.CreateModel(
name="ToxicDomain",
fields=[
(
"domain",
models.URLField(
max_length=253,
primary_key=True,
serialize=False,
verbose_name="domain",
),
),
("created", models.DateTimeField(auto_now_add=True)),
(
"is_externally_managed",
models.BooleanField(
default=False,
help_text="True if kept up-to-date using external toxic domain providers, else False",
verbose_name="is externally managed",
),
),
],
),
]
View File
+19
View File
@@ -0,0 +1,19 @@
from django.db import models
from django.utils.translation import gettext_lazy as _
class ToxicDomain(models.Model):
"""Domain marked as spam in public databases"""
domain = models.URLField(_("domain"), max_length=253, primary_key=True)
created = models.DateTimeField(auto_now_add=True)
is_externally_managed = models.BooleanField(
_("is externally managed"),
default=False,
help_text=_(
"True if kept up-to-date using external toxic domain providers, else False"
),
)
def __str__(self) -> str:
return self.domain
-237
View File
@@ -1,237 +0,0 @@
/* Avoid breaking parameter names, etc. in table cells. */
.doc-contents td code {
word-break: normal !important;
}
/* No line break before first paragraph of descriptions. */
.doc-md-description,
.doc-md-description>p:first-child {
display: inline;
}
/* No text transformation from Material for MkDocs for H5 headings. */
.md-typeset h5 .doc-object-name {
text-transform: none;
}
/* Max width for docstring sections tables. */
.doc .md-typeset__table,
.doc .md-typeset__table table {
display: table !important;
width: 100%;
}
.doc .md-typeset__table tr {
display: table-row;
}
/* Defaults in Spacy table style. */
.doc-param-default,
.doc-type_param-default {
float: right;
}
/* Parameter headings must be inline, not blocks. */
.doc-heading-parameter,
.doc-heading-type_parameter {
display: inline;
}
/* Default font size for parameter headings. */
.md-typeset .doc-heading-parameter {
font-size: inherit;
}
/* Prefer space on the right, not the left of parameter permalinks. */
.doc-heading-parameter .headerlink,
.doc-heading-type_parameter .headerlink {
margin-left: 0 !important;
margin-right: 0.2rem;
}
/* Backward-compatibility: docstring section titles in bold. */
.doc-section-title {
font-weight: bold;
}
/* Backlinks crumb separator. */
.doc-backlink-crumb {
display: inline-flex;
gap: .2rem;
white-space: nowrap;
align-items: center;
vertical-align: middle;
}
.doc-backlink-crumb:not(:first-child)::before {
background-color: var(--md-default-fg-color--lighter);
content: "";
display: inline;
height: 1rem;
--md-path-icon: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M8.59 16.58 13.17 12 8.59 7.41 10 6l6 6-6 6z"/></svg>');
-webkit-mask-image: var(--md-path-icon);
mask-image: var(--md-path-icon);
width: 1rem;
}
.doc-backlink-crumb.last {
font-weight: bold;
}
/* Symbols in Navigation and ToC. */
:root, :host,
[data-md-color-scheme="default"] {
--doc-symbol-parameter-fg-color: #df50af;
--doc-symbol-type_parameter-fg-color: #df50af;
--doc-symbol-attribute-fg-color: #953800;
--doc-symbol-function-fg-color: #8250df;
--doc-symbol-method-fg-color: #8250df;
--doc-symbol-class-fg-color: #0550ae;
--doc-symbol-type_alias-fg-color: #0550ae;
--doc-symbol-module-fg-color: #5cad0f;
--doc-symbol-parameter-bg-color: #df50af1a;
--doc-symbol-type_parameter-bg-color: #df50af1a;
--doc-symbol-attribute-bg-color: #9538001a;
--doc-symbol-function-bg-color: #8250df1a;
--doc-symbol-method-bg-color: #8250df1a;
--doc-symbol-class-bg-color: #0550ae1a;
--doc-symbol-type_alias-bg-color: #0550ae1a;
--doc-symbol-module-bg-color: #5cad0f1a;
}
[data-md-color-scheme="slate"] {
--doc-symbol-parameter-fg-color: #ffa8cc;
--doc-symbol-type_parameter-fg-color: #ffa8cc;
--doc-symbol-attribute-fg-color: #ffa657;
--doc-symbol-function-fg-color: #d2a8ff;
--doc-symbol-method-fg-color: #d2a8ff;
--doc-symbol-class-fg-color: #79c0ff;
--doc-symbol-type_alias-fg-color: #79c0ff;
--doc-symbol-module-fg-color: #baff79;
--doc-symbol-parameter-bg-color: #ffa8cc1a;
--doc-symbol-type_parameter-bg-color: #ffa8cc1a;
--doc-symbol-attribute-bg-color: #ffa6571a;
--doc-symbol-function-bg-color: #d2a8ff1a;
--doc-symbol-method-bg-color: #d2a8ff1a;
--doc-symbol-class-bg-color: #79c0ff1a;
--doc-symbol-type_alias-bg-color: #79c0ff1a;
--doc-symbol-module-bg-color: #baff791a;
}
code.doc-symbol {
border-radius: .1rem;
font-size: .85em;
padding: 0 .3em;
font-weight: bold;
}
code.doc-symbol-parameter,
a code.doc-symbol-parameter {
color: var(--doc-symbol-parameter-fg-color);
background-color: var(--doc-symbol-parameter-bg-color);
}
code.doc-symbol-parameter::after {
content: "param";
}
code.doc-symbol-type_parameter,
a code.doc-symbol-type_parameter {
color: var(--doc-symbol-type_parameter-fg-color);
background-color: var(--doc-symbol-type_parameter-bg-color);
}
code.doc-symbol-type_parameter::after {
content: "type-param";
}
code.doc-symbol-attribute,
a code.doc-symbol-attribute {
color: var(--doc-symbol-attribute-fg-color);
background-color: var(--doc-symbol-attribute-bg-color);
}
code.doc-symbol-attribute::after {
content: "attr";
}
code.doc-symbol-function,
a code.doc-symbol-function {
color: var(--doc-symbol-function-fg-color);
background-color: var(--doc-symbol-function-bg-color);
}
code.doc-symbol-function::after {
content: "func";
}
code.doc-symbol-method,
a code.doc-symbol-method {
color: var(--doc-symbol-method-fg-color);
background-color: var(--doc-symbol-method-bg-color);
}
code.doc-symbol-method::after {
content: "meth";
}
code.doc-symbol-class,
a code.doc-symbol-class {
color: var(--doc-symbol-class-fg-color);
background-color: var(--doc-symbol-class-bg-color);
}
code.doc-symbol-class::after {
content: "class";
}
code.doc-symbol-type_alias,
a code.doc-symbol-type_alias {
color: var(--doc-symbol-type_alias-fg-color);
background-color: var(--doc-symbol-type_alias-bg-color);
}
code.doc-symbol-type_alias::after {
content: "type";
}
code.doc-symbol-module,
a code.doc-symbol-module {
color: var(--doc-symbol-module-fg-color);
background-color: var(--doc-symbol-module-bg-color);
}
code.doc-symbol-module::after {
content: "mod";
}
.doc-signature .autorefs {
color: inherit;
border-bottom: 1px dotted currentcolor;
}
/* Source code blocks (admonitions). */
:root {
--md-admonition-icon--mkdocstrings-source: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15.22 4.97a.75.75 0 0 1 1.06 0l6.5 6.5a.75.75 0 0 1 0 1.06l-6.5 6.5a.749.749 0 0 1-1.275-.326.75.75 0 0 1 .215-.734L21.19 12l-5.97-5.97a.75.75 0 0 1 0-1.06m-6.44 0a.75.75 0 0 1 0 1.06L2.81 12l5.97 5.97a.749.749 0 0 1-.326 1.275.75.75 0 0 1-.734-.215l-6.5-6.5a.75.75 0 0 1 0-1.06l6.5-6.5a.75.75 0 0 1 1.06 0"/></svg>')
}
.md-typeset .admonition.mkdocstrings-source,
.md-typeset details.mkdocstrings-source {
border: none;
padding: 0;
}
.md-typeset .admonition.mkdocstrings-source:focus-within,
.md-typeset details.mkdocstrings-source:focus-within {
box-shadow: none;
}
.md-typeset .mkdocstrings-source > .admonition-title,
.md-typeset .mkdocstrings-source > summary {
background-color: inherit;
}
.md-typeset .mkdocstrings-source > .admonition-title::before,
.md-typeset .mkdocstrings-source > summary::before {
background-color: var(--md-default-fg-color);
-webkit-mask-image: var(--md-admonition-icon--mkdocstrings-source);
mask-image: var(--md-admonition-icon--mkdocstrings-source);
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-18
View File
@@ -1,18 +0,0 @@
/*!
* Lunr languages, `Danish` language
* https://github.com/MihaiValentin/lunr-languages
*
* Copyright 2014, Mihai Valentin
* http://www.mozilla.org/MPL/
*/
/*!
* based on
* Snowball JavaScript Library v0.3
* http://code.google.com/p/urim/
* http://snowball.tartarus.org/
*
* Copyright 2010, Oleg Mazko
* http://www.mozilla.org/MPL/
*/
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.da=function(){this.pipeline.reset(),this.pipeline.add(e.da.trimmer,e.da.stopWordFilter,e.da.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.da.stemmer))},e.da.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.da.trimmer=e.trimmerSupport.generateTrimmer(e.da.wordCharacters),e.Pipeline.registerFunction(e.da.trimmer,"trimmer-da"),e.da.stemmer=function(){var r=e.stemmerSupport.Among,i=e.stemmerSupport.SnowballProgram,n=new function(){function e(){var e,r=f.cursor+3;if(d=f.limit,0<=r&&r<=f.limit){for(a=r;;){if(e=f.cursor,f.in_grouping(w,97,248)){f.cursor=e;break}if(f.cursor=e,e>=f.limit)return;f.cursor++}for(;!f.out_grouping(w,97,248);){if(f.cursor>=f.limit)return;f.cursor++}d=f.cursor,d<a&&(d=a)}}function n(){var e,r;if(f.cursor>=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(c,32),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del();break;case 2:f.in_grouping_b(p,97,229)&&f.slice_del()}}function t(){var e,r=f.limit-f.cursor;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.find_among_b(l,4)?(f.bra=f.cursor,f.limit_backward=e,f.cursor=f.limit-r,f.cursor>f.limit_backward&&(f.cursor--,f.bra=f.cursor,f.slice_del())):f.limit_backward=e)}function s(){var e,r,i,n=f.limit-f.cursor;if(f.ket=f.cursor,f.eq_s_b(2,"st")&&(f.bra=f.cursor,f.eq_s_b(2,"ig")&&f.slice_del()),f.cursor=f.limit-n,f.cursor>=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(m,5),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del(),i=f.limit-f.cursor,t(),f.cursor=f.limit-i;break;case 2:f.slice_from("løs")}}function o(){var e;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.out_grouping_b(w,97,248)?(f.bra=f.cursor,u=f.slice_to(u),f.limit_backward=e,f.eq_v_b(u)&&f.slice_del()):f.limit_backward=e)}var a,d,u,c=[new r("hed",-1,1),new r("ethed",0,1),new r("ered",-1,1),new r("e",-1,1),new r("erede",3,1),new r("ende",3,1),new r("erende",5,1),new r("ene",3,1),new r("erne",3,1),new r("ere",3,1),new r("en",-1,1),new r("heden",10,1),new r("eren",10,1),new r("er",-1,1),new r("heder",13,1),new r("erer",13,1),new r("s",-1,2),new r("heds",16,1),new r("es",16,1),new r("endes",18,1),new r("erendes",19,1),new r("enes",18,1),new r("ernes",18,1),new r("eres",18,1),new r("ens",16,1),new r("hedens",24,1),new r("erens",24,1),new r("ers",16,1),new r("ets",16,1),new r("erets",28,1),new r("et",-1,1),new r("eret",30,1)],l=[new r("gd",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1)],m=[new r("ig",-1,1),new r("lig",0,1),new r("elig",1,1),new r("els",-1,1),new r("løst",-1,2)],w=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],p=[239,254,42,3,0,0,0,0,0,0,0,0,0,0,0,0,16],f=new i;this.setCurrent=function(e){f.setCurrent(e)},this.getCurrent=function(){return f.getCurrent()},this.stem=function(){var r=f.cursor;return e(),f.limit_backward=r,f.cursor=f.limit,n(),f.cursor=f.limit,t(),f.cursor=f.limit,s(),f.cursor=f.limit,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.da.stemmer,"stemmer-da"),e.da.stopWordFilter=e.generateStopWordFilter("ad af alle alt anden at blev blive bliver da de dem den denne der deres det dette dig din disse dog du efter eller en end er et for fra ham han hans har havde have hende hendes her hos hun hvad hvis hvor i ikke ind jeg jer jo kunne man mange med meget men mig min mine mit mod ned noget nogle nu når og også om op os over på selv sig sin sine sit skal skulle som sådan thi til ud under var vi vil ville vor være været".split(" ")),e.Pipeline.registerFunction(e.da.stopWordFilter,"stopWordFilter-da")}});
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hi=function(){this.pipeline.reset(),this.pipeline.add(e.hi.trimmer,e.hi.stopWordFilter,e.hi.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.hi.stemmer))},e.hi.wordCharacters="ऀ-ःऄ-एऐ-टठ-यर-िी-ॏॐ-य़ॠ-९॰-ॿa-zA-Z-zA-0-9-",e.hi.trimmer=e.trimmerSupport.generateTrimmer(e.hi.wordCharacters),e.Pipeline.registerFunction(e.hi.trimmer,"trimmer-hi"),e.hi.stopWordFilter=e.generateStopWordFilter("अत अपना अपनी अपने अभी अंदर आदि आप इत्यादि इन इनका इन्हीं इन्हें इन्हों इस इसका इसकी इसके इसमें इसी इसे उन उनका उनकी उनके उनको उन्हीं उन्हें उन्हों उस उसके उसी उसे एक एवं एस ऐसे और कई कर करता करते करना करने करें कहते कहा का काफ़ी कि कितना किन्हें किन्हों किया किर किस किसी किसे की कुछ कुल के को कोई कौन कौनसा गया घर जब जहाँ जा जितना जिन जिन्हें जिन्हों जिस जिसे जीधर जैसा जैसे जो तक तब तरह तिन तिन्हें तिन्हों तिस तिसे तो था थी थे दबारा दिया दुसरा दूसरे दो द्वारा न नके नहीं ना निहायत नीचे ने पर पहले पूरा पे फिर बनी बही बहुत बाद बाला बिलकुल भी भीतर मगर मानो मे में यदि यह यहाँ यही या यिह ये रखें रहा रहे ऱ्वासा लिए लिये लेकिन व वग़ैरह वर्ग वह वहाँ वहीं वाले वुह वे वो सकता सकते सबसे सभी साथ साबुत साभ सारा से सो संग ही हुआ हुई हुए है हैं हो होता होती होते होना होने".split(" ")),e.hi.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var r=e.wordcut;r.init(),e.hi.tokenizer=function(i){if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(r){return isLunr2?new e.Token(r.toLowerCase()):r.toLowerCase()});var t=i.toString().toLowerCase().replace(/^\s+/,"");return r.cut(t).split("|")},e.Pipeline.registerFunction(e.hi.stemmer,"stemmer-hi"),e.Pipeline.registerFunction(e.hi.stopWordFilter,"stopWordFilter-hi")}});
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hy=function(){this.pipeline.reset(),this.pipeline.add(e.hy.trimmer,e.hy.stopWordFilter)},e.hy.wordCharacters="[A-Za-z԰-֏ff-ﭏ]",e.hy.trimmer=e.trimmerSupport.generateTrimmer(e.hy.wordCharacters),e.Pipeline.registerFunction(e.hy.trimmer,"trimmer-hy"),e.hy.stopWordFilter=e.generateStopWordFilter("դու և եք էիր էիք հետո նաև նրանք որը վրա է որ պիտի են այս մեջ ն իր ու ի այդ որոնք այն կամ էր մի ես համար այլ իսկ էին ենք հետ ին թ էինք մենք նրա նա դուք եմ էի ըստ որպես ում".split(" ")),e.Pipeline.registerFunction(e.hy.stopWordFilter,"stopWordFilter-hy"),e.hy.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}(),e.Pipeline.registerFunction(e.hy.stemmer,"stemmer-hy")}});
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.ja=function(){this.pipeline.reset(),this.pipeline.add(e.ja.trimmer,e.ja.stopWordFilter,e.ja.stemmer),r?this.tokenizer=e.ja.tokenizer:(e.tokenizer&&(e.tokenizer=e.ja.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.ja.tokenizer))};var t=new e.TinySegmenter;e.ja.tokenizer=function(i){var n,o,s,p,a,u,m,l,c,f;if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(t){return r?new e.Token(t.toLowerCase()):t.toLowerCase()});for(o=i.toString().toLowerCase().replace(/^\s+/,""),n=o.length-1;n>=0;n--)if(/\S/.test(o.charAt(n))){o=o.substring(0,n+1);break}for(a=[],s=o.length,c=0,l=0;c<=s;c++)if(u=o.charAt(c),m=c-l,u.match(/\s/)||c==s){if(m>0)for(p=t.segment(o.slice(l,c)).filter(function(e){return!!e}),f=l,n=0;n<p.length;n++)r?a.push(new e.Token(p[n],{position:[f,p[n].length],index:a.length})):a.push(p[n]),f+=p[n].length;l=c+1}return a},e.ja.stemmer=function(){return function(e){return e}}(),e.Pipeline.registerFunction(e.ja.stemmer,"stemmer-ja"),e.ja.wordCharacters="一二三四五六七八九十百千万億兆一-龠々〆ヵヶぁ-んァ-ヴーア-ン゙a-zA-Z-zA-0-9-",e.ja.trimmer=e.trimmerSupport.generateTrimmer(e.ja.wordCharacters),e.Pipeline.registerFunction(e.ja.trimmer,"trimmer-ja"),e.ja.stopWordFilter=e.generateStopWordFilter("これ それ あれ この その あの ここ そこ あそこ こちら どこ だれ なに なん 何 私 貴方 貴方方 我々 私達 あの人 あのかた 彼女 彼 です あります おります います は が の に を で え から まで より も どの と し それで しかし".split(" ")),e.Pipeline.registerFunction(e.ja.stopWordFilter,"stopWordFilter-ja"),e.jp=e.ja,e.Pipeline.registerFunction(e.jp.stemmer,"stemmer-jp"),e.Pipeline.registerFunction(e.jp.trimmer,"trimmer-jp"),e.Pipeline.registerFunction(e.jp.stopWordFilter,"stopWordFilter-jp")}});
-1
View File
@@ -1 +0,0 @@
module.exports=require("./lunr.ja");
-1
View File
@@ -1 +0,0 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.kn=function(){this.pipeline.reset(),this.pipeline.add(e.kn.trimmer,e.kn.stopWordFilter,e.kn.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.kn.stemmer))},e.kn.wordCharacters="ಀ-಄ಅ-ಔಕ-ಹಾ-ೌ಼-ಽೕ-ೖೝ-ೞೠ-ೡೢ-ೣ೤೥೦-೯ೱ-ೳ",e.kn.trimmer=e.trimmerSupport.generateTrimmer(e.kn.wordCharacters),e.Pipeline.registerFunction(e.kn.trimmer,"trimmer-kn"),e.kn.stopWordFilter=e.generateStopWordFilter("ಮತ್ತು ಈ ಒಂದು ರಲ್ಲಿ ಹಾಗೂ ಎಂದು ಅಥವಾ ಇದು ರ ಅವರು ಎಂಬ ಮೇಲೆ ಅವರ ತನ್ನ ಆದರೆ ತಮ್ಮ ನಂತರ ಮೂಲಕ ಹೆಚ್ಚು ನ ಆ ಕೆಲವು ಅನೇಕ ಎರಡು ಹಾಗು ಪ್ರಮುಖ ಇದನ್ನು ಇದರ ಸುಮಾರು ಅದರ ಅದು ಮೊದಲ ಬಗ್ಗೆ ನಲ್ಲಿ ರಂದು ಇತರ ಅತ್ಯಂತ ಹೆಚ್ಚಿನ ಸಹ ಸಾಮಾನ್ಯವಾಗಿ ನೇ ಹಲವಾರು ಹೊಸ ದಿ ಕಡಿಮೆ ಯಾವುದೇ ಹೊಂದಿದೆ ದೊಡ್ಡ ಅನ್ನು ಇವರು ಪ್ರಕಾರ ಇದೆ ಮಾತ್ರ ಕೂಡ ಇಲ್ಲಿ ಎಲ್ಲಾ ವಿವಿಧ ಅದನ್ನು ಹಲವು ರಿಂದ ಕೇವಲ ದ ದಕ್ಷಿಣ ಗೆ ಅವನ ಅತಿ ನೆಯ ಬಹಳ ಕೆಲಸ ಎಲ್ಲ ಪ್ರತಿ ಇತ್ಯಾದಿ ಇವು ಬೇರೆ ಹೀಗೆ ನಡುವೆ ಇದಕ್ಕೆ ಎಸ್ ಇವರ ಮೊದಲು ಶ್ರೀ ಮಾಡುವ ಇದರಲ್ಲಿ ರೀತಿಯ ಮಾಡಿದ ಕಾಲ ಅಲ್ಲಿ ಮಾಡಲು ಅದೇ ಈಗ ಅವು ಗಳು ಎ ಎಂಬುದು ಅವನು ಅಂದರೆ ಅವರಿಗೆ ಇರುವ ವಿಶೇಷ ಮುಂದೆ ಅವುಗಳ ಮುಂತಾದ ಮೂಲ ಬಿ ಮೀ ಒಂದೇ ಇನ್ನೂ ಹೆಚ್ಚಾಗಿ ಮಾಡಿ ಅವರನ್ನು ಇದೇ ಯ ರೀತಿಯಲ್ಲಿ ಜೊತೆ ಅದರಲ್ಲಿ ಮಾಡಿದರು ನಡೆದ ಆಗ ಮತ್ತೆ ಪೂರ್ವ ಆತ ಬಂದ ಯಾವ ಒಟ್ಟು ಇತರೆ ಹಿಂದೆ ಪ್ರಮಾಣದ ಗಳನ್ನು ಕುರಿತು ಯು ಆದ್ದರಿಂದ ಅಲ್ಲದೆ ನಗರದ ಮೇಲಿನ ಏಕೆಂದರೆ ರಷ್ಟು ಎಂಬುದನ್ನು ಬಾರಿ ಎಂದರೆ ಹಿಂದಿನ ಆದರೂ ಆದ ಸಂಬಂಧಿಸಿದ ಮತ್ತೊಂದು ಸಿ ಆತನ ".split(" ")),e.kn.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var r=e.wordcut;r.init(),e.kn.tokenizer=function(t){if(!arguments.length||null==t||void 0==t)return[];if(Array.isArray(t))return t.map(function(r){return isLunr2?new e.Token(r.toLowerCase()):r.toLowerCase()});var n=t.toString().toLowerCase().replace(/^\s+/,"");return r.cut(n).split("|")},e.Pipeline.registerFunction(e.kn.stemmer,"stemmer-kn"),e.Pipeline.registerFunction(e.kn.stopWordFilter,"stopWordFilter-kn")}});
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){e.multiLanguage=function(){for(var t=Array.prototype.slice.call(arguments),i=t.join("-"),r="",n=[],s=[],p=0;p<t.length;++p)"en"==t[p]?(r+="\\w",n.unshift(e.stopWordFilter),n.push(e.stemmer),s.push(e.stemmer)):(r+=e[t[p]].wordCharacters,e[t[p]].stopWordFilter&&n.unshift(e[t[p]].stopWordFilter),e[t[p]].stemmer&&(n.push(e[t[p]].stemmer),s.push(e[t[p]].stemmer)));var o=e.trimmerSupport.generateTrimmer(r);return e.Pipeline.registerFunction(o,"lunr-multi-trimmer-"+i),n.unshift(o),function(){this.pipeline.reset(),this.pipeline.add.apply(this.pipeline,n),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add.apply(this.searchPipeline,s))}}}});
File diff suppressed because one or more lines are too long
-18
View File
@@ -1,18 +0,0 @@
/*!
* Lunr languages, `Norwegian` language
* https://github.com/MihaiValentin/lunr-languages
*
* Copyright 2014, Mihai Valentin
* http://www.mozilla.org/MPL/
*/
/*!
* based on
* Snowball JavaScript Library v0.3
* http://code.google.com/p/urim/
* http://snowball.tartarus.org/
*
* Copyright 2010, Oleg Mazko
* http://www.mozilla.org/MPL/
*/
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.no=function(){this.pipeline.reset(),this.pipeline.add(e.no.trimmer,e.no.stopWordFilter,e.no.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.no.stemmer))},e.no.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.no.trimmer=e.trimmerSupport.generateTrimmer(e.no.wordCharacters),e.Pipeline.registerFunction(e.no.trimmer,"trimmer-no"),e.no.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){function e(){var e,r=w.cursor+3;if(a=w.limit,0<=r||r<=w.limit){for(s=r;;){if(e=w.cursor,w.in_grouping(d,97,248)){w.cursor=e;break}if(e>=w.limit)return;w.cursor=e+1}for(;!w.out_grouping(d,97,248);){if(w.cursor>=w.limit)return;w.cursor++}a=w.cursor,a<s&&(a=s)}}function i(){var e,r,n;if(w.cursor>=a&&(r=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,e=w.find_among_b(m,29),w.limit_backward=r,e))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:n=w.limit-w.cursor,w.in_grouping_b(c,98,122)?w.slice_del():(w.cursor=w.limit-n,w.eq_s_b(1,"k")&&w.out_grouping_b(d,97,248)&&w.slice_del());break;case 3:w.slice_from("er")}}function t(){var e,r=w.limit-w.cursor;w.cursor>=a&&(e=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,w.find_among_b(u,2)?(w.bra=w.cursor,w.limit_backward=e,w.cursor=w.limit-r,w.cursor>w.limit_backward&&(w.cursor--,w.bra=w.cursor,w.slice_del())):w.limit_backward=e)}function o(){var e,r;w.cursor>=a&&(r=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,e=w.find_among_b(l,11),e?(w.bra=w.cursor,w.limit_backward=r,1==e&&w.slice_del()):w.limit_backward=r)}var s,a,m=[new r("a",-1,1),new r("e",-1,1),new r("ede",1,1),new r("ande",1,1),new r("ende",1,1),new r("ane",1,1),new r("ene",1,1),new r("hetene",6,1),new r("erte",1,3),new r("en",-1,1),new r("heten",9,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",12,1),new r("s",-1,2),new r("as",14,1),new r("es",14,1),new r("edes",16,1),new r("endes",16,1),new r("enes",16,1),new r("hetenes",19,1),new r("ens",14,1),new r("hetens",21,1),new r("ers",14,1),new r("ets",14,1),new r("et",-1,1),new r("het",25,1),new r("ert",-1,3),new r("ast",-1,1)],u=[new r("dt",-1,-1),new r("vt",-1,-1)],l=[new r("leg",-1,1),new r("eleg",0,1),new r("ig",-1,1),new r("eig",2,1),new r("lig",2,1),new r("elig",4,1),new r("els",-1,1),new r("lov",-1,1),new r("elov",7,1),new r("slov",7,1),new r("hetslov",9,1)],d=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],c=[119,125,149,1],w=new n;this.setCurrent=function(e){w.setCurrent(e)},this.getCurrent=function(){return w.getCurrent()},this.stem=function(){var r=w.cursor;return e(),w.limit_backward=r,w.cursor=w.limit,i(),w.cursor=w.limit,t(),w.cursor=w.limit,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.no.stemmer,"stemmer-no"),e.no.stopWordFilter=e.generateStopWordFilter("alle at av bare begge ble blei bli blir blitt både båe da de deg dei deim deira deires dem den denne der dere deres det dette di din disse ditt du dykk dykkar då eg ein eit eitt eller elles en enn er et ett etter for fordi fra før ha hadde han hans har hennar henne hennes her hjå ho hoe honom hoss hossen hun hva hvem hver hvilke hvilken hvis hvor hvordan hvorfor i ikke ikkje ikkje ingen ingi inkje inn inni ja jeg kan kom korleis korso kun kunne kva kvar kvarhelst kven kvi kvifor man mange me med medan meg meget mellom men mi min mine mitt mot mykje ned no noe noen noka noko nokon nokor nokre nå når og også om opp oss over på samme seg selv si si sia sidan siden sin sine sitt sjøl skal skulle slik so som som somme somt så sånn til um upp ut uten var vart varte ved vere verte vi vil ville vore vors vort vår være være vært å".split(" ")),e.Pipeline.registerFunction(e.no.stopWordFilter,"stopWordFilter-no")}});
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.sa=function(){this.pipeline.reset(),this.pipeline.add(e.sa.trimmer,e.sa.stopWordFilter,e.sa.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.sa.stemmer))},e.sa.wordCharacters="ऀ-ःऄ-एऐ-टठ-यर-िी-ॏॐ-य़ॠ-९॰-ॿ꣠-꣱ꣲ-ꣷ꣸-ꣻ꣼-ꣽꣾ-ꣿᆰ0-ᆰ9",e.sa.trimmer=e.trimmerSupport.generateTrimmer(e.sa.wordCharacters),e.Pipeline.registerFunction(e.sa.trimmer,"trimmer-sa"),e.sa.stopWordFilter=e.generateStopWordFilter('तथा अयम्‌ एकम्‌ इत्यस्मिन्‌ तथा तत्‌ वा अयम्‌ इत्यस्य ते आहूत उपरि तेषाम्‌ किन्तु तेषाम्‌ तदा इत्यनेन अधिकः इत्यस्य तत्‌ केचन बहवः द्वि तथा महत्वपूर्णः अयम्‌ अस्य विषये अयं अस्ति तत्‌ प्रथमः विषये इत्युपरि इत्युपरि इतर अधिकतमः अधिकः अपि सामान्यतया ठ इतरेतर नूतनम्‌ द न्यूनम्‌ कश्चित्‌ वा विशालः द सः अस्ति तदनुसारम् तत्र अस्ति केवलम्‌ अपि अत्र सर्वे विविधाः तत्‌ बहवः यतः इदानीम्‌ द दक्षिण इत्यस्मै तस्य उपरि नथ अतीव कार्यम्‌ सर्वे एकैकम्‌ इत्यादि। एते सन्ति उत इत्थम्‌ मध्ये एतदर्थं . स कस्य प्रथमः श्री. करोति अस्मिन् प्रकारः निर्मिता कालः तत्र कर्तुं समान अधुना ते सन्ति स एकः अस्ति सः अर्थात् तेषां कृते . स्थितम् विशेषः अग्रिम तेषाम्‌ समान स्रोतः ख म समान इदानीमपि अधिकतया करोतु ते समान इत्यस्य वीथी सह यस्मिन् कृतवान्‌ धृतः तदा पुनः पूर्वं सः आगतः किम्‌ कुल इतर पुरा मात्रा स विषये उ अतएव अपि नगरस्य उपरि यतः प्रतिशतं कतरः कालः साधनानि भूत तथापि जात सम्बन्धि अन्यत्‌ ग अतः अस्माकं स्वकीयाः अस्माकं इदानीं अन्तः इत्यादयः भवन्तः इत्यादयः एते एताः तस्य अस्य इदम् एते तेषां तेषां तेषां तान् तेषां तेषां तेषां समानः सः एकः च तादृशाः बहवः अन्ये च वदन्ति यत् कियत् कस्मै कस्मै यस्मै यस्मै यस्मै यस्मै न अतिनीचः किन्तु प्रथमं सम्पूर्णतया ततः चिरकालानन्तरं पुस्तकं सम्पूर्णतया अन्तः किन्तु अत्र वा इह इव श्रद्धाय अवशिष्यते परन्तु अन्ये वर्गाः सन्ति ते सन्ति शक्नुवन्ति सर्वे मिलित्वा सर्वे एकत्र"'.split(" ")),e.sa.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var r=e.wordcut;r.init(),e.sa.tokenizer=function(t){if(!arguments.length||null==t||void 0==t)return[];if(Array.isArray(t))return t.map(function(r){return isLunr2?new e.Token(r.toLowerCase()):r.toLowerCase()});var i=t.toString().toLowerCase().replace(/^\s+/,"");return r.cut(i).split("|")},e.Pipeline.registerFunction(e.sa.stemmer,"stemmer-sa"),e.Pipeline.registerFunction(e.sa.stopWordFilter,"stopWordFilter-sa")}});
@@ -1 +0,0 @@
!function(r,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(r.lunr)}(this,function(){return function(r){r.stemmerSupport={Among:function(r,t,i,s){if(this.toCharArray=function(r){for(var t=r.length,i=new Array(t),s=0;s<t;s++)i[s]=r.charCodeAt(s);return i},!r&&""!=r||!t&&0!=t||!i)throw"Bad Among initialisation: s:"+r+", substring_i: "+t+", result: "+i;this.s_size=r.length,this.s=this.toCharArray(r),this.substring_i=t,this.result=i,this.method=s},SnowballProgram:function(){var r;return{bra:0,ket:0,limit:0,cursor:0,limit_backward:0,setCurrent:function(t){r=t,this.cursor=0,this.limit=t.length,this.limit_backward=0,this.bra=this.cursor,this.ket=this.limit},getCurrent:function(){var t=r;return r=null,t},in_grouping:function(t,i,s){if(this.cursor<this.limit){var e=r.charCodeAt(this.cursor);if(e<=s&&e>=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor++,!0}return!1},in_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e<=s&&e>=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor--,!0}return!1},out_grouping:function(t,i,s){if(this.cursor<this.limit){var e=r.charCodeAt(this.cursor);if(e>s||e<i)return this.cursor++,!0;if(e-=i,!(t[e>>3]&1<<(7&e)))return this.cursor++,!0}return!1},out_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e>s||e<i)return this.cursor--,!0;if(e-=i,!(t[e>>3]&1<<(7&e)))return this.cursor--,!0}return!1},eq_s:function(t,i){if(this.limit-this.cursor<t)return!1;for(var s=0;s<t;s++)if(r.charCodeAt(this.cursor+s)!=i.charCodeAt(s))return!1;return this.cursor+=t,!0},eq_s_b:function(t,i){if(this.cursor-this.limit_backward<t)return!1;for(var s=0;s<t;s++)if(r.charCodeAt(this.cursor-t+s)!=i.charCodeAt(s))return!1;return this.cursor-=t,!0},find_among:function(t,i){for(var s=0,e=i,n=this.cursor,u=this.limit,o=0,h=0,c=!1;;){for(var a=s+(e-s>>1),f=0,l=o<h?o:h,_=t[a],m=l;m<_.s_size;m++){if(n+l==u){f=-1;break}if(f=r.charCodeAt(n+l)-_.s[m])break;l++}if(f<0?(e=a,h=l):(s=a,o=l),e-s<=1){if(s>0||e==s||c)break;c=!0}}for(;;){var _=t[s];if(o>=_.s_size){if(this.cursor=n+_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n+_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},find_among_b:function(t,i){for(var s=0,e=i,n=this.cursor,u=this.limit_backward,o=0,h=0,c=!1;;){for(var a=s+(e-s>>1),f=0,l=o<h?o:h,_=t[a],m=_.s_size-1-l;m>=0;m--){if(n-l==u){f=-1;break}if(f=r.charCodeAt(n-1-l)-_.s[m])break;l++}if(f<0?(e=a,h=l):(s=a,o=l),e-s<=1){if(s>0||e==s||c)break;c=!0}}for(;;){var _=t[s];if(o>=_.s_size){if(this.cursor=n-_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n-_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},replace_s:function(t,i,s){var e=s.length-(i-t),n=r.substring(0,t),u=r.substring(i);return r=n+s+u,this.limit+=e,this.cursor>=i?this.cursor+=e:this.cursor>t&&(this.cursor=t),e},slice_check:function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>r.length)throw"faulty slice operation"},slice_from:function(r){this.slice_check(),this.replace_s(this.bra,this.ket,r)},slice_del:function(){this.slice_from("")},insert:function(r,t,i){var s=this.replace_s(r,t,i);r<=this.bra&&(this.bra+=s),r<=this.ket&&(this.ket+=s)},slice_to:function(){return this.slice_check(),r.substring(this.bra,this.ket)},eq_v_b:function(r){return this.eq_s_b(r.length,r)}}}},r.trimmerSupport={generateTrimmer:function(r){var t=new RegExp("^[^"+r+"]+"),i=new RegExp("[^"+r+"]+$");return function(r){return"function"==typeof r.update?r.update(function(r){return r.replace(t,"").replace(i,"")}):r.replace(t,"").replace(i,"")}}}}});
-18
View File
@@ -1,18 +0,0 @@
/*!
* Lunr languages, `Swedish` language
* https://github.com/MihaiValentin/lunr-languages
*
* Copyright 2014, Mihai Valentin
* http://www.mozilla.org/MPL/
*/
/*!
* based on
* Snowball JavaScript Library v0.3
* http://code.google.com/p/urim/
* http://snowball.tartarus.org/
*
* Copyright 2010, Oleg Mazko
* http://www.mozilla.org/MPL/
*/
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.sv=function(){this.pipeline.reset(),this.pipeline.add(e.sv.trimmer,e.sv.stopWordFilter,e.sv.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.sv.stemmer))},e.sv.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.sv.trimmer=e.trimmerSupport.generateTrimmer(e.sv.wordCharacters),e.Pipeline.registerFunction(e.sv.trimmer,"trimmer-sv"),e.sv.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,t=new function(){function e(){var e,r=w.cursor+3;if(o=w.limit,0<=r||r<=w.limit){for(a=r;;){if(e=w.cursor,w.in_grouping(l,97,246)){w.cursor=e;break}if(w.cursor=e,w.cursor>=w.limit)return;w.cursor++}for(;!w.out_grouping(l,97,246);){if(w.cursor>=w.limit)return;w.cursor++}o=w.cursor,o<a&&(o=a)}}function t(){var e,r=w.limit_backward;if(w.cursor>=o&&(w.limit_backward=o,w.cursor=w.limit,w.ket=w.cursor,e=w.find_among_b(u,37),w.limit_backward=r,e))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:w.in_grouping_b(d,98,121)&&w.slice_del()}}function i(){var e=w.limit_backward;w.cursor>=o&&(w.limit_backward=o,w.cursor=w.limit,w.find_among_b(c,7)&&(w.cursor=w.limit,w.ket=w.cursor,w.cursor>w.limit_backward&&(w.bra=--w.cursor,w.slice_del())),w.limit_backward=e)}function s(){var e,r;if(w.cursor>=o){if(r=w.limit_backward,w.limit_backward=o,w.cursor=w.limit,w.ket=w.cursor,e=w.find_among_b(m,5))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:w.slice_from("lös");break;case 3:w.slice_from("full")}w.limit_backward=r}}var a,o,u=[new r("a",-1,1),new r("arna",0,1),new r("erna",0,1),new r("heterna",2,1),new r("orna",0,1),new r("ad",-1,1),new r("e",-1,1),new r("ade",6,1),new r("ande",6,1),new r("arne",6,1),new r("are",6,1),new r("aste",6,1),new r("en",-1,1),new r("anden",12,1),new r("aren",12,1),new r("heten",12,1),new r("ern",-1,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",18,1),new r("or",-1,1),new r("s",-1,2),new r("as",21,1),new r("arnas",22,1),new r("ernas",22,1),new r("ornas",22,1),new r("es",21,1),new r("ades",26,1),new r("andes",26,1),new r("ens",21,1),new r("arens",29,1),new r("hetens",29,1),new r("erns",21,1),new r("at",-1,1),new r("andet",-1,1),new r("het",-1,1),new r("ast",-1,1)],c=[new r("dd",-1,-1),new r("gd",-1,-1),new r("nn",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1),new r("tt",-1,-1)],m=[new r("ig",-1,1),new r("lig",0,1),new r("els",-1,1),new r("fullt",-1,3),new r("löst",-1,2)],l=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,24,0,32],d=[119,127,149],w=new n;this.setCurrent=function(e){w.setCurrent(e)},this.getCurrent=function(){return w.getCurrent()},this.stem=function(){var r=w.cursor;return e(),w.limit_backward=r,w.cursor=w.limit,t(),w.cursor=w.limit,i(),w.cursor=w.limit,s(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return t.setCurrent(e),t.stem(),t.getCurrent()}):(t.setCurrent(e),t.stem(),t.getCurrent())}}(),e.Pipeline.registerFunction(e.sv.stemmer,"stemmer-sv"),e.sv.stopWordFilter=e.generateStopWordFilter("alla allt att av blev bli blir blivit de dem den denna deras dess dessa det detta dig din dina ditt du där då efter ej eller en er era ert ett från för ha hade han hans har henne hennes hon honom hur här i icke ingen inom inte jag ju kan kunde man med mellan men mig min mina mitt mot mycket ni nu när någon något några och om oss på samma sedan sig sin sina sitta själv skulle som så sådan sådana sådant till under upp ut utan vad var vara varför varit varje vars vart vem vi vid vilka vilkas vilken vilket vår våra vårt än är åt över".split(" ")),e.Pipeline.registerFunction(e.sv.stopWordFilter,"stopWordFilter-sv")}});
-1
View File
@@ -1 +0,0 @@
!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ta=function(){this.pipeline.reset(),this.pipeline.add(e.ta.trimmer,e.ta.stopWordFilter,e.ta.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ta.stemmer))},e.ta.wordCharacters="஀-உஊ-ஏஐ-ஙச-ட஠-னப-யர-ஹ஺-ிீ-௉ொ-௏ௐ-௙௚-௟௠-௩௪-௯௰-௹௺-௿a-zA-Z-zA-0-9-",e.ta.trimmer=e.trimmerSupport.generateTrimmer(e.ta.wordCharacters),e.Pipeline.registerFunction(e.ta.trimmer,"trimmer-ta"),e.ta.stopWordFilter=e.generateStopWordFilter("அங்கு அங்கே அது அதை அந்த அவர் அவர்கள் அவள் அவன் அவை ஆக ஆகவே ஆகையால் ஆதலால் ஆதலினால் ஆனாலும் ஆனால் இங்கு இங்கே இது இதை இந்த இப்படி இவர் இவர்கள் இவள் இவன் இவை இவ்வளவு உனக்கு உனது உன் உன்னால் எங்கு எங்கே எது எதை எந்த எப்படி எவர் எவர்கள் எவள் எவன் எவை எவ்வளவு எனக்கு எனது எனவே என் என்ன என்னால் ஏது ஏன் தனது தன்னால் தானே தான் நாங்கள் நாம் நான் நீ நீங்கள்".split(" ")),e.ta.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var t=e.wordcut;t.init(),e.ta.tokenizer=function(r){if(!arguments.length||null==r||void 0==r)return[];if(Array.isArray(r))return r.map(function(t){return isLunr2?new e.Token(t.toLowerCase()):t.toLowerCase()});var i=r.toString().toLowerCase().replace(/^\s+/,"");return t.cut(i).split("|")},e.Pipeline.registerFunction(e.ta.stemmer,"stemmer-ta"),e.Pipeline.registerFunction(e.ta.stopWordFilter,"stopWordFilter-ta")}});
-1
View File
@@ -1 +0,0 @@
!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.te=function(){this.pipeline.reset(),this.pipeline.add(e.te.trimmer,e.te.stopWordFilter,e.te.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.te.stemmer))},e.te.wordCharacters="ఀ-ఄఅ-ఔక-హా-ౌౕ-ౖౘ-ౚౠ-ౡౢ-ౣ౦-౯౸-౿఼ఽ్ౝ౷౤౥",e.te.trimmer=e.trimmerSupport.generateTrimmer(e.te.wordCharacters),e.Pipeline.registerFunction(e.te.trimmer,"trimmer-te"),e.te.stopWordFilter=e.generateStopWordFilter("అందరూ అందుబాటులో అడగండి అడగడం అడ్డంగా అనుగుణంగా అనుమతించు అనుమతిస్తుంది అయితే ఇప్పటికే ఉన్నారు ఎక్కడైనా ఎప్పుడు ఎవరైనా ఎవరో ఏ ఏదైనా ఏమైనప్పటికి ఒక ఒకరు కనిపిస్తాయి కాదు కూడా గా గురించి చుట్టూ చేయగలిగింది తగిన తర్వాత దాదాపు దూరంగా నిజంగా పై ప్రకారం ప్రక్కన మధ్య మరియు మరొక మళ్ళీ మాత్రమే మెచ్చుకో వద్ద వెంట వేరుగా వ్యతిరేకంగా సంబంధం".split(" ")),e.te.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var t=e.wordcut;t.init(),e.te.tokenizer=function(r){if(!arguments.length||null==r||void 0==r)return[];if(Array.isArray(r))return r.map(function(t){return isLunr2?new e.Token(t.toLowerCase()):t.toLowerCase()});var i=r.toString().toLowerCase().replace(/^\s+/,"");return t.cut(i).split("|")},e.Pipeline.registerFunction(e.te.stemmer,"stemmer-te"),e.Pipeline.registerFunction(e.te.stopWordFilter,"stopWordFilter-te")}});
-1
View File
@@ -1 +0,0 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.th=function(){this.pipeline.reset(),this.pipeline.add(e.th.trimmer),r?this.tokenizer=e.th.tokenizer:(e.tokenizer&&(e.tokenizer=e.th.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.th.tokenizer))},e.th.wordCharacters="[฀-๿]",e.th.trimmer=e.trimmerSupport.generateTrimmer(e.th.wordCharacters),e.Pipeline.registerFunction(e.th.trimmer,"trimmer-th");var t=e.wordcut;t.init(),e.th.tokenizer=function(i){if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(t){return r?new e.Token(t):t});var n=i.toString().replace(/^\s+/,"");return t.cut(n).split("|")}}});
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.vi=function(){this.pipeline.reset(),this.pipeline.add(e.vi.stopWordFilter,e.vi.trimmer)},e.vi.wordCharacters="[A-Za-ẓ̀͐́͑̉̃̓ÂâÊêÔôĂ-ăĐ-đƠ-ơƯ-ư]",e.vi.trimmer=e.trimmerSupport.generateTrimmer(e.vi.wordCharacters),e.Pipeline.registerFunction(e.vi.trimmer,"trimmer-vi"),e.vi.stopWordFilter=e.generateStopWordFilter("là cái nhưng mà".split(" "))}});
-1
View File
@@ -1 +0,0 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r(require("@node-rs/jieba")):r()(e.lunr)}(this,function(e){return function(r,t){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var i="2"==r.version[0];r.zh=function(){this.pipeline.reset(),this.pipeline.add(r.zh.trimmer,r.zh.stopWordFilter,r.zh.stemmer),i?this.tokenizer=r.zh.tokenizer:(r.tokenizer&&(r.tokenizer=r.zh.tokenizer),this.tokenizerFn&&(this.tokenizerFn=r.zh.tokenizer))},r.zh.tokenizer=function(n){if(!arguments.length||null==n||void 0==n)return[];if(Array.isArray(n))return n.map(function(e){return i?new r.Token(e.toLowerCase()):e.toLowerCase()});t&&e.load(t);var o=n.toString().trim().toLowerCase(),s=[];e.cut(o,!0).forEach(function(e){s=s.concat(e.split(" "))}),s=s.filter(function(e){return!!e});var u=0;return s.map(function(e,t){if(i){var n=o.indexOf(e,u),s={};return s.position=[n,e.length],s.index=t,u=n,new r.Token(e,s)}return e})},r.zh.wordCharacters="\\w一-龥",r.zh.trimmer=r.trimmerSupport.generateTrimmer(r.zh.wordCharacters),r.Pipeline.registerFunction(r.zh.trimmer,"trimmer-zh"),r.zh.stemmer=function(){return function(e){return e}}(),r.Pipeline.registerFunction(r.zh.stemmer,"stemmer-zh"),r.zh.stopWordFilter=r.generateStopWordFilter("的 一 不 在 人 有 是 为 為 以 于 於 上 他 而 后 後 之 来 來 及 了 因 下 可 到 由 这 這 与 與 也 此 但 并 並 个 個 其 已 无 無 小 我 们 們 起 最 再 今 去 好 只 又 或 很 亦 某 把 那 你 乃 它 吧 被 比 别 趁 当 當 从 從 得 打 凡 儿 兒 尔 爾 该 該 各 给 給 跟 和 何 还 還 即 几 幾 既 看 据 據 距 靠 啦 另 么 麽 每 嘛 拿 哪 您 凭 憑 且 却 卻 让 讓 仍 啥 如 若 使 谁 誰 虽 雖 随 隨 同 所 她 哇 嗡 往 些 向 沿 哟 喲 用 咱 则 則 怎 曾 至 致 着 著 诸 諸 自".split(" ")),r.Pipeline.registerFunction(r.zh.stopWordFilter,"stopWordFilter-zh")}});
-206
View File
@@ -1,206 +0,0 @@
/**
* export the module via AMD, CommonJS or as a browser global
* Export code from https://github.com/umdjs/umd/blob/master/returnExports.js
*/
;(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(factory)
} else if (typeof exports === 'object') {
/**
* Node. Does not work with strict CommonJS, but
* only CommonJS-like environments that support module.exports,
* like Node.
*/
module.exports = factory()
} else {
// Browser globals (root is window)
factory()(root.lunr);
}
}(this, function () {
/**
* Just return a value to define the module export.
* This example returns an object, but the module
* can return a function as the exported value.
*/
return function(lunr) {
// TinySegmenter 0.1 -- Super compact Japanese tokenizer in Javascript
// (c) 2008 Taku Kudo <taku@chasen.org>
// TinySegmenter is freely distributable under the terms of a new BSD licence.
// For details, see http://chasen.org/~taku/software/TinySegmenter/LICENCE.txt
function TinySegmenter() {
var patterns = {
"[一二三四五六七八九十百千万億兆]":"M",
"[一-龠々〆ヵヶ]":"H",
"[ぁ-ん]":"I",
"[ァ-ヴーア-ン゙ー]":"K",
"[a-zA-Z-zA-]":"A",
"[0-9-]":"N"
}
this.chartype_ = [];
for (var i in patterns) {
var regexp = new RegExp(i);
this.chartype_.push([regexp, patterns[i]]);
}
this.BIAS__ = -332
this.BC1__ = {"HH":6,"II":2461,"KH":406,"OH":-1378};
this.BC2__ = {"AA":-3267,"AI":2744,"AN":-878,"HH":-4070,"HM":-1711,"HN":4012,"HO":3761,"IA":1327,"IH":-1184,"II":-1332,"IK":1721,"IO":5492,"KI":3831,"KK":-8741,"MH":-3132,"MK":3334,"OO":-2920};
this.BC3__ = {"HH":996,"HI":626,"HK":-721,"HN":-1307,"HO":-836,"IH":-301,"KK":2762,"MK":1079,"MM":4034,"OA":-1652,"OH":266};
this.BP1__ = {"BB":295,"OB":304,"OO":-125,"UB":352};
this.BP2__ = {"BO":60,"OO":-1762};
this.BQ1__ = {"BHH":1150,"BHM":1521,"BII":-1158,"BIM":886,"BMH":1208,"BNH":449,"BOH":-91,"BOO":-2597,"OHI":451,"OIH":-296,"OKA":1851,"OKH":-1020,"OKK":904,"OOO":2965};
this.BQ2__ = {"BHH":118,"BHI":-1159,"BHM":466,"BIH":-919,"BKK":-1720,"BKO":864,"OHH":-1139,"OHM":-181,"OIH":153,"UHI":-1146};
this.BQ3__ = {"BHH":-792,"BHI":2664,"BII":-299,"BKI":419,"BMH":937,"BMM":8335,"BNN":998,"BOH":775,"OHH":2174,"OHM":439,"OII":280,"OKH":1798,"OKI":-793,"OKO":-2242,"OMH":-2402,"OOO":11699};
this.BQ4__ = {"BHH":-3895,"BIH":3761,"BII":-4654,"BIK":1348,"BKK":-1806,"BMI":-3385,"BOO":-12396,"OAH":926,"OHH":266,"OHK":-2036,"ONN":-973};
this.BW1__ = {",と":660,",同":727,"B1あ":1404,"B1同":542,"、と":660,"、同":727,"」と":1682,"あっ":1505,"いう":1743,"いっ":-2055,"いる":672,"うし":-4817,"うん":665,"から":3472,"がら":600,"こう":-790,"こと":2083,"こん":-1262,"さら":-4143,"さん":4573,"した":2641,"して":1104,"すで":-3399,"そこ":1977,"それ":-871,"たち":1122,"ため":601,"った":3463,"つい":-802,"てい":805,"てき":1249,"でき":1127,"です":3445,"では":844,"とい":-4915,"とみ":1922,"どこ":3887,"ない":5713,"なっ":3015,"など":7379,"なん":-1113,"にし":2468,"には":1498,"にも":1671,"に対":-912,"の一":-501,"の中":741,"ませ":2448,"まで":1711,"まま":2600,"まる":-2155,"やむ":-1947,"よっ":-2565,"れた":2369,"れで":-913,"をし":1860,"を見":731,"亡く":-1886,"京都":2558,"取り":-2784,"大き":-2604,"大阪":1497,"平方":-2314,"引き":-1336,"日本":-195,"本当":-2423,"毎日":-2113,"目指":-724,"B1あ":1404,"B1同":542,"」と":1682};
this.BW2__ = {"..":-11822,"11":-669,"――":-5730,"−−":-13175,"いう":-1609,"うか":2490,"かし":-1350,"かも":-602,"から":-7194,"かれ":4612,"がい":853,"がら":-3198,"きた":1941,"くな":-1597,"こと":-8392,"この":-4193,"させ":4533,"され":13168,"さん":-3977,"しい":-1819,"しか":-545,"した":5078,"して":972,"しな":939,"その":-3744,"たい":-1253,"たた":-662,"ただ":-3857,"たち":-786,"たと":1224,"たは":-939,"った":4589,"って":1647,"っと":-2094,"てい":6144,"てき":3640,"てく":2551,"ては":-3110,"ても":-3065,"でい":2666,"でき":-1528,"でし":-3828,"です":-4761,"でも":-4203,"とい":1890,"とこ":-1746,"とと":-2279,"との":720,"とみ":5168,"とも":-3941,"ない":-2488,"なが":-1313,"など":-6509,"なの":2614,"なん":3099,"にお":-1615,"にし":2748,"にな":2454,"によ":-7236,"に対":-14943,"に従":-4688,"に関":-11388,"のか":2093,"ので":-7059,"のに":-6041,"のの":-6125,"はい":1073,"はが":-1033,"はず":-2532,"ばれ":1813,"まし":-1316,"まで":-6621,"まれ":5409,"めて":-3153,"もい":2230,"もの":-10713,"らか":-944,"らし":-1611,"らに":-1897,"りし":651,"りま":1620,"れた":4270,"れて":849,"れば":4114,"ろう":6067,"われ":7901,"を通":-11877,"んだ":728,"んな":-4115,"一人":602,"一方":-1375,"一日":970,"一部":-1051,"上が":-4479,"会社":-1116,"出て":2163,"分の":-7758,"同党":970,"同日":-913,"大阪":-2471,"委員":-1250,"少な":-1050,"年度":-8669,"年間":-1626,"府県":-2363,"手権":-1982,"新聞":-4066,"日新":-722,"日本":-7068,"日米":3372,"曜日":-601,"朝鮮":-2355,"本人":-2697,"東京":-1543,"然と":-1384,"社会":-1276,"立て":-990,"第に":-1612,"米国":-4268,"11":-669};
this.BW3__ = {"あた":-2194,"あり":719,"ある":3846,"い.":-1185,"い。":-1185,"いい":5308,"いえ":2079,"いく":3029,"いた":2056,"いっ":1883,"いる":5600,"いわ":1527,"うち":1117,"うと":4798,"えと":1454,"か.":2857,"か。":2857,"かけ":-743,"かっ":-4098,"かに":-669,"から":6520,"かり":-2670,"が,":1816,"が、":1816,"がき":-4855,"がけ":-1127,"がっ":-913,"がら":-4977,"がり":-2064,"きた":1645,"けど":1374,"こと":7397,"この":1542,"ころ":-2757,"さい":-714,"さを":976,"し,":1557,"し、":1557,"しい":-3714,"した":3562,"して":1449,"しな":2608,"しま":1200,"す.":-1310,"す。":-1310,"する":6521,"ず,":3426,"ず、":3426,"ずに":841,"そう":428,"た.":8875,"た。":8875,"たい":-594,"たの":812,"たり":-1183,"たる":-853,"だ.":4098,"だ。":4098,"だっ":1004,"った":-4748,"って":300,"てい":6240,"てお":855,"ても":302,"です":1437,"でに":-1482,"では":2295,"とう":-1387,"とし":2266,"との":541,"とも":-3543,"どう":4664,"ない":1796,"なく":-903,"など":2135,"に,":-1021,"に、":-1021,"にし":1771,"にな":1906,"には":2644,"の,":-724,"の、":-724,"の子":-1000,"は,":1337,"は、":1337,"べき":2181,"まし":1113,"ます":6943,"まっ":-1549,"まで":6154,"まれ":-793,"らし":1479,"られ":6820,"るる":3818,"れ,":854,"れ、":854,"れた":1850,"れて":1375,"れば":-3246,"れる":1091,"われ":-605,"んだ":606,"んで":798,"カ月":990,"会議":860,"入り":1232,"大会":2217,"始め":1681,"市":965,"新聞":-5055,"日,":974,"日、":974,"社会":2024,"カ月":990};
this.TC1__ = {"AAA":1093,"HHH":1029,"HHM":580,"HII":998,"HOH":-390,"HOM":-331,"IHI":1169,"IOH":-142,"IOI":-1015,"IOM":467,"MMH":187,"OOI":-1832};
this.TC2__ = {"HHO":2088,"HII":-1023,"HMM":-1154,"IHI":-1965,"KKH":703,"OII":-2649};
this.TC3__ = {"AAA":-294,"HHH":346,"HHI":-341,"HII":-1088,"HIK":731,"HOH":-1486,"IHH":128,"IHI":-3041,"IHO":-1935,"IIH":-825,"IIM":-1035,"IOI":-542,"KHH":-1216,"KKA":491,"KKH":-1217,"KOK":-1009,"MHH":-2694,"MHM":-457,"MHO":123,"MMH":-471,"NNH":-1689,"NNO":662,"OHO":-3393};
this.TC4__ = {"HHH":-203,"HHI":1344,"HHK":365,"HHM":-122,"HHN":182,"HHO":669,"HIH":804,"HII":679,"HOH":446,"IHH":695,"IHO":-2324,"IIH":321,"III":1497,"IIO":656,"IOO":54,"KAK":4845,"KKA":3386,"KKK":3065,"MHH":-405,"MHI":201,"MMH":-241,"MMM":661,"MOM":841};
this.TQ1__ = {"BHHH":-227,"BHHI":316,"BHIH":-132,"BIHH":60,"BIII":1595,"BNHH":-744,"BOHH":225,"BOOO":-908,"OAKK":482,"OHHH":281,"OHIH":249,"OIHI":200,"OIIH":-68};
this.TQ2__ = {"BIHH":-1401,"BIII":-1033,"BKAK":-543,"BOOO":-5591};
this.TQ3__ = {"BHHH":478,"BHHM":-1073,"BHIH":222,"BHII":-504,"BIIH":-116,"BIII":-105,"BMHI":-863,"BMHM":-464,"BOMH":620,"OHHH":346,"OHHI":1729,"OHII":997,"OHMH":481,"OIHH":623,"OIIH":1344,"OKAK":2792,"OKHH":587,"OKKA":679,"OOHH":110,"OOII":-685};
this.TQ4__ = {"BHHH":-721,"BHHM":-3604,"BHII":-966,"BIIH":-607,"BIII":-2181,"OAAA":-2763,"OAKK":180,"OHHH":-294,"OHHI":2446,"OHHO":480,"OHIH":-1573,"OIHH":1935,"OIHI":-493,"OIIH":626,"OIII":-4007,"OKAK":-8156};
this.TW1__ = {"につい":-4681,"東京都":2026};
this.TW2__ = {"ある程":-2049,"いった":-1256,"ころが":-2434,"しょう":3873,"その後":-4430,"だって":-1049,"ていた":1833,"として":-4657,"ともに":-4517,"もので":1882,"一気に":-792,"初めて":-1512,"同時に":-8097,"大きな":-1255,"対して":-2721,"社会党":-3216};
this.TW3__ = {"いただ":-1734,"してい":1314,"として":-4314,"につい":-5483,"にとっ":-5989,"に当た":-6247,"ので,":-727,"ので、":-727,"のもの":-600,"れから":-3752,"十二月":-2287};
this.TW4__ = {"いう.":8576,"いう。":8576,"からな":-2348,"してい":2958,"たが,":1516,"たが、":1516,"ている":1538,"という":1349,"ました":5543,"ません":1097,"ようと":-4258,"よると":5865};
this.UC1__ = {"A":484,"K":93,"M":645,"O":-505};
this.UC2__ = {"A":819,"H":1059,"I":409,"M":3987,"N":5775,"O":646};
this.UC3__ = {"A":-1370,"I":2311};
this.UC4__ = {"A":-2643,"H":1809,"I":-1032,"K":-3450,"M":3565,"N":3876,"O":6646};
this.UC5__ = {"H":313,"I":-1238,"K":-799,"M":539,"O":-831};
this.UC6__ = {"H":-506,"I":-253,"K":87,"M":247,"O":-387};
this.UP1__ = {"O":-214};
this.UP2__ = {"B":69,"O":935};
this.UP3__ = {"B":189};
this.UQ1__ = {"BH":21,"BI":-12,"BK":-99,"BN":142,"BO":-56,"OH":-95,"OI":477,"OK":410,"OO":-2422};
this.UQ2__ = {"BH":216,"BI":113,"OK":1759};
this.UQ3__ = {"BA":-479,"BH":42,"BI":1913,"BK":-7198,"BM":3160,"BN":6427,"BO":14761,"OI":-827,"ON":-3212};
this.UW1__ = {",":156,"、":156,"「":-463,"あ":-941,"う":-127,"が":-553,"き":121,"こ":505,"で":-201,"と":-547,"ど":-123,"に":-789,"の":-185,"は":-847,"も":-466,"や":-470,"よ":182,"ら":-292,"り":208,"れ":169,"を":-446,"ん":-137,"・":-135,"主":-402,"京":-268,"区":-912,"午":871,"国":-460,"大":561,"委":729,"市":-411,"日":-141,"理":361,"生":-408,"県":-386,"都":-718,"「":-463,"・":-135};
this.UW2__ = {",":-829,"、":-829,"":892,"「":-645,"」":3145,"あ":-538,"い":505,"う":134,"お":-502,"か":1454,"が":-856,"く":-412,"こ":1141,"さ":878,"ざ":540,"し":1529,"す":-675,"せ":300,"そ":-1011,"た":188,"だ":1837,"つ":-949,"て":-291,"で":-268,"と":-981,"ど":1273,"な":1063,"に":-1764,"の":130,"は":-409,"ひ":-1273,"べ":1261,"ま":600,"も":-1263,"や":-402,"よ":1639,"り":-579,"る":-694,"れ":571,"を":-2516,"ん":2095,"ア":-587,"カ":306,"キ":568,"ッ":831,"三":-758,"不":-2150,"世":-302,"中":-968,"主":-861,"事":492,"人":-123,"会":978,"保":362,"入":548,"初":-3025,"副":-1566,"北":-3414,"区":-422,"大":-1769,"天":-865,"太":-483,"子":-1519,"学":760,"実":1023,"小":-2009,"市":-813,"年":-1060,"強":1067,"手":-1519,"揺":-1033,"政":1522,"文":-1355,"新":-1682,"日":-1815,"明":-1462,"最":-630,"朝":-1843,"本":-1650,"東":-931,"果":-665,"次":-2378,"民":-180,"気":-1740,"理":752,"発":529,"目":-1584,"相":-242,"県":-1165,"立":-763,"第":810,"米":509,"自":-1353,"行":838,"西":-744,"見":-3874,"調":1010,"議":1198,"込":3041,"開":1758,"間":-1257,"「":-645,"」":3145,"ッ":831,"ア":-587,"カ":306,"キ":568};
this.UW3__ = {",":4889,"1":-800,"":-1723,"、":4889,"々":-2311,"":5827,"」":2670,"〓":-3573,"あ":-2696,"い":1006,"う":2342,"え":1983,"お":-4864,"か":-1163,"が":3271,"く":1004,"け":388,"げ":401,"こ":-3552,"ご":-3116,"さ":-1058,"し":-395,"す":584,"せ":3685,"そ":-5228,"た":842,"ち":-521,"っ":-1444,"つ":-1081,"て":6167,"で":2318,"と":1691,"ど":-899,"な":-2788,"に":2745,"の":4056,"は":4555,"ひ":-2171,"ふ":-1798,"へ":1199,"ほ":-5516,"ま":-4384,"み":-120,"め":1205,"も":2323,"や":-788,"よ":-202,"ら":727,"り":649,"る":5905,"れ":2773,"わ":-1207,"を":6620,"ん":-518,"ア":551,"グ":1319,"ス":874,"ッ":-1350,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278,"・":-3794,"一":-1619,"下":-1759,"世":-2087,"両":3815,"中":653,"主":-758,"予":-1193,"二":974,"人":2742,"今":792,"他":1889,"以":-1368,"低":811,"何":4265,"作":-361,"保":-2439,"元":4858,"党":3593,"全":1574,"公":-3030,"六":755,"共":-1880,"円":5807,"再":3095,"分":457,"初":2475,"別":1129,"前":2286,"副":4437,"力":365,"動":-949,"務":-1872,"化":1327,"北":-1038,"区":4646,"千":-2309,"午":-783,"協":-1006,"口":483,"右":1233,"各":3588,"合":-241,"同":3906,"和":-837,"員":4513,"国":642,"型":1389,"場":1219,"外":-241,"妻":2016,"学":-1356,"安":-423,"実":-1008,"家":1078,"小":-513,"少":-3102,"州":1155,"市":3197,"平":-1804,"年":2416,"広":-1030,"府":1605,"度":1452,"建":-2352,"当":-3885,"得":1905,"思":-1291,"性":1822,"戸":-488,"指":-3973,"政":-2013,"教":-1479,"数":3222,"文":-1489,"新":1764,"日":2099,"旧":5792,"昨":-661,"時":-1248,"曜":-951,"最":-937,"月":4125,"期":360,"李":3094,"村":364,"東":-805,"核":5156,"森":2438,"業":484,"氏":2613,"民":-1694,"決":-1073,"法":1868,"海":-495,"無":979,"物":461,"特":-3850,"生":-273,"用":914,"町":1215,"的":7313,"直":-1835,"省":792,"県":6293,"知":-1528,"私":4231,"税":401,"立":-960,"第":1201,"米":7767,"系":3066,"約":3663,"級":1384,"統":-4229,"総":1163,"線":1255,"者":6457,"能":725,"自":-2869,"英":785,"見":1044,"調":-562,"財":-733,"費":1777,"車":1835,"軍":1375,"込":-1504,"通":-1136,"選":-681,"郎":1026,"郡":4404,"部":1200,"金":2163,"長":421,"開":-1432,"間":1302,"関":-1282,"雨":2009,"電":-1045,"非":2066,"駅":1620,"":-800,"」":2670,"・":-3794,"ッ":-1350,"ア":551,"グ":1319,"ス":874,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278};
this.UW4__ = {",":3930,".":3508,"―":-4841,"、":3930,"。":3508,"":4999,"「":1895,"」":3798,"〓":-5156,"あ":4752,"い":-3435,"う":-640,"え":-2514,"お":2405,"か":530,"が":6006,"き":-4482,"ぎ":-3821,"く":-3788,"け":-4376,"げ":-4734,"こ":2255,"ご":1979,"さ":2864,"し":-843,"じ":-2506,"す":-731,"ず":1251,"せ":181,"そ":4091,"た":5034,"だ":5408,"ち":-3654,"っ":-5882,"つ":-1659,"て":3994,"で":7410,"と":4547,"な":5433,"に":6499,"ぬ":1853,"ね":1413,"の":7396,"は":8578,"ば":1940,"ひ":4249,"び":-4134,"ふ":1345,"へ":6665,"べ":-744,"ほ":1464,"ま":1051,"み":-2082,"む":-882,"め":-5046,"も":4169,"ゃ":-2666,"や":2795,"ょ":-1544,"よ":3351,"ら":-2922,"り":-9726,"る":-14896,"れ":-2613,"ろ":-4570,"わ":-1783,"を":13150,"ん":-2352,"カ":2145,"コ":1789,"セ":1287,"ッ":-724,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637,"・":-4371,"ー":-11870,"一":-2069,"中":2210,"予":782,"事":-190,"井":-1768,"人":1036,"以":544,"会":950,"体":-1286,"作":530,"側":4292,"先":601,"党":-2006,"共":-1212,"内":584,"円":788,"初":1347,"前":1623,"副":3879,"力":-302,"動":-740,"務":-2715,"化":776,"区":4517,"協":1013,"参":1555,"合":-1834,"和":-681,"員":-910,"器":-851,"回":1500,"国":-619,"園":-1200,"地":866,"場":-1410,"塁":-2094,"士":-1413,"多":1067,"大":571,"子":-4802,"学":-1397,"定":-1057,"寺":-809,"小":1910,"屋":-1328,"山":-1500,"島":-2056,"川":-2667,"市":2771,"年":374,"庁":-4556,"後":456,"性":553,"感":916,"所":-1566,"支":856,"改":787,"政":2182,"教":704,"文":522,"方":-856,"日":1798,"時":1829,"最":845,"月":-9066,"木":-485,"来":-442,"校":-360,"業":-1043,"氏":5388,"民":-2716,"気":-910,"沢":-939,"済":-543,"物":-735,"率":672,"球":-1267,"生":-1286,"産":-1101,"田":-2900,"町":1826,"的":2586,"目":922,"省":-3485,"県":2997,"空":-867,"立":-2112,"第":788,"米":2937,"系":786,"約":2171,"経":1146,"統":-1169,"総":940,"線":-994,"署":749,"者":2145,"能":-730,"般":-852,"行":-792,"規":792,"警":-1184,"議":-244,"谷":-1000,"賞":730,"車":-1481,"軍":1158,"輪":-1433,"込":-3370,"近":929,"道":-1291,"選":2596,"郎":-4866,"都":1192,"野":-1100,"銀":-2213,"長":357,"間":-2344,"院":-2297,"際":-2604,"電":-878,"領":-1659,"題":-792,"館":-1984,"首":1749,"高":2120,"「":1895,"」":3798,"・":-4371,"ッ":-724,"ー":-11870,"カ":2145,"コ":1789,"セ":1287,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637};
this.UW5__ = {",":465,".":-299,"1":-514,"E2":-32768,"]":-2762,"、":465,"。":-299,"「":363,"あ":1655,"い":331,"う":-503,"え":1199,"お":527,"か":647,"が":-421,"き":1624,"ぎ":1971,"く":312,"げ":-983,"さ":-1537,"し":-1371,"す":-852,"だ":-1186,"ち":1093,"っ":52,"つ":921,"て":-18,"で":-850,"と":-127,"ど":1682,"な":-787,"に":-1224,"の":-635,"は":-578,"べ":1001,"み":502,"め":865,"ゃ":3350,"ょ":854,"り":-208,"る":429,"れ":504,"わ":419,"を":-1264,"ん":327,"イ":241,"ル":451,"ン":-343,"中":-871,"京":722,"会":-1153,"党":-654,"務":3519,"区":-901,"告":848,"員":2104,"大":-1296,"学":-548,"定":1785,"嵐":-1304,"市":-2991,"席":921,"年":1763,"思":872,"所":-814,"挙":1618,"新":-1682,"日":218,"月":-4353,"査":932,"格":1356,"機":-1508,"氏":-1347,"田":240,"町":-3912,"的":-3149,"相":1319,"省":-1052,"県":-4003,"研":-997,"社":-278,"空":-813,"統":1955,"者":-2233,"表":663,"語":-1073,"議":1219,"選":-1018,"郎":-368,"長":786,"間":1191,"題":2368,"館":-689,"":-514,"E2":-32768,"「":363,"イ":241,"ル":451,"ン":-343};
this.UW6__ = {",":227,".":808,"1":-270,"E1":306,"、":227,"。":808,"あ":-307,"う":189,"か":241,"が":-73,"く":-121,"こ":-200,"じ":1782,"す":383,"た":-428,"っ":573,"て":-1014,"で":101,"と":-105,"な":-253,"に":-149,"の":-417,"は":-236,"も":-206,"り":187,"る":-135,"を":195,"ル":-673,"ン":-496,"一":-277,"中":201,"件":-800,"会":624,"前":302,"区":1792,"員":-1212,"委":798,"学":-960,"市":887,"広":-695,"後":535,"業":-697,"相":753,"社":-507,"福":974,"空":-822,"者":1811,"連":463,"郎":1082,"":-270,"E1":306,"ル":-673,"ン":-496};
return this;
}
TinySegmenter.prototype.ctype_ = function(str) {
for (var i in this.chartype_) {
if (str.match(this.chartype_[i][0])) {
return this.chartype_[i][1];
}
}
return "O";
}
TinySegmenter.prototype.ts_ = function(v) {
if (v) { return v; }
return 0;
}
TinySegmenter.prototype.segment = function(input) {
if (input == null || input == undefined || input == "") {
return [];
}
var result = [];
var seg = ["B3","B2","B1"];
var ctype = ["O","O","O"];
var o = input.split("");
for (i = 0; i < o.length; ++i) {
seg.push(o[i]);
ctype.push(this.ctype_(o[i]))
}
seg.push("E1");
seg.push("E2");
seg.push("E3");
ctype.push("O");
ctype.push("O");
ctype.push("O");
var word = seg[3];
var p1 = "U";
var p2 = "U";
var p3 = "U";
for (var i = 4; i < seg.length - 3; ++i) {
var score = this.BIAS__;
var w1 = seg[i-3];
var w2 = seg[i-2];
var w3 = seg[i-1];
var w4 = seg[i];
var w5 = seg[i+1];
var w6 = seg[i+2];
var c1 = ctype[i-3];
var c2 = ctype[i-2];
var c3 = ctype[i-1];
var c4 = ctype[i];
var c5 = ctype[i+1];
var c6 = ctype[i+2];
score += this.ts_(this.UP1__[p1]);
score += this.ts_(this.UP2__[p2]);
score += this.ts_(this.UP3__[p3]);
score += this.ts_(this.BP1__[p1 + p2]);
score += this.ts_(this.BP2__[p2 + p3]);
score += this.ts_(this.UW1__[w1]);
score += this.ts_(this.UW2__[w2]);
score += this.ts_(this.UW3__[w3]);
score += this.ts_(this.UW4__[w4]);
score += this.ts_(this.UW5__[w5]);
score += this.ts_(this.UW6__[w6]);
score += this.ts_(this.BW1__[w2 + w3]);
score += this.ts_(this.BW2__[w3 + w4]);
score += this.ts_(this.BW3__[w4 + w5]);
score += this.ts_(this.TW1__[w1 + w2 + w3]);
score += this.ts_(this.TW2__[w2 + w3 + w4]);
score += this.ts_(this.TW3__[w3 + w4 + w5]);
score += this.ts_(this.TW4__[w4 + w5 + w6]);
score += this.ts_(this.UC1__[c1]);
score += this.ts_(this.UC2__[c2]);
score += this.ts_(this.UC3__[c3]);
score += this.ts_(this.UC4__[c4]);
score += this.ts_(this.UC5__[c5]);
score += this.ts_(this.UC6__[c6]);
score += this.ts_(this.BC1__[c2 + c3]);
score += this.ts_(this.BC2__[c3 + c4]);
score += this.ts_(this.BC3__[c4 + c5]);
score += this.ts_(this.TC1__[c1 + c2 + c3]);
score += this.ts_(this.TC2__[c2 + c3 + c4]);
score += this.ts_(this.TC3__[c3 + c4 + c5]);
score += this.ts_(this.TC4__[c4 + c5 + c6]);
// score += this.ts_(this.TC5__[c4 + c5 + c6]);
score += this.ts_(this.UQ1__[p1 + c1]);
score += this.ts_(this.UQ2__[p2 + c2]);
score += this.ts_(this.UQ3__[p3 + c3]);
score += this.ts_(this.BQ1__[p2 + c2 + c3]);
score += this.ts_(this.BQ2__[p2 + c3 + c4]);
score += this.ts_(this.BQ3__[p3 + c2 + c3]);
score += this.ts_(this.BQ4__[p3 + c3 + c4]);
score += this.ts_(this.TQ1__[p2 + c1 + c2 + c3]);
score += this.ts_(this.TQ2__[p2 + c2 + c3 + c4]);
score += this.ts_(this.TQ3__[p3 + c1 + c2 + c3]);
score += this.ts_(this.TQ4__[p3 + c2 + c3 + c4]);
var p = "O";
if (score > 0) {
result.push(word);
word = "";
p = "B";
}
p1 = p2;
p2 = p3;
p3 = p;
word += seg[i];
}
result.push(word);
return result;
}
lunr.TinySegmenter = TinySegmenter;
};
}));
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
{"version":3,"sources":["src/templates/assets/stylesheets/palette/_scheme.scss","../../../../src/templates/assets/stylesheets/palette.scss","src/templates/assets/stylesheets/palette/_accent.scss","src/templates/assets/stylesheets/palette/_primary.scss","src/templates/assets/stylesheets/utilities/_break.scss"],"names":[],"mappings":"AA2BA,cAGE,6BAME,sDAAA,CACA,6DAAA,CACA,+DAAA,CACA,gEAAA,CACA,mDAAA,CACA,6DAAA,CACA,+DAAA,CACA,gEAAA,CAGA,mDAAA,CACA,gDAAA,CACA,yDAAA,CACA,4DAAA,CAGA,0BAAA,CACA,mCAAA,CAGA,iCAAA,CACA,kCAAA,CACA,mCAAA,CACA,mCAAA,CACA,kCAAA,CACA,iCAAA,CACA,+CAAA,CACA,6DAAA,CACA,gEAAA,CACA,4DAAA,CACA,4DAAA,CACA,6DAAA,CAGA,6CAAA,CAGA,+CAAA,CAGA,uDAAA,CACA,6DAAA,CACA,2DAAA,CAGA,iCAAA,CAGA,yDAAA,CACA,iEAAA,CAGA,mDAAA,CACA,mDAAA,CAGA,qDAAA,CACA,uDAAA,CAGA,8DAAA,CAKA,8DAAA,CAKA,0DAAA,CAzEA,iBCiBF,CD6DE,kHAEE,YC3DJ,CDkFE,yDACE,4BChFJ,CD+EE,2DACE,4BC7EJ,CD4EE,gEACE,4BC1EJ,CDyEE,2DACE,4BCvEJ,CDsEE,yDACE,4BCpEJ,CDmEE,0DACE,4BCjEJ,CDgEE,gEACE,4BC9DJ,CD6DE,0DACE,4BC3DJ,CD0DE,2OACE,4BC/CJ,CDsDA,+FAGE,iCCpDF,CACF,CCjDE,2BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCD6CN,CCvDE,4BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDoDN,CC9DE,8BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCD2DN,CCrEE,mCACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDkEN,CC5EE,8BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDyEN,CCnFE,4BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDgFN,CC1FE,kCACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDuFN,CCjGE,4BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCD8FN,CCxGE,4BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDqGN,CC/GE,6BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCD4GN,CCtHE,mCACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDmHN,CC7HE,4BACE,4BAAA,CACA,2CAAA,CAIE,8BAAA,CACA,qCD6HN,CCpIE,8BACE,4BAAA,CACA,2CAAA,CAIE,8BAAA,CACA,qCDoIN,CC3IE,6BACE,yBAAA,CACA,2CAAA,CAIE,8BAAA,CACA,qCD2IN,CClJE,8BACE,4BAAA,CACA,2CAAA,CAIE,8BAAA,CACA,qCDkJN,CCzJE,mCACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDsJN,CE3JE,4BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFwJN,CEnKE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFgKN,CE3KE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFwKN,CEnLE,oCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFgLN,CE3LE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFwLN,CEnME,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFgMN,CE3ME,mCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFwMN,CEnNE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFgNN,CE3NE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFwNN,CEnOE,8BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFgON,CE3OE,oCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFwON,CEnPE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,+BAAA,CACA,sCFmPN,CE3PE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,+BAAA,CACA,sCF2PN,CEnQE,8BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,+BAAA,CACA,sCFmQN,CE3QE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,+BAAA,CACA,sCF2QN,CEnRE,oCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFgRN,CE3RE,8BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFwRN,CEnSE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCAAA,CAKA,4BF4RN,CE5SE,kCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCAAA,CAKA,4BFqSN,CEtRE,sEACE,4BFyRJ,CE1RE,+DACE,4BF6RJ,CE9RE,iEACE,4BFiSJ,CElSE,gEACE,4BFqSJ,CEtSE,iEACE,4BFySJ,CEhSA,8BACE,mDAAA,CACA,4DAAA,CACA,0DAAA,CACA,oDAAA,CACA,2DAAA,CAGA,4BFiSF,CE9RE,yCACE,+BFgSJ,CE7RI,kDAEE,0CAAA,CACA,sCAAA,CAFA,mCFiSN,CG7MI,mCD1EA,+CACE,8CF0RJ,CEvRI,qDACE,8CFyRN,CEpRE,iEACE,mCFsRJ,CACF,CGxNI,sCDvDA,uCACE,oCFkRJ,CACF,CEzQA,8BACE,kDAAA,CACA,4DAAA,CACA,wDAAA,CACA,oDAAA,CACA,6DAAA,CAGA,4BF0QF,CEvQE,yCACE,+BFyQJ,CEtQI,kDAEE,0CAAA,CACA,sCAAA,CAFA,mCF0QN,CEnQE,yCACE,6CFqQJ,CG9NI,0CDhCA,8CACE,gDFiQJ,CACF,CGnOI,0CDvBA,iFACE,6CF6PJ,CACF,CG3PI,sCDKA,uCACE,6CFyPJ,CACF","file":"palette.css"}

Some files were not shown because too many files have changed in this diff Show More