Commit ff59ca49 authored by Andrea Bignamini's avatar Andrea Bignamini
Browse files

Add django and sqlalchemy examples

parent f1c04cbf
Loading
Loading
Loading
Loading
+50 −0
Original line number Original line Diff line number Diff line
from django.contrib import admin
from django.db import models
from .models import Client, Vehicle, Contract, FamilyReports, BMClass, Claims, BlackBox, Agent, Office

class ClientAdmin(admin.ModelAdmin):
    model = Client
    list_display = ('name', 'surname', 'fiscalCode', 'email', 'phoneNumber')

class VehicleAdmin(admin.ModelAdmin):
    model = Vehicle
    list_display = ('licensePlate', 'fiscalCode', 'model')

class ContractAdmin(admin.ModelAdmin):
    model = Contract
    list_display = ('contractId', 'classBM', 'date', 'clientFiscalCode', 'licensePlate', 'renewal')

class FamilyReportsAdmin(admin.ModelAdmin):
    model = FamilyReports
    list_display = ('fiscalCode1', 'fiscalCode2', 'relationship')

class BMClassAdmin(admin.ModelAdmin):
    model = BMClass
    list_display = ('BMClass', 'basePremium')

class ClaimsAdmin(admin.ModelAdmin):
    model = Claims
    list_display = ('licensePlate', 'totalCompensation', 'date', 'location', 'responsibility', 'compensationTimeDays')

class BlackBoxAdmin(admin.ModelAdmin):
    model = BlackBox
    list_display = ('licensePlate', 'clientFiscalCode', 'blackBoxId')

class AgentAdmin(admin.ModelAdmin):
    model = Agent
    list_display = ('name', 'surname', 'fiscalCode', 'agentId', 'officeId')

class OfficeAdmin(admin.ModelAdmin):
    model = Office
    list_display = ('officeId', 'location')


admin.site.register(Client, ClientAdmin)
admin.site.register(Vehicle, VehicleAdmin)
admin.site.register(Contract, ContractAdmin)
admin.site.register(FamilyReports, FamilyReportsAdmin)
admin.site.register(BMClass, BMClassAdmin)
admin.site.register(Claims, ClaimsAdmin)
admin.site.register(BlackBox, BlackBoxAdmin)
admin.site.register(Agent, AgentAdmin)
admin.site.register(Office, OfficeAdmin)
+6 −0
Original line number Original line Diff line number Diff line
from insurancedb.models import BMClass

bonus = BMClass(BMClass=2, basePremium=150.00)

bonus.save()
+133 −0
Original line number Original line Diff line number Diff line
from django.db import models
from phonenumber_field.modelfields import PhoneNumberField
from django.core.validators import MaxValueValidator, MinValueValidator

# Create your models here.

SEX = ('M', 'F')
MARITAL_STATUS = ('celibe', 'coniugato', 'vedovo', 'separato', 'divorziato')
WHEEL_NUMBER = (2,4)
FAMILY_REPORTS = ('primo', 'secondo', 'terzo')
BONUSMALUS_CLASS = (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18)


class Client(models.Model):
    name = models.CharField(max_length = 20)
    surname = models.CharField(max_length = 20)
    fiscalCode =  models.CharField(max_length = 16, primary_key = True)
    residenceRoad = models.CharField(max_length = 30)
    streetNumber = models.CharField(max_length = 5)
    bithDay = models.DateField()
    sex = models.CharField(max_length=1, choices = [(d,d) for d in SEX])
    profession = models.CharField(max_length = 50)
    maritalStatus = models.CharField(max_length = 10, choices = [(d,d) for d in MARITAL_STATUS])
    phoneNumber = PhoneNumberField(blank = True, null = True)
    email = models.EmailField(max_length = 70, blank = True, null = True)

    def __str__(self):
        return "{}, {}, {}".format(self.name, self.surname, self.fiscalCode)
    class Meta:
        ordering = ['surname']


class Vehicle(models.Model):
    licensePlate = models.CharField(max_length = 7, primary_key = True)
    fiscalCode = models.ForeignKey(Client, on_delete = models.CASCADE)
    engineSize = models.PositiveIntegerField()
    model = models.CharField(max_length = 50)
    kmTraveled = models.CharField(max_length = 20)
    wheelNumber = models.PositiveSmallIntegerField(choices = [(d,d) for d in WHEEL_NUMBER])

    def __str__(self):
        return self.licensePlate


class BMClass(models.Model):
    BMClass = models.PositiveSmallIntegerField(choices = [(d,d) for d in BONUSMALUS_CLASS], primary_key = True)
    basePremium = models.FloatField()

    def __str__(self):
        return "{}, {}".format(self.BMClass, self.basePremium)


class Contract(models.Model):
    contractId = models.CharField(max_length=15, primary_key = True)
    date = models.DateTimeField(auto_now_add = True)
    clientFiscalCode = models.ForeignKey(Client, on_delete = models.CASCADE)
    licensePlate = models.ForeignKey(Vehicle, on_delete = models.CASCADE)
    renewal = models.BooleanField()
    classBM = models.ForeignKey(BMClass, null = True, on_delete = models.SET_NULL)
    totalPremium = models.FloatField(blank = True)

    def __str__(self):
        return "{} on {}".format(self.clientFiscalCode, self.date.strftime('%d-%m-%Y'))


class FamilyReports(models.Model):
    fiscalCode1 = models.ForeignKey(Client, on_delete = models.CASCADE, related_name = "primo")
    fiscalCode2 = models.ForeignKey(Client, on_delete = models.CASCADE, related_name = "secondo")
    relationship = models.CharField(max_length=7, choices = [(d,d) for d in FAMILY_REPORTS])

    class Meta:
        unique_together = (("fiscalCode1", "fiscalCode2"),)

    def __str__(self):
        return self.relationship


class Claims(models.Model):
    licensePlate = models.ForeignKey(Vehicle, on_delete = models.CASCADE)
    totalCompensation = models.FloatField()
    date = models.DateTimeField(auto_now_add = True)
    location = models.CharField(max_length = 30)
    responsibility = models.FloatField(validators = [MinValueValidator(0), MaxValueValidator(100)])
    compensationTimeDays = models.PositiveIntegerField(blank = True)
    counterpartLicensePlate = models.CharField(max_length = 7)
    counterpartInsuranceCompany = models.CharField(max_length = 50)
    photo = models.ImageField(blank = True, null = True)

    def __str__(self):
        return "{} paid {}".format(self.licensePlate, self.totalCompensation)


class BlackBox(models.Model):
    blackBoxId = models.CharField(max_length=10, primary_key = True)
    licensePlate = models.ForeignKey(Vehicle, on_delete = models.CASCADE)
    clientFiscalCode = models.ForeignKey(Client, on_delete = models.CASCADE)
    observationDate = models.DateTimeField(auto_now_add = True)
    kmTraveled = models.FloatField(blank = True)
    timeTraveledSeconds = models.FloatField(blank = True)
    provinceTraveled = models.CharField(max_length = 30)
    nationTraveled =  models.CharField(max_length = 30)
    hourStarting = models.TimeField(auto_now = True)
    hourClosing = models.TimeField(auto_now = True)
    maxVelocity = models.PositiveSmallIntegerField(blank = True)
    timeVelocityOverLimig = models.FloatField(blank = True)
    kmVelocityOverLimit  = models.FloatField(blank = True)
    totalTime = models.FloatField( blank = True)

    def __str__(self):
        return self.BlackBoxId


class Office(models.Model):
    officeId = models.AutoField(primary_key = True)
    location = models.CharField(max_length = 30)

    def __str__(self):
        return "{}, {}".format(self.officeId, self.location)


class Agent(models.Model):
    name = models.CharField(max_length = 20)
    surname = models.CharField(max_length = 20)
    fiscalCode =  models.CharField(max_length = 16, primary_key = True)
    agentId =  models.IntegerField(unique = True)
    officeId = models.ForeignKey(Office, default = '', on_delete = models.SET_DEFAULT)

    def __str__(self):
        return "{}, {}, {}".format(self.name, self.surname, self.fiscalCode)
    class Meta:
        ordering = ['surname']

django_example/urls.py

0 → 100644
+19 −0
Original line number Original line Diff line number Diff line
from django.contrib import admin
from django.urls import path
from . import views
from django.views.generic.base import RedirectView

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', RedirectView.as_view(url = 'admin/')),
    path('insurancedb/', views.insurancedb),
    path('blackbox/', views.blackbox),
    path('bmclass/', views.bmclass),
    path('vehicle/', views.vehicle),
    path('claims/', views.claims),
    path('client/',  views.client),
    path('contract/', views.contract),
    path('familyreports/', views.familyreports),
    path('agent/', views.agent),
    path('office/', views.office),
    path('add/', views.add)]
+34 −0
Original line number Original line Diff line number Diff line
from django.http import HttpResponse

def insurancedb(request):
    return HttpResponse('insurancedb')

def blackbox(request):
    return HttpResponse('blackbox')

def bmclass(request):
    return HttpResponse('bmclass')

def vehicle(request):
    return HttpResponse('vehicle')

def claims(request):
    return HttpResponse('claims')

def client(request):
    return HttpResponse('client')

def contract(request):
    return HttpResponse('contract')

def familyreports(request):
    return HttpResponse('familyreports')

def agent(request):
    return HttpResponse('agent')

def office(request):
    return HttpResponse('office')

def add(request):
    return HttpResponse('add')
Loading