add form of selection

This commit is contained in:
Alejandro Diaz 2023-09-12 15:51:16 -06:00
parent 6d138ed9b7
commit 93be13ccd1
12 changed files with 92 additions and 13 deletions

View file

@ -53,6 +53,8 @@
libaom = super.libaom.override {
enableButteraugli = false;
};
pin_control = self.callPackage ./pin_control { };
})
];

View file

@ -1,9 +1,17 @@
{ buildPythonPackage, django_4 }:
{ buildPythonPackage, django_4, pin_control }:
buildPythonPackage {
pname = "homemanager";
version = "0.0.1";
src = ./.;
patchPhase = ''
substituteInPlace \
main/views.py \
--subst-var pin_control
'';
inherit pin_control;
propagatedBuildInputs = [ django_4 ];
}

View file

@ -77,7 +77,7 @@ WSGI_APPLICATION = 'homemanager.wsgi.application'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
'NAME': '/tmp/db.sqlite3',
}
}
@ -117,6 +117,7 @@ USE_TZ = True
# https://docs.djangoproject.com/en/4.2/howto/static-files/
STATIC_URL = 'static/'
STATIC_ROOT = '/tmp/static'
# Default primary key field type
# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field

View file

@ -18,7 +18,6 @@ from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('main.urls')),
path("accounts/", include("django.contrib.auth.urls")),
]

View file

@ -8,9 +8,19 @@ https://docs.djangoproject.com/en/4.2/howto/deployment/wsgi/
"""
import os
from django.core.wsgi import get_wsgi_application
from pathlib import Path
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'homemanager.settings')
data = Path("/tmp/db.sqlite3")
if not data.is_file():
from django.core.management import call_command
os.environ.setdefault('DJANGO_SUPERUSER_PASSWORD', 'password')
call_command("migrate --noinput")
call_command("collectstatic --noinput")
call_command("createsuperuser --noinput --username adp --email a@a.com")
call_command("createsuperuser --noinput --username fabian --email b@a.com")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

21
ui/main/forms.py Normal file
View file

@ -0,0 +1,21 @@
from django import forms
class Lights(forms.Form):
required_css_class = "list-group-item"
MODES = [
('0', 'Apagar todo'),
('1', 'Encender todo'),
('2', 'Sala'),
('3', 'Pasillo'),
('4', 'Cocina'),
('5', 'Cuarto 1'),
('6', 'Cuarto 2'),
]
light = forms.ChoiceField(
widget=forms.RadioSelect,
choices=MODES,
label="Select lights to modify"
)

BIN
ui/main/static/1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
ui/main/static/2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 904 KiB

BIN
ui/main/static/3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 MiB

View file

@ -22,9 +22,10 @@
<nav class="navbar navbar-expand-md navbar-light " style="background-color: #f0f5f5">
{% if user.is_authenticated %}
<a class="navbar-brand">Welcome {{ user.username }}</a>
<a href="{% url 'logout' %}" class="navbar-brand">Log Out</a>
{% else %}
<a class="navbar-brand">Log In</a>
<a class="navbar-brand"></a>
{% endif %}
</nav>
<!--Any flash messages pop up in any page because this is the base template-->

View file

@ -2,12 +2,35 @@
{% block title %} Home Manager {% endblock title%}
{% block content %}
<style>
img {
max-width: 100%;
object-fit: cover;
}
</style>
{% if user.is_authenticated %}
<div class="jumbotron">
<h1 class="display-4">Welcome {{ user.username }}</h1>
<div class="jumbotron">
<form action="" method="post">
{% csrf_token %}
<ul class="list-group">
{{ form.as_ul }}
</ul>
<input class="btn btn-primary btn-lg" type="submit" value="Enable">
</form>
</div>
<div class="jumbotron">
{% load static %}
<img src="{% static image %}" alt="My image">
</div>
{% else %}
<p>You are not logged in</p>
<a href="{% url 'login' %}">Log In</a>
<div class="jumbotron">
<p class="lead">You are not logged in</p>
<p class="lead">
<a class="btn btn-primary btn-lg" href="{% url 'login' %}" role="button">Log In</a>
</p>
</div>
{% endif %}
{% endblock content %}

View file

@ -1,7 +1,21 @@
from django.shortcuts import render
from .forms import Lights
import ctypes
# Create your views here.
def home(request):
return render(request, 'home.html')
# pin_control = ctypes.CDLL("@pin_control@/lib/libpin_control.so")
def home(request):
if request.method == "POST":
form = Lights(request.POST)
if form.is_valid():
opt = form.cleaned_data.get("light")
light_up_all()
return render(request, "home.html", {"form": form, "image": f"{opt}.jpg"})
return render(request, "home.html", {"form": Lights(), "image": "1.jpg"})
def light_up_all():
print(f"INIT: {pin_control.init_gpio()}")
print(f"ALL_PINS: {pin_control.turn_on_all_pins()}")