feat(pet): integrates cloudinary, finishes register
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
from flask import request, render_template
|
from flask import request, render_template, redirect, flash
|
||||||
from app.pets import bp
|
from app.pets import bp
|
||||||
from app.services.pet_service import PetService
|
from app.services.pet_service import PetService
|
||||||
|
from app.utils.alert_type import AlertType
|
||||||
|
from app.utils.flash_message import FlashMessage
|
||||||
from app.utils.helpers import login_required
|
from app.utils.helpers import login_required
|
||||||
|
|
||||||
@bp.route('/')
|
@bp.route('/')
|
||||||
@@ -12,8 +14,12 @@ def index():
|
|||||||
)
|
)
|
||||||
|
|
||||||
@bp.route('register', methods=["GET", "POST"])
|
@bp.route('register', methods=["GET", "POST"])
|
||||||
|
@login_required
|
||||||
def register():
|
def register():
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
PetService.register_pet(request)
|
register = PetService.register_pet(request)
|
||||||
|
if not register:
|
||||||
|
return redirect("/users/login")
|
||||||
|
flash(FlashMessage("Pet added!", AlertType.SUCCESS.value ))
|
||||||
types = PetService.get_pets_kind()
|
types = PetService.get_pets_kind()
|
||||||
return render_template("pets/register.html", types=types)
|
return render_template("pets/register.html", types=types)
|
||||||
@@ -1,4 +1,7 @@
|
|||||||
from flask import flash, Request
|
import cloudinary
|
||||||
|
import cloudinary.uploader
|
||||||
|
import os
|
||||||
|
from flask import flash, Request, session
|
||||||
from app.extensions import db
|
from app.extensions import db
|
||||||
from app.models.pet import Pet
|
from app.models.pet import Pet
|
||||||
from app.models.pet_kind import PetKind
|
from app.models.pet_kind import PetKind
|
||||||
@@ -11,19 +14,48 @@ class PetService:
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def register_pet(request: Request):
|
def register_pet(request: Request):
|
||||||
"""Validations"""
|
user_id = session.get('id')
|
||||||
|
if user_id is None:
|
||||||
|
session.clear()
|
||||||
|
return False
|
||||||
|
|
||||||
|
img = request.files['img']
|
||||||
|
img_url = None
|
||||||
|
if(request.files['img']):
|
||||||
|
try:
|
||||||
|
cloudinary.config(cloud_name = os.environ.get('CLOUD_NAME'), api_key=os.getenv('API_KEY'),
|
||||||
|
api_secret=os.getenv('API_SECRET'))
|
||||||
|
upload_result = cloudinary.uploader.upload(img)
|
||||||
|
img_url = upload_result['secure_url']
|
||||||
|
except:
|
||||||
|
print("err!")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
name = PetValidators.is_valid_name(request.form.get('name'))
|
name = PetValidators.is_valid_name(request.form.get('name'))
|
||||||
age = PetValidators.is_valid_age(request.form.get('age'))
|
age = PetValidators.is_valid_age(request.form.get('age'))
|
||||||
sex = PetValidators.is_valid_sex(request.form.get('sex'))
|
sex = PetValidators.is_valid_sex(request.form.get('sex'))
|
||||||
heigth = PetValidators.is_valid_height(request.form.get('height'))
|
height = PetValidators.is_valid_height(request.form.get('height'))
|
||||||
weight = PetValidators.is_valid_weight(request.form.get('weight'))
|
weight = PetValidators.is_valid_weight(request.form.get('weight'))
|
||||||
kind = PetValidators.is_valid_type(request.form.get('type'))
|
kind_id = PetValidators.is_valid_type(request.form.get('type'))
|
||||||
location = PetValidators.is_valid_location(request.form.get('location'))
|
location = PetValidators.is_valid_location(request.form.get('location'))
|
||||||
"""uploading image to cloudinary"""
|
|
||||||
"""saving the data in the db"""
|
pet = Pet(
|
||||||
|
name=name,
|
||||||
|
kind_id=kind_id,
|
||||||
|
age=age,
|
||||||
|
img_src= img_url if img_url is not None else '/static/img/pet-placeholder.webp',
|
||||||
|
weight=weight,
|
||||||
|
location=location,
|
||||||
|
sex=sex,
|
||||||
|
height=height,
|
||||||
|
registrar_id=user_id
|
||||||
|
)
|
||||||
|
db.session.add(pet)
|
||||||
|
db.session.commit()
|
||||||
|
db.session.flush()
|
||||||
except PetRegisterError as e:
|
except PetRegisterError as e:
|
||||||
flash(FlashMessage(e.message, AlertType.DANGER.value ))
|
flash(FlashMessage(e.message, AlertType.DANGER.value ))
|
||||||
|
return True
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_pets(request: Request,results_per_page=8):
|
def get_pets(request: Request,results_per_page=8):
|
||||||
@@ -48,6 +80,7 @@ class PetService:
|
|||||||
age_to = int(age_to)
|
age_to = int(age_to)
|
||||||
if age_to >= 1 and age_to < 7:
|
if age_to >= 1 and age_to < 7:
|
||||||
query = query.filter(Pet.age <= age_to)
|
query = query.filter(Pet.age <= age_to)
|
||||||
|
query = query.order_by(Pet.registration_date.desc())
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return db.paginate(
|
return db.paginate(
|
||||||
@@ -56,7 +89,7 @@ class PetService:
|
|||||||
per_page=results_per_page,
|
per_page=results_per_page,
|
||||||
)
|
)
|
||||||
except:
|
except:
|
||||||
return db.paginate(
|
return db.paginate(
|
||||||
select=query,
|
select=query,
|
||||||
page=1,
|
page=1,
|
||||||
per_page=results_per_page,
|
per_page=results_per_page,
|
||||||
|
|||||||
@@ -75,7 +75,7 @@
|
|||||||
<div class="col-6 col-sm-4 col-md-4 col-lg-3 mt-3 mt-md-5">
|
<div class="col-6 col-sm-4 col-md-4 col-lg-3 mt-3 mt-md-5">
|
||||||
<div class="fliping-card img-fluid mx-auto">
|
<div class="fliping-card img-fluid mx-auto">
|
||||||
<div class="fliping-card__side fliping-card__side--front">
|
<div class="fliping-card__side fliping-card__side--front">
|
||||||
<img alt="pet" width="200" height="200" src="{{ url_for('static', filename=pet.img_src) }}" class="img-fluid">
|
<img alt="pet" width="200" height="200" src="{{ pet.img_src }}" class="img-fluid">
|
||||||
</div>
|
</div>
|
||||||
<div class="fliping-card__side fliping-card__side--back
|
<div class="fliping-card__side fliping-card__side--back
|
||||||
{%if pet.sex == 'M' %}
|
{%if pet.sex == 'M' %}
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ class DBUtils():
|
|||||||
name=f"Pet {str(i)}",
|
name=f"Pet {str(i)}",
|
||||||
kind_id=kind_id,
|
kind_id=kind_id,
|
||||||
age=randrange(0,8),
|
age=randrange(0,8),
|
||||||
img_src="img/placeholder-dog.jpg" if kind_id == 1 else "img/placeholder-cat.jpg",
|
img_src="/static/img/placeholder-dog.jpg" if kind_id == 1 else "/static/img/placeholder-cat.jpg",
|
||||||
weight=1,
|
weight=1,
|
||||||
location="Shelbyville",
|
location="Shelbyville",
|
||||||
sex= "M" if randrange(3) > 1.5 else "F",
|
sex= "M" if randrange(3) > 1.5 else "F",
|
||||||
|
|||||||
Reference in New Issue
Block a user