Ver código fonte

Initial code

master
Lapin-Blanc 3 anos atrás
pai
commit
94aa83a3f2
13 arquivos alterados com 271 adições e 0 exclusões
  1. +2
    -0
      .gitignore
  2. +0
    -0
     
  3. +58
    -0
      maintenance/admin.py
  4. +5
    -0
      maintenance/apps.py
  5. +0
    -0
     
  6. +113
    -0
      maintenance/models.py
  7. +8
    -0
      maintenance/serializers.py
  8. +11
    -0
      maintenance/templates/maintenance/fournisseur_detail.html
  9. +11
    -0
      maintenance/templates/maintenance/technicien_detail.html
  10. +3
    -0
      maintenance/tests.py
  11. +18
    -0
      maintenance/urls.py
  12. +20
    -0
      maintenance/views.py
  13. +22
    -0
      manage.py

+ 2
- 0
.gitignore Ver arquivo

@@ -1,3 +1,5 @@
*/migrations/*
!*/migrations/__init__.py
# ---> Python
# Byte-compiled / optimized / DLL files
__pycache__/


+ 0
- 0
Ver arquivo


+ 58
- 0
maintenance/admin.py Ver arquivo

@@ -0,0 +1,58 @@
from django.contrib import admin
from django import forms
from .models import Fournisseur, Technicien, Machine, Intervention, Panne


@admin.register(Fournisseur)
class FournisseurAdmin(admin.ModelAdmin):
list_display = ['nom_fournisseur']


@admin.register(Technicien)
class TechnicienAdmin(admin.ModelAdmin):
list_display = ['nom_technicien', 'ref_fournisseur']


class PanneInline(admin.TabularInline):
model = Panne
extra = 1


@admin.register(Machine)
class MachineAdmin(admin.ModelAdmin):
list_display = ['numero_serie', 'nom_machine', 'ref_fournisseur']
inlines = [PanneInline]


class InterventionAdminForm(forms.ModelForm):
class Meta:
model = Intervention
fields = '__all__'

def __init__(self, *args, **kwargs):
super(InterventionAdminForm, self).__init__(*args, **kwargs)
if self.instance:
try:
technicians = Technicien.objects.filter(
ref_fournisseur=self.
instance.
ref_panne.
ref_machine.
ref_fournisseur)
self.fields['ref_technicien'].queryset = technicians
except Panne.DoesNotExist:
self.fields['ref_technicien'].queryset = Technicien. \
objects. \
none()


@admin.register(Intervention)
class InterventionAdmin(admin.ModelAdmin):
form = InterventionAdminForm
list_display = ['moment_intervention', 'description_intervention',
'ref_panne', 'ref_technicien']


@admin.register(Panne)
class PanneAdmin(admin.ModelAdmin):
list_display = ['moment_panne', 'description_panne', 'ref_machine']

+ 5
- 0
maintenance/apps.py Ver arquivo

@@ -0,0 +1,5 @@
from django.apps import AppConfig


class MaintenanceConfig(AppConfig):
name = 'maintenance'

+ 0
- 0
Ver arquivo


+ 113
- 0
maintenance/models.py Ver arquivo

@@ -0,0 +1,113 @@
from django.db import models
from django.utils.translation import gettext_lazy as _
from django.template.defaultfilters import date as _date
from django.urls import reverse


class Fournisseur(models.Model):

nom_fournisseur = models.CharField('nom', max_length=50)

class Meta:
verbose_name = _("fournisseur")
verbose_name_plural = _("fournisseurs")

def __str__(self):
return self.nom_fournisseur

def get_absolute_url(self):
return reverse("fournisseur_detail", kwargs={"pk": self.pk})


class Technicien(models.Model):

nom_technicien = models.CharField('nom', max_length=50)
ref_fournisseur = models.ForeignKey("maintenance.Fournisseur",
verbose_name=_("fournisseur"),
on_delete=models.PROTECT)

class Meta:
verbose_name = _("technicien")
verbose_name_plural = _("techniciens")

def __str__(self):
return self.nom_technicien

def get_absolute_url(self):
return reverse("technicien_detail", kwargs={"pk": self.pk})


class Machine(models.Model):

numero_serie = models.CharField('numéro de série', max_length=20)
nom_machine = models.CharField('nom', max_length=50)
ref_fournisseur = models.ForeignKey("maintenance.Fournisseur",
verbose_name=_("fournisseur"),
on_delete=models.PROTECT)

class Meta:
verbose_name = _("machine")
verbose_name_plural = _("machines")

def __str__(self):
return self.nom_machine

def get_absolute_url(self):
return reverse("machine_detail", kwargs={"pk": self.pk})


class Panne(models.Model):

moment_panne = models.DateTimeField('moment de la panne',
auto_now_add=True)
description_panne = models.TextField('description', default='-')
ref_machine = models.ForeignKey("maintenance.Machine",
verbose_name=_("machine"),
on_delete=models.PROTECT)

class Meta:
verbose_name = _("Panne")
verbose_name_plural = _("Pannes")

def __str__(self):
if len(self.description_panne) <= 20:
short_description = self.description_panne
else:
short_description = self.description_panne[:20]
return _date(self.moment_panne,
'SHORT_DATETIME_FORMAT') + " | " + short_description

def get_absolute_url(self):
return reverse("panne_detail", kwargs={"pk": self.pk})


class Intervention(models.Model):

moment_intervention = models.DateTimeField('moment de l\'intervention',
auto_now_add=True)
ref_panne = models.ForeignKey("maintenance.Panne",
verbose_name=_("panne"),
on_delete=models.PROTECT)
ref_technicien = models.ForeignKey("maintenance.Technicien",
verbose_name=_("technicien"),
on_delete=models.PROTECT,
null=True,
blank=True)
description_intervention = models.TextField('description',
blank=True,
null=True)

class Meta:
verbose_name = _("intervention")
verbose_name_plural = _("interventions")

def __str__(self):
if len(self.description_intervention) <= 20:
short_description = self.description_intervention
else:
short_description = self.description_intervention[:20]
return _date(self.moment_intervention,
'SHORT_DATETIME_FORMAT') + " | " + short_description

def get_absolute_url(self):
return reverse("intervention_detail", kwargs={"pk": self.pk})

+ 8
- 0
maintenance/serializers.py Ver arquivo

@@ -0,0 +1,8 @@
from rest_framework import serializers
from maintenance.models import Fournisseur


class FournisseurSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Fournisseur
fields = ['nom_fournisseur']

+ 11
- 0
maintenance/templates/maintenance/fournisseur_detail.html Ver arquivo

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ object.nom_fournisseur }}</title>
</head>
<body>
<h4>{{ object.nom_fournisseur }}</h4>
</body>
</html>

+ 11
- 0
maintenance/templates/maintenance/technicien_detail.html Ver arquivo

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ object.nom_technicien }}</title>
</head>
<body>
<h4>{{ object.nom_technicien }}<h4>
</body>
</html>

+ 3
- 0
maintenance/tests.py Ver arquivo

@@ -0,0 +1,3 @@
from django.test import TestCase

# Create your tests here.

+ 18
- 0
maintenance/urls.py Ver arquivo

@@ -0,0 +1,18 @@
from django.urls import path, include
from rest_framework import routers
from maintenance.views import (
FournisseurDetailView,
TechnicienDetailView,
FournisseurViewSet
)

router = routers.DefaultRouter()
router.register(r'fournisseurs', FournisseurViewSet)

urlpatterns = [
path('fournisseur/<int:pk>', FournisseurDetailView.as_view(),
name='fournisseur_detail'),
path('technicien/<int:pk>', TechnicienDetailView.as_view(),
name='technicien_detail'),
path('api/', include(router.urls))
]

+ 20
- 0
maintenance/views.py Ver arquivo

@@ -0,0 +1,20 @@
# from django.shortcuts import render
from django.views.generic import DetailView
from maintenance.models import Fournisseur, Technicien
from rest_framework import viewsets
from maintenance.serializers import FournisseurSerializer


class FournisseurDetailView(DetailView):
model = Fournisseur
template_name = "maintenance/fournisseur_detail.html"


class TechnicienDetailView(DetailView):
model = Technicien
template_name = "maintenance/technicien_detail.html"


class FournisseurViewSet(viewsets.ModelViewSet):
queryset = Fournisseur.objects.all()
serializer_class = FournisseurSerializer

+ 22
- 0
manage.py Ver arquivo

@@ -0,0 +1,22 @@
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys


def main():
"""Run administrative tasks."""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'boulangerie.settings')
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)


if __name__ == '__main__':
main()

Carregando…
Cancelar
Salvar