add form of selection
This commit is contained in:
parent
6d138ed9b7
commit
93be13ccd1
|
@ -53,6 +53,8 @@
|
|||
libaom = super.libaom.override {
|
||||
enableButteraugli = false;
|
||||
};
|
||||
|
||||
pin_control = self.callPackage ./pin_control { };
|
||||
})
|
||||
];
|
||||
|
||||
|
|
|
@ -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 ];
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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")),
|
||||
]
|
||||
|
|
|
@ -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
21
ui/main/forms.py
Normal 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
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
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
BIN
ui/main/static/3.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.6 MiB |
|
@ -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-->
|
||||
|
|
|
@ -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 %}
|
|
@ -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()}")
|
Loading…
Reference in a new issue