structure du projet + docker, back: mise en place BD et apps, front: début de dev pour le header et mise en place du thème et css global (override des variables bootstrap)
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
@@ -0,0 +1,5 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class A1LeadExplorerConfig(AppConfig):
|
||||
name = 'api.lead_explorer'
|
||||
@@ -0,0 +1,41 @@
|
||||
# Generated by Django 6.0.5 on 2026-05-28 15:03
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='BrutCompany',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='créé le')),
|
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='modifié le')),
|
||||
('obsolete', models.BooleanField(default=False, verbose_name='obsolète')),
|
||||
('obsolete_at', models.DateTimeField(blank=True, null=True, verbose_name='obsolète le')),
|
||||
('first_name', models.CharField(blank=True, max_length=100, verbose_name='prénom')),
|
||||
('last_name', models.CharField(blank=True, max_length=100, verbose_name='nom')),
|
||||
('company_name', models.CharField(blank=True, max_length=200, verbose_name='nom de société')),
|
||||
('entity_type', models.CharField(choices=[('COMPANY', 'Société'), ('PERSON', 'Personne')], help_text="Si c'est une personne, le ContactPerson est automatiquement créé lorsque la société passe en prospection", max_length=20, verbose_name='type')),
|
||||
('lat', models.DecimalField(blank=True, decimal_places=6, max_digits=9, null=True, verbose_name='latitude')),
|
||||
('long', models.DecimalField(blank=True, decimal_places=6, max_digits=9, null=True, verbose_name='longitude')),
|
||||
('address', models.CharField(blank=True, max_length=150, verbose_name='adresse')),
|
||||
('postal_code', models.CharField(blank=True, max_length=20, verbose_name='code postal')),
|
||||
('city', models.CharField(blank=True, max_length=30, verbose_name='ville')),
|
||||
('siren', models.CharField(blank=True, max_length=9, verbose_name='numéro siren')),
|
||||
('siret', models.CharField(blank=True, max_length=14, verbose_name='numéro siret')),
|
||||
('processed', models.BooleanField(default=False, verbose_name='traité')),
|
||||
('processed_at', models.DateTimeField(blank=True, null=True, verbose_name='traité le')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Entreprise',
|
||||
'verbose_name_plural': 'Entreprises',
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,33 @@
|
||||
# Generated by Django 6.0.5 on 2026-05-28 15:03
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('lead_explorer', '0001_initial'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='brutcompany',
|
||||
name='created_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='créé par'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='brutcompany',
|
||||
name='processed_by',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='processed_companies', to=settings.AUTH_USER_MODEL, verbose_name='traité par'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='brutcompany',
|
||||
name='updated_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='modifié par'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,5 @@
|
||||
from .brut_company import BrutCompany
|
||||
|
||||
__all__ = [
|
||||
'BrutCompany',
|
||||
]
|
||||
@@ -0,0 +1,65 @@
|
||||
from django.db import models
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from api.core.models.trackable_model import TrackableModel
|
||||
|
||||
|
||||
class BrutCompany(TrackableModel):
|
||||
"""
|
||||
Model representing the brut information from a company.
|
||||
"""
|
||||
|
||||
ENTITY_TYPE = [
|
||||
("COMPANY", _("Société")),
|
||||
("PERSON", _("Personne")),
|
||||
]
|
||||
|
||||
first_name = models.CharField(verbose_name=_("prénom"), max_length=100, blank=True)
|
||||
last_name = models.CharField(verbose_name=_("nom"), max_length=100, blank=True)
|
||||
company_name = models.CharField(
|
||||
verbose_name=_("nom de société"), max_length=200, blank=True
|
||||
) # unique=True ?
|
||||
entity_type = models.CharField(
|
||||
verbose_name=_("type"),
|
||||
max_length=20,
|
||||
choices=ENTITY_TYPE,
|
||||
help_text=_(
|
||||
"Si c'est une personne, le ContactPerson est automatiquement créé lorsque la société passe en prospection"
|
||||
),
|
||||
)
|
||||
lat = models.DecimalField(
|
||||
verbose_name=_("latitude"),
|
||||
max_digits=9,
|
||||
decimal_places=6,
|
||||
blank=True,
|
||||
null=True,
|
||||
)
|
||||
long = models.DecimalField(
|
||||
verbose_name=_("longitude"),
|
||||
max_digits=9,
|
||||
decimal_places=6,
|
||||
blank=True,
|
||||
null=True,
|
||||
)
|
||||
address = models.CharField(verbose_name=_("adresse"), max_length=150, blank=True)
|
||||
postal_code = models.CharField(
|
||||
verbose_name=_("code postal"), max_length=20, blank=True
|
||||
)
|
||||
city = models.CharField(verbose_name=_("ville"), max_length=30, blank=True)
|
||||
siren = models.CharField(verbose_name=_("numéro siren"), max_length=9, blank=True)
|
||||
siret = models.CharField(verbose_name=_("numéro siret"), max_length=14, blank=True)
|
||||
processed = models.BooleanField(verbose_name=_("traité"), default=False)
|
||||
processed_at = models.DateTimeField(
|
||||
verbose_name=_("traité le"), blank=True, null=True
|
||||
)
|
||||
processed_by = models.ForeignKey(
|
||||
"users.User",
|
||||
verbose_name=_("traité par"),
|
||||
null=True,
|
||||
on_delete=models.SET_NULL,
|
||||
related_name="processed_companies",
|
||||
)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("Entreprise")
|
||||
verbose_name_plural = _("Entreprises")
|
||||
@@ -0,0 +1,5 @@
|
||||
from django.urls import path
|
||||
|
||||
app_name = "lead_explorer"
|
||||
urlpatterns = [
|
||||
]
|
||||
@@ -0,0 +1,2 @@
|
||||
from django.shortcuts import render
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
Reference in New Issue
Block a user