Skip to content

Commit 18d4ded

Browse files
author
App Generator
committed
Bump Codebase Version
1 parent 8d188d5 commit 18d4ded

File tree

239 files changed

+49198
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

239 files changed

+49198
-0
lines changed

.dockerignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
.git
2+
__pycache__
3+
*.pyc
4+
*.pyo
5+
*.pyd

.env

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
DEBUG=True
2+
SECRET_KEY=S3cr3t_K#Key
3+
DB_ENGINE=postgresql
4+
DB_NAME=appseed-flask
5+
DB_HOST=localhost
6+
DB_PORT=5432
7+
DB_USERNAME=appseed
8+
DB_PASS=pass

.gitignore

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# byte-compiled / optimized / DLL files
2+
__pycache__/
3+
*.py[cod]
4+
5+
# tests and coverage
6+
*.pytest_cache
7+
.coverage
8+
9+
# database & logs
10+
*.db
11+
*.sqlite3
12+
*.log
13+
14+
# venv
15+
env
16+
venv
17+
18+
# other
19+
.DS_Store
20+
21+
# sphinx docs
22+
_build
23+
_static
24+
_templates
25+
26+
# javascript
27+
package-lock.json
28+
.vscode/symbols.json
29+
30+
apps/static/assets/node_modules
31+
apps/static/assets/yarn.lock
32+
apps/static/assets/.temp
33+

Dockerfile

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
FROM python:3.9
2+
3+
COPY . .
4+
5+
# set environment variables
6+
ENV PYTHONDONTWRITEBYTECODE 1
7+
ENV PYTHONUNBUFFERED 1
8+
9+
# install python dependencies
10+
RUN pip install --upgrade pip
11+
RUN pip install --no-cache-dir -r requirements.txt
12+
13+
# gunicorn
14+
CMD ["gunicorn", "--config", "gunicorn-cfg.py", "run:app"]

LICENSE.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# MIT License
2+
3+
Copyright (c) 2019 - present [AppSeed](http://appseed.us/)
4+
5+
<br />
6+
7+
## Licensing Information
8+
9+
<br />
10+
11+
| Item | - |
12+
| ---------------------------------- | --- |
13+
| License Type | MIT |
14+
| Use for print | **YES** |
15+
| Create single personal website/app | **YES** |
16+
| Create single website/app for client | **YES** |
17+
| Create multiple website/apps for clients | **YES** |
18+
| Create multiple SaaS applications | **YES** |
19+
| End-product paying users | **YES** |
20+
| Product sale | **YES** |
21+
| Remove footer credits | **YES** |
22+
| --- | --- |
23+
| Remove copyright mentions from source code | NO |
24+
| Production deployment assistance | NO |
25+
| Create HTML/CSS template for sale | NO |
26+
| Create Theme/Template for CMS for sale | NO |
27+
| Separate sale of our UI Elements | NO |
28+
29+
<br />
30+
31+
---
32+
For more information regarding licensing, please contact the AppSeed Service < *support@appseed.us* >

Procfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
web: gunicorn run:app --log-file=-

apps/__init__.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# -*- encoding: utf-8 -*-
2+
"""
3+
Copyright (c) 2019 - present AppSeed.us
4+
"""
5+
6+
from flask import Flask
7+
from flask_login import LoginManager
8+
from flask_sqlalchemy import SQLAlchemy
9+
from importlib import import_module
10+
11+
12+
db = SQLAlchemy()
13+
login_manager = LoginManager()
14+
15+
16+
def register_extensions(app):
17+
db.init_app(app)
18+
login_manager.init_app(app)
19+
20+
21+
def register_blueprints(app):
22+
for module_name in ('authentication', 'home'):
23+
module = import_module('apps.{}.routes'.format(module_name))
24+
app.register_blueprint(module.blueprint)
25+
26+
27+
def configure_database(app):
28+
29+
@app.before_first_request
30+
def initialize_database():
31+
db.create_all()
32+
33+
@app.teardown_request
34+
def shutdown_session(exception=None):
35+
db.session.remove()
36+
37+
38+
def create_app(config):
39+
app = Flask(__name__)
40+
app.config.from_object(config)
41+
register_extensions(app)
42+
register_blueprints(app)
43+
configure_database(app)
44+
return app

apps/authentication/__init__.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# -*- encoding: utf-8 -*-
2+
"""
3+
Copyright (c) 2019 - present AppSeed.us
4+
"""
5+
6+
from flask import Blueprint
7+
8+
blueprint = Blueprint(
9+
'authentication_blueprint',
10+
__name__,
11+
url_prefix=''
12+
)

apps/authentication/forms.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# -*- encoding: utf-8 -*-
2+
"""
3+
Copyright (c) 2019 - present AppSeed.us
4+
"""
5+
6+
from flask_wtf import FlaskForm
7+
from wtforms import TextField, PasswordField
8+
from wtforms.validators import Email, DataRequired
9+
10+
# login and registration
11+
12+
13+
class LoginForm(FlaskForm):
14+
username = TextField('Username',
15+
id='username_login',
16+
validators=[DataRequired()])
17+
password = PasswordField('Password',
18+
id='pwd_login',
19+
validators=[DataRequired()])
20+
21+
22+
class CreateAccountForm(FlaskForm):
23+
username = TextField('Username',
24+
id='username_create',
25+
validators=[DataRequired()])
26+
email = TextField('Email',
27+
id='email_create',
28+
validators=[DataRequired(), Email()])
29+
password = PasswordField('Password',
30+
id='pwd_create',
31+
validators=[DataRequired()])

apps/authentication/models.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# -*- encoding: utf-8 -*-
2+
"""
3+
Copyright (c) 2019 - present AppSeed.us
4+
"""
5+
6+
from flask_login import UserMixin
7+
8+
from apps import db, login_manager
9+
10+
from apps.authentication.util import hash_pass
11+
12+
class Users(db.Model, UserMixin):
13+
14+
__tablename__ = 'Users'
15+
16+
id = db.Column(db.Integer, primary_key=True)
17+
username = db.Column(db.String(64), unique=True)
18+
email = db.Column(db.String(64), unique=True)
19+
password = db.Column(db.LargeBinary)
20+
21+
def __init__(self, **kwargs):
22+
for property, value in kwargs.items():
23+
# depending on whether value is an iterable or not, we must
24+
# unpack it's value (when **kwargs is request.form, some values
25+
# will be a 1-element list)
26+
if hasattr(value, '__iter__') and not isinstance(value, str):
27+
# the ,= unpack of a singleton fails PEP8 (travis flake8 test)
28+
value = value[0]
29+
30+
if property == 'password':
31+
value = hash_pass(value) # we need bytes here (not plain str)
32+
33+
setattr(self, property, value)
34+
35+
def __repr__(self):
36+
return str(self.username)
37+
38+
39+
@login_manager.user_loader
40+
def user_loader(id):
41+
return Users.query.filter_by(id=id).first()
42+
43+
44+
@login_manager.request_loader
45+
def request_loader(request):
46+
username = request.form.get('username')
47+
user = Users.query.filter_by(username=username).first()
48+
return user if user else None

0 commit comments

Comments
 (0)