mirror of
https://github.com/Superredstone/patrickcanal.it.git
synced 2026-09-20 17:51:12 +02:00
chore: fix pre-commit hook
This commit is contained in:
@@ -8,9 +8,6 @@ devenv.local.yaml
|
|||||||
# direnv
|
# direnv
|
||||||
.direnv
|
.direnv
|
||||||
|
|
||||||
# pre-commit
|
|
||||||
.pre-commit-config.yaml
|
|
||||||
|
|
||||||
*.sqlite3
|
*.sqlite3
|
||||||
|
|
||||||
*.pyc
|
*.pyc
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
repos:
|
||||||
|
- repo: https://github.com/djlint/djLint
|
||||||
|
rev: v1.46.1
|
||||||
|
hooks:
|
||||||
|
- id: djlint-reformat-django
|
||||||
|
language: system
|
||||||
|
- id: djlint-django
|
||||||
|
language: system
|
||||||
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||||
|
rev: v0.16.6
|
||||||
|
hooks:
|
||||||
|
- id: ruff-check
|
||||||
|
language: system
|
||||||
|
- id: ruff-format
|
||||||
|
language: system
|
||||||
-14
@@ -13,18 +13,4 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
git-hooks.hooks = {
|
|
||||||
ruff = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.ruff;
|
|
||||||
excludes = [ "migrations/" ];
|
|
||||||
};
|
|
||||||
djlint = {
|
|
||||||
enable = true;
|
|
||||||
name = "djlint";
|
|
||||||
entry = "djlint --check .";
|
|
||||||
types = [ "html" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,13 +18,14 @@ Including another URLconf
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.conf.urls.static import static
|
from django.conf.urls.static import static
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.urls import path
|
from django.urls import include, path
|
||||||
|
|
||||||
from portfolio.views import IndexView
|
from patrickcanal_it.views import IndexView
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path("admin/", admin.site.urls),
|
path("admin/", admin.site.urls),
|
||||||
path("", IndexView.as_view(), name="index"),
|
path("", IndexView.as_view(), name="index"),
|
||||||
|
path("portfolio/", include("portfolio.urls")),
|
||||||
]
|
]
|
||||||
|
|
||||||
if settings.DEBUG:
|
if settings.DEBUG:
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
from django.shortcuts import redirect
|
||||||
|
from django.views.generic import View
|
||||||
|
|
||||||
|
|
||||||
|
class IndexView(View):
|
||||||
|
def get(self, request, *args, **kwargs):
|
||||||
|
return redirect("portfolio")
|
||||||
@@ -7,10 +7,17 @@ from portfolio import models
|
|||||||
class JobExperienceAdmin(admin.ModelAdmin):
|
class JobExperienceAdmin(admin.ModelAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.JobTask)
|
@admin.register(models.JobTask)
|
||||||
class JobTaskAdmin(admin.ModelAdmin):
|
class JobTaskAdmin(admin.ModelAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@admin.register(models.Company)
|
@admin.register(models.Company)
|
||||||
class CompanyAdmin(admin.ModelAdmin):
|
class CompanyAdmin(admin.ModelAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(models.Project)
|
||||||
|
class ProjectAdmin(admin.ModelAdmin):
|
||||||
|
list_display = ["name", "short_description"]
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
# Generated by Django 6.1 on 2026-08-30 18:10
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('portfolio', '0002_alter_company_options_jobexperience_position'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Project',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('name', models.CharField(max_length=256, verbose_name='Name')),
|
||||||
|
('short_description', models.CharField(max_length=512, verbose_name='Short description')),
|
||||||
|
('url', models.URLField(blank=True, verbose_name='URL')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='jobtask',
|
||||||
|
name='job',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='job_tasks', to='portfolio.jobexperience'),
|
||||||
|
),
|
||||||
|
]
|
||||||
+15
-1
@@ -38,9 +38,23 @@ class JobExperience(models.Model):
|
|||||||
|
|
||||||
class JobTask(models.Model):
|
class JobTask(models.Model):
|
||||||
job = models.ForeignKey(
|
job = models.ForeignKey(
|
||||||
to=JobExperience, null=False, blank=False, on_delete=models.CASCADE, related_name="job_tasks"
|
to=JobExperience,
|
||||||
|
null=False,
|
||||||
|
blank=False,
|
||||||
|
on_delete=models.CASCADE,
|
||||||
|
related_name="job_tasks",
|
||||||
)
|
)
|
||||||
description = models.TextField(verbose_name=_("Description"), max_length=4192)
|
description = models.TextField(verbose_name=_("Description"), max_length=4192)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.job.__str__()
|
return self.job.__str__()
|
||||||
|
|
||||||
|
|
||||||
|
class Project(models.Model):
|
||||||
|
name = models.CharField(
|
||||||
|
verbose_name=_("Name"), max_length=256, null=False, blank=False
|
||||||
|
)
|
||||||
|
short_description = models.CharField(
|
||||||
|
verbose_name=_("Short description"), max_length=512, blank=False, null=False
|
||||||
|
)
|
||||||
|
url = models.URLField(verbose_name=_("URL"), blank=True, null=False)
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<a href="" class="btn btn-primary btn-lg me-2">My projects</a>
|
<a href="{% url 'projects' %}" class="btn btn-primary btn-lg me-2">My projects</a>
|
||||||
<a href="" class="btn btn-outline-secondary btn-lg">Contact me</a>
|
<a href="" class="btn btn-outline-secondary btn-lg">Contact me</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="card">
|
<div class="card h-full">
|
||||||
<div class="card-body d-flex align-items-center flex-column">
|
<div class="card-body d-flex align-items-center flex-column">
|
||||||
<div class="w-24 h-30 text-5xl pt-4">
|
<div class="w-24 h-30 text-5xl pt-4">
|
||||||
<i class="fa-solid fa-server fa-2xl"></i>
|
<i class="fa-solid fa-server fa-2xl"></i>
|
||||||
@@ -96,7 +96,7 @@
|
|||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<p class="text-primary mb-0">{{ je.start }} - {% if je.end %}{{ je.end }}{% else %}{% trans "today" %}{% endif %}</p>
|
<p class="text-primary mb-0">{{ je.start }} - {% if je.end %}{{ je.end }}{% else %}{% trans "today" %}{% endif %}</p>
|
||||||
<h2 class="fs-2">{{ je.position }}</h2>
|
<h2 class="fs-2">{{ je.position }}</h2>
|
||||||
<div class="">
|
<div>
|
||||||
<div class="text-danger">{{ je.company.name }}</div>
|
<div class="text-danger">{{ je.company.name }}</div>
|
||||||
<div class="text-secondary">{{ je.company.location }}</div>
|
<div class="text-secondary">{{ je.company.location }}</div>
|
||||||
<div class="mt-2 text-white">
|
<div class="mt-2 text-white">
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
{% load i18n %}
|
||||||
|
{% block content %}
|
||||||
|
<div class="container mt-4">
|
||||||
|
<div class="row row-deck row-cards">
|
||||||
|
{% for project in object_list %}
|
||||||
|
<div class="col-md-4">
|
||||||
|
{% if project.url %}
|
||||||
|
<a class="card card-link card-link-pop" href="{{ project.url }}">
|
||||||
|
<div class="card-body">
|
||||||
|
<h4>{{ project.name }}</h4>
|
||||||
|
<p>{{ project.short_description }}</p>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
{% else %}
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h4>{{ project.name }}</h4>
|
||||||
|
<p>{{ project.short_description }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
from django.urls import path
|
||||||
|
|
||||||
|
from portfolio import views
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
path("", views.PortfolioView.as_view(), name="portfolio"),
|
||||||
|
path("projects/", views.ProjectList.as_view(), name="projects"),
|
||||||
|
]
|
||||||
+10
-3
@@ -1,10 +1,17 @@
|
|||||||
from django.views.generic import TemplateView
|
from django.views.generic import ListView, TemplateView
|
||||||
|
|
||||||
from portfolio import models
|
from portfolio import models
|
||||||
|
|
||||||
|
|
||||||
class IndexView(TemplateView):
|
class PortfolioView(TemplateView):
|
||||||
template_name = "index.html"
|
template_name = "index.html"
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
return {"job_experiences": models.JobExperience.objects.all().order_by("-start")}
|
return {
|
||||||
|
"job_experiences": models.JobExperience.objects.all().order_by("-start")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class ProjectList(ListView):
|
||||||
|
template_name = "project_list.html"
|
||||||
|
model = models.Project
|
||||||
|
|||||||
+3
-1
@@ -19,4 +19,6 @@ line-ending = "auto"
|
|||||||
|
|
||||||
[tool.ruff.lint]
|
[tool.ruff.lint]
|
||||||
extend-select = ["I"]
|
extend-select = ["I"]
|
||||||
|
ignore = [
|
||||||
|
"RUF012"
|
||||||
|
]
|
||||||
|
|||||||
Vendored
+6
-6
File diff suppressed because one or more lines are too long
Vendored
+7
-11
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user