Compare commits

..

17 Commits

Author SHA1 Message Date
df8f5a6f45 fix validation in settings, restore lines 2025-05-09 12:11:15 +02:00
657259756f removed unused permissions 2025-05-09 10:54:47 +02:00
076bce9712 aria on forms 2025-05-09 07:37:12 +02:00
31b4cbd81e improved accessibility 2025-05-07 11:38:33 +02:00
f14e945bf2 added docstrings 2025-05-07 08:35:20 +02:00
97b8747f36 more details 2025-05-06 11:49:34 +02:00
7c2e98f060 fixed instructions 2025-05-06 11:44:43 +02:00
638880ca32 added MIT 2025-05-06 11:36:05 +02:00
9753995c16 add details 2025-05-06 11:28:28 +02:00
6ad897762f rm deleted 2025-05-06 10:38:58 +02:00
5227bf42b2 all features OK, cleaned up (flake8) code except migrations files 2025-05-06 10:38:27 +02:00
29192378c2 fixed issues related to FK in both models; migration made not applied 2025-05-02 10:27:56 +02:00
aceb42c2e6 create review from scratch and answer works 2025-05-02 09:35:02 +02:00
83c75e95f3 added complete UserFollows model 2025-04-25 15:05:54 +02:00
5ac3817aed CRUD tickets ok, before migration update models 2025-04-25 14:51:34 +02:00
f74751e7e4 button to create ticket and review 2025-04-24 15:07:02 +02:00
b5e7762ef6 trying to make views/templates for create ticket and review 2025-04-24 12:03:13 +02:00
80 changed files with 3763 additions and 149 deletions

21
LICENCE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2025 ylxdre
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -20,7 +20,8 @@ BASE_DIR = Path(__file__).resolve().parent.parent
# See https://docs.djangoproject.com/en/5.2/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-i^f6dau&ze)tzjzf*e#c%+r%sla+-q&e+on(-*xg&t$toyt24y'
SECRET_KEY = \
'django-insecure-i^f6dau&ze)tzjzf*e#c%+r%sla+-q&e+on(-*xg&t$toyt24y'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
@@ -89,7 +90,8 @@ DATABASES = {
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
'NAME':
'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
@@ -125,7 +127,7 @@ STATIC_URL = 'static/'
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
LOGIN_REDIRECT_URL = 'home'
LOGIN_REDIRECT_URL = 'flux'
LOGIN_URL = 'login'
@@ -133,9 +135,6 @@ LOGOUT_REDIRECT_URL = 'login'
AUTH_USER_MODEL = 'authentication.User'
MEDIA_URL = 'media/'
MEDIA_ROOT = BASE_DIR.joinpath(MEDIA_URL)
MEDIA_URL = 'media/uploads/'
MEDIA_ROOT = BASE_DIR.joinpath('media/uploads/')

View File

@@ -18,26 +18,39 @@ from django.contrib import admin
from django.urls import path
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.auth.views import LoginView, LogoutView, PasswordChangeView, PasswordChangeDoneView
import authentication.views, reviews.views
from django.contrib.auth.views import LoginView, LogoutView
import authentication.views
import reviews.views
urlpatterns = [
path('admin/', admin.site.urls),
path('home/', reviews.views.home, name='home'),
# path('', LoginView.as_view(
path('', authentication.views.login_page, name='login'),
# template_name='authentication/login.html',
# redirect_authenticated_user=True), name='login'),
path('pwd-change/', PasswordChangeView.as_view(
template_name='authentication/pwd_change.html'), name='pwd-change'),
path('pwd-change-done/', PasswordChangeDoneView.as_view(
template_name='authentication/pwd_change_done.html'), name='pwd-change-done'),
path('', LoginView.as_view(
template_name='authentication/login.html',
redirect_authenticated_user=True), name='login'),
path('logout/', LogoutView.as_view(next_page='login'), name='logout'),
path('register/', authentication.views.register_page, name='register'),
path('flux/', reviews.views.flux, name='flux'),
path('posts/', reviews.views.posts, name='posts'),
path('subscribed/', reviews.views.subscribed, name='subscribed'),
path('ticket/add/', reviews.views.create_ticket, name='ticket-add'),
path('review/add/', reviews.views.create_review, name='review-add'),
path('ticket/<int:ticket_id>/',
reviews.views.ticket, name='ticket-detail'),
path('ticket/<int:ticket_id>/update/',
reviews.views.update_ticket, name='ticket-update'),
path('ticket/<int:ticket_id>/delete/',
reviews.views.delete_ticket, name='ticket-delete'),
path('ticket/<int:ticket_id>/review/',
reviews.views.ticket_review, name='review-ticket'),
path('review/<int:review_id>/',
reviews.views.review, name='review-detail'),
path('review/<int:review_id>/update/',
reviews.views.update_review, name='review-update'),
path('review/<int:review_id>/delete/',
reviews.views.delete_review, name='review-delete'),
path('unsubscribe/<int:followed_user_id>/',
reviews.views.unsubscribe, name='unsubscribe'),
]
if settings.DEBUG:

View File

@@ -1,3 +1,3 @@
from django.contrib import admin
# from django.contrib import admin
# Register your models here.

View File

@@ -5,10 +5,12 @@ from django.contrib.auth.forms import UserCreationForm
class LoginForm(forms.Form):
username = forms.CharField(max_length=63, label='Nom dutilisateur')
password = forms.CharField(max_length=63, widget=forms.PasswordInput, label='Mot de passe')
password = forms.CharField(max_length=63,
widget=forms.PasswordInput,
label='Mot de passe')
class RegisterForm(UserCreationForm):
class Meta(UserCreationForm.Meta):
model = get_user_model()
fields = ('username',)

View File

@@ -1,4 +1,3 @@
from django.db import models
from django.contrib.auth.models import AbstractUser

View File

@@ -10,7 +10,6 @@
<div class="align-self-center">
<h2>Inscrivez-vous</h2>
</div>
<div class="justify-content-end">
<a href="{% url 'register' %}" type="button" class="btn btn-primary">S'inscrire</a>
</div>
@@ -23,13 +22,17 @@
<h2>Connectez-vous</h2>
<form method='post'>
{% csrf_token %}
<div class="form-group p-3">
<div class="form-group" aria-describedby="usernameHelp">
{{ form.username }}
</div>
<div class="form-group p-3">
<small id="usernameHelp" class="form-text text-muted">Saisissez ici votre nom d'utilisateur</small>
<div class="form-group" aria-describedby="passwordHelp">
{{ form.password }}
</div>
<button type="submit" class="btn btn-primary self-align-right">Se connecter</button>
<small id="passwordHelp" class="form-text text-muted">Saisissez ici votre mot de passe</small>
<div class="d-flex justify-content-end">
<button type="submit" class="btn btn-primary">Se connecter</button>
</div>
</form>
</div>
</div>

View File

@@ -1,26 +1,30 @@
{% extends 'base.html' %}
{% block content %}
<div class="container">
<div class="row justify-content-center mt-5">
<div class="row justify-content-center mt-5 mb-3">
<div class="col text-center">
<h2>Inscrivez-vous</h2>
</div>
</div>
<div class="row justify-content-center">
<div class="col-6 justify-content-around d-flex align-items-end">
<div class="row d-flex justify-content-center">
<div class="col-8">
<form method='post'>
{% csrf_token %}
{{ form.as_p }}
<div class="row justify-content-end">
<div class="col-3 order-2">
<button type="submit" class="btn btn-primary">S'inscrire</button>
</form>
{{ form }}
</div>
<div class="col-3 order-1">
<div class="col-8 d-flex justify-content-end">
<div class="d-flex align-self-end m-2">
<a href="{% url 'login' %}" class="btn btn-primary">Retourner</a>
</div>
<div class="d-flex align-self-end m-2">
<button type="submit" class="btn btn-primary">S'inscrire</button>
</div>
</div>
</form>
</div>
</div>
{% endblock %}

View File

@@ -1,3 +1,3 @@
from django.test import TestCase
# from django.test import TestCase
# Create your tests here.

View File

@@ -1,35 +1,15 @@
from django.shortcuts import render, redirect
from django.contrib.auth import login, logout, authenticate
from django.contrib.auth import login
from django.conf import settings
from django import forms
from authentication.forms import LoginForm, RegisterForm
def login_page(request):
form = LoginForm()
message = ""
if request.method == 'POST':
form = LoginForm(request.POST)
if form.is_valid():
user = authenticate(
username=form.cleaned_data['username'],
password=form.cleaned_data['password'],
)
if user is not None:
login(request, user)
return redirect('home')
else:
message = "Identifiants invalides"
print(request.POST)
return render(request,
'authentication/login.html',
{'form': form})
from authentication.forms import RegisterForm
def register_page(request):
"""
Create a User from the register form
:param: request (POST with RegisterForm data)
:return: write the User in DB
"""
form = RegisterForm()
if request.method == 'POST':
form = RegisterForm(request.POST)

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -1,3 +1,9 @@
from django.contrib import admin
from authentication.models import User
from reviews.models import Ticket, Review, UserFollows
# Register your models here.
admin.site.register(Ticket)
admin.site.register(Review)
admin.site.register(UserFollows)
admin.site.register(User)

View File

@@ -0,0 +1,31 @@
from django import forms
from . import models
class TicketForm(forms.ModelForm):
"""
Form from Ticket, select only 3 fields
"""
class Meta:
model = models.Ticket
fields = ['title', 'desc', 'image']
class ReviewForm(forms.ModelForm):
"""
Form from Review
Make rating field a radio select from choices
"""
CHOICES = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5}
rating = forms.ChoiceField(widget=forms.RadioSelect, choices=CHOICES)
class Meta:
model = models.Review
fields = ['headline', 'rating', 'comment']
class ToFollowForm(forms.Form):
"""
Form asking for a username
"""
user = forms.CharField(label="Nom d'utilisateur", max_length=50)

View File

@@ -0,0 +1,50 @@
# Generated by Django 5.2 on 2025-04-25 13:05
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('reviews', '0001_initial'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.AddField(
model_name='userfollows',
name='followed_user',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='followed', to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='userfollows',
name='user',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='following', to=settings.AUTH_USER_MODEL),
),
migrations.AlterField(
model_name='review',
name='body',
field=models.CharField(blank=True, max_length=8192, verbose_name='description'),
),
migrations.AlterField(
model_name='review',
name='headline',
field=models.CharField(max_length=128, verbose_name='titre'),
),
migrations.AlterField(
model_name='ticket',
name='body',
field=models.CharField(max_length=8192, verbose_name='Description'),
),
migrations.AlterField(
model_name='ticket',
name='title',
field=models.CharField(max_length=100, verbose_name='Titre'),
),
migrations.AlterUniqueTogether(
name='userfollows',
unique_together={('user', 'followed_user')},
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 5.2 on 2025-04-26 12:30
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('reviews', '0002_userfollows_followed_user_userfollows_user_and_more'),
]
operations = [
migrations.AlterField(
model_name='ticket',
name='image',
field=models.ImageField(upload_to=''),
),
]

View File

@@ -0,0 +1,27 @@
# Generated by Django 5.2 on 2025-05-01 12:11
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('reviews', '0003_alter_ticket_image'),
]
operations = [
migrations.RenameField(
model_name='ticket',
old_name='body',
new_name='desc',
),
migrations.RemoveField(
model_name='review',
name='body',
),
migrations.AddField(
model_name='review',
name='comment',
field=models.CharField(blank=True, max_length=8192, verbose_name='commentaire'),
),
]

View File

@@ -0,0 +1,20 @@
# Generated by Django 5.2 on 2025-05-01 17:23
import django.utils.timezone
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('reviews', '0004_rename_body_ticket_desc_remove_review_body_and_more'),
]
operations = [
migrations.AddField(
model_name='userfollows',
name='starting_date',
field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now),
preserve_default=False,
),
]

View File

@@ -0,0 +1,24 @@
# Generated by Django 5.2 on 2025-05-02 08:27
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('reviews', '0005_userfollows_starting_date'),
]
operations = [
migrations.AddField(
model_name='ticket',
name='review',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='has_review', to='reviews.review'),
),
migrations.AlterField(
model_name='review',
name='ticket',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='of_ticket', to='reviews.ticket'),
),
]

View File

@@ -0,0 +1,19 @@
# Generated by Django 5.2 on 2025-05-02 12:48
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('reviews', '0006_ticket_review_alter_review_ticket'),
]
operations = [
migrations.AlterField(
model_name='review',
name='ticket',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='of_ticket', to='reviews.ticket'),
),
]

View File

@@ -0,0 +1,17 @@
# Generated by Django 5.2 on 2025-05-05 14:10
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('reviews', '0007_alter_review_ticket'),
]
operations = [
migrations.RemoveField(
model_name='ticket',
name='topic',
),
]

View File

@@ -1,38 +1,67 @@
from django.core.validators import MinValueValidator, MaxValueValidator
from django.conf import settings
from django.db import models
from PIL import Image
class Ticket(models.Model):
# Your Ticket model definition goes here
title = models.CharField(max_length=100)
topic = models.CharField(max_length=100)
body = models.CharField(max_length=8192)
title = models.CharField("Titre", max_length=100)
desc = models.CharField("Description", max_length=8192)
user = models.ForeignKey(
to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
image = models.ImageField(upload_to="uploads/")
image = models.ImageField()
time_created = models.DateTimeField(auto_now_add=True)
review = models.ForeignKey(to='reviews.Review',
on_delete=models.SET_NULL,
related_name='has_review',
null=True)
IMAGE_SIZE = (400, 400)
def resize_image(self):
image = Image.open(self.image)
image.thumbnail(self.IMAGE_SIZE)
image.save(self.image.path)
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
self.resize_image()
class Review(models.Model):
ticket = models.ForeignKey(to=Ticket, on_delete=models.CASCADE)
ticket = models.ForeignKey(to=Ticket,
on_delete=models.CASCADE,
related_name='of_ticket',
null=True)
rating = models.PositiveSmallIntegerField(
# validates that rating must be between 0 and 5
validators=[MinValueValidator(0), MaxValueValidator(5)])
headline = models.CharField(max_length=128)
body = models.CharField(max_length=8192, blank=True)
user = models.ForeignKey(
to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
headline = models.CharField("titre", max_length=128)
comment = models.CharField("commentaire",
max_length=8192,
blank=True)
user = models.ForeignKey(to=settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
time_created = models.DateTimeField(auto_now_add=True)
class UserFollows(models.Model):
# Your UserFollows model definition goes here
user = models.ForeignKey(to=settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
related_name="following",
null=True)
followed_user = models.ForeignKey(to=settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
related_name="followed",
null=True)
starting_date = models.DateTimeField(auto_now_add=True)
class Meta:
# ensures we don't get multiple UserFollows instances
# for unique user-user_followed pairs
pass
#unique_together = ('user', 'followed_user', )
pass
unique_together = ('user', 'followed_user', )
def __str__(self):
return f'{self.user} -> {self.followed_user}'

View File

@@ -1,12 +1,57 @@
{% extends 'base.html' %}
{% block nav %}
<nav>
<a href="{% url 'flux' %}">Flux</a>
<a href="{% url 'posts' %}">Posts</a>
<a href="{% url 'subscribed' %}">Abonnements</a>
<a href="{% url 'logout' %}">Se déconnecter</a>
</nav>
{% endblock %}
{% load reviews_extras %}
{% block content %}
<h2> Flux </h2>
<main>
<div class="container">
<section>
<div class="row" id="atitle">
<div class="d-flex justify-content-center mt-5">
<h2> Bienvenue {{ request.user }}</h2>
</div>
</div>
</section>
<section>
<div class="row d-flex justify-content-center mt-4 mb-3">
<div class="col-3 d-flex justify-content-center">
<a href="{% url 'ticket-add' %}" type="button" class="btn btn-primary">Demander une critique</a>
</div>
<div class="col-3 d-flex justify-content-center">
<a href="{% url 'review-add' %}" type="button" class="btn btn-primary">Créer une critique</a>
</div>
</div>
</section>
<section>
<div class="row" id="flux">
{% for post in posts %}
{% if post.content_type == 'TICKET' %}
<div class="row border border-2 border-secondary-subtle my-3">
{% include 'reviews/ticket_detail.html' with ticket=post %}
<div class="col-6 d-flex justify-content-end mb-2">
{% if not post.review %}
<div class="col-4 align-self-end">
<a href="{% url 'review-ticket' post.id %}" type="button" class="btn btn-primary">Créer une critique</a>
</div>
{% else %}
<div class="col-6 align-self-end">
<i>{% display_owner post.review.user %} créé une critique, le {{ post.time_created|date:"d M Y"}}</i>
</div>
{% endif %}
</div>
</div>
{% elif post.content_type == 'REVIEW' %}
<div class="row border border-2 border-secondary-subtle my-3">
{% include 'reviews/review_detail.html' with review=post %}
</div>
{% endif %}
{% endfor %}
</div>
</section>
</div>
</main>
{% endblock %}

View File

@@ -1,17 +0,0 @@
{% extends 'base.html' %}
{% block nav %}
<nav class="navbar navbar-light ml-auto">
<a href="{% url 'flux' %}">Flux</a>
<a href="{% url 'posts' %}">Posts</a>
<a href="{% url 'subscribed' %}">Abonnements</a>
<form class="form-inline" method="post" action="{% url 'logout' %}">
{% csrf_token %}
<button type="submit" class="btn btn-light">Se déconnecter</button>
</form>
</nav>
{% endblock %}
{% block content %}
<h2> Bienvenue {{ user.name }}</h2>
{% endblock %}

View File

@@ -1,12 +1,47 @@
{% extends 'base.html' %}
{% block nav %}
<nav>
<a href="{% url 'flux' %}">Flux</a>
<a href="{% url 'posts' %}">Posts</a>
<a href="{% url 'subscribed' %}">Abonnements</a>
<a href="{% url 'logout' %}">Se déconnecter</a>
</nav>
{% endblock %}
{% block content %}
<main>
<div class="container">
<section>
<div class="row">
<div class="d-flex justify-content-center mt-5">
<h2> Posts </h2>
</div>
</div>
</section>
<section>
{% for ticket in tickets %}
<div class="row border border-2 border-secondary-subtle my-3">
{% include 'reviews/ticket_detail.html' %}
<div class="col d-flex justify-content-end mb-2">
<div class="d-flex align-self-end m-2">
<a href="{% url 'ticket-update' ticket.id %}" type="button" class="btn btn-primary">Modifier</a>
</div>
<div class="d-flex align-self-end m-2">
<a href="{% url 'ticket-delete' ticket.id %}" type="button" class="btn btn-danger">Supprimer</a>
</div>
</div>
</div>
{% endfor %}
</section>
<section>
{% for review in reviews %}
<div class="row border border-2 border-secondary-subtle my-3">
{% include 'reviews/review_detail.html' %}
<div class="col d-flex justify-content-end mb-2">
<div class="d-flex align-self-end m-2">
<a href="{% url 'review-update' review.id %}" type="button" class="btn btn-primary">Modifier</a>
</div>
<div class="d-flex align-self-end m-2">
<a href="{% url 'review-delete' review.id %}" type="button" class="btn btn-danger">Supprimer</a>
</div>
</div>
</div>
{% endfor %}
</section>
</div>
</main>
{% endblock %}

View File

@@ -0,0 +1,7 @@
{% extends 'base.html' %}
{% block content %}
{% include 'reviews/review_detail.html' %}
{% endblock %}

View File

@@ -0,0 +1,35 @@
{% extends 'base.html' %}
{% block content %}
<main>
<div class="container">
<div class="row mt-5">
<div class="col d-flex justify-content-center">
<h2>Créer une critique</h2>
</div>
</div>
<section>
<div class="row border border-3 border-secondary-subtle justify-content-center mt-3 mb-1">
<h3> Livre/Article </h3>
<div class="col-4 mb-2">
<form method="post" enctype="multipart/form-data">
{% include 'reviews/ticket_form.html' %}
{% csrf_token %}
</div>
</div>
</section>
<section>
<div class="row border border-3 border-secondary-subtle justify-content-center">
<h3>Critique</h3>
<div class="col-4 mb-4">
{% include 'reviews/review_form.html' %}
<div class="d-flex justify-content-end">
<button type="submit" class="btn btn-primary"> Envoyer </button>
</div>
</form>
</div>
</div>
</section>
</div>
</main>
{% endblock %}

View File

@@ -0,0 +1,17 @@
{% extends 'base.html' %}
{% block content %}
<main>
<div class="container text-center" style="height: 100vh">
<div class="row h-100 align-items-center">
<form method="post">
{% csrf_token %}
<p> Êtes vous sûr de vouloir supprimer cette critique ? </p>
<button type="submit" class="btn btn-warning">Supprimer</button>
</form>
</div>
</div>
</main>
{% endblock %}

View File

@@ -0,0 +1,25 @@
{% load reviews_extras %}
<main>
<section>
<div class="row" id="owner_date">
<div class="col-8 mb-4">
{% display_owner review.user %} publié une critique
</div>
<div class="col-4 d-flex justify-content-end">
{{ review.time_created }}
</div>
</div>
</section>
<section>
<div class="row d-flex justify-content-center">
<span style="font-size: 22px" class="mb-3">
{{ review.headline }} - {{ review.rating|rating_stars }}
</span>
<p> {{ review.comment }} </p>
<div class="col-10 border border-2 border-secondary-subtle mb-3">
{% include 'reviews/ticket_detail.html' with ticket=review.ticket %}
</div>
</div>
</section>
</main>

View File

@@ -0,0 +1,23 @@
<div class="form-group mb-4">
<label for='headline'>Titre:</label></br>
<div class="d-flex justify-content-center" aria-describedby="titleHelp">
{{ review_form.headline }}
</div>
<small id="titleHelp" class="form-text text-muted">Saisissez le titre de votre critique</small>
</div>
<div class="form-group mb-4">
<label for='rating'>Note: </label>
<div class=" d-flex justify-content-around" aria-describedby="ratingHelp">
{% for choice in review_form.rating %}
<span>{{ choice }}</span>
{% endfor %}
</div>
<small id="ratingHelp" class="form-text text-muted">Sélectionnez une notre entre 0 et 5</small>
</div>
<div class="form-group mb-4">
<label for="comment">Commentaire: </label>
<div class="d-flex justify-content-center" aria-describedby="commentHelp">
{{ review_form.comment }}
</div>
<small id="commentHelp" class="form-text text-muted">Saisissez le corps de votre commentaire</small>
</div>

View File

@@ -0,0 +1,37 @@
{% extends 'base.html' %}
{% block content %}
<main>
<div class="container">
<div class="row mt-3">
<div class="col d-flex justify-content-center">
<h2>Créer une critique</h2>
</div>
</div>
<section>
<div class="row border border-3 border-secondary-subtle">
<p>Vous êtes en train de répondre à </p>
<div class="col d-flex justify-content-center mb-2">
<div class="row border border-2 border-secondary-subtle my-3">
{% include 'reviews/ticket_detail.html' %}
</div>
</div>
</div>
</section>
<section>
<div class="row border border-3 border-secondary-subtle">
<h3>Critique</h3>
<div class="d-flex justify-content-center mb-2">
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{% include 'reviews/review_form.html' %}
<div class="d-flex justify-content-end">
<button type="submit" class="btn btn-primary"> Envoyer </button>
</div>
<form>
</div>
</div>
</section>
</div>
</main>
{% endblock %}

View File

@@ -0,0 +1,41 @@
{% extends 'base.html' %}
{% block content %}
<main>
<div class="container">
<div class="row mt-5">
<div class="col d-flex justify-content-center">
<h2>Modifier votre critique</h2>
</div>
</div>
<section>
<div class="row border border-3 mt-3 mb-1">
<h3>Vous êtes en train de poster en réponse à</h3>
<div class="row d-flex justify-content-center">
<div class="col-10 border border-2 border-secondary-subtle mb-3">
{% include 'reviews/ticket_detail.html' with ticket=review.ticket %}
</div>
</div>
</div>
</section>
<section>
<div class="row border border-3 border-secondary-subtle justify-content-center mb-5 pb-5">
<h3>Critique</h3>
<div class="col-4 mb-4">
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{% include 'reviews/review_form.html' %}
<div class="d-flex justify-content-end">
<button type="submit" class="btn btn-primary"> Envoyer </button>
</div>
</form>
</div>
</div>
</section>
</div>
</main>
{% endblock %}

View File

@@ -1,12 +1,61 @@
{% extends 'base.html' %}
{% block nav %}
<nav>
<a href="{% url 'flux' %}">Flux</a>
<a href="{% url 'posts' %}">Posts</a>
<a href="{% url 'subscribed' %}">Abonnements</a>
<a href="{% url 'logout' %}">Se déconnecter</a>
</nav>
{% endblock %}
{% block content %}
<h2> Subscribed </h2>
<main>
<div class="container text-center">
<section>
<div class="row d-flex justify-content-center">
<div class="d-flex justify-content-center my-5">
<h2> Suivre d'autres utilisateurs </h2>
</div>
<div class="col-6">
<form method="post">
{% csrf_token %}
<div class="form-group " aria-describedby="followUserHelp">
{{ user_form }}
</div>
<small id="followUserHelp" class="form-text text-muted">Saisissez le nom d'utilisateur à suivre</small>
</div>
<div class="col-2">
<button type="submit" class="btn btn-primary">Envoyer</button>
</div>
</form>
</div>
</div>
</section>
<section>
<div class="row d-flex justify-content-end">
<div class="d-flex justify-content-center mt-5">
<h2> Abonnements </h2>
</div>
{% for user in followed %}
<div class="col-6 border border-2 m-1">
{{ user.followed_user }}
</div>
<div class="col-3 m-1">
<a href="{% url 'unsubscribe' user.followed_user.id %}" type="button" class="btn btn-primary">Se désabonner</a>
</div>
{% endfor %}
</div>
</section>
<section>
<div class="row d-flex justify-content-center">
<div class="d-flex justify-content-center mt-5">
<h2> Abonnés </h2>
</div>
{% for user in following %}
<div class="col-6 border border-2 m-1">
{{ user.user }}
</div>
{% endfor %}
</div>
</div>
</section>
</div>
</main>
{% endblock %}

View File

@@ -0,0 +1,7 @@
{% extends 'base.html' %}
{% block content %}
{% include 'reviews/ticket_detail.html' %}
{% endblock %}

View File

@@ -0,0 +1,28 @@
{% extends 'base.html' %}
{% block content %}
<main>
<div class="container">
<div class="row mt-5">
<div class="col d-flex justify-content-center">
<h2> Créer un ticket </h2>
</div>
</div>
<section>
<div class="row border border-3 border-secondary-subtle justify-content-center mt-3">
<h3> Livre/Article </h3>
<div class="col-4 mb-4">
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{% include 'reviews/ticket_form.html' %}
<div class="d-flex justify-content-end">
<button type="submit" class="btn btn-primary"> Envoyer </button>
</div>
</form>
</div>
</div>
</section>
</div>
</div>
</main>
{% endblock %}

View File

@@ -0,0 +1,17 @@
{% extends 'base.html' %}
{% block content %}
<main>
<div class="container text-center" style="height: 100vh">
<div class="row h-100 align-items-center">
<form method="post">
{% csrf_token %}
<p> Êtes vous sûr de vouloir supprimer la demande "{{ ticket.title }}" ? </p>
<button type="submit" class="btn btn-warning">Supprimer</button>
</form>
</div>
</div>
</main>
{% endblock %}

View File

@@ -0,0 +1,21 @@
{% load reviews_extras %}
<main>
<section>
<div class="row">
<div class="col-8 mb-4">
{% display_owner ticket.user %} publié une demande
</div>
<div class="col-4 d-flex justify-content-end">
{{ ticket.time_created }}
</div>
</div>
</section>
<section>
<p><strong> {{ ticket.title }} </strong></p>
<p> {{ ticket.desc }} </p>
<div class="col-3 mb-2">
<img src="{{ ticket.image.url }}" class="img" alt="Couverture de {{ ticket.title }}">
</div>
</section>
</main>

View File

@@ -0,0 +1,21 @@
<div class="form-group mb-4">
<label for='title'> Titre: </label>
<div class="d-flex justify-content-center" aria-describedby="titleHelp">
{{ ticket_form.title }}
</div>
<small id="titleHelp" class="form-text text-muted">Saisissez le titre de votre demande</small>
</div>
<div class="form-group mb-4">
<label for='desc'>Description: </label>
<div class="d-flex justify-content-center" aria-describedby="descriptionHelp">
{{ ticket_form.desc }}
</div>
<small id="descriptionHelp" class="form-text text-muted">Saisissez le contenu de votre demande</small>
</div>
<div class="form-group mb-4">
<label for='image'>Image: </label>
<div class="d-flex justify-content-center" aria-describedby="imageHelp">
{{ ticket_form.image }}
</div>
<small id="imageHelp" class="form-text text-muted">Sélectionnez une image à joindre (couverture de livre)</small>
</div>

View File

@@ -0,0 +1,30 @@
{% extends 'base.html' %}
{% block content %}
<main>
<div class="container">
<div class="row mt-5">
<div class="col d-flex justify-content-center">
<h2> Modifier la demande "{{ ticket.title }}"</h2>
</div>
</div>
<section>
<div class="row border border-3 border-secondary-subtle justify-content-center mt-3">
<h3> Livre/Article </h3>
<div class="col-4 mb-4">
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{% include 'reviews/ticket_form.html' %}
<div class="d-flex justify-content-end">
<button type="submit" class="btn btn-primary"> Envoyer </button>
</div>
</form>
</div>
</div>
</section>
</div>
</div>
</main>
{% endblock %}

View File

@@ -0,0 +1,15 @@
{% extends 'base.html' %}
{% block content %}
<main>
<div class="container text-center" style="height: 100vh">
<div class="row h-100 align-items-center">
<form method="post">
{% csrf_token %}
<p> Êtes vous sûr de vouloir vous désabonner de {{ followed.followed_user }} ? </p>
<button type="submit" class="btn btn-warning">Confirmer</button>
</form>
</div>
</div>
</main>
{% endblock %}

View File

@@ -0,0 +1,21 @@
from django import template
register = template.Library()
@register.filter
def rating_stars(rating):
stars = ''
for i in range(rating):
stars += ""
for i in range(5 - rating):
stars += ""
return stars
@register.simple_tag(takes_context=True)
def display_owner(context, user):
if user == context['user']:
return "vous avez"
return f"{user.username} a"

View File

@@ -1,3 +1,3 @@
from django.test import TestCase
# from django.test import TestCase
# Create your tests here.

View File

@@ -1,15 +1,283 @@
from django.shortcuts import render
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required, permission_required
from django.db.models import CharField, Value
from authentication.models import User
from reviews.models import Ticket, Review, UserFollows
from reviews.forms import TicketForm, ReviewForm, ToFollowForm
from itertools import chain
def home(request):
return render(request, 'reviews/home.html')
@login_required
def flux(request):
return render(request, 'reviews/flux.html')
"""
Display the user's home page
Get tickets & reviews of followed users, sort latest first
:param: request
:return: queryset of sorted tickets and reviews
"""
followed = UserFollows.objects.filter(user=request.user)
users_followed = []
for userf in followed:
users_followed.append(userf.followed_user)
tickets = Ticket.objects.filter(user__in=users_followed)
tickets = tickets.annotate(content_type=Value('TICKET', CharField()))
reviews = Review.objects.filter(user__in=users_followed)
reviews = reviews.annotate(content_type=Value('REVIEW', CharField()))
posts = sorted(
chain(reviews, tickets),
key=lambda post: post.time_created,
reverse=True)
return render(request,
'reviews/flux.html',
{'posts': posts})
@login_required
def posts(request):
return render(request, 'reviews/posts.html')
"""
Get list of tickets and reviews of current user
:param: request
:return: queryset of tickets and reviews
"""
tickets = Ticket.objects.filter(user=request.user)
reviews = Review.objects.filter(user=request.user)
return render(request,
'reviews/posts.html',
{'tickets': tickets, 'reviews': reviews})
@login_required
def ticket(request, ticket_id):
"""
Get detail of a ticket
:param: request, Ticket id
:return: object Ticket
"""
ticket = Ticket.objects.get(id=ticket_id)
return render(request,
'reviews/ticket.html',
{'ticket': ticket})
@login_required
def create_ticket(request):
"""
Send form, retrieve user's data, create and write object Ticket
:param: request (POST)
:return: form, write Ticket in DB
"""
tickets = Ticket.objects.all()
ticket_form = TicketForm()
if request.method == 'POST':
ticket_form = TicketForm(request.POST, request.FILES)
if ticket_form.is_valid():
ticket = ticket_form.save(commit=False)
ticket.user = request.user
ticket.save()
return redirect('flux')
return render(request,
'reviews/ticket_create.html',
context={'ticket_form': ticket_form, 'tickets': tickets})
@login_required
def update_ticket(request, ticket_id):
"""
Get new data for a given Ticket id and save changes
:param: request, Ticket id
:return: form, write Ticket in DB
"""
ticket = Ticket.objects.get(id=ticket_id)
if request.method == 'POST':
ticket_form = TicketForm(request.POST, instance=ticket)
if ticket_form.is_valid():
ticket = ticket_form.save()
return redirect('flux')
else:
ticket_form = TicketForm(instance=ticket)
return render(request,
'reviews/ticket_update.html',
{'ticket_form': ticket_form, 'ticket': ticket})
@login_required
def delete_ticket(request, ticket_id):
"""
Delete object from DB for a given Ticket
:param: request, Ticket id
:return: delete Ticket from DB
"""
ticket = Ticket.objects.get(id=ticket_id)
if request.method == 'POST':
ticket.delete()
return redirect('flux')
return render(request,
'reviews/ticket_delete.html',
{'ticket': ticket})
@login_required
def review(request, review_id):
"""
Get detail of a Review
:param: request, Review id
:return: object Review
"""
review = Review.objects.get(id=review_id)
return render(request,
'reviews/review.html',
{'review': review})
@login_required
def create_review(request):
"""
Create Ticket and related Review in one go
:param: request (POST)
:return: form, write Ticket and Review in DB
"""
ticket_form = TicketForm()
review_form = ReviewForm()
if request.method == 'POST':
ticket_form = TicketForm(request.POST, request.FILES)
review_form = ReviewForm(request.POST)
print(request.POST)
if all([ticket_form.is_valid(), review_form.is_valid()]):
ticket = ticket_form.save(commit=False)
review = review_form.save(commit=False)
review.user = ticket.user = request.user
review.save()
ticket.save()
review.ticket = ticket
ticket.review = review
ticket.save()
review.save()
return redirect('posts')
context = {
'ticket_form': ticket_form,
'review_form': review_form,
}
return render(request,
'reviews/review_create.html', context)
@login_required
def ticket_review(request, ticket_id):
"""
Create a Review for a given Ticket
:param: request (POST), Ticket id
:return: form, write Review in DB
"""
ticket = Ticket.objects.get(id=ticket_id)
review_form = ReviewForm()
if request.method == 'POST':
review_form = ReviewForm(request.POST)
print(request.POST)
if review_form.is_valid():
review = review_form.save(commit=False)
review.user = request.user
review.ticket = ticket
ticket.review = review
review.save()
ticket.review = review
ticket.save()
return redirect('posts')
context = {
'ticket': ticket,
'review_form': review_form,
}
return render(request,
'reviews/review_ticket.html', context)
@login_required
def update_review(request, review_id):
"""
Get new data for a given Review and save changes
:param: request, Review id
:return: form, write Review in DB
"""
review = Review.objects.get(id=review_id)
if request.method == 'POST':
print(request.POST)
review_form = ReviewForm(request.POST, instance=review)
print(review_form.is_valid())
if review_form.is_valid():
review = review_form.save()
return redirect('posts')
else:
review_form = ReviewForm(instance=review)
return render(request,
'reviews/review_update.html',
{'review_form': review_form, 'review': review})
@login_required
def delete_review(request, review_id):
"""
Delete object from DB for a given Review
:param: request, Review id
:return: delete Review from DB
"""
review = Review.objects.get(id=review_id)
if request.method == 'POST':
review.delete()
return redirect('posts')
return render(request,
'reviews/review_delete.html',
{'review': review})
@login_required
def subscribed(request):
return render(request, 'reviews/subscribed.html')
"""
Create UserFollows object for a given username in form
Create a list of followed_users for current user
:param: request (POST with given username)
:return: queryset of UserFollows following current user,
and a queryset of UserFollows followed by current user
"""
follows = UserFollows()
user_form = ToFollowForm()
# list of UserFollows following current user
following = UserFollows.objects.filter(followed_user=request.user)
if request.method == 'POST':
user_form = ToFollowForm(request.POST)
if user_form.is_valid():
user = user_form.cleaned_data["user"]
follows.followed_user = User.objects.get(username=user)
follows.user = request.user
follows.save()
return redirect('subscribed')
# list of UserFollows followed by current user
followed = UserFollows.objects.filter(user=request.user)
context = {
'user_form': user_form,
'followed': followed,
'following': following
}
return render(request,
'reviews/subscribed.html', context)
@login_required
def unsubscribe(request, followed_user_id):
"""
Delete a UserFollows for a given followed_user
:param: request, User.id
:return: delete UserFollows from DB
"""
followed = UserFollows.objects.get(
user=request.user,
followed_user=followed_user_id)
if request.method == 'POST':
followed.delete()
return redirect('subscribed')
return render(request,
'reviews/unsubscribe.html',
{'followed': followed})

View File

@@ -8,17 +8,26 @@
<style>
</style>
</head>
<body>
<header>
<nav class="navbar navbar-expand-lg">
<div class="container-fluid border border-3 border-secondary-subtle">
<div class="row text-center">
<div class="col-6 d-flex justify-content-end ml-3">
<h1> LITReview </h1>
</div>
<div class="col-3 d-flex self-align-end">
{% if user.is_authenticated %}
{% include 'nav.html' %}
{% endif %}
</div>
{% block nav %}{% endblock %}
</div>
</nav>
</header>
{% block content %}{% endblock %}
{% block content %}{% endblock %}
<footer>
</footer>
</body>
</html>

View File

@@ -0,0 +1,16 @@
<ul class="navbar-nav z-index=2">
<li class="nav-item">
<a href="{% url 'flux' %}" class="nav-link {% if navbar == 'flux' %}active{% endif %}">Flux</a>
</li>
<li class="nav-item">
<a href="{% url 'posts' %}" class="nav-link {% if navbar == 'posts' %}active{% endif %}">Posts</a>
</li>
<li class="nav-item">
<a href="{% url 'subscribed' %}" class="nav-link {% if navbar == 'subscribed' %}active{% endif %}">Abonnements</a>
</li>
<form class="form-inline" method="post" action="{% url 'logout' %}">
{% csrf_token %}
<button type="submit" class="btn btn-light">Se déconnecter</button>
</form>
</ul>

65
README.md Normal file
View File

@@ -0,0 +1,65 @@
# OCR / DA Python - Project9
## LITReview
Build a website (frontend/backend) using Django
### Introduction
These instructions allow you to :
- get the program
- install the required environment
- run and use it
### Requirements
1. modules
```
packages : python 3.11, python3.11-venv, python3-pip, git
```
### Installation
1. Clone this repo and go in the project's directory
2. Create the virtual environment
```
python3.11 -m venv env
source env/bin/activate
```
3. install environment
```
pip install -r requirements.txt
```
## Execution
1. Go in the Django project directory
```
cd LITReview
```
2. Initialize the database
```
python manage.py migrate
```
3. Launch the test's server
```
python manage.py runserver
```
## Use
Browse to http://127.0.0.1:8000
Register/Create a user (or more)
Then connect ; you can create a Request or a Review
When multiple users exist, you can follow others and see what they've published
## Author
YaL <yann@needsome.coffee>
## License
MIT License
Copyright (c) 2025

View File

@@ -0,0 +1,161 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: LITReview/authentication/migrations/0001_initial.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="LITReview.authentication.migrations.0001_initial.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
LITReview/authentication/migrations/0001_initial.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
13
</span>
<strong>E501:</strong> line too long (117 > 79 characters)
(and 10 similar)
</a>
<ul class="details">
<li>
<p>Line too long (117 > 79 characters):</p>
<a href="LITReview.authentication.migrations.0001_initial.source.html#l21">
<tt><i>21</i> <span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BigAutoField</span><span class="p">(</span><span class="n">auto_created</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">primary_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">serialize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;ID&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (88 > 79 characters):</p>
<a href="LITReview.authentication.migrations.0001_initial.source.html#l22">
<tt><i>22</i> <span class="p">(</span><span class="s1">&#39;password&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">128</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;password&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (103 > 79 characters):</p>
<a href="LITReview.authentication.migrations.0001_initial.source.html#l23">
<tt><i>23</i> <span class="p">(</span><span class="s1">&#39;last_login&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;last login&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (196 > 79 characters):</p>
<a href="LITReview.authentication.migrations.0001_initial.source.html#l24">
<tt><i>24</i> <span class="p">(</span><span class="s1">&#39;is_superuser&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;Designates that this user has all permissions without explicitly assigning them.&#39;</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;superuser status&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (329 > 79 characters):</p>
<a href="LITReview.authentication.migrations.0001_initial.source.html#l25">
<tt><i>25</i> <span class="p">(</span><span class="s1">&#39;username&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">error_messages</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;unique&#39;</span><span class="p">:</span> <span class="s1">&#39;A user with that username already exists.&#39;</span><span class="p">},</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.&#39;</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">150</span><span class="p">,</span> <span class="n">unique</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">validators</span><span class="o">=</span><span class="p">[</span><span class="n">django</span><span class="o">.</span><span class="n">contrib</span><span class="o">.</span><span class="n">auth</span><span class="o">.</span><span class="n">validators</span><span class="o">.</span><span class="n">UnicodeUsernameValidator</span><span class="p">()],</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;username&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (104 > 79 characters):</p>
<a href="LITReview.authentication.migrations.0001_initial.source.html#l26">
<tt><i>26</i> <span class="p">(</span><span class="s1">&#39;first_name&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">150</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;first name&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (102 > 79 characters):</p>
<a href="LITReview.authentication.migrations.0001_initial.source.html#l27">
<tt><i>27</i> <span class="p">(</span><span class="s1">&#39;last_name&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">150</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;last name&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (103 > 79 characters):</p>
<a href="LITReview.authentication.migrations.0001_initial.source.html#l28">
<tt><i>28</i> <span class="p">(</span><span class="s1">&#39;email&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">EmailField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">254</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;email address&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (165 > 79 characters):</p>
<a href="LITReview.authentication.migrations.0001_initial.source.html#l29">
<tt><i>29</i> <span class="p">(</span><span class="s1">&#39;is_staff&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;Designates whether the user can log into this admin site.&#39;</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;staff status&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (203 > 79 characters):</p>
<a href="LITReview.authentication.migrations.0001_initial.source.html#l30">
<tt><i>30</i> <span class="p">(</span><span class="s1">&#39;is_active&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;Designates whether this user should be treated as active. Unselect this instead of deleting accounts.&#39;</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;active&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (117 > 79 characters):</p>
<a href="LITReview.authentication.migrations.0001_initial.source.html#l31">
<tt><i>31</i> <span class="p">(</span><span class="s1">&#39;date_joined&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;date joined&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (266 > 79 characters):</p>
<a href="LITReview.authentication.migrations.0001_initial.source.html#l33">
<tt><i>33</i> <span class="p">(</span><span class="s1">&#39;groups&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;The groups this user belongs to. A user will get all permissions granted to each of their groups.&#39;</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;user_set&#39;</span><span class="p">,</span> <span class="n">related_query_name</span><span class="o">=</span><span class="s1">&#39;user&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;auth.group&#39;</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;groups&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (229 > 79 characters):</p>
<a href="LITReview.authentication.migrations.0001_initial.source.html#l34">
<tt><i>34</i> <span class="p">(</span><span class="s1">&#39;user_permissions&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;Specific permissions for this user.&#39;</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;user_set&#39;</span><span class="p">,</span> <span class="n">related_query_name</span><span class="o">=</span><span class="s1">&#39;user&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;auth.permission&#39;</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;user permissions&#39;</span><span class="p">)),</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,275 @@
<!DOCTYPE html>
<html>
<head>
<title>LITReview/authentication/migrations/0001_initial.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="LITReview.authentication.migrations.0001_initial.report.html">
<img src="back.svg" alt="&#x2B05;">
LITReview/authentication/migrations/0001_initial.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="c1"># Generated by Django 5.2 on 2025-04-18 07:28</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.contrib.auth.models</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.contrib.auth.validators</span></tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.utils.timezone</span></tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">migrations</span><span class="p">,</span> <span class="n">models</span></tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> &nbsp;</tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> &nbsp;</tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> <span class="k">class</span><span class="w"> </span><span class="nc">Migration</span><span class="p">(</span><span class="n">migrations</span><span class="o">.</span><span class="n">Migration</span><span class="p">):</span></tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> &nbsp;</tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> <span class="n">initial</span> <span class="o">=</span> <span class="kc">True</span></tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> &nbsp;</tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="n">dependencies</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> <span class="p">(</span><span class="s1">&#39;auth&#39;</span><span class="p">,</span> <span class="s1">&#39;0012_alter_user_first_name_max_length&#39;</span><span class="p">),</span></tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> <span class="p">]</span></tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> &nbsp;</tt>
</div>
<div id="l17"
class="code sev- "><tt><i>17</i> <span class="n">operations</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="n">migrations</span><span class="o">.</span><span class="n">CreateModel</span><span class="p">(</span></tt>
</div>
<div id="l19"
class="code sev- "><tt><i>19</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;User&#39;</span><span class="p">,</span></tt>
</div>
<div id="l20"
class="code sev- "><tt><i>20</i> <span class="n">fields</span><span class="o">=</span><span class="p">[</span></tt>
</div>
<div id="l21"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (117 > 79 characters)</li>
</ul><tt><i>21</i> <span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BigAutoField</span><span class="p">(</span><span class="n">auto_created</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">primary_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">serialize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;ID&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l22"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (88 > 79 characters)</li>
</ul><tt><i>22</i> <span class="p">(</span><span class="s1">&#39;password&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">128</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;password&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l23"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (103 > 79 characters)</li>
</ul><tt><i>23</i> <span class="p">(</span><span class="s1">&#39;last_login&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;last login&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l24"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (196 > 79 characters)</li>
</ul><tt><i>24</i> <span class="p">(</span><span class="s1">&#39;is_superuser&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;Designates that this user has all permissions without explicitly assigning them.&#39;</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;superuser status&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l25"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (329 > 79 characters)</li>
</ul><tt><i>25</i> <span class="p">(</span><span class="s1">&#39;username&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">error_messages</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;unique&#39;</span><span class="p">:</span> <span class="s1">&#39;A user with that username already exists.&#39;</span><span class="p">},</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.&#39;</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">150</span><span class="p">,</span> <span class="n">unique</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">validators</span><span class="o">=</span><span class="p">[</span><span class="n">django</span><span class="o">.</span><span class="n">contrib</span><span class="o">.</span><span class="n">auth</span><span class="o">.</span><span class="n">validators</span><span class="o">.</span><span class="n">UnicodeUsernameValidator</span><span class="p">()],</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;username&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l26"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (104 > 79 characters)</li>
</ul><tt><i>26</i> <span class="p">(</span><span class="s1">&#39;first_name&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">150</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;first name&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l27"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (102 > 79 characters)</li>
</ul><tt><i>27</i> <span class="p">(</span><span class="s1">&#39;last_name&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">150</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;last name&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l28"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (103 > 79 characters)</li>
</ul><tt><i>28</i> <span class="p">(</span><span class="s1">&#39;email&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">EmailField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">254</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;email address&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l29"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (165 > 79 characters)</li>
</ul><tt><i>29</i> <span class="p">(</span><span class="s1">&#39;is_staff&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;Designates whether the user can log into this admin site.&#39;</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;staff status&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l30"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (203 > 79 characters)</li>
</ul><tt><i>30</i> <span class="p">(</span><span class="s1">&#39;is_active&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;Designates whether this user should be treated as active. Unselect this instead of deleting accounts.&#39;</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;active&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l31"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (117 > 79 characters)</li>
</ul><tt><i>31</i> <span class="p">(</span><span class="s1">&#39;date_joined&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;date joined&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l32"
class="code sev- "><tt><i>32</i> <span class="p">(</span><span class="s1">&#39;account_id&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">unique</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span></tt>
</div>
<div id="l33"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (266 > 79 characters)</li>
</ul><tt><i>33</i> <span class="p">(</span><span class="s1">&#39;groups&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;The groups this user belongs to. A user will get all permissions granted to each of their groups.&#39;</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;user_set&#39;</span><span class="p">,</span> <span class="n">related_query_name</span><span class="o">=</span><span class="s1">&#39;user&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;auth.group&#39;</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;groups&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l34"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (229 > 79 characters)</li>
</ul><tt><i>34</i> <span class="p">(</span><span class="s1">&#39;user_permissions&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s1">&#39;Specific permissions for this user.&#39;</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;user_set&#39;</span><span class="p">,</span> <span class="n">related_query_name</span><span class="o">=</span><span class="s1">&#39;user&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;auth.permission&#39;</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;user permissions&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l35"
class="code sev- "><tt><i>35</i> <span class="p">],</span></tt>
</div>
<div id="l36"
class="code sev- "><tt><i>36</i> <span class="n">options</span><span class="o">=</span><span class="p">{</span></tt>
</div>
<div id="l37"
class="code sev- "><tt><i>37</i> <span class="s1">&#39;verbose_name&#39;</span><span class="p">:</span> <span class="s1">&#39;user&#39;</span><span class="p">,</span></tt>
</div>
<div id="l38"
class="code sev- "><tt><i>38</i> <span class="s1">&#39;verbose_name_plural&#39;</span><span class="p">:</span> <span class="s1">&#39;users&#39;</span><span class="p">,</span></tt>
</div>
<div id="l39"
class="code sev- "><tt><i>39</i> <span class="s1">&#39;abstract&#39;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span></tt>
</div>
<div id="l40"
class="code sev- "><tt><i>40</i> <span class="p">},</span></tt>
</div>
<div id="l41"
class="code sev- "><tt><i>41</i> <span class="n">managers</span><span class="o">=</span><span class="p">[</span></tt>
</div>
<div id="l42"
class="code sev- "><tt><i>42</i> <span class="p">(</span><span class="s1">&#39;objects&#39;</span><span class="p">,</span> <span class="n">django</span><span class="o">.</span><span class="n">contrib</span><span class="o">.</span><span class="n">auth</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">UserManager</span><span class="p">()),</span></tt>
</div>
<div id="l43"
class="code sev- "><tt><i>43</i> <span class="p">],</span></tt>
</div>
<div id="l44"
class="code sev- "><tt><i>44</i> <span class="p">),</span></tt>
</div>
<div id="l45"
class="code sev- "><tt><i>45</i> <span class="p">]</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,119 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: LITReview/reviews/migrations/0001_initial.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="LITReview.reviews.migrations.0001_initial.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
LITReview/reviews/migrations/0001_initial.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
7
</span>
<strong>E501:</strong> line too long (117 > 79 characters)
(and 3 similar)
</a>
<ul class="details">
<li>
<p>Line too long (117 > 79 characters):</p>
<a href="LITReview.reviews.migrations.0001_initial.source.html#l21">
<tt><i>21</i> <span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BigAutoField</span><span class="p">(</span><span class="n">auto_created</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">primary_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">serialize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;ID&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (117 > 79 characters):</p>
<a href="LITReview.reviews.migrations.0001_initial.source.html#l27">
<tt><i>27</i> <span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BigAutoField</span><span class="p">(</span><span class="n">auto_created</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">primary_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">serialize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;ID&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (118 > 79 characters):</p>
<a href="LITReview.reviews.migrations.0001_initial.source.html#l33">
<tt><i>33</i> <span class="p">(</span><span class="s1">&#39;user&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (117 > 79 characters):</p>
<a href="LITReview.reviews.migrations.0001_initial.source.html#l39">
<tt><i>39</i> <span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BigAutoField</span><span class="p">(</span><span class="n">auto_created</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">primary_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">serialize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;ID&#39;</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (164 > 79 characters):</p>
<a href="LITReview.reviews.migrations.0001_initial.source.html#l40">
<tt><i>40</i> <span class="p">(</span><span class="s1">&#39;rating&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveSmallIntegerField</span><span class="p">(</span><span class="n">validators</span><span class="o">=</span><span class="p">[</span><span class="n">django</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">validators</span><span class="o">.</span><span class="n">MinValueValidator</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">django</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">validators</span><span class="o">.</span><span class="n">MaxValueValidator</span><span class="p">(</span><span class="mi">5</span><span class="p">)])),</span></tt>
</a>
</li><li>
<p>Line too long (118 > 79 characters):</p>
<a href="LITReview.reviews.migrations.0001_initial.source.html#l44">
<tt><i>44</i> <span class="p">(</span><span class="s1">&#39;user&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">)),</span></tt>
</a>
</li><li>
<p>Line too long (112 > 79 characters):</p>
<a href="LITReview.reviews.migrations.0001_initial.source.html#l45">
<tt><i>45</i> <span class="p">(</span><span class="s1">&#39;ticket&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;reviews.ticket&#39;</span><span class="p">)),</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,230 @@
<!DOCTYPE html>
<html>
<head>
<title>LITReview/reviews/migrations/0001_initial.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="LITReview.reviews.migrations.0001_initial.report.html">
<img src="back.svg" alt="&#x2B05;">
LITReview/reviews/migrations/0001_initial.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="c1"># Generated by Django 5.2 on 2025-04-23 12:59</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.core.validators</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.db.models.deletion</span></tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.conf</span><span class="w"> </span><span class="kn">import</span> <span class="n">settings</span></tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">migrations</span><span class="p">,</span> <span class="n">models</span></tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> &nbsp;</tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> &nbsp;</tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> <span class="k">class</span><span class="w"> </span><span class="nc">Migration</span><span class="p">(</span><span class="n">migrations</span><span class="o">.</span><span class="n">Migration</span><span class="p">):</span></tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> &nbsp;</tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> <span class="n">initial</span> <span class="o">=</span> <span class="kc">True</span></tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> &nbsp;</tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="n">dependencies</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> <span class="n">migrations</span><span class="o">.</span><span class="n">swappable_dependency</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> <span class="p">]</span></tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> &nbsp;</tt>
</div>
<div id="l17"
class="code sev- "><tt><i>17</i> <span class="n">operations</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="n">migrations</span><span class="o">.</span><span class="n">CreateModel</span><span class="p">(</span></tt>
</div>
<div id="l19"
class="code sev- "><tt><i>19</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;UserFollows&#39;</span><span class="p">,</span></tt>
</div>
<div id="l20"
class="code sev- "><tt><i>20</i> <span class="n">fields</span><span class="o">=</span><span class="p">[</span></tt>
</div>
<div id="l21"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (117 > 79 characters)</li>
</ul><tt><i>21</i> <span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BigAutoField</span><span class="p">(</span><span class="n">auto_created</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">primary_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">serialize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;ID&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l22"
class="code sev- "><tt><i>22</i> <span class="p">],</span></tt>
</div>
<div id="l23"
class="code sev- "><tt><i>23</i> <span class="p">),</span></tt>
</div>
<div id="l24"
class="code sev- "><tt><i>24</i> <span class="n">migrations</span><span class="o">.</span><span class="n">CreateModel</span><span class="p">(</span></tt>
</div>
<div id="l25"
class="code sev- "><tt><i>25</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;Ticket&#39;</span><span class="p">,</span></tt>
</div>
<div id="l26"
class="code sev- "><tt><i>26</i> <span class="n">fields</span><span class="o">=</span><span class="p">[</span></tt>
</div>
<div id="l27"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (117 > 79 characters)</li>
</ul><tt><i>27</i> <span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BigAutoField</span><span class="p">(</span><span class="n">auto_created</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">primary_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">serialize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;ID&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l28"
class="code sev- "><tt><i>28</i> <span class="p">(</span><span class="s1">&#39;title&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">100</span><span class="p">)),</span></tt>
</div>
<div id="l29"
class="code sev- "><tt><i>29</i> <span class="p">(</span><span class="s1">&#39;topic&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">100</span><span class="p">)),</span></tt>
</div>
<div id="l30"
class="code sev- "><tt><i>30</i> <span class="p">(</span><span class="s1">&#39;body&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">8192</span><span class="p">)),</span></tt>
</div>
<div id="l31"
class="code sev- "><tt><i>31</i> <span class="p">(</span><span class="s1">&#39;image&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ImageField</span><span class="p">(</span><span class="n">upload_to</span><span class="o">=</span><span class="s1">&#39;uploads/&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l32"
class="code sev- "><tt><i>32</i> <span class="p">(</span><span class="s1">&#39;time_created&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">auto_now_add</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span></tt>
</div>
<div id="l33"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (118 > 79 characters)</li>
</ul><tt><i>33</i> <span class="p">(</span><span class="s1">&#39;user&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">)),</span></tt>
</div>
<div id="l34"
class="code sev- "><tt><i>34</i> <span class="p">],</span></tt>
</div>
<div id="l35"
class="code sev- "><tt><i>35</i> <span class="p">),</span></tt>
</div>
<div id="l36"
class="code sev- "><tt><i>36</i> <span class="n">migrations</span><span class="o">.</span><span class="n">CreateModel</span><span class="p">(</span></tt>
</div>
<div id="l37"
class="code sev- "><tt><i>37</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;Review&#39;</span><span class="p">,</span></tt>
</div>
<div id="l38"
class="code sev- "><tt><i>38</i> <span class="n">fields</span><span class="o">=</span><span class="p">[</span></tt>
</div>
<div id="l39"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (117 > 79 characters)</li>
</ul><tt><i>39</i> <span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">BigAutoField</span><span class="p">(</span><span class="n">auto_created</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">primary_key</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">serialize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;ID&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l40"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (164 > 79 characters)</li>
</ul><tt><i>40</i> <span class="p">(</span><span class="s1">&#39;rating&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveSmallIntegerField</span><span class="p">(</span><span class="n">validators</span><span class="o">=</span><span class="p">[</span><span class="n">django</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">validators</span><span class="o">.</span><span class="n">MinValueValidator</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">django</span><span class="o">.</span><span class="n">core</span><span class="o">.</span><span class="n">validators</span><span class="o">.</span><span class="n">MaxValueValidator</span><span class="p">(</span><span class="mi">5</span><span class="p">)])),</span></tt>
</div>
<div id="l41"
class="code sev- "><tt><i>41</i> <span class="p">(</span><span class="s1">&#39;headline&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">128</span><span class="p">)),</span></tt>
</div>
<div id="l42"
class="code sev- "><tt><i>42</i> <span class="p">(</span><span class="s1">&#39;body&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">8192</span><span class="p">)),</span></tt>
</div>
<div id="l43"
class="code sev- "><tt><i>43</i> <span class="p">(</span><span class="s1">&#39;time_created&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">auto_now_add</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span></tt>
</div>
<div id="l44"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (118 > 79 characters)</li>
</ul><tt><i>44</i> <span class="p">(</span><span class="s1">&#39;user&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">)),</span></tt>
</div>
<div id="l45"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (112 > 79 characters)</li>
</ul><tt><i>45</i> <span class="p">(</span><span class="s1">&#39;ticket&#39;</span><span class="p">,</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;reviews.ticket&#39;</span><span class="p">)),</span></tt>
</div>
<div id="l46"
class="code sev- "><tt><i>46</i> <span class="p">],</span></tt>
</div>
<div id="l47"
class="code sev- "><tt><i>47</i> <span class="p">),</span></tt>
</div>
<div id="l48"
class="code sev- "><tt><i>48</i> <span class="p">]</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,98 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: LITReview/reviews/migrations/0002_userfollows_followed_user_userfollows_user_and_more.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="LITReview.reviews.migrations.0002_userfollows_followed_user_userfollows_user_and_more.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
LITReview/reviews/migrations/0002_userfollows_followed_user_userfollows_user_and_more.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
4
</span>
<strong>E501:</strong> line too long (146 > 79 characters)
(and 3 similar)
</a>
<ul class="details">
<li>
<p>Line too long (146 > 79 characters):</p>
<a href="LITReview.reviews.migrations.0002_userfollows_followed_user_userfollows_user_and_more.source.html#l19">
<tt><i>19</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;followed&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</a>
</li><li>
<p>Line too long (147 > 79 characters):</p>
<a href="LITReview.reviews.migrations.0002_userfollows_followed_user_userfollows_user_and_more.source.html#l24">
<tt><i>24</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;following&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</a>
</li><li>
<p>Line too long (92 > 79 characters):</p>
<a href="LITReview.reviews.migrations.0002_userfollows_followed_user_userfollows_user_and_more.source.html#l29">
<tt><i>29</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">8192</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;description&#39;</span><span class="p">),</span></tt>
</a>
</li><li>
<p>Line too long (80 > 79 characters):</p>
<a href="LITReview.reviews.migrations.0002_userfollows_followed_user_userfollows_user_and_more.source.html#l39">
<tt><i>39</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">8192</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;Description&#39;</span><span class="p">),</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,209 @@
<!DOCTYPE html>
<html>
<head>
<title>LITReview/reviews/migrations/0002_userfollows_followed_user_userfollows_user_and_more.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="LITReview.reviews.migrations.0002_userfollows_followed_user_userfollows_user_and_more.report.html">
<img src="back.svg" alt="&#x2B05;">
LITReview/reviews/migrations/0002_userfollows_followed_user_userfollows_user_and_more.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="c1"># Generated by Django 5.2 on 2025-04-25 13:05</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.db.models.deletion</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.conf</span><span class="w"> </span><span class="kn">import</span> <span class="n">settings</span></tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">migrations</span><span class="p">,</span> <span class="n">models</span></tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> &nbsp;</tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> &nbsp;</tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> <span class="k">class</span><span class="w"> </span><span class="nc">Migration</span><span class="p">(</span><span class="n">migrations</span><span class="o">.</span><span class="n">Migration</span><span class="p">):</span></tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> &nbsp;</tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> <span class="n">dependencies</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> <span class="p">(</span><span class="s1">&#39;reviews&#39;</span><span class="p">,</span> <span class="s1">&#39;0001_initial&#39;</span><span class="p">),</span></tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> <span class="n">migrations</span><span class="o">.</span><span class="n">swappable_dependency</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="p">]</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> &nbsp;</tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> <span class="n">operations</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AddField</span><span class="p">(</span></tt>
</div>
<div id="l17"
class="code sev- "><tt><i>17</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;userfollows&#39;</span><span class="p">,</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;followed_user&#39;</span><span class="p">,</span></tt>
</div>
<div id="l19"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (146 > 79 characters)</li>
</ul><tt><i>19</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;followed&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</div>
<div id="l20"
class="code sev- "><tt><i>20</i> <span class="p">),</span></tt>
</div>
<div id="l21"
class="code sev- "><tt><i>21</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AddField</span><span class="p">(</span></tt>
</div>
<div id="l22"
class="code sev- "><tt><i>22</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;userfollows&#39;</span><span class="p">,</span></tt>
</div>
<div id="l23"
class="code sev- "><tt><i>23</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;user&#39;</span><span class="p">,</span></tt>
</div>
<div id="l24"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (147 > 79 characters)</li>
</ul><tt><i>24</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;following&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">AUTH_USER_MODEL</span><span class="p">),</span></tt>
</div>
<div id="l25"
class="code sev- "><tt><i>25</i> <span class="p">),</span></tt>
</div>
<div id="l26"
class="code sev- "><tt><i>26</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l27"
class="code sev- "><tt><i>27</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;review&#39;</span><span class="p">,</span></tt>
</div>
<div id="l28"
class="code sev- "><tt><i>28</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;body&#39;</span><span class="p">,</span></tt>
</div>
<div id="l29"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (92 > 79 characters)</li>
</ul><tt><i>29</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">8192</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;description&#39;</span><span class="p">),</span></tt>
</div>
<div id="l30"
class="code sev- "><tt><i>30</i> <span class="p">),</span></tt>
</div>
<div id="l31"
class="code sev- "><tt><i>31</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l32"
class="code sev- "><tt><i>32</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;review&#39;</span><span class="p">,</span></tt>
</div>
<div id="l33"
class="code sev- "><tt><i>33</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;headline&#39;</span><span class="p">,</span></tt>
</div>
<div id="l34"
class="code sev- "><tt><i>34</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">128</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;titre&#39;</span><span class="p">),</span></tt>
</div>
<div id="l35"
class="code sev- "><tt><i>35</i> <span class="p">),</span></tt>
</div>
<div id="l36"
class="code sev- "><tt><i>36</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l37"
class="code sev- "><tt><i>37</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;ticket&#39;</span><span class="p">,</span></tt>
</div>
<div id="l38"
class="code sev- "><tt><i>38</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;body&#39;</span><span class="p">,</span></tt>
</div>
<div id="l39"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (80 > 79 characters)</li>
</ul><tt><i>39</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">8192</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;Description&#39;</span><span class="p">),</span></tt>
</div>
<div id="l40"
class="code sev- "><tt><i>40</i> <span class="p">),</span></tt>
</div>
<div id="l41"
class="code sev- "><tt><i>41</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l42"
class="code sev- "><tt><i>42</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;ticket&#39;</span><span class="p">,</span></tt>
</div>
<div id="l43"
class="code sev- "><tt><i>43</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;title&#39;</span><span class="p">,</span></tt>
</div>
<div id="l44"
class="code sev- "><tt><i>44</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;Titre&#39;</span><span class="p">),</span></tt>
</div>
<div id="l45"
class="code sev- "><tt><i>45</i> <span class="p">),</span></tt>
</div>
<div id="l46"
class="code sev- "><tt><i>46</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterUniqueTogether</span><span class="p">(</span></tt>
</div>
<div id="l47"
class="code sev- "><tt><i>47</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;userfollows&#39;</span><span class="p">,</span></tt>
</div>
<div id="l48"
class="code sev- "><tt><i>48</i> <span class="n">unique_together</span><span class="o">=</span><span class="p">{(</span><span class="s1">&#39;user&#39;</span><span class="p">,</span> <span class="s1">&#39;followed_user&#39;</span><span class="p">)},</span></tt>
</div>
<div id="l49"
class="code sev- "><tt><i>49</i> <span class="p">),</span></tt>
</div>
<div id="l50"
class="code sev- "><tt><i>50</i> <span class="p">]</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,73 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: LITReview/reviews/migrations/0003_alter_ticket_image.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="LITReview.reviews.migrations.0003_alter_ticket_image.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
LITReview/reviews/migrations/0003_alter_ticket_image.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
1
</span>
<strong>E501:</strong> line too long (80 > 79 characters)
</a>
<ul class="details">
<li>
<a href="LITReview.reviews.migrations.0003_alter_ticket_image.source.html#l9">
<tt><i>9</i> <span class="p">(</span><span class="s1">&#39;reviews&#39;</span><span class="p">,</span> <span class="s1">&#39;0002_userfollows_followed_user_userfollows_user_and_more&#39;</span><span class="p">),</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,86 @@
<!DOCTYPE html>
<html>
<head>
<title>LITReview/reviews/migrations/0003_alter_ticket_image.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="LITReview.reviews.migrations.0003_alter_ticket_image.report.html">
<img src="back.svg" alt="&#x2B05;">
LITReview/reviews/migrations/0003_alter_ticket_image.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="c1"># Generated by Django 5.2 on 2025-04-26 12:30</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">migrations</span><span class="p">,</span> <span class="n">models</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> &nbsp;</tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> &nbsp;</tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> <span class="k">class</span><span class="w"> </span><span class="nc">Migration</span><span class="p">(</span><span class="n">migrations</span><span class="o">.</span><span class="n">Migration</span><span class="p">):</span></tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> &nbsp;</tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> <span class="n">dependencies</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l9"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (80 > 79 characters)</li>
</ul><tt><i>9</i> <span class="p">(</span><span class="s1">&#39;reviews&#39;</span><span class="p">,</span> <span class="s1">&#39;0002_userfollows_followed_user_userfollows_user_and_more&#39;</span><span class="p">),</span></tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> <span class="p">]</span></tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> &nbsp;</tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> <span class="n">operations</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;ticket&#39;</span><span class="p">,</span></tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;image&#39;</span><span class="p">,</span></tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ImageField</span><span class="p">(</span><span class="n">upload_to</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">),</span></tt>
</div>
<div id="l17"
class="code sev- "><tt><i>17</i> <span class="p">),</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="p">]</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,73 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: LITReview/reviews/migrations/0004_rename_body_ticket_desc_remove_review_body_and_more.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="LITReview.reviews.migrations.0004_rename_body_ticket_desc_remove_review_body_and_more.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
LITReview/reviews/migrations/0004_rename_body_ticket_desc_remove_review_body_and_more.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
1
</span>
<strong>E501:</strong> line too long (92 > 79 characters)
</a>
<ul class="details">
<li>
<a href="LITReview.reviews.migrations.0004_rename_body_ticket_desc_remove_review_body_and_more.source.html#l25">
<tt><i>25</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">8192</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;commentaire&#39;</span><span class="p">),</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,113 @@
<!DOCTYPE html>
<html>
<head>
<title>LITReview/reviews/migrations/0004_rename_body_ticket_desc_remove_review_body_and_more.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="LITReview.reviews.migrations.0004_rename_body_ticket_desc_remove_review_body_and_more.report.html">
<img src="back.svg" alt="&#x2B05;">
LITReview/reviews/migrations/0004_rename_body_ticket_desc_remove_review_body_and_more.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="c1"># Generated by Django 5.2 on 2025-05-01 12:11</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">migrations</span><span class="p">,</span> <span class="n">models</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> &nbsp;</tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> &nbsp;</tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> <span class="k">class</span><span class="w"> </span><span class="nc">Migration</span><span class="p">(</span><span class="n">migrations</span><span class="o">.</span><span class="n">Migration</span><span class="p">):</span></tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> &nbsp;</tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> <span class="n">dependencies</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> <span class="p">(</span><span class="s1">&#39;reviews&#39;</span><span class="p">,</span> <span class="s1">&#39;0003_alter_ticket_image&#39;</span><span class="p">),</span></tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> <span class="p">]</span></tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> &nbsp;</tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> <span class="n">operations</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="n">migrations</span><span class="o">.</span><span class="n">RenameField</span><span class="p">(</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;ticket&#39;</span><span class="p">,</span></tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> <span class="n">old_name</span><span class="o">=</span><span class="s1">&#39;body&#39;</span><span class="p">,</span></tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> <span class="n">new_name</span><span class="o">=</span><span class="s1">&#39;desc&#39;</span><span class="p">,</span></tt>
</div>
<div id="l17"
class="code sev- "><tt><i>17</i> <span class="p">),</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="n">migrations</span><span class="o">.</span><span class="n">RemoveField</span><span class="p">(</span></tt>
</div>
<div id="l19"
class="code sev- "><tt><i>19</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;review&#39;</span><span class="p">,</span></tt>
</div>
<div id="l20"
class="code sev- "><tt><i>20</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;body&#39;</span><span class="p">,</span></tt>
</div>
<div id="l21"
class="code sev- "><tt><i>21</i> <span class="p">),</span></tt>
</div>
<div id="l22"
class="code sev- "><tt><i>22</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AddField</span><span class="p">(</span></tt>
</div>
<div id="l23"
class="code sev- "><tt><i>23</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;review&#39;</span><span class="p">,</span></tt>
</div>
<div id="l24"
class="code sev- "><tt><i>24</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;comment&#39;</span><span class="p">,</span></tt>
</div>
<div id="l25"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (92 > 79 characters)</li>
</ul><tt><i>25</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">8192</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">&#39;commentaire&#39;</span><span class="p">),</span></tt>
</div>
<div id="l26"
class="code sev- "><tt><i>26</i> <span class="p">),</span></tt>
</div>
<div id="l27"
class="code sev- "><tt><i>27</i> <span class="p">]</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,84 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: LITReview/reviews/migrations/0005_userfollows_starting_date.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="LITReview.reviews.migrations.0005_userfollows_starting_date.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
LITReview/reviews/migrations/0005_userfollows_starting_date.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
2
</span>
<strong>E501:</strong> line too long (80 > 79 characters)
(and 1 similar)
</a>
<ul class="details">
<li>
<p>Line too long (80 > 79 characters):</p>
<a href="LITReview.reviews.migrations.0005_userfollows_starting_date.source.html#l10">
<tt><i>10</i> <span class="p">(</span><span class="s1">&#39;reviews&#39;</span><span class="p">,</span> <span class="s1">&#39;0004_rename_body_ticket_desc_remove_review_body_and_more&#39;</span><span class="p">),</span></tt>
</a>
</li><li>
<p>Line too long (93 > 79 characters):</p>
<a href="LITReview.reviews.migrations.0005_userfollows_starting_date.source.html#l17">
<tt><i>17</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">auto_now_add</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">),</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,101 @@
<!DOCTYPE html>
<html>
<head>
<title>LITReview/reviews/migrations/0005_userfollows_starting_date.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="LITReview.reviews.migrations.0005_userfollows_starting_date.report.html">
<img src="back.svg" alt="&#x2B05;">
LITReview/reviews/migrations/0005_userfollows_starting_date.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="c1"># Generated by Django 5.2 on 2025-05-01 17:23</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.utils.timezone</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">migrations</span><span class="p">,</span> <span class="n">models</span></tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> &nbsp;</tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> &nbsp;</tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> <span class="k">class</span><span class="w"> </span><span class="nc">Migration</span><span class="p">(</span><span class="n">migrations</span><span class="o">.</span><span class="n">Migration</span><span class="p">):</span></tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> &nbsp;</tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> <span class="n">dependencies</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l10"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (80 > 79 characters)</li>
</ul><tt><i>10</i> <span class="p">(</span><span class="s1">&#39;reviews&#39;</span><span class="p">,</span> <span class="s1">&#39;0004_rename_body_ticket_desc_remove_review_body_and_more&#39;</span><span class="p">),</span></tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> <span class="p">]</span></tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> &nbsp;</tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="n">operations</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AddField</span><span class="p">(</span></tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;userfollows&#39;</span><span class="p">,</span></tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;starting_date&#39;</span><span class="p">,</span></tt>
</div>
<div id="l17"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (93 > 79 characters)</li>
</ul><tt><i>17</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">auto_now_add</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">),</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="n">preserve_default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span></tt>
</div>
<div id="l19"
class="code sev- "><tt><i>19</i> <span class="p">),</span></tt>
</div>
<div id="l20"
class="code sev- "><tt><i>20</i> <span class="p">]</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,84 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: LITReview/reviews/migrations/0006_ticket_review_alter_review_ticket.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="LITReview.reviews.migrations.0006_ticket_review_alter_review_ticket.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
LITReview/reviews/migrations/0006_ticket_review_alter_review_ticket.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
2
</span>
<strong>E501:</strong> line too long (141 > 79 characters)
(and 1 similar)
</a>
<ul class="details">
<li>
<p>Line too long (141 > 79 characters):</p>
<a href="LITReview.reviews.migrations.0006_ticket_review_alter_review_ticket.source.html#l17">
<tt><i>17</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">SET_NULL</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;has_review&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;reviews.review&#39;</span><span class="p">),</span></tt>
</a>
</li><li>
<p>Line too long (128 > 79 characters):</p>
<a href="LITReview.reviews.migrations.0006_ticket_review_alter_review_ticket.source.html#l22">
<tt><i>22</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;of_ticket&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;reviews.ticket&#39;</span><span class="p">),</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,113 @@
<!DOCTYPE html>
<html>
<head>
<title>LITReview/reviews/migrations/0006_ticket_review_alter_review_ticket.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="LITReview.reviews.migrations.0006_ticket_review_alter_review_ticket.report.html">
<img src="back.svg" alt="&#x2B05;">
LITReview/reviews/migrations/0006_ticket_review_alter_review_ticket.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="c1"># Generated by Django 5.2 on 2025-05-02 08:27</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.db.models.deletion</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">migrations</span><span class="p">,</span> <span class="n">models</span></tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> &nbsp;</tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> &nbsp;</tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> <span class="k">class</span><span class="w"> </span><span class="nc">Migration</span><span class="p">(</span><span class="n">migrations</span><span class="o">.</span><span class="n">Migration</span><span class="p">):</span></tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> &nbsp;</tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> <span class="n">dependencies</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> <span class="p">(</span><span class="s1">&#39;reviews&#39;</span><span class="p">,</span> <span class="s1">&#39;0005_userfollows_starting_date&#39;</span><span class="p">),</span></tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> <span class="p">]</span></tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> &nbsp;</tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="n">operations</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AddField</span><span class="p">(</span></tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;ticket&#39;</span><span class="p">,</span></tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;review&#39;</span><span class="p">,</span></tt>
</div>
<div id="l17"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (141 > 79 characters)</li>
</ul><tt><i>17</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">SET_NULL</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;has_review&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;reviews.review&#39;</span><span class="p">),</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="p">),</span></tt>
</div>
<div id="l19"
class="code sev- "><tt><i>19</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l20"
class="code sev- "><tt><i>20</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;review&#39;</span><span class="p">,</span></tt>
</div>
<div id="l21"
class="code sev- "><tt><i>21</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;ticket&#39;</span><span class="p">,</span></tt>
</div>
<div id="l22"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (128 > 79 characters)</li>
</ul><tt><i>22</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;of_ticket&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;reviews.ticket&#39;</span><span class="p">),</span></tt>
</div>
<div id="l23"
class="code sev- "><tt><i>23</i> <span class="p">),</span></tt>
</div>
<div id="l24"
class="code sev- "><tt><i>24</i> <span class="p">]</span></tt>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,73 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations: LITReview/reviews/migrations/0007_alter_review_ticket.py</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
<script>
function bindHandler(link) {
var code = link.getAttribute('data-code');
var key = location.pathname + '#' + code;
var ul = link.parentNode.querySelector('.details');
if (sessionStorage[key] != 'open') {
ul.style.display = 'none';
}
link.addEventListener('click', function (event) {
if (!ul.style.display || ul.style.display == 'none') {
ul.style.display = 'block';
sessionStorage[key] = 'open';
} else {
ul.style.display = 'none';
sessionStorage[key] = 'closed';
}
});
}
window.addEventListener('DOMContentLoaded', function () {
var links = document.querySelectorAll('#index > li > a');
for (var i = 0; i < links.length; i++) {
bindHandler(links[i]);
}
});
</script>
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<p id="srclink">
<a title="View full annotated source"
href="LITReview.reviews.migrations.0007_alter_review_ticket.source.html">
<img src="file.svg" alt="&#x2261;">
</a></p>
<h1>
<a href="index.html">
<img src="back.svg" alt="&#x2B05;">
LITReview/reviews/migrations/0007_alter_review_ticket.py
</a>
</h1>
<ul id="index">
<li>
<a data-code="E501">
<span class="count sev-2">
1
</span>
<strong>E501:</strong> line too long (139 > 79 characters)
</a>
<ul class="details">
<li>
<a href="LITReview.reviews.migrations.0007_alter_review_ticket.source.html#l17">
<tt><i>17</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;of_ticket&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;reviews.ticket&#39;</span><span class="p">),</span></tt>
</a>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

View File

@@ -0,0 +1,89 @@
<!DOCTYPE html>
<html>
<head>
<title>LITReview/reviews/migrations/0007_alter_review_ticket.py - flake8 annotated source</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>
<a href="LITReview.reviews.migrations.0007_alter_review_ticket.report.html">
<img src="back.svg" alt="&#x2B05;">
LITReview/reviews/migrations/0007_alter_review_ticket.py source
</a>
</h1>
<div id="doc">
<div id="l1"
class="code sev- "><tt><i>1</i> <span class="c1"># Generated by Django 5.2 on 2025-05-02 12:48</span></tt>
</div>
<div id="l2"
class="code sev- "><tt><i>2</i> &nbsp;</tt>
</div>
<div id="l3"
class="code sev- "><tt><i>3</i> <span class="kn">import</span><span class="w"> </span><span class="nn">django.db.models.deletion</span></tt>
</div>
<div id="l4"
class="code sev- "><tt><i>4</i> <span class="kn">from</span><span class="w"> </span><span class="nn">django.db</span><span class="w"> </span><span class="kn">import</span> <span class="n">migrations</span><span class="p">,</span> <span class="n">models</span></tt>
</div>
<div id="l5"
class="code sev- "><tt><i>5</i> &nbsp;</tt>
</div>
<div id="l6"
class="code sev- "><tt><i>6</i> &nbsp;</tt>
</div>
<div id="l7"
class="code sev- "><tt><i>7</i> <span class="k">class</span><span class="w"> </span><span class="nc">Migration</span><span class="p">(</span><span class="n">migrations</span><span class="o">.</span><span class="n">Migration</span><span class="p">):</span></tt>
</div>
<div id="l8"
class="code sev- "><tt><i>8</i> &nbsp;</tt>
</div>
<div id="l9"
class="code sev- "><tt><i>9</i> <span class="n">dependencies</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l10"
class="code sev- "><tt><i>10</i> <span class="p">(</span><span class="s1">&#39;reviews&#39;</span><span class="p">,</span> <span class="s1">&#39;0006_ticket_review_alter_review_ticket&#39;</span><span class="p">),</span></tt>
</div>
<div id="l11"
class="code sev- "><tt><i>11</i> <span class="p">]</span></tt>
</div>
<div id="l12"
class="code sev- "><tt><i>12</i> &nbsp;</tt>
</div>
<div id="l13"
class="code sev- "><tt><i>13</i> <span class="n">operations</span> <span class="o">=</span> <span class="p">[</span></tt>
</div>
<div id="l14"
class="code sev- "><tt><i>14</i> <span class="n">migrations</span><span class="o">.</span><span class="n">AlterField</span><span class="p">(</span></tt>
</div>
<div id="l15"
class="code sev- "><tt><i>15</i> <span class="n">model_name</span><span class="o">=</span><span class="s1">&#39;review&#39;</span><span class="p">,</span></tt>
</div>
<div id="l16"
class="code sev- "><tt><i>16</i> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;ticket&#39;</span><span class="p">,</span></tt>
</div>
<div id="l17"
class="code sev-2 le">
<ul class="violations">
<li>
<span class="count sev-2">
E501
</span>
Line too long (139 > 79 characters)</li>
</ul><tt><i>17</i> <span class="n">field</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">django</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">models</span><span class="o">.</span><span class="n">deletion</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;of_ticket&#39;</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="s1">&#39;reviews.ticket&#39;</span><span class="p">),</span></tt>
</div>
<div id="l18"
class="code sev- "><tt><i>18</i> <span class="p">),</span></tt>
</div>
<div id="l19"
class="code sev- "><tt><i>19</i> <span class="p">]</span></tt>
</div>
</div>
</div>
</body>
</html>

73
flake-report/back.svg Normal file
View File

@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="32"
height="48"
viewBox="0 0 32 48"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="back.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#3d3d3d"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="4"
inkscape:cx="47.245066"
inkscape:cy="13.218734"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
width="32px"
inkscape:window-width="1535"
inkscape:window-height="876"
inkscape:window-x="65"
inkscape:window-y="24"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1004.3622)">
<g
id="g5305"
transform="translate(0,-3.5)">
<path
inkscape:connector-curvature="0"
id="path5301"
d="M 15.577993,1039.1732 4.7040093,1028.3079 15.469253,1017.5512"
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path5303"
d="m 4.921489,1028.3622 26.53252,0"
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

64
flake-report/file.svg Normal file
View File

@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="32"
height="48"
viewBox="0 0 32 48"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="file.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#3d3d3d"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="24.812518"
inkscape:cy="18.901073"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
width="32px"
inkscape:window-width="1535"
inkscape:window-height="876"
inkscape:window-x="65"
inkscape:window-y="24"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1004.3622)">
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 4.1360619,1007.3622 0,34.375 23.7278761,0 0,-29.9038 -4.471158,-4.4712 -19.2567181,0 z m 18.5469091,0.6084 4.471159,4.4712 -4.471159,0 0,-4.4712 z m -16.6202866,7.8079 19.8746316,0 0,1.8252 -19.8746316,0 0,-1.8252 z m 0,3.2448 19.8746316,0 0,1.8253 -19.8746316,0 0,-1.8253 z m 0,6.0841 19.8746316,0 0,1.8252 -19.8746316,0 0,-1.8252 z m 0,8.2135 19.8746316,0 0,1.8252 -19.8746316,0 0,-1.8252 z"
id="path4749"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

92
flake-report/index.html Normal file
View File

@@ -0,0 +1,92 @@
<!DOCTYPE html>
<html>
<head>
<title>flake8 violations</title>
<meta http-equiv="Content-Type" value="text/html; charset=UTF-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="masthead" class="sev-2"></div>
<div id="page">
<h1>flake8 violations</h1>
<p id="versions">Generated on 2025-05-07 09:07
with Installed plugins: flake8-html: 0.4.3, mccabe: 0.7.0, pycodestyle: 2.13.0, pyflakes: 3.3.2
</p>
<ul id="index">
<li>
<a href="LITReview.authentication.migrations.0001_initial.report.html">
<span class="count sev-2">
13
</span>
LITReview/authentication/migrations/0001_initial.py
</a>
</li>
<li>
<a href="LITReview.reviews.migrations.0001_initial.report.html">
<span class="count sev-2">
7
</span>
LITReview/reviews/migrations/0001_initial.py
</a>
</li>
<li>
<a href="LITReview.reviews.migrations.0002_userfollows_followed_user_userfollows_user_and_more.report.html">
<span class="count sev-2">
4
</span>
LITReview/reviews/migrations/0002_userfollows_followed_user_userfollows_user_and_more.py
</a>
</li>
<li>
<a href="LITReview.reviews.migrations.0005_userfollows_starting_date.report.html">
<span class="count sev-2">
2
</span>
LITReview/reviews/migrations/0005_userfollows_starting_date.py
</a>
</li>
<li>
<a href="LITReview.reviews.migrations.0006_ticket_review_alter_review_ticket.report.html">
<span class="count sev-2">
2
</span>
LITReview/reviews/migrations/0006_ticket_review_alter_review_ticket.py
</a>
</li>
<li>
<a href="LITReview.reviews.migrations.0003_alter_ticket_image.report.html">
<span class="count sev-2">
1
</span>
LITReview/reviews/migrations/0003_alter_ticket_image.py
</a>
</li>
<li>
<a href="LITReview.reviews.migrations.0004_rename_body_ticket_desc_remove_review_body_and_more.report.html">
<span class="count sev-2">
1
</span>
LITReview/reviews/migrations/0004_rename_body_ticket_desc_remove_review_body_and_more.py
</a>
</li>
<li>
<a href="LITReview.reviews.migrations.0007_alter_review_ticket.report.html">
<span class="count sev-2">
1
</span>
LITReview/reviews/migrations/0007_alter_review_ticket.py
</a>
</li>
</ul>
</div>
</body>
</html>

327
flake-report/styles.css Normal file
View File

@@ -0,0 +1,327 @@
html {
font-family: sans-serif;
font-size: 90%;
}
#masthead {
position: fixed;
left: 0;
top: 0;
right: 0;
height: 40%;
}
h1, h2 {
font-family: sans-serif;
font-weight: normal;
}
h1 {
color: white;
font-size: 36px;
margin-top: 1em;
}
h1 img {
margin-right: 0.3em;
}
h2 {
margin-top: 0;
}
h1 a {
color: white;
}
#versions {
color: rgba(255, 255, 255, 0.7);
}
#page {
position: relative;
max-width: 960px;
margin: 0 auto;
}
#index {
background-color: white;
box-shadow: 0 0 4px rgba(0, 0, 0, 0.8);
padding: 0;
margin: 0;
}
#index li {
list-style: none;
margin: 0;
padding: 1px 0;
}
#index li + li {
border-top: solid silver 1px;
}
.details p {
margin-left: 3em;
color: #888;
}
#index a {
display: block;
padding: 0.8em 1em;
cursor: pointer;
}
#index #all-good {
padding: 1.4em 1em 0.8em;
}
#all-good .count .tick {
font-size: 2em;
}
#all-good .count {
float: left;
}
#all-good h2,
#all-good p {
margin-left: 50px;
}
#index a:hover {
background-color: #eee;
}
.count {
display: inline-block;
border-radius: 50%;
text-align: center;
width: 2.5em;
line-height: 2.5em;
height: 2.5em;
color: white;
margin-right: 1em;
}
.sev-1 {
background-color: #a00;
}
.sev-2 {
background-color: #b80;
}
.sev-3 {
background-color: #28c;
}
.sev-4 {
background-color: #383;
}
a {
text-decoration: none;
}
#doc {
background-color: white;
margin: 1em 0;
padding: 1em;
padding-left: 1.2em;
position: relative;
box-shadow: 0 0 4px rgba(0, 0, 0, 0.8);
}
#doc pre {
margin: 0;
padding: 0.07em;
}
.violations {
position: absolute;
margin: 1.2em 0 0 3em;
padding: 0.5em 1em;
font-size: 14px;
background-color: white;
box-shadow: 0 0 4px rgba(0, 0, 0, 0.4);
display: none;
}
.violations .count {
font-size: 70%;
}
.violations li {
padding: 0.1em 0.3em;
list-style: none;
}
.line-violations::before {
display: block;
content: "";
position: absolute;
left: -1em;
width: 14px;
height: 14px;
border-radius: 50%;
background-color: red;
}
.code:hover .violations {
display: block;
}
tt {
white-space: pre-wrap;
font-family: Consolas, monospace;
font-size: 10pt;
}
tt i {
color: silver;
display: inline-block;
text-align: right;
width: 3em;
box-sizing: border-box;
height: 100%;
border-right: solid #eee 1px;
padding-right: 0.2em;
}
.le {
background-color: #ffe8e8;
cursor: pointer;
}
.le:hover {
background-color: #fcc;
}
.details {
clear: both;
}
#index .details {
border-top-style: none;
margin: 1em;
}
ul.details {
margin-left: 0;
padding-left: 0;
}
#index .details li {
list-style: none;
border-top-style: none;
margin: 0.3em 0;
padding: 0;
}
#srclink {
float: right;
font-size: 36px;
margin: 0;
}
#srclink a {
color: white;
}
#index .details a {
padding: 0;
color: inherit;
}
.le {
background-color: #ffe8e8;
cursor: pointer;
}
.le.sev-1 {
background-color: #f88;
}
.le.sev-2 {
background-color: #fda;
}
.le.sev-3 {
background-color: #adf;
}
img {
height: 1.2em;
vertical-align: -0.35em;
}
pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.hll { background-color: #ffffcc }
.c { color: #3D7B7B; font-style: italic } /* Comment */
.err { border: 1px solid #F00 } /* Error */
.k { color: #008000; font-weight: bold } /* Keyword */
.o { color: #666 } /* Operator */
.ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
.cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
.cp { color: #9C6500 } /* Comment.Preproc */
.cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
.c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
.cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
.gd { color: #A00000 } /* Generic.Deleted */
.ge { font-style: italic } /* Generic.Emph */
.ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.gr { color: #E40000 } /* Generic.Error */
.gh { color: #000080; font-weight: bold } /* Generic.Heading */
.gi { color: #008400 } /* Generic.Inserted */
.go { color: #717171 } /* Generic.Output */
.gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.gs { font-weight: bold } /* Generic.Strong */
.gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.gt { color: #04D } /* Generic.Traceback */
.kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.kp { color: #008000 } /* Keyword.Pseudo */
.kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.kt { color: #B00040 } /* Keyword.Type */
.m { color: #666 } /* Literal.Number */
.s { color: #BA2121 } /* Literal.String */
.na { color: #687822 } /* Name.Attribute */
.nb { color: #008000 } /* Name.Builtin */
.nc { color: #00F; font-weight: bold } /* Name.Class */
.no { color: #800 } /* Name.Constant */
.nd { color: #A2F } /* Name.Decorator */
.ni { color: #717171; font-weight: bold } /* Name.Entity */
.ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
.nf { color: #00F } /* Name.Function */
.nl { color: #767600 } /* Name.Label */
.nn { color: #00F; font-weight: bold } /* Name.Namespace */
.nt { color: #008000; font-weight: bold } /* Name.Tag */
.nv { color: #19177C } /* Name.Variable */
.ow { color: #A2F; font-weight: bold } /* Operator.Word */
.w { color: #BBB } /* Text.Whitespace */
.mb { color: #666 } /* Literal.Number.Bin */
.mf { color: #666 } /* Literal.Number.Float */
.mh { color: #666 } /* Literal.Number.Hex */
.mi { color: #666 } /* Literal.Number.Integer */
.mo { color: #666 } /* Literal.Number.Oct */
.sa { color: #BA2121 } /* Literal.String.Affix */
.sb { color: #BA2121 } /* Literal.String.Backtick */
.sc { color: #BA2121 } /* Literal.String.Char */
.dl { color: #BA2121 } /* Literal.String.Delimiter */
.sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.s2 { color: #BA2121 } /* Literal.String.Double */
.se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
.sh { color: #BA2121 } /* Literal.String.Heredoc */
.si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
.sx { color: #008000 } /* Literal.String.Other */
.sr { color: #A45A77 } /* Literal.String.Regex */
.s1 { color: #BA2121 } /* Literal.String.Single */
.ss { color: #19177C } /* Literal.String.Symbol */
.bp { color: #008000 } /* Name.Builtin.Pseudo */
.fm { color: #00F } /* Name.Function.Magic */
.vc { color: #19177C } /* Name.Variable.Class */
.vg { color: #19177C } /* Name.Variable.Global */
.vi { color: #19177C } /* Name.Variable.Instance */
.vm { color: #19177C } /* Name.Variable.Magic */
.il { color: #666 } /* Literal.Number.Integer.Long */