style tweaks, update source page

This commit is contained in:
meeb 2020-11-28 16:58:23 +11:00
parent c353e5c849
commit cd8048b477
10 changed files with 103 additions and 26 deletions

View File

@ -4,7 +4,7 @@ $colour-near-black: #011627;
$colour-near-white: #fdfffc; $colour-near-white: #fdfffc;
$colour-light-blue: #2e8ac4; $colour-light-blue: #2e8ac4;
$colour-red: #e71d36; $colour-red: #e71d36;
$colour-orange: #f69e12; $colour-orange: #ef9912;
$background-colour: $colour-near-white; $background-colour: $colour-near-white;
$text-colour: $colour-near-black; $text-colour: $colour-near-black;
@ -52,3 +52,6 @@ $pagination-border-hover-colour: $colour-light-blue;
$pagination-current-background-colour: $colour-orange; $pagination-current-background-colour: $colour-orange;
$pagination-current-text-colour: $colour-near-white; $pagination-current-text-colour: $colour-near-white;
$pagination-current-border-colour: $colour-orange; $pagination-current-border-colour: $colour-orange;
$infobox-background-colour: $colour-near-white;
$infobox-text-colour: $colour-near-black;

View File

@ -14,6 +14,10 @@ strong {
margin-bottom: 20px !important; margin-bottom: 20px !important;
} }
.padding-top {
padding-top: 20px;
}
.errors { .errors {
background-color: $box-error-background-colour; background-color: $box-error-background-colour;
border-radius: 2px; border-radius: 2px;

View File

@ -63,7 +63,7 @@ main {
a { a {
color: $main-link-colour; color: $main-link-colour;
text-decoration: underline; text-decoration: none;
&:hover { &:hover {
color: $main-link-hover-colour; color: $main-link-hover-colour;
} }
@ -131,6 +131,11 @@ main {
} }
} }
.infobox {
background-color: $infobox-background-colour;
color: $infobox-text-colour;
}
} }
footer { footer {

View File

@ -0,0 +1,11 @@
{% if message %}
<div class="row">
<div class="col s12">
<div class="card infobox">
<div class="card-content">
<i class="fas fa-info-circle"></i> {{ message }}
</div>
</div>
</div>
</div>
{% endif %}

View File

@ -1,7 +1,11 @@
{% if paginator.num_pages > 1 %} {% if paginator.num_pages > 1 %}
<div class="pagination"> <div class="row">
{% for i in paginator.page_range %} <div class="col s12">
<a class="pagenum{% if i == page_obj.number %} currentpage{% endif %}" href="?page={{ i }}">{{ i }}</a> <div class="pagination">
{% endfor %} {% for i in paginator.page_range %}
<a class="pagenum{% if i == page_obj.number %} currentpage{% endif %}" href="?page={{ i }}">{{ i }}</a>
{% endfor %}
</div>
</div>
</div> </div>
{% endif %} {% endif %}

View File

@ -0,0 +1,28 @@
{% extends 'base.html' %}
{% block headtitle %}Update source - {{ source.name }}{% endblock %}
{% block content %}
<div class="row no-margin-bottom">
<div class="col s12">
<h1>Update source <strong>{{ source.name }}</strong></h1>
<p>
You can use this form to update your source. A source is what's polled on regular
basis to find new media to download, such as a channel or playlist. Any changes
to a source will only apply to new media and will not update media previously
downloaded.
</p>
</div>
</div>
<div class="row">
<form method="post" action="{% url 'sync:update-source' pk=source.pk %}" class="col s12 simpleform">
{% csrf_token %}
{% include 'simpleform.html' with form=form %}
<div class="row no-margin-bottom padding-top">
<div class="col s12">
<button class="btn" type="submit" name="action">Update source <i class="fas fa-pen-square"></i></button>
</div>
</div>
</form>
</div>
{% endblock %}

View File

@ -6,7 +6,7 @@
<div class="row"> <div class="row">
<div class="col s12"> <div class="col s12">
<h1 class="truncate">Source <strong>{{ source.name }}</strong></h1> <h1 class="truncate">Source <strong>{{ source.name }}</strong></h1>
<p class="truncate"><strong><a href="{{ source.url }}" target="_blank">{{ source.url }}</a></strong></p> <p class="truncate"><strong><a href="{{ source.url }}" target="_blank"><i class="fas fa-link"></i> {{ source.url }}</a></strong></p>
<p class="truncate">Saving to: <strong>{{ source.directory_path }}</strong></p> <p class="truncate">Saving to: <strong>{{ source.directory_path }}</strong></p>
</div> </div>
</div> </div>
@ -75,12 +75,12 @@
</table> </table>
</div> </div>
</div> </div>
<div class="row no-margin-bottom"> <div class="row no-margin-bottom padding-top">
<div class="col s12 l6 margin-bottom"> <div class="col s12 l6 margin-bottom">
<a href="" class="btn"><i class="fas fa-pen-square"></i> Edit source</a> <a href="{% url 'sync:update-source' pk=source.pk %}" class="btn">Edit source <i class="fas fa-pen-square"></i></a>
</div> </div>
<div class="col s12 l6 margin-bottom"> <div class="col s12 l6 margin-bottom">
<a href="" class="btn delete-button"><i class="fas fa-trash-alt"></i> Delete source</a> <a href="" class="btn delete-button">Delete source <i class="fas fa-trash-alt"></i></a>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -3,12 +3,13 @@
{% block headtitle %}Sources{% endblock %} {% block headtitle %}Sources{% endblock %}
{% block content %} {% block content %}
{% include 'infobox.html' with message=message %}
<div class="row no-margin-bottom"> <div class="row no-margin-bottom">
<div class="col s12 l6 margin-bottom"> <div class="col s12 l6 margin-bottom">
<a href="{% url 'sync:validate-source' source_type='youtube-channel' %}" class="btn"><i class="fab fa-youtube"></i> Add a YouTube channel</a> <a href="{% url 'sync:validate-source' source_type='youtube-channel' %}" class="btn">Add a YouTube channel <i class="fab fa-youtube"></i></a>
</div> </div>
<div class="col s12 l6 margin-bottom"> <div class="col s12 l6 margin-bottom">
<a href="{% url 'sync:validate-source' source_type='youtube-playlist' %}" class="btn"><i class="fab fa-youtube"></i> Add a YouTube playlist</a> <a href="{% url 'sync:validate-source' source_type='youtube-playlist' %}" class="btn">Add a YouTube playlist <i class="fab fa-youtube"></i></a>
</div> </div>
</div> </div>
<div class="row no-margin-bottom"> <div class="row no-margin-bottom">
@ -27,11 +28,5 @@
</div> </div>
</div> </div>
</div> </div>
{% if sources %} {% include 'pagination.html' with pagination=sources.paginator %}
<div class="row">
<div class="col s12">
{% include 'pagination.html' with pagination=sources.paginator %}
</div>
</div>
{% endif %}
{% endblock %} {% endblock %}

View File

@ -1,6 +1,6 @@
from django.urls import path from django.urls import path
from .views import (DashboardView, SourcesView, ValidateSourceView, AddSourceView, from .views import (DashboardView, SourcesView, ValidateSourceView, AddSourceView,
SourceView, MediaView, TasksView, LogsView) SourceView, UpdateSourceView, MediaView, TasksView, LogsView)
app_name = 'sync' app_name = 'sync'
@ -8,19 +8,23 @@ app_name = 'sync'
urlpatterns = [ urlpatterns = [
# Dashboard URLs
path('', path('',
DashboardView.as_view(), DashboardView.as_view(),
name='dashboard'), name='dashboard'),
# Source URLs
path('sources', path('sources',
SourcesView.as_view(), SourcesView.as_view(),
name='sources'), name='sources'),
path('source/validate/<slug:source_type>', path('source-validate/<slug:source_type>',
ValidateSourceView.as_view(), ValidateSourceView.as_view(),
name='validate-source'), name='validate-source'),
path('source/add', path('source-add',
AddSourceView.as_view(), AddSourceView.as_view(),
name='add-source'), name='add-source'),
@ -28,14 +32,24 @@ urlpatterns = [
SourceView.as_view(), SourceView.as_view(),
name='source'), name='source'),
path('source-update/<uuid:pk>',
UpdateSourceView.as_view(),
name='update-source'),
# Media URLs
path('media', path('media',
MediaView.as_view(), MediaView.as_view(),
name='media'), name='media'),
# Task URLs
path('tasks', path('tasks',
TasksView.as_view(), TasksView.as_view(),
name='tasks'), name='tasks'),
# Log URLs
path('logs', path('logs',
LogsView.as_view(), LogsView.as_view(),
name='logs'), name='logs'),

View File

@ -1,7 +1,7 @@
from django.conf import settings from django.conf import settings
from django.http import Http404 from django.http import Http404
from django.views.generic import TemplateView, ListView, DetailView from django.views.generic import TemplateView, ListView, DetailView
from django.views.generic.edit import FormView, CreateView from django.views.generic.edit import FormView, CreateView, UpdateView
from django.urls import reverse_lazy from django.urls import reverse_lazy
from django.forms import ValidationError from django.forms import ValidationError
from django.utils.text import slugify from django.utils.text import slugify
@ -32,7 +32,7 @@ class SourcesView(ListView):
context_object_name = 'sources' context_object_name = 'sources'
paginate_by = settings.SOURCES_PER_PAGE paginate_by = settings.SOURCES_PER_PAGE
messages = { messages = {
'source-added': _('Your new source has been added'), 'source-created': _('Your new source has been added'),
'source-deleted': _('Your selected source has been deleted.'), 'source-deleted': _('Your selected source has been deleted.'),
'source-updated': _('Your selected source has been updated.'), 'source-updated': _('Your selected source has been updated.'),
} }
@ -108,7 +108,7 @@ class ValidateSourceView(FormView):
Source.SOURCE_TYPE_YOUTUBE_PLAYLIST: { Source.SOURCE_TYPE_YOUTUBE_PLAYLIST: {
'scheme': 'https', 'scheme': 'https',
'domain': 'www.youtube.com', 'domain': 'www.youtube.com',
'path_regex': '^\/playlist$', 'path_regex': '^\/(playlist|watch)$',
'qs_args': ['list'], 'qs_args': ['list'],
'extract_key': ('qs_args', 'list'), 'extract_key': ('qs_args', 'list'),
'example': 'https://www.youtube.com/playlist?list=PLAYLISTID' 'example': 'https://www.youtube.com/playlist?list=PLAYLISTID'
@ -233,6 +233,19 @@ class SourceView(DetailView):
model = Source model = Source
class UpdateSourceView(UpdateView):
template_name = 'sync/source-update.html'
model = Source
fields = ('source_type', 'key', 'name', 'directory', 'delete_old_media',
'days_to_keep', 'source_profile', 'prefer_60fps', 'prefer_hdr',
'output_format', 'fallback')
def get_success_url(self):
url = reverse_lazy('sync:sources')
return append_uri_params(url, {'message': 'source-updated'})
class MediaView(TemplateView): class MediaView(TemplateView):
''' '''
A bare list of media added with their states. A bare list of media added with their states.