Skip to content

Commit

Permalink
Release v1.0.5
Browse files Browse the repository at this point in the history
  • Loading branch information
app-generator committed Mar 9, 2024
1 parent 837de25 commit 630b728
Show file tree
Hide file tree
Showing 11 changed files with 303 additions and 19 deletions.
3 changes: 3 additions & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
DEBUG=True

SECRET_KEY=<STRONG_KEY_HERE>
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ env
/staticfiles/

#src
*.sqlite*
#*.sqlite*

.env
#.env
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
# Change Log

## [1.0.5] 2024-03-09
### Changes

- Deprecate `distutils`
- use `str2bool`
- Update Deps
- `requirements.txt`
- Update README: [PRO Version](https://appseed.us/product/berry-dashboard-pro/django/), List features
- `API`, **Charts**
- **DataTables** (Filters, Export)
- **Celery**
- **Media Files Manager**
- **Extended User Profiles**
- Update [Custom Development](https://appseed.us/custom-development/) Section
- New Pricing: `$3,999`

## [1.0.4] 2023-01-30
### Changes

Expand Down
27 changes: 19 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,28 @@ Open-source **[Django Dashboard](https://appseed.us/admin-dashboards/django/)**

- 👉 [Django Berry](https://appseed.us/product/berry-dashboard/django/) - `Product page`
- 👉 [Django Berry](https://django-berry.onrender.com) - `LIVE Demo`
- 🛒 **[Django Berry PRO](https://appseed.us/product/berry-dashboard-pro/django/)** - `Premium Version`

<br />

> Features:
-`Up-to-date Dependencies`
- ✅ Theme: [Django Admin Berry](https://github.com/app-generator/django-admin-berry)
-**Authentication**: `Django.contrib.AUTH`, Registration
- 🚀 `Deployment`
- `CI/CD` flow via `Render`
## Features

> `Have questions?` Contact **[Support](https://appseed.us/support/)** (Email & Discord) provided by **AppSeed**
| Free Version | [PRO Version](https://appseed.us/product/berry-dashboard-pro/django/) | [Custom Development](https://appseed.us/custom-development/) |
| --------------------------------------| --------------------------------------| --------------------------------------|
|**Django 4.2.9** | **Everything in Free**, plus: | **Everything in PRO**, plus: |
| ✓ Best Practices |**Premium Bootstrap 5 Design** |**1mo Custom Development** |
| ✓ Bootstrap 5, `Material` Design |`OAuth` Google, GitHub |**Team**: PM, Developer, Tester |
|`CI/CD` Flow via Render |`API`, **Charts** | ✅ Weekly Sprints |
|`Docker` |**DataTables** (Filters, Export) | ✅ Technical SPECS |
| - |**Celery** | ✅ Documentation |
| - |**Media Files Manager** |**30 days Delivery Warranty** |
| - |**Extended User Profiles** | - |
| - |`Private REPO Access` | - |
| - |**PRO Support** - [Email & Discord](https://appseed.us/support/) | - |
| - | ✅ Deployment Assistance | - |
| ------------------------------------ | ------------------------------------ | ------------------------------------|
|[LIVE Demo](https://django-berry.onrender.com) | 🚀 [LIVE Demo](https://django-berry-pro.onrender.com) | 🛒 `Order`: **[$3,999](https://appseed.gumroad.com/l/rocket-package)** (GUMROAD) |

![Berry Bootstrap 5 - Dark-Mode ready, Open-source Template.](https://user-images.githubusercontent.com/51070104/215728710-d1ee7fef-8153-402b-9741-371e1c01cd36.png)

Expand Down
17 changes: 12 additions & 5 deletions core/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,10 @@
https://docs.djangoproject.com/en/4.1/ref/settings/
"""

import os, random, string
import os, random, string, inspect
from pathlib import Path
from dotenv import load_dotenv
from str2bool import str2bool

load_dotenv() # take environment variables from .env.

Expand All @@ -27,10 +28,16 @@
if not SECRET_KEY:
SECRET_KEY = ''.join(random.choice( string.ascii_lowercase ) for i in range( 32 ))

# Render Deployment Code
DEBUG = 'RENDER' not in os.environ
# Enable/Disable DEBUG Mode
DEBUG = str2bool(os.environ.get('DEBUG'))
#print(' DEBUG -> ' + str(DEBUG) )

ALLOWED_HOSTS = []
ALLOWED_HOSTS = ['*']

# Add here your deployment HOSTS
CSRF_TRUSTED_ORIGINS = ['http://localhost:8000', 'http://localhost:5085', 'http://127.0.0.1:8000', 'http://127.0.0.1:5085']

X_FRAME_OPTIONS = "SAMEORIGIN"

RENDER_EXTERNAL_HOSTNAME = os.environ.get('RENDER_EXTERNAL_HOSTNAME')
if RENDER_EXTERNAL_HOSTNAME:
Expand Down Expand Up @@ -63,7 +70,7 @@

ROOT_URLCONF = "core.urls"

HOME_TEMPLATES = os.path.join(BASE_DIR, 'home', 'templates')
HOME_TEMPLATES = os.path.join(BASE_DIR, 'templates')

TEMPLATES = [
{
Expand Down
Binary file added db.sqlite3
Binary file not shown.
15 changes: 11 additions & 4 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
django
gunicorn
python-dotenv
whitenoise
# Core
django==4.2.9
python-dotenv==1.0.1
str2bool==1.1

# UI
django-admin-berry==1.0.10

# Deployment
whitenoise==6.6.0
gunicorn==21.2.0

# DB Layer
# psycopg2-binary
# mysqlclient
67 changes: 67 additions & 0 deletions templates/accounts/login.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
{% extends 'layouts/auth_base.html' %}
{% load static %}

{% block title %} Login {% endblock title %}

{% block content %}
<div class="auth-main">
<div class="auth-wrapper v3">
<div class="auth-form">
<div class="card my-5">
<div class="card-body">
<a href="#" class="d-flex justify-content-center">
<img src="{% static 'assets/images/logo-dark.svg' %}" />
</a>
<div class="row">
<div class="d-flex justify-content-center">
<div class="auth-header">
<h2 class="text-secondary mt-5"><b>Hi, Welcome Back</b></h2>

<p class="f-16 mt-2">
<span>USER: test / Pass12__</span>
<br />
<span>ADMIN: admin / Pass12__</span>
</p>

</div>
</div>
</div>
<form method="post">
{% csrf_token %}

{% if form.non_field_errors %}
{% for error in form.non_field_errors %}
<span class="text-danger">{{ error }}</span>
{% endfor %}
{% endif %}

{% for field in form %}
<div class="form-floating mb-3">
{{field}}
<label for="floatingInput">{{ field.label }}</label>
</div>
<span class="text-danger">{{ field.errors }}</span>
{% endfor %}
<div class="d-flex mt-1 justify-content-between">
<div class="form-check">
<input class="form-check-input input-primary" type="checkbox" id="customCheckc1" checked="" />
<label class="form-check-label text-muted" for="customCheckc1">Remember me</label>
</div>
<h5 class="text-secondary">
<a href="{% url 'password_reset' %}">Forgot Password?</a>
</h5>
</div>
<div class="d-grid mt-4">
<button type="submit" class="btn btn-secondary">Sign In</button>
</div>
</form>
<hr />
<h5 class="d-flex justify-content-center">Don't have an account?
<a class="ms-2" href="{% url 'register' %}">Register</a>
</h5>
</div>
</div>
</div>
</div>
</div>
{% endblock content %}
52 changes: 52 additions & 0 deletions templates/accounts/register.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{% extends 'layouts/auth_base.html' %}
{% load static %}

{% block title %} SignUp {% endblock title %}

{% block content %}
<div class="auth-main">
<div class="auth-wrapper v3">
<div class="auth-form">
<div class="card mt-5">
<div class="card-body">
<a href="#" class="d-flex justify-content-center mt-3">
<img src="{% static 'assets/images/logo-dark.svg' %}" />
</a>
<div class="row">
<div class="d-flex justify-content-center">
<div class="auth-header">
<h2 class="text-secondary mt-5"><b>Sign up</b></h2>
<p class="f-16 mt-2">Enter your credentials to continue</p>
</div>
</div>
</div>
<form method="post">
{% csrf_token %}

{% for field in form %}
<div class="form-floating mb-3">
{{field}}
<label for="floatingInput">{{ field.label }}</label>
</div>
<span class="text-danger">{{ field.errors }}</span>
{% endfor %}
<div class="form-check mt-3s">
<input class="form-check-input input-primary" type="checkbox" id="customCheckc1" checked="" />
<label class="form-check-label" for="customCheckc1">
<h5>Agree with <span>Terms & Condition.</span></h5>
</label>
</div>
<div class="d-grid mt-4">
<button type="submit" class="btn btn-secondary p-2">Sign Up</button>
</div>
</form>
<hr />
<h5 class="d-flex justify-content-center">Already have an account?
<a class="ms-2" href="{% url 'login' %}">Login</a>
</h5>
</div>
</div>
</div>
</div>
</div>
{% endblock content %}
File renamed without changes.
121 changes: 121 additions & 0 deletions templates/includes/sidebar.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
{% load i18n static admin_berry %}

<!-- [ Sidebar Menu ] start -->
<nav class="pc-sidebar">
<div class="navbar-wrapper">
<div class="m-header">
<a href="/" class="b-brand">
<!-- ======== Change your logo from here ============ -->
<img src="{% static 'assets/images/logo-dark.svg' %}" alt="" class="logo logo-lg" />
</a>
</div>
<div class="navbar-content">
<ul class="pc-navbar">
<li class="pc-item pc-caption">
<label>Dashboard</label>
<i class="ti ti-dashboard"></i>
</li>

<li class="pc-item">
{% if request.user.is_superuser %}
<a href="{% url 'admin:index' %}" class="pc-link">
{% else %}
<a href="/" class="pc-link">
{% endif %}
<span class="pc-micon"><i class="ti ti-dashboard"></i></span>
<span class="pc-mtext">Dashboard</span></a>
</li>

{% admin_get_menu as app_list %}
{% if app_list %}
{% for app in app_list %}
{% if app.has_perms and not app.pinned %}
<li class="pc-item pc-hasmenu">
<a href="#!" class="pc-link">
<span class="pc-micon"><i class="ti {{app.icon}}"></i></span>
<span class="pc-mtext">{{ app.label|slice:15 }}{% if app.label|length > 15 %}..{% endif %}</span>
<span class="pc-arrow"><i class="ti ti-chevron-right"></i></span>
</a>
{% if app.models %}
<ul class="pc-submenu">
{% for model in app.models %}
{% if model.url %}
<li class="pc-item">
<a class="pc-link" href="{{ model.url }}">
{{ model.label }}
</a>
</li>
{% else %}
<li class="pc-item">{{ model.label }}</li>
{% endif %}
{% endfor %}
</ul>
{% endif %}
</li>
{% endif %}
{% endfor %}
{% endif %}

<li class="pc-item pc-caption">
<label>Pages</label>
<i class="ti ti-news"></i>
</li>
<li class="pc-item pc-hasmenu">
<a href="#!" class="pc-link"><span class="pc-micon"><i class="ti ti-key"></i></span><span
class="pc-mtext">Authentication</span><span class="pc-arrow"><i class="ti ti-chevron-right"></i></span></a>
<ul class="pc-submenu">
{% if request.user.is_superuser %}
<li class="pc-item"><a class="pc-link" href="{% url 'admin:password_change' %}">Change Password</a></li>
<li class="pc-item"><a class="pc-link" href="{% url 'admin:logout' %}">Logout</a></li>
{% else %}
{% if request.user.is_authenticated %}
<li class="pc-item"><a class="pc-link" href="{% url 'password_change' %}">Change Password</a></li>
<li class="pc-item"><a class="pc-link" href="{% url 'logout' %}">Logout</a></li>
{% else %}
<li class="pc-item"><a class="pc-link" href="{% url 'login' %}">Login</a></li>
<li class="pc-item"><a class="pc-link" href="{% url 'register' %}">Register</a></li>
{% endif %}
{% endif %}
</ul>
</li>

{% if request.user.is_authenticated and not request.user.is_superuser %}
<li class="pc-item pc-caption">
<label>Elements</label>
<i class="ti ti-apps"></i>
</li>
<li class="pc-item">
<a href="{% url 'typography' %}" class="pc-link"><span class="pc-micon"><i
class="ti ti-typography"></i></span><span class="pc-mtext">Typography</span></a>
</li>
<li class="pc-item">
<a href="{% url 'color' %}" class="pc-link"><span class="pc-micon"><i class="ti ti-brush"></i></span><span
class="pc-mtext">Color</span></a>
</li>
<li class="pc-item">
<a href="{% url 'icon_tabler' %}" class="pc-link"><span class="pc-micon"><i
class="ti ti-plant-2"></i></span><span class="pc-mtext">Tabler</span><span class="pc-arrow"></a>
</li>

<li class="pc-item pc-caption">
<label>Other</label>
<i class="ti ti-brand-chrome"></i>
</li>
<li class="pc-item">
<a href="{% url 'sample_page' %}" class="pc-link"><span class="pc-micon"><i
class="ti ti-brand-chrome"></i></span><span class="pc-mtext">Sample page</span></a></li>
<li class="pc-item">
<a href="https://github.com/app-generator/django-admin-berry" target="_blank" class="pc-link"><span
class="pc-micon"><i class="ti ti-vocabulary"></i></span><span class="pc-mtext">DOCS</span></a></li>
</ul>
{% endif %}
<div class="pc-navbar-card bg-primary rounded">
<h4 class="text-white">Django Berry PRO</h4>
<p class="text-white opacity-75">API, Charts, Celery</p>
<a href="https://appseed.us/product/berry-dashboard-pro/django/"
target="_blank" class="btn btn-light text-primary">See Product</a>
</div>
</div>
</div>
</nav>
<!-- [ Sidebar Menu ] end -->

0 comments on commit 630b728

Please sign in to comment.