Giter Site home page Giter Site logo

proyectodabd_django's Introduction

PROYECTO FINAL CON DJANGO DE DABD

PROGRAMA DE GESTIÓN DE UN CLUB DE LUCHA

N|Solid

Build Status

Proyecto final de la asignatura de DABD, EPSEVG-UPC.

  • Autor: Mario Kochan
  • Fecha: 12/06/2022
  • Profesor: Jordi Estve

Características

  • Proyecto realizado con Django
  • Uso de GITHUB
  • Modelación en UML del proyecto
  • Uso de Faker para generar datos falsos
  • Uso de terminal Windows Powershell
  • Creación del .md con Dillinger
  • Uso de PostgreSQL como BBDD

Despliegue y uso de Django

Instalación

Para el proyecto vamos a desplegar un entorno virtual Virtualenv.

Trabajaremos sobre Windows Powershell:

pip install virtualenv
python -m venv django
Set-ExecutionPolicy Unrestricted -Scope Process
cd django
./Scripts/activate
./Scripts/Activate.ps1
Set-ExecutionPolicy Default -Scope Process

Creamos el proyecto Django:

pip install Django
django-admin startproject dabd
python manage.py startapp club

Y empezamos a trabajar :)

Puede ser que sea necesario crear un super user para la página administrativa de Django:

python manage.py createsuperuser

Ejecutar Django

Migramos los elementos en el Django

python manage.py makemigrations
python manage.py migrate

Y ejecutamos de forma local la página

python manage.py runserver 8080

Generación de FakeData

Podemos ejecutar un comando junto con manage.py para generar los datos falsos:

python manage.py createdata

El script que fakea datos se encuentra en club/management/commands/createdata.py

Se crean aproximadamente 5500 datos.

Video en el que me he basado para hacer el comando.

Dentro de Postgres

Dentro de Postgres crearemos un namespace para nuestra práctica:

CREATE SCHEMA practica;
SET search_path TO practica, public;

Generación de UML después de crear los modelos de Django

Se puede generar el UML apartir de los modelos que hemos creado, para ello, tenemos que instalarnos dos librerias de python y un programa externo.

Primero nos instalamos el Graphviz. En mi caso, como estoy trabajando en Windows, usaré la última versión de 64 bits.

Es importante que durante la instalación, le marquemos que queremos que se añada al PATH del sistema

Una vez instalado el Graphviz, nos vamos al Django.

Activamos el entorno virtual:

Set-ExecutionPolicy Unrestricted -Scope Process
./Scripts/activate
Set-ExecutionPolicy Default -Scope Process

Y instalamos las librerias python necesarias:

pip install django-extensions
pip install pydotplus

Y una vez instalado las librerias, debemos añadir la aplicación extra de django_extensions en el archivo settings.py que se encuentra dentro de la carpeta de la app.

nano /dabd/settings.py
...
INSTALLED_APPS = [
   ...
   'django_extensions',
   ...
]

Ahora si ejecutamos la siguiente comanda, nos saca el UML apartir de nuestros modelos.

python manage.py graph_models -a -o myapp_models.png

UML resultante:

N|Solid

Fuentes: Link 1 Link 2

ANEXO

Enunciado (En catalán)

La garra és un club de lluita i un gimnàs que imparteix classes de diferents formes de lluita i on també es pot entrenar amb manuelles. Amb el temps, s'han inscrit moltes persones i ara es necessita actualitzar el seu sistema Excel a mà a un sistema més avançat que permeti controlar els clients.

El club sols obre de dilluns a divendres.

Els horaris d'obertura són els següents: cada dia (de dilluns a divendres), de 10 fins a les 13. I després de 17 fins a les 21:30.

Les modalitats de lluita disponibles són: boxa, Muay Thai, MMA.

En la garra hi ha els entrenadors que són els responsables de realitzar les classes i el personal del club, que s'encarrega de netejar el club, el gimnàs i de resoldre qüestions.

Dels entrenadors, volem saber: DNI, nom i cognom, data de naixement, número de la federació (valor únic de 12 dígits), número del telèfon, direcció actual, número del compte bancari (IBAN).

Per cada entrenador volem saber quines classes imparteix: si boxa, thai, MMA... quins dies de la setmana fa classes i quines hores. Però, pot sorgir que cert dia un entrenador no pugui impartir classe, per tant, s'ha de saber quins dies ha faltat, ja que no es pot pagar a l'entrenador aquells dies que no hagi fet classes.

Les classes es distingeixen per l'hora, dia i qui la fa i estaria bé saber de què serà la classe (boxa, thai o MMA) i que tipus és (si física, si tècnica o contacte).

Del personal del club, sols volem saber: DNI, nom i cognom, data de naixement, número del telèfon, direcció actual, número del compte bancari (IBAN). Del personal del club volem saber quins dies ha faltat de la setmana. El personal del club és una persona que assisteix de 10:00 fins a les 13 i de 17 fins a les 21:30 i és la mateixa persona per a tots els dies que està obert el gimnàs.

Per els IBANs dels entrenadors i personals pot ocórrer que hi hagi personal de la familia inscrits al club, i per tant, l'IBAN es repeteixi.

Ho volem saber tot a la setmana, ja que paguem al personal i als entrenadors el divendres de cada setmana.

Per l'altra banda, tenim els socis, que són els clients que s'inscriuen mitjançant una mensualitat.

La inscripció al club és sempre mitjançant un pagament mensual. Aquest pagament es pot diversificar en diverses formes:

  • Inscripció completa: 50 € al mes, pot fer ús del gimnàs i anar a qualsevol classe tant al matí com a la tarda (Boxing, MMA, Thai...)

  • Inscripció sols als matins: 40€ al mes, pot fer ús del gimnàs i anar a qualsevol classe però sols als matins.

  • Inscripció fitness: Sols pot fer ús del gimnàs sense poder anar a classe de lluita.

De les inscripcions volem saber: el número d'inscripció (valor únic de 8 dígits) i el tipus d'inscripció (fitness, matins o complet) i quan es va realitzar la inscripció.

Dels clients volem saber: DNI, nom i cognom, data de naixement, si estan federats o no estan federats i en cas que estiguin federats, el seu número de federació ( valor únic de 12 dígits) (la federació com tal és una mútua mèdica, per tant, una federació serveix per a totes les modalitats), número de telèfon, direcció actual, si el pagament és domiciliat o no i en cas que sigui domiciliat, el seu IBAN. Pot ocórrer que hi hagi clients amb el mateix IBAN, ja que són parella o família.

Els clients han d'indicar a quins dies i hores participaran en les classes per tal de saber per endavant quantes persones són a classe i així saber com dur a terme les classes.

Tots els clients es poden federar. Poden presentar una sol·licitud juntament amb un pagament. De la federació volem saber: el número identificatiu de la sol·licitud (valor únic de 2 caràcters+8 dígits), si ha pagat o no i s'hi ha sigut concedida.

Clarament, si una persona ja està federat no ha de poder federar-se. I una persona a la qual se l'ha concedit la federació, ha de tenir un número de federació assignat. També, el dia que se'l va concedir la federació, se li assigna una data de caducitat de la federació, que caducarà fins dintre d'un any.

És important saber si un client ha pagat o no ha pagat el mes corresponent, ja que si no ha pagat no pot accedir a les instal·lacions. Els pagaments els volem guardar per al primer dia de cada mes amb el seu respectiu any.

A més, depenent del tipus d'inscripció que hi ha, pot o no pot assistir a una classe.

Hi ha dies a la setmana que són especials (dijous tarda i divendres al matí) perquè aquells dies són dies de contacte. Per participar en aquells dies, els clients han d'estar federats.

Per identificar als entrenadors, al personal i als clients es farà ús del DNI. Per identificar les inscripcions es farà ús del codi del número d'inscripció. Per identificar les sol·licituds de federat es farà ús del número de la sol·licitud.

Pot ocórrer que un client es desapunti i s'apunti passat uns mesos. Ens interessa no eliminar la informació que hi hagi d'ell.

UML

N|Solid

proyectodabd_django's People

Contributors

shadowfurtive avatar

Stargazers

Eric Millan avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.