parent
62a8ad7e8b
commit
475cebbd8f
12 changed files with 370 additions and 26 deletions
@ -0,0 +1,8 @@ |
||||
from django.contrib import admin |
||||
|
||||
from .models import Course |
||||
|
||||
|
||||
@admin.register(Course) |
||||
class CourseAdmin(admin.ModelAdmin): |
||||
pass |
||||
@ -0,0 +1,6 @@ |
||||
from django.apps import AppConfig |
||||
|
||||
|
||||
class CourseConfig(AppConfig): |
||||
name = 'apps.course' |
||||
label = 'lilcity_course' |
||||
@ -0,0 +1,25 @@ |
||||
from django.db import models |
||||
|
||||
|
||||
class Course(models.Model): |
||||
title = models.CharField("Название курса", max_length=100) |
||||
short_description = models.TextField("Краткое описание курса") |
||||
background = models.ImageField("Фон курса", upload_to='courses') |
||||
price = models.DecimalField("Цена курса", help_text="Если цены нету, то курс бесплатный", max_digits=10, decimal_places=2, null=True, blank=True) |
||||
is_highlighted = models.BooleanField(default=False) |
||||
deferred_start = models.DateTimeField("Отложенный запуск курса", help_text="Заполнить если курс отложенный", null=True, blank=True) |
||||
|
||||
# created_at |
||||
# update_at |
||||
|
||||
# category |
||||
|
||||
def is_free(self): |
||||
if self.price: |
||||
return False |
||||
return True |
||||
|
||||
class Meta: |
||||
verbose_name = "Курс" |
||||
verbose_name_plural = "Курсы" |
||||
|
||||
@ -0,0 +1,3 @@ |
||||
from django.test import TestCase |
||||
|
||||
# Create your tests here. |
||||
@ -0,0 +1,9 @@ |
||||
from django.views.generic import ListView |
||||
|
||||
from .models import Course |
||||
|
||||
|
||||
class CoursesView(ListView): |
||||
model = Course |
||||
context_object_name = "course_items" |
||||
template_name = "templates/lilcity/courses.html" |
||||
@ -0,0 +1,42 @@ |
||||
{% load static %} |
||||
|
||||
<div class="courses__item"><a class="courses__preview" href="#"><img class="courses__pic" src="{% get_media_prefix %}{{ course.background }}"/> |
||||
<div class="courses__view">Подробнее</div> |
||||
{% if course.is_highlighted %} |
||||
<div class="courses__label courses__label_fav"></div> |
||||
{% endif %} |
||||
{% if course.deferred_start %} |
||||
<div class="courses__soon"> |
||||
<div class="courses__left">До запуска курса осталось:</div> |
||||
<div class="courses__time">16 часов 13 минут</div> |
||||
</div> |
||||
<div class="courses__label courses__label_clock"></div> |
||||
{% endif %} |
||||
</a> |
||||
<div class="courses__details"><a class="courses__theme theme" href="#">АНИМАЦИЯ</a> |
||||
<div class="courses__price">30$</div> |
||||
</div> |
||||
<a class="courses__title" href="#">{{ course.title }}</a> |
||||
<div class="courses__content">{{ course.short_description }} |
||||
</div> |
||||
<div class="courses__user user"> |
||||
<div class="user__ava ava"><img class="ava__pic" src={% static "img/user.jpg" %}/></div> |
||||
<div class="user__info"> |
||||
<div class="user__name">Александра Неимоверноумная</div> |
||||
<div class="user__meta"> |
||||
<div class="user__date">SEPT 12, 2017</div> |
||||
<a class="user__likes likes" href="#"> |
||||
<div class="likes__counter">253</div> |
||||
<div class="likes__icon"> |
||||
<svg class="icon icon-like"> |
||||
<use xlink:href="{% get_static_prefix %}img/sprite.svg#icon-like"></use> |
||||
</svg> |
||||
<svg class="icon icon-like-fill"> |
||||
<use xlink:href="{% get_static_prefix %}img/sprite.svg#icon-like-fill"></use> |
||||
</svg> |
||||
</div> |
||||
</a> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
@ -0,0 +1,266 @@ |
||||
{% extends "templates/lilcity/index.html" %} |
||||
{% load static %} |
||||
|
||||
{% block content %} |
||||
<div class="main" style="background-image: url({% static "img/bg-1.jpg" %});"> |
||||
<div class="main__center center"> |
||||
<div class="main__title">Онлайн-курсы LilCity</div> |
||||
</div> |
||||
</div> |
||||
<div class="section"> |
||||
<div class="section__center center"> |
||||
<div class="text text_lg"> |
||||
<p>Учите и развивайте креативное мышление когда и где угодно. Если вам не совсем удобно заниматься с нами в прямом эфире каждый день как в |
||||
нашей онлайн-школе, специально для вас мы делаем отдельные уроки в записи, которые вы можете проходить |
||||
когда вам будем удобно.</p><img class="text__curve text__curve_four" src={% static "img/curve-4.svg" %} width="155"></div> |
||||
<div class="head"> |
||||
<div class="head__title title title_center">Курсы</div> |
||||
<div class="head__right"> |
||||
<div class="head__field field"> |
||||
<div class="field__wrap"> |
||||
<div class="field__select select js-select"> |
||||
<div class="select__head js-select-head">Категории</div> |
||||
<div class="select__drop js-select-drop"> |
||||
<div class="select__option js-select-option"> |
||||
<div class="select__title">Персонаж</div> |
||||
</div> |
||||
<div class="select__option js-select-option"> |
||||
<div class="select__title">Акварель</div> |
||||
</div> |
||||
<div class="select__option js-select-option"> |
||||
<div class="select__title">Иллюстрация</div> |
||||
</div> |
||||
<div class="select__option js-select-option"> |
||||
<div class="select__title">Анимация</div> |
||||
</div> |
||||
<div class="select__option js-select-option"> |
||||
<div class="select__title">Пастель</div> |
||||
</div> |
||||
<div class="select__option js-select-option"> |
||||
<div class="select__title">Пластилин</div> |
||||
</div> |
||||
<div class="select__option js-select-option"> |
||||
<div class="select__title">Креативное мышление</div> |
||||
</div> |
||||
<div class="select__option js-select-option"> |
||||
<div class="select__title">Моторика</div> |
||||
</div> |
||||
<div class="select__option js-select-option"> |
||||
<div class="select__title">Живопись</div> |
||||
</div> |
||||
</div> |
||||
<input class="select__input" type="hidden"></div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="courses"> |
||||
<div class="courses__list"> |
||||
{% for course in course_items %} |
||||
{% include "templates/lilcity/_courses_item.html" %} |
||||
{% endfor %} |
||||
|
||||
<div class="courses__item"><a class="courses__preview" href="#"><img class="courses__pic" src={% static "img/pic-1.jpg" %}/> |
||||
<div class="courses__view">Подробнее</div> |
||||
<div class="courses__label courses__label_fav"></div> |
||||
</a> |
||||
<div class="courses__details"><a class="courses__theme theme" href="#">АНИМАЦИЯ</a> |
||||
<div class="courses__price">30$</div> |
||||
</div> |
||||
<a class="courses__title" href="#">Базовый курс для детей по основам иллюстрации</a> |
||||
<div class="courses__content">Этот курс поможет детям узнать о том как из простых форм создавать веселый и харизматичных персонажей. |
||||
</div> |
||||
<div class="courses__user user"> |
||||
<div class="user__ava ava"><img class="ava__pic" src={% static "img/user.jpg" %}/></div> |
||||
<div class="user__info"> |
||||
<div class="user__name">Александра Неимоверноумная</div> |
||||
<div class="user__meta"> |
||||
<div class="user__date">SEPT 12, 2017</div> |
||||
<a class="user__likes likes" href="#"> |
||||
<div class="likes__counter">253</div> |
||||
<div class="likes__icon"> |
||||
<svg class="icon icon-like"> |
||||
<use xlink:href={% static "img/sprite.svg#icon-like" %}></use> |
||||
</svg> |
||||
<svg class="icon icon-like-fill"> |
||||
<use xlink:href={% static "img/sprite.svg#icon-like-fill" %}></use> |
||||
</svg> |
||||
</div> |
||||
</a> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="courses__item"><a class="courses__preview" href="#"><img class="courses__pic" src={% static "img/pic-1.jpg" %}/> |
||||
<div class="courses__view">Подробнее</div> |
||||
<div class="courses__soon"> |
||||
<div class="courses__left">До запуска курса осталось:</div> |
||||
<div class="courses__time">16 часов 13 минут</div> |
||||
</div> |
||||
<div class="courses__label courses__label_clock"></div> |
||||
</a> |
||||
<div |
||||
class="courses__details"><a class="courses__theme theme theme_green" href="#">АНИМАЦИЯ</a> |
||||
<div class="courses__price">30$</div> |
||||
</div> |
||||
<a class="courses__title" href="#">Базовый курс для детей по основам иллюстрации</a> |
||||
<div class="courses__content">Этот курс поможет детям узнать о том как из простых форм создавать веселый и харизматичных персонажей. |
||||
</div> |
||||
<div class="courses__user user"> |
||||
<div class="user__ava ava"><img class="ava__pic" src={% static "img/user.jpg" %}/></div> |
||||
<div class="user__info"> |
||||
<div class="user__name">Александра Неимоверноумная</div> |
||||
<div class="user__meta"> |
||||
<div class="user__date">SEPT 12, 2017</div> |
||||
<a class="user__likes likes" href="#"> |
||||
<div class="likes__counter">253</div> |
||||
<div class="likes__icon"> |
||||
<svg class="icon icon-like"> |
||||
<use xlink:href="img/sprite.svg#icon-like"></use> |
||||
</svg> |
||||
<svg class="icon icon-like-fill"> |
||||
<use xlink:href="img/sprite.svg#icon-like-fill"></use> |
||||
</svg> |
||||
</div> |
||||
</a> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="courses__item"><a class="courses__preview" href="#"><img class="courses__pic" src={% static "img/pic-1.jpg" %}/> |
||||
<div class="courses__view">Подробнее</div> |
||||
</a> |
||||
<div class="courses__details"><a class="courses__theme theme theme_violet" href="#">АНИМАЦИЯ</a> |
||||
<div class="courses__price">30$</div> |
||||
</div> |
||||
<a class="courses__title" href="#">Базовый курс для детей по основам иллюстрации</a> |
||||
<div class="courses__content">Этот курс поможет детям узнать о том как из простых форм создавать веселый и харизматичных персонажей. |
||||
</div> |
||||
<div class="courses__user user"> |
||||
<div class="user__ava ava"><img class="ava__pic" src={% static "img/user.jpg" %}/></div> |
||||
<div class="user__info"> |
||||
<div class="user__name">Александра Неимоверноумная</div> |
||||
<div class="user__meta"> |
||||
<div class="user__date">SEPT 12, 2017</div> |
||||
<a class="user__likes likes" href="#"> |
||||
<div class="likes__counter">253</div> |
||||
<div class="likes__icon"> |
||||
<svg class="icon icon-like"> |
||||
<use xlink:href="img/sprite.svg#icon-like"></use> |
||||
</svg> |
||||
<svg class="icon icon-like-fill"> |
||||
<use xlink:href="img/sprite.svg#icon-like-fill"></use> |
||||
</svg> |
||||
</div> |
||||
</a> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="courses__item"><a class="courses__preview" href="#"><img class="courses__pic" src={% static "img/pic-1.jpg" %}/> |
||||
<div class="courses__view">Подробнее</div> |
||||
</a> |
||||
<div class="courses__details"><a class="courses__theme theme" href="#">АНИМАЦИЯ</a> |
||||
<div class="courses__price">30$</div> |
||||
</div> |
||||
<a class="courses__title" href="#">Базовый курс для детей по основам иллюстрации</a> |
||||
<div class="courses__content">Этот курс поможет детям узнать о том как из простых форм создавать веселый и харизматичных персонажей. |
||||
</div> |
||||
<div class="courses__user user"> |
||||
<div class="user__ava ava"><img class="ava__pic" src={% static "img/user.jpg" %}/></div> |
||||
<div class="user__info"> |
||||
<div class="user__name">Александра Неимоверноумная</div> |
||||
<div class="user__meta"> |
||||
<div class="user__date">SEPT 12, 2017</div> |
||||
<a class="user__likes likes" href="#"> |
||||
<div class="likes__counter">253</div> |
||||
<div class="likes__icon"> |
||||
<svg class="icon icon-like"> |
||||
<use xlink:href="img/sprite.svg#icon-like"></use> |
||||
</svg> |
||||
<svg class="icon icon-like-fill"> |
||||
<use xlink:href="img/sprite.svg#icon-like-fill"></use> |
||||
</svg> |
||||
</div> |
||||
</a> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="courses__item"><a class="courses__preview" href="#"><img class="courses__pic" src={% static "img/pic-1.jpg" %}/> |
||||
<div class="courses__view">Подробнее</div> |
||||
</a> |
||||
<div class="courses__details"><a class="courses__theme theme theme_green" href="#">АНИМАЦИЯ</a> |
||||
<div class="courses__price">30$</div> |
||||
</div> |
||||
<a class="courses__title" href="#">Базовый курс для детей по основам иллюстрации</a> |
||||
<div class="courses__content">Этот курс поможет детям узнать о том как из простых форм создавать веселый и харизматичных персонажей. |
||||
</div> |
||||
<div class="courses__user user"> |
||||
<div class="user__ava ava"><img class="ava__pic" src={% static "img/user.jpg" %}/></div> |
||||
<div class="user__info"> |
||||
<div class="user__name">Александра Неимоверноумная</div> |
||||
<div class="user__meta"> |
||||
<div class="user__date">SEPT 12, 2017</div> |
||||
<a class="user__likes likes" href="#"> |
||||
<div class="likes__counter">253</div> |
||||
<div class="likes__icon"> |
||||
<svg class="icon icon-like"> |
||||
<use xlink:href="img/sprite.svg#icon-like"></use> |
||||
</svg> |
||||
<svg class="icon icon-like-fill"> |
||||
<use xlink:href="img/sprite.svg#icon-like-fill"></use> |
||||
</svg> |
||||
</div> |
||||
</a> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="courses__item"><a class="courses__preview" href="#"><img class="courses__pic" src={% static "img/pic-1.jpg" %}/> |
||||
<div class="courses__view">Подробнее</div> |
||||
</a> |
||||
<div class="courses__details"><a class="courses__theme theme theme_violet" href="#">АНИМАЦИЯ</a> |
||||
<div class="courses__price">30$</div> |
||||
</div> |
||||
<a class="courses__title" href="#">Базовый курс для детей по основам иллюстрации</a> |
||||
<div class="courses__content">Этот курс поможет детям узнать о том как из простых форм создавать веселый и харизматичных персонажей. |
||||
</div> |
||||
<div class="courses__user user"> |
||||
<div class="user__ava ava"><img class="ava__pic" src={% static "img/user.jpg" %}/></div> |
||||
<div class="user__info"> |
||||
<div class="user__name">Александра Неимоверноумная</div> |
||||
<div class="user__meta"> |
||||
<div class="user__date">SEPT 12, 2017</div> |
||||
<a class="user__likes likes" href="#"> |
||||
<div class="likes__counter">253</div> |
||||
<div class="likes__icon"> |
||||
<svg class="icon icon-like"> |
||||
<use xlink:href={% static "img/sprite.svg#icon-like" %}></use> |
||||
</svg> |
||||
<svg class="icon icon-like-fill"> |
||||
<use xlink:href={% static "img/sprite.svg#icon-like-fill" %}></use> |
||||
</svg> |
||||
</div> |
||||
</a> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="courses__load load"> |
||||
<button class="load__btn btn">Подгрузить еще</button> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="game"> |
||||
<div class="game__center center"> |
||||
<div class="game__wrap"> |
||||
<div class="game__theme">LILCITY</div> |
||||
<div class="game__title">Приложения, развивающие игры и интерактивные книги от Lil City.</div> |
||||
<a class="game__btn btn btn_dark" href="#">УЗНАТЬ БОЛЬШЕ</a></div> |
||||
</div> |
||||
<div class="game__preview"><img class="game__pic" src={% static "img/icons.png" %}></div> |
||||
</div> |
||||
{% endblock content %} |
||||
Loading…
Reference in new issue