mirror of
https://github.com/ae-utbm/sith.git
synced 2026-07-31 10:45:10 +00:00
bump ruff to 0.16
This commit is contained in:
@@ -147,14 +147,15 @@ Voici quelques exemples :
|
||||
env = Env()
|
||||
env.read_env()
|
||||
|
||||
|
||||
async def main():
|
||||
async with aiohttp.ClientSession(
|
||||
base_url="https://ae.utbm.fr/api/",
|
||||
headers={"X-APIKey": env.str("API_KEY")}
|
||||
base_url="https://ae.utbm.fr/api/", headers={"X-APIKey": env.str("API_KEY")}
|
||||
) as session:
|
||||
async with session.get("club/1") as res:
|
||||
print(await res.json())
|
||||
|
||||
|
||||
asyncio.run(main())
|
||||
```
|
||||
|
||||
|
||||
@@ -161,8 +161,8 @@ qui seront alors injectés.
|
||||
```python
|
||||
from django.views.generic import CreateView, UpdateView, TemplateView
|
||||
from core.views.mixins import FragmentMixin
|
||||
|
||||
|
||||
|
||||
|
||||
class FooCreateFragment(FragmentMixin, CreateView):
|
||||
model = Foo
|
||||
fields = ["foo", "bar"]
|
||||
@@ -182,7 +182,7 @@ qui seront alors injectés.
|
||||
def get_context_data(**kwargs):
|
||||
return super().get_context_data(**kwargs) | {
|
||||
"create_fragment": FooCreateFragment.as_fragment()(),
|
||||
"update_fragment": FooUpdateFragment.as_fragment()(foo_id=1)
|
||||
"update_fragment": FooUpdateFragment.as_fragment()(foo_id=1),
|
||||
}
|
||||
```
|
||||
|
||||
@@ -288,7 +288,7 @@ class FooCreateFragment(FragmentMixin, CreateView):
|
||||
|
||||
def render_fragment(self, request, **kwargs):
|
||||
if "foo" in kwargs:
|
||||
kwargs["foo"] += 2
|
||||
kwargs["foo"] += 2
|
||||
return super().render_fragment(request, **kwargs)
|
||||
```
|
||||
|
||||
@@ -319,11 +319,9 @@ from core.views.mixins import UseFragmentsMixin
|
||||
class FooCompositeFormView(UseFragmentsMixin, TemplateView):
|
||||
fragments = {
|
||||
"create_fragment": FooCreateFragment,
|
||||
"update_fragment": FooUpdateFragment
|
||||
}
|
||||
fragment_data = {
|
||||
"update_fragment": {"foo": 4}
|
||||
"update_fragment": FooUpdateFragment,
|
||||
}
|
||||
fragment_data = {"update_fragment": {"foo": 4}}
|
||||
template_name = "app/foo.jinja"
|
||||
```
|
||||
|
||||
@@ -342,9 +340,7 @@ from core.views.mixins import UseFragmentsMixin
|
||||
|
||||
|
||||
class FooCompositeFormView(UseFragmentsMixin, TemplateView):
|
||||
fragments = {
|
||||
"create_fragment": FooCreateFragment
|
||||
}
|
||||
fragments = {"create_fragment": FooCreateFragment}
|
||||
template_name = "app/foo.jinja"
|
||||
|
||||
def get_fragment_context_data(self):
|
||||
|
||||
+14
-12
@@ -123,6 +123,7 @@ Par exemple, prenons le modèle suivant :
|
||||
```python
|
||||
from django.db import models
|
||||
|
||||
|
||||
class News(models.Model):
|
||||
# ...
|
||||
|
||||
@@ -192,20 +193,21 @@ Pour les vues sous forme de fonction, il y a le décorateur
|
||||
|
||||
```python
|
||||
from com.models import News
|
||||
|
||||
|
||||
from django.contrib.auth.mixins import PermissionRequiredMixin
|
||||
from django.shortcuts import redirect
|
||||
from django.urls import reverse
|
||||
from django.views import View
|
||||
from django.views.generic.detail import SingleObjectMixin
|
||||
|
||||
|
||||
|
||||
class NewsModerateView(PermissionRequiredMixin, SingleObjectMixin, View):
|
||||
model = News
|
||||
pk_url_kwarg = "news_id"
|
||||
permission_required = "com.moderate_news"
|
||||
# On peut aussi fournir plusieurs permissions, par exemple :
|
||||
# permission_required = ["com.moderate_news", "com.delete_news"]
|
||||
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
# Si nous sommes ici, nous pouvons être certains que l'utilisateur
|
||||
# a la permission requise
|
||||
@@ -219,12 +221,13 @@ Pour les vues sous forme de fonction, il y a le décorateur
|
||||
|
||||
```python
|
||||
from com.models import News
|
||||
|
||||
|
||||
from django.contrib.auth.decorators import permission_required
|
||||
from django.shortcuts import get_object_or_404, redirect
|
||||
from django.urls import reverse
|
||||
from django.views.decorators.http import require_POST
|
||||
|
||||
|
||||
|
||||
@permission_required("com.moderate_news")
|
||||
@require_POST
|
||||
def moderate_news(request, news_id: int):
|
||||
@@ -263,6 +266,7 @@ from core.auth.mixins import PermissionOrAuthorRequiredMixin
|
||||
|
||||
from django.views.generic import UpdateView
|
||||
|
||||
|
||||
class NewsUpdateView(PermissionOrAuthorRequiredMixin, UpdateView):
|
||||
model = News
|
||||
pk_url_kwarg = "news_id"
|
||||
@@ -324,8 +328,8 @@ Voici un exemple d'implémentation de ce système :
|
||||
|
||||
from core.models import User, Group
|
||||
|
||||
class Article(models.Model):
|
||||
|
||||
class Article(models.Model):
|
||||
title = models.CharField(_("title"), max_length=100)
|
||||
content = models.TextField(_("content"))
|
||||
|
||||
@@ -370,6 +374,7 @@ Voici un exemple d'implémentation de ce système :
|
||||
|
||||
from core.models import User, Group
|
||||
|
||||
|
||||
class Article(models.Model):
|
||||
title = models.CharField(_("title"), max_length=100)
|
||||
content = models.TextField(_("content"))
|
||||
@@ -378,7 +383,7 @@ Voici un exemple d'implémentation de ce système :
|
||||
owner_group = models.ForeignKey( # (1)!
|
||||
Group, related_name="owned_articles", default=settings.SITH_GROUP_ROOT_ID
|
||||
)
|
||||
|
||||
|
||||
# relation many-to-many
|
||||
edit_groups = models.ManyToManyField( # (2)!
|
||||
Group,
|
||||
@@ -386,7 +391,7 @@ Voici un exemple d'implémentation de ce système :
|
||||
verbose_name=_("edit groups"),
|
||||
blank=True,
|
||||
)
|
||||
|
||||
|
||||
# relation many-to-many
|
||||
view_groups = models.ManyToManyField( # (3)!
|
||||
Group,
|
||||
@@ -529,10 +534,7 @@ class NewsQuerySet(models.QuerySet): # (1)!
|
||||
return self
|
||||
# sinon, on retourne les nouvelles modérées ou dont l'utilisateur
|
||||
# est l'auteur
|
||||
return self.filter(
|
||||
models.Q(is_moderated=True)
|
||||
| models.Q(author=user)
|
||||
)
|
||||
return self.filter(models.Q(is_moderated=True) | models.Q(author=user))
|
||||
|
||||
|
||||
class News(models.Model):
|
||||
|
||||
Reference in New Issue
Block a user