Skip to content

Instantly share code, notes, and snippets.

View cosmic-byte's full-sized avatar
🎯
Focusing

Greg obinna cosmic-byte

🎯
Focusing
View GitHub Profile
@cosmic-byte
cosmic-byte / config.py
Created March 18, 2018 10:39
Application Configuration
import os
# uncomment the line below for postgres database url from environment variable
# postgres_local_base = os.environ['DATABASE_URL']
basedir = os.path.abspath(os.path.dirname(__file__))
class Config:
SECRET_KEY = os.getenv('SECRET_KEY', 'my_precious_secret_key')
DEBUG = False
@cosmic-byte
cosmic-byte / create_app.py
Created March 18, 2018 11:01
Application Factory pattern for creating flask instance
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_bcrypt import Bcrypt
from .config import config_by_name
db = SQLAlchemy()
flask_bcrypt = Bcrypt()
@cosmic-byte
cosmic-byte / manage.py
Last active June 3, 2020 07:09
Python Script for managing flask application
import os
import unittest
from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager
from app.main import create_app, db
app = create_app(os.getenv('BOILERPLATE_ENV') or 'dev')
@cosmic-byte
cosmic-byte / user.py
Last active March 18, 2018 12:39
Boiler Plate User Model
from .. import db, flask_bcrypt
class User(db.Model):
""" User Model for storing user related details """
__tablename__ = "user"
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
email = db.Column(db.String(255), unique=True, nullable=False)
registered_on = db.Column(db.DateTime, nullable=False)
admin = db.Column(db.Boolean, nullable=False, default=False)
@cosmic-byte
cosmic-byte / base.py
Last active March 19, 2018 10:38
Base test
from flask_testing import TestCase
from app.main import db
from manage import app
class BaseTestCase(TestCase):
""" Base Tests """
def create_app(self):
app.config.from_object('app.main.config.TestingConfig')
@cosmic-byte
cosmic-byte / test_config.py
Created March 19, 2018 11:07
Test for application configurations
import os
import unittest
from flask import current_app
from flask_testing import TestCase
from manage import app
from app.main.config import basedir
@cosmic-byte
cosmic-byte / user_service.py
Created March 19, 2018 12:28
User related operations
import uuid
import datetime
from app.main import db
from app.main.model.user import User
def save_new_user(data):
user = User.query.filter_by(email=data['email']).first()
if not user:
@cosmic-byte
cosmic-byte / dto.py
Created March 19, 2018 12:56
Data transfer Object
from flask_restplus import Namespace, fields
class UserDto:
api = Namespace('user', description='user related operations')
user = api.model('user', {
'email': fields.String(required=True, description='user email address'),
'username': fields.String(required=True, description='user username'),
'password': fields.String(required=True, description='user password'),
'public_id': fields.String(description='user Identifier')
@cosmic-byte
cosmic-byte / user_controller.py
Last active March 21, 2018 09:44
User Controller
from flask import request
from flask_restplus import Resource
from ..util.dto import UserDto
from ..service.user_service import save_new_user, get_all_users, get_a_user
api = UserDto.api
_user = UserDto.user
@cosmic-byte
cosmic-byte / blueprint.py
Created March 21, 2018 09:51
flask restplus namespace setup
# app/__init__.py
from flask_restplus import Api
from flask import Blueprint
from .main.controller.user_controller import api as user_ns
blueprint = Blueprint('api', __name__)
api = Api(blueprint,