Commit 121d6d28 by Егор Юганов

till lesson 25, till navigation menu

1 parent d3bc83a1
No preview for this file type
......@@ -3,8 +3,12 @@
<component name="ChangeListManager">
<list default="true" id="1205db3d-1d9f-4461-8852-53a7931d6ea3" name="Default" comment="">
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/db.sqlite3" afterPath="$PROJECT_DIR$/db.sqlite3" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/music/models.py" afterPath="$PROJECT_DIR$/music/models.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/music/templates/music/detail.html" afterPath="$PROJECT_DIR$/music/templates/music/detail.html" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/music/templates/music/index.html" afterPath="$PROJECT_DIR$/music/templates/music/index.html" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/music/urls.py" afterPath="$PROJECT_DIR$/music/urls.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/music/views.py" afterPath="$PROJECT_DIR$/music/views.py" />
</list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" />
......@@ -16,11 +20,11 @@
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="views.py" pinned="false" current-in-tab="true">
<file leaf-file-name="views.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/music/views.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210">
<caret line="14" column="40" lean-forward="false" selection-start-line="14" selection-start-column="40" selection-end-line="14" selection-end-column="40" />
<state relative-caret-position="435">
<caret line="29" column="69" lean-forward="false" selection-start-line="29" selection-start-column="69" selection-end-line="29" selection-end-column="69" />
<folding>
<element signature="e#0#31#0" expanded="true" />
</folding>
......@@ -31,18 +35,28 @@
<file leaf-file-name="detail.html" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/music/templates/music/detail.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="45">
<caret line="3" column="13" lean-forward="false" selection-start-line="3" selection-start-column="13" selection-end-line="3" selection-end-column="13" />
<state relative-caret-position="330">
<caret line="22" column="138" lean-forward="false" selection-start-line="22" selection-start-column="138" selection-end-line="22" selection-end-column="138" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="index.html" pinned="false" current-in-tab="false">
<file leaf-file-name="style.css" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/music/static/music/style.css">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="15">
<caret line="1" column="48" lean-forward="false" selection-start-line="1" selection-start-column="48" selection-end-line="1" selection-end-column="48" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="index.html" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/music/templates/music/index.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="75">
<caret line="5" column="20" lean-forward="true" selection-start-line="5" selection-start-column="20" selection-end-line="5" selection-end-column="20" />
<state relative-caret-position="45">
<caret line="3" column="0" lean-forward="true" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
<folding />
</state>
</provider>
......@@ -51,8 +65,8 @@
<file leaf-file-name="models.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/music/models.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="165">
<caret line="11" column="58" lean-forward="false" selection-start-line="11" selection-start-column="58" selection-end-line="11" selection-end-column="58" />
<state relative-caret-position="270">
<caret line="18" column="51" lean-forward="false" selection-start-line="18" selection-start-column="51" selection-end-line="18" selection-end-column="51" />
<folding>
<element signature="e#24#63#0" expanded="true" />
</folding>
......@@ -64,7 +78,7 @@
<entry file="file://$PROJECT_DIR$/music/admin.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="105">
<caret line="7" column="25" lean-forward="true" selection-start-line="7" selection-start-column="25" selection-end-line="7" selection-end-column="25" />
<caret line="7" column="25" lean-forward="false" selection-start-line="7" selection-start-column="25" selection-end-line="7" selection-end-column="25" />
<folding>
<element signature="e#24#63#0" expanded="true" />
</folding>
......@@ -75,8 +89,8 @@
<file leaf-file-name="urls.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/music/urls.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="105">
<caret line="8" column="32" lean-forward="false" selection-start-line="8" selection-start-column="32" selection-end-line="8" selection-end-column="32" />
<state relative-caret-position="180">
<caret line="13" column="4" lean-forward="false" selection-start-line="13" selection-start-column="4" selection-end-line="13" selection-end-column="4" />
<folding />
</state>
</provider>
......@@ -100,11 +114,12 @@
<list>
<option value="$PROJECT_DIR$/website/urls.py" />
<option value="$PROJECT_DIR$/website/settings.py" />
<option value="$PROJECT_DIR$/music/admin.py" />
<option value="$PROJECT_DIR$/music/models.py" />
<option value="$PROJECT_DIR$/music/urls.py" />
<option value="$PROJECT_DIR$/music/views.py" />
<option value="$PROJECT_DIR$/music/models.py" />
<option value="$PROJECT_DIR$/music/admin.py" />
<option value="$PROJECT_DIR$/music/templates/music/detail.html" />
<option value="$PROJECT_DIR$/music/static/music/style.css" />
<option value="$PROJECT_DIR$/music/templates/music/index.html" />
</list>
</option>
......@@ -129,7 +144,6 @@
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="Scratches" />
<pane id="ProjectPane">
<subPane>
<PATH>
......@@ -170,8 +184,31 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="website" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="website" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="music" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="static" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="music" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
<pane id="Scratches" />
<pane id="Scope" />
</panes>
</component>
......@@ -261,6 +298,9 @@
<component name="ShelveChangesManager" show_recycled="false">
<option name="remove_strategy" value="false" />
</component>
<component name="SvnConfiguration">
<configuration />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="1205db3d-1d9f-4461-8852-53a7931d6ea3" name="Default" comment="" />
......@@ -303,19 +343,71 @@
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/website/__init__.py">
<entry file="file://$PROJECT_DIR$/music/views.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="e#0#31#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/music/templates/music/detail.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="45">
<caret line="3" column="13" lean-forward="false" selection-start-line="3" selection-start-column="13" selection-end-line="3" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/music/templates/music/index.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="75">
<caret line="5" column="20" lean-forward="true" selection-start-line="5" selection-start-column="20" selection-end-line="5" selection-end-column="20" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/music/models.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="135">
<caret line="11" column="58" lean-forward="false" selection-start-line="11" selection-start-column="58" selection-end-line="11" selection-end-column="58" />
<folding>
<element signature="e#24#63#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/music/admin.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="60">
<caret line="7" column="25" lean-forward="true" selection-start-line="7" selection-start-column="25" selection-end-line="7" selection-end-column="25" />
<folding>
<element signature="e#24#63#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/music/urls.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="105">
<caret line="8" column="32" lean-forward="false" selection-start-line="8" selection-start-column="32" selection-end-line="8" selection-end-column="32" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/website/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/website/settings.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="450">
<caret line="30" column="24" lean-forward="false" selection-start-line="30" selection-start-column="24" selection-end-line="30" selection-end-column="24" />
<folding />
</state>
</provider>
</entry>
......@@ -323,9 +415,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="285">
<caret line="20" column="39" lean-forward="false" selection-start-line="20" selection-start-column="39" selection-end-line="20" selection-end-column="39" />
<folding>
<element signature="e#641#682#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
......@@ -341,9 +430,7 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="105">
<caret line="8" column="32" lean-forward="false" selection-start-line="8" selection-start-column="32" selection-end-line="8" selection-end-column="32" />
<folding>
<element signature="e#0#32#0" expanded="false" />
</folding>
<folding />
</state>
</provider>
</entry>
......@@ -389,7 +476,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
......@@ -397,7 +483,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="450">
<caret line="30" column="24" lean-forward="false" selection-start-line="30" selection-start-column="24" selection-end-line="30" selection-end-column="24" />
<folding />
</state>
</provider>
</entry>
......@@ -405,9 +490,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="300">
<caret line="20" column="39" lean-forward="false" selection-start-line="20" selection-start-column="39" selection-end-line="20" selection-end-column="39" />
<folding>
<element signature="e#641#682#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
......@@ -425,9 +507,7 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="120">
<caret line="8" column="32" lean-forward="false" selection-start-line="8" selection-start-column="32" selection-end-line="8" selection-end-column="32" />
<folding>
<element signature="e#0#32#0" expanded="false" />
</folding>
<folding />
</state>
</provider>
</entry>
......@@ -471,7 +551,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
......@@ -479,7 +558,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="450">
<caret line="30" column="24" lean-forward="true" selection-start-line="30" selection-start-column="24" selection-end-line="30" selection-end-column="24" />
<folding />
</state>
</provider>
</entry>
......@@ -487,9 +565,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="300">
<caret line="20" column="39" lean-forward="false" selection-start-line="20" selection-start-column="39" selection-end-line="20" selection-end-column="39" />
<folding>
<element signature="e#641#682#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
......@@ -497,9 +572,7 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="120">
<caret line="8" column="32" lean-forward="false" selection-start-line="8" selection-start-column="32" selection-end-line="8" selection-end-column="32" />
<folding>
<element signature="e#0#32#0" expanded="false" />
</folding>
<folding />
</state>
</provider>
</entry>
......@@ -545,7 +618,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
......@@ -553,7 +625,6 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="450">
<caret line="30" column="24" lean-forward="false" selection-start-line="30" selection-start-column="24" selection-end-line="30" selection-end-column="24" />
<folding />
</state>
</provider>
</entry>
......@@ -565,67 +636,72 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/website/urls.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225">
<caret line="15" column="0" lean-forward="true" selection-start-line="15" selection-start-column="0" selection-end-line="15" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/music/admin.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="105">
<caret line="7" column="25" lean-forward="true" selection-start-line="7" selection-start-column="25" selection-end-line="7" selection-end-column="25" />
<caret line="7" column="25" lean-forward="false" selection-start-line="7" selection-start-column="25" selection-end-line="7" selection-end-column="25" />
<folding>
<element signature="e#24#63#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/website/urls.py">
<entry file="file://$PROJECT_DIR$/music/models.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225">
<caret line="15" column="0" lean-forward="true" selection-start-line="15" selection-start-column="0" selection-end-line="15" selection-end-column="0" />
<state relative-caret-position="270">
<caret line="18" column="51" lean-forward="false" selection-start-line="18" selection-start-column="51" selection-end-line="18" selection-end-column="51" />
<folding>
<element signature="e#641#682#0" expanded="false" />
<element signature="e#24#63#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/music/urls.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="105">
<caret line="8" column="32" lean-forward="false" selection-start-line="8" selection-start-column="32" selection-end-line="8" selection-end-column="32" />
<state relative-caret-position="180">
<caret line="13" column="4" lean-forward="false" selection-start-line="13" selection-start-column="4" selection-end-line="13" selection-end-column="4" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/music/templates/music/detail.html">
<entry file="file://$PROJECT_DIR$/music/views.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="45">
<caret line="3" column="13" lean-forward="false" selection-start-line="3" selection-start-column="13" selection-end-line="3" selection-end-column="13" />
<folding />
<state relative-caret-position="435">
<caret line="29" column="69" lean-forward="false" selection-start-line="29" selection-start-column="69" selection-end-line="29" selection-end-column="69" />
<folding>
<element signature="e#0#31#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/music/templates/music/index.html">
<entry file="file://$PROJECT_DIR$/music/templates/music/detail.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="75">
<caret line="5" column="20" lean-forward="true" selection-start-line="5" selection-start-column="20" selection-end-line="5" selection-end-column="20" />
<state relative-caret-position="330">
<caret line="22" column="138" lean-forward="false" selection-start-line="22" selection-start-column="138" selection-end-line="22" selection-end-column="138" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/music/models.py">
<entry file="file://$PROJECT_DIR$/music/static/music/style.css">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="165">
<caret line="11" column="58" lean-forward="false" selection-start-line="11" selection-start-column="58" selection-end-line="11" selection-end-column="58" />
<folding>
<element signature="e#24#63#0" expanded="true" />
</folding>
<state relative-caret-position="15">
<caret line="1" column="48" lean-forward="false" selection-start-line="1" selection-start-column="48" selection-end-line="1" selection-end-column="48" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/music/views.py">
<entry file="file://$PROJECT_DIR$/music/templates/music/index.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210">
<caret line="14" column="40" lean-forward="false" selection-start-line="14" selection-start-column="40" selection-end-line="14" selection-end-column="40" />
<folding>
<element signature="e#0#31#0" expanded="true" />
</folding>
<state relative-caret-position="45">
<caret line="3" column="0" lean-forward="true" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
......
No preview for this file type
No preview for this file type
# -*- coding: utf-8 -*-
# Generated by Django 1.11.2 on 2017-06-27 08:10
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('music', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='song',
name='is_favorite',
field=models.BooleanField(default=False),
),
]
No preview for this file type
......@@ -16,6 +16,7 @@ class Song(models.Model):
album = models.ForeignKey(Album, on_delete=models.CASCADE)
file_type = models.CharField(max_length=10)
song_title = models.CharField(max_length=250)
is_favorite = models.BooleanField(default=False)
def __str__(self):
return self.song_title
\ No newline at end of file
No preview for this file type
No preview for this file type
No preview for this file type
body{
background: white url("images/background.jpg");
}
\ No newline at end of file
<img src="{{ album.album_logo }}">
<img src="{{ album.album_logo }}" height="42" width="42">
<h1>{{ album.album_title }}</h1>
<h3>{{ album.artist }}</h3>
<h2>{{ album.artist }}</h2>
<ul>
<!-- <ul>
{% for song in album.song_set.all %}
<li>{{ song.song_title }} - {{ song.file_type }}</li>
{% endfor %}
</ul>
\ No newline at end of file
</ul> -->
{% if error_message %}
<p><strong>{{ error_message }}</strong></p>
{% endif %}
<form action="{% url 'music:favorite' album.id %}" method="post">
{% csrf_token %}
{% for song in album.song_set.all %}
<input type="radio" id="song{{ forloop.counter }}" name="song" value="{{ song.id }}"> <!-- auto-incremented each time it prints a song -->
<label for="song{{ forloop.counter }}">
{{ song.song_title }}
{% if song.is_favorite %}
<img src="http://grumpygaycritic.co.uk/wp-content/uploads/2015/06/Crystal_Clear_action_bookmark.png" height="16" width="16">
{% endif %}
</label><br>
{% endfor %}
<input type="submit" value="Favorite">
</form>
\ No newline at end of file
<!-- Loads the path to your static files -->
{% load staticfiles %}
<link rel="stylesheet" type="text/css" href="{% static 'music/style.css' %}" />
{% if all_albums %}
<h3>Here are all my Albums</h3>
<ul>
{% for album in all_albums %}
<li><a href="{% url 'detail' album.id %}">{{ album.album_title }}</a></li>
<li><a href="{% url 'music:detail' album.id %}">{{ album.album_title }}</a></li>
{% endfor %}
</ul>
{% else %}
......
from django.conf.urls import url
from . import views
app_name = 'music'
urlpatterns = [
# /music/
url(r'^$', views.index, name='index'), # r - regular exp., ^ - start, $ - end. this is for /music/
# /muisic/71/
url(r'^(?P<album_id>[0-9]+)/$', views.detail, name='detail'),
# /muisic/71/favorite/
url(r'^(?P<album_id>[0-9]+)/favorite/$', views.favorite, name='favorite'),
]
No preview for this file type
from django.http import Http404
from django.shortcuts import render
from .models import Album
from django.shortcuts import render, get_object_or_404
from .models import Album, Song
def index(request):
all_albums = Album.objects.all()
......@@ -8,8 +8,23 @@ def index(request):
return render(request, 'music/index.html', context)
def detail(request, album_id):
#try:
# album = Album.objects.get(pk=album_id)
#except Album.DoesNotExist:
# raise Http404("Album does not exist")
# Instead of the above:
album = get_object_or_404(Album, pk=album_id)
return render(request, 'music/detail.html', {'album': album})
def favorite(request, album_id):
album = get_object_or_404(Album, pk=album_id)
try:
album = Album.objects.get(pk=album_id)
except Album.DoesNotExist:
raise Http404("Album does not exist")
selected_song = album.song_set.get(pk=request.POST['song'])
except (KeyError, Song.DoesNotExist):
return render(request, 'music/detail.html', {'album': album, 'error_message': "You did not select a valid song"})
else:
selected_song.is_favorite = True
selected_song.save()
return render(request, 'music/detail.html', {'album': album})
\ No newline at end of file
No preview for this file type
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!