Compare commits

...

10 Commits

79 changed files with 3625 additions and 142 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,16 +90,21 @@ 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',
'NAME': 'django.contrib.auth.\
password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
'NAME': 'django.contrib.auth.\
password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
'NAME': 'django.contrib.auth.\
password_validation.NumericPasswordValidator',
},
]
@ -125,7 +131,7 @@ STATIC_URL = 'static/'
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
LOGIN_REDIRECT_URL = 'home'
LOGIN_REDIRECT_URL = 'flux'
LOGIN_URL = 'login'
@ -133,9 +139,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,40 @@ 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

@ -29,7 +29,9 @@
<div class="form-group p-3">
{{ form.password }}
</div>
<button type="submit" class="btn btn-primary self-align-right">Se connecter</button>
<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>
</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,32 +1,7 @@
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):

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: 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,21 @@
from django import forms
from . import models
class TicketForm(forms.ModelForm):
class Meta:
model = models.Ticket
fields = ['title', 'desc', 'image']
class ReviewForm(forms.ModelForm):
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):
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,50 @@
{% 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>
<div class="container">
<div class="row">
<div class="d-flex justify-content-center mt-5">
<h2> Bienvenue {{ request.user }}</h2>
</div>
</div>
<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>
<div class="row">
{% 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>
</div>
{% endblock %}

View File

@ -1,17 +1,33 @@
{% 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>
<div class="container">
<div class="row">
<div class="d-flex justify-content-center mt-5">
<h2> Bienvenue {{ request.user }}</h2>
</div>
</div>
<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>
<div class="row">
{% for ticket in tickets %}
{% include 'reviews/ticket_detail.html' %}
<div class="col-6 d-flex justify-content-end mb-2">
{% if not ticket.review %}
<div class="col-4 align-self-end">
<a href="{% url 'review-ticket' ticket.id %}" type="button" class="btn btn-primary">Créer une critique</a>
</div>
{% endif %}
</div>
</div>
{% endfor %}
</div>
</div>
{% endblock %}

View File

@ -1,12 +1,42 @@
{% 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 %}
<div class="container">
<div class="row">
<div class="d-flex justify-content-center mt-5">
<h2> Posts </h2>
</div>
</div>
{% 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 %}
{% 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 %}
</div>
{% endblock %}

View File

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

View File

@ -0,0 +1,31 @@
{% extends 'base.html' %}
{% block content %}
<div class="container">
<div class="row mt-3">
<div class="col d-flex justify-content-center">
<h2>Créer une critique</h2>
</div>
</div>
<div class="row border border-3 border-secondary-subtle mb-3 justify-content-center">
<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>
<div class="row border border-3 border-secondary-subtle justify-content-center">
<h3>Critique</h3>
<div class="col-4 mb-2">
{% 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>
</div>
{% endblock %}

View File

@ -0,0 +1,16 @@
{% extends 'base.html' %}
{% block content %}
<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>
{% endblock %}

View File

@ -0,0 +1,19 @@
{% load reviews_extras %}
<div class="row">
<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>
<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>

View File

@ -0,0 +1,11 @@
<label for='headline'>Titre:</label></br>
<div class="d-flex justify-content-center mb-4">{{ review_form.headline }}</div>
<label for='rating'>Note: </label>
<div class=" d-flex justify-content-around mb-4">
{% for choice in review_form.rating %}
<span>{{ choice }}</span>
{% endfor %}
</div>
<label for="comment">Commentaire: </label>
<div class="d-flex justify-content-center mb-4">{{ review_form.comment }}</div>

View File

@ -0,0 +1,35 @@
{% extends 'base.html' %}
{% block content %}
<div class="container">
<div class="row mt-3">
<div class="col d-flex justify-content-center">
<h2>Créer une critique</h2>
</div>
</div>
<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>
<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>
</div>
{% endblock %}

View File

@ -0,0 +1,44 @@
{% extends 'base.html' %}
{% block content %}
<div class="container">
<div class="row my-4">
<div class="d-flex justify-content-center">
<h2>Modifier votre critique</h2>
</div>
</div>
<div class="row border border-3">
<p>Vous êtes en train de poster en réponse à</p>
<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>
<div class="row border border-3 p-2">
<div class="col-3">
<p>Critique</p>
</div>
<div class="d-flex justify-content-center">
<div class="col-4 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>
</div>
</div>
{% endblock %}

View File

@ -1,12 +1,55 @@
{% 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>
<div class="container text-center">
<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">
{{ user_form }}
</div>
</div>
<div class="col-2">
<button type="submit" class="btn btn-primary">Envoyer</button>
</div>
</form>
</div>
</div>
<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>
<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>
</div>
{% endblock %}

View File

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

View File

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

View File

@ -0,0 +1,16 @@
{% extends 'base.html' %}
{% block content %}
<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>
{% endblock %}

View File

@ -0,0 +1,17 @@
{% load reviews_extras %}
<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>
<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>

View File

@ -0,0 +1,6 @@
<label for='title'> Titre: </label>
<div class="d-flex justify-content-center mb-4">{{ ticket_form.title }}</div>
<label for='desc'>Description: </label>
<div class="d-flex justify-content-center mb-4">{{ ticket_form.desc }}</div>
<label for='image'>Image: </label>
<div class="d-flex justify-content-center mb-4">{{ ticket_form.image }}</div>

View File

@ -0,0 +1,16 @@
{% extends 'base.html' %}
{% block content %}
<div class="container">
<div class="row d-flex align-items-center">
<h2> Modifier la demande {{ ticket.title }}</h2>
</div>
<div class="row">
{% include 'reviews/ticket_form.html' %}
</div>
</div>
{% endblock %}

View File

@ -0,0 +1,14 @@
{% extends 'base.html' %}
{% block content %}
<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>
{% 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,223 @@
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
@login_required
def home(request):
return render(request, 'reviews/home.html')
tickets = Ticket.objects.all()
return render(request,
'reviews/home.html',
{'tickets': tickets})
@login_required
def flux(request):
return render(request, 'reviews/flux.html')
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')
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):
ticket = Ticket.objects.get(id=ticket_id)
return render(request,
'reviews/ticket.html',
{'ticket': ticket})
@login_required
def create_ticket(request):
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
@permission_required('review.change_ticket', raise_exception=True)
def update_ticket(request, ticket_id):
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})
@login_required
@permission_required('review.delete_ticket', raise_exception=True)
def delete_ticket(request, ticket_id):
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):
review = Review.objects.get(id=review_id)
return render(request,
'reviews/review.html',
{'review': review})
@login_required
def create_review(request):
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):
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):
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):
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')
follows = UserFollows()
user_form = ToFollowForm()
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"]
user_followed = User.objects.filter(username=user)
follows.followed_user = user_followed[0]
follows.user = request.user
follows.save()
return redirect('subscribed')
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):
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,25 @@
<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 %}
</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>

52
README.md Normal file
View File

@ -0,0 +1,52 @@
# 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. Create the virtual environment
```
python3.11 -m venv env
source env/bin/activate
```
2. clone this repo
3. install environment
```
pip install -r requirements.txt
```
## Execution
```
cd LITReview
python manage.py runserver
```
## Use
Browse to http://127.0.0.1:8000
## 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-06 10:31
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 */