Miroir du site de l'AE UTBM disponible ici https://ae-dev.utbm.fr/ae/Sith https://ae.utbm.fr
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Antoine Bartuccio d37eb134e2 Merge branch 'bugfix' into 'master' 8 hours ago
accounting small fix to follow python recommendations 7 months ago
api All: Apply Black coding rules 11 months ago
club club: fix SellingFormBase import 3 months ago
com core: add some cache on birthdays and counters_activity 1 week ago
core core: fix error 500 when editing properties of user without linked customer 9 hours ago
counter counter: speed counter click interface and auto scroll 5 days ago
doc Update README and Markdown test assets 1 year ago
eboutic eboutic: add some help and documentation for the payment system 3 months ago
election elections: use MarkdownInput for CandidateForm 8 months ago
forum core: fix special caracter in user and forum search 4 months ago
launderette All: Apply Black coding rules 11 months ago
locale/fr/LC_MESSAGES core: fix error 500 with expired reset password links 5 days ago
matmat All: Apply Black coding rules 11 months ago
pedagogy pedagogy: add script to remove all previous doubled comments 1 week ago
rootplace rootplace: make code clearer and fix typos 6 months ago
sas All: Apply Black coding rules 11 months ago
sith SUBSCRIPTIONS: 5 new discounted subscriptions for integration 2 weeks ago
stock All: Apply Black coding rules 11 months ago
subscription SUBSCRIPTIONS: 5 new discounted subscriptions for integration 2 weeks ago
trombi All: Apply Black coding rules 11 months ago
.coveragerc coverage: blacklist some files 2 years ago
.gitattributes Add mappings for .po and .jinja files 4 months ago
.gitignore Update Haystack indexer to use Xapian 9 months ago
.gitlab-ci.yml ci: fix building of pygraphviz 2 months ago
CONTRIBUTING.md core: remove external resources once for all 4 months ago
Doxyfile Update Doxyfile 3 years ago
LICENSE Apply GPLv3 to Sith, and add header to every concerned file 2 years ago
LICENSE.old Apply GPLv3 to Sith, and add header to every concerned file 2 years ago
README.md README: fix typo in CONTRIBUTING and move dependencies before Get started instructions 5 months ago
TODO.md Add basic refill support 3 years ago
manage.py Apply GPLv3 to Sith, and add header to every concerned file 2 years ago
migrate.py pedagogy: fix typo for AUTUMN_AND_SPRING 2 months ago
requirements.txt ci: fix django rest framework version 2 months ago


pipeline status coverage report project chat

Sith AE


See requirements.txt

You may need to install some dev libraries like libmysqlclient-dev, libssl-dev, libjpeg-dev, python3-xapian, or zlib1g-dev to install all the requiered dependancies with pip. You may also need mysql-client. Don’t also forget python3-dev if you don’t have it already.

You can check all of them with:

sudo apt install libmysqlclient-dev libssl-dev libjpeg-dev zlib1g-dev python3-dev libffi-dev python3-dev libgraphviz-dev pkg-config python3-xapian gettext

On macos, you will need homebrew

brew install xapian

If it doesn’t work it’s because it need this pull request to be validated.

The development is done with sqlite, but it is advised to set a more robust DBMS for production (Postgresql for example)

Get started

To start working on the project, just run the following commands:

git clone https://ae-dev.utbm.fr/ae/Sith.git
cd Sith
virtualenv --system-site-packages --python=python3 env
source env/bin/activate
pip install -r requirements.txt
./manage.py setup

To start the simple development server, just run python3 manage.py runserver

For more informations, check out the CONTRIBUTING.md file.

Logging errors with sentry

To connect the app to sentry.io, you must set the variable SENTRY_DSN in your settings custom. It’s composed of the full link given on your sentry project

Generating documentation

There is a Doxyfile at the root of the project, meaning that if you have Doxygen, you can run doxygen Doxyfile to generate a complete HTML documentation that will be available in the ./doc/html/ folder.

Collecting statics for production:

We use scss in the project. In development environment (DEBUG=True), scss is compiled every time the file is needed. For production, it assumes you have already compiled every files and to do so, you need to use the following commands :

./manage.py collectstatic # To collect statics
./manage.py compilestatic # To compile scss in those statics

Misc about development

Controlling the rights

When you need to protect an object, there are three levels:

  • Editing the object properties
  • Editing the object various values
  • Viewing the object

Now you have many solutions in your model:

  • You can define a is_owned_by(self, user), a can_be_edited_by(self, user), and/or a can_be_viewed_by(self, user) method, each returning True is the user passed can edit/view the object, False otherwise.
    This allows you to make complex request when the group solution is not powerful enough.
    It’s useful too when you want to define class-wide permissions, e.g. the club members, that are viewable only for Subscribers.
  • You can add an owner_group field, as a ForeignKey to Group. Second is an edit_groups field, as a ManyToMany to Group, and third is a view_groups, same as for edit.

Finally, when building a class based view, which is highly advised, you just have to inherit it from CanEditPropMixin, CanEditMixin, or CanViewMixin, which are located in core.views. Your view will then be protected using either the appropriate group fields, or the right method to check user permissions.

Counting the number of line of code

sudo apt install cloc
cloc --exclude-dir=doc,env .

Updating doc/SYNTAX.md

If you make an update in the Markdown syntax parser, it’s good to document update the syntax reference page in doc/SYNTAX.md. But updating this file will break the tests if you don’t update the corresponding doc/SYNTAX.html file at the same time.
To do that, simply run ./manage.py markdown > doc/SYNTAX.html, and the tests should pass again.