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.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
|
||||
|
||||
@bp.route('/')
|
||||
@@ -12,8 +14,12 @@ def index():
|
||||
)
|
||||
|
||||
@bp.route('register', methods=["GET", "POST"])
|
||||
@login_required
|
||||
def register():
|
||||
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()
|
||||
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.models.pet import Pet
|
||||
from app.models.pet_kind import PetKind
|
||||
@@ -11,19 +14,48 @@ class PetService:
|
||||
|
||||
@staticmethod
|
||||
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:
|
||||
name = PetValidators.is_valid_name(request.form.get('name'))
|
||||
age = PetValidators.is_valid_age(request.form.get('age'))
|
||||
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'))
|
||||
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'))
|
||||
"""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:
|
||||
flash(FlashMessage(e.message, AlertType.DANGER.value ))
|
||||
return True
|
||||
|
||||
@staticmethod
|
||||
def get_pets(request: Request,results_per_page=8):
|
||||
@@ -48,6 +80,7 @@ class PetService:
|
||||
age_to = int(age_to)
|
||||
if age_to >= 1 and age_to < 7:
|
||||
query = query.filter(Pet.age <= age_to)
|
||||
query = query.order_by(Pet.registration_date.desc())
|
||||
|
||||
try:
|
||||
return db.paginate(
|
||||
@@ -56,7 +89,7 @@ class PetService:
|
||||
per_page=results_per_page,
|
||||
)
|
||||
except:
|
||||
return db.paginate(
|
||||
return db.paginate(
|
||||
select=query,
|
||||
page=1,
|
||||
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="fliping-card img-fluid mx-auto">
|
||||
<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 class="fliping-card__side fliping-card__side--back
|
||||
{%if pet.sex == 'M' %}
|
||||
|
||||
@@ -42,7 +42,7 @@ class DBUtils():
|
||||
name=f"Pet {str(i)}",
|
||||
kind_id=kind_id,
|
||||
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,
|
||||
location="Shelbyville",
|
||||
sex= "M" if randrange(3) > 1.5 else "F",
|
||||
|
||||
Reference in New Issue
Block a user