LIL-94 Added model "Course"

remotes/origin/hasaccess
Sergey G 8 years ago
parent 62a8ad7e8b
commit 475cebbd8f
  1. 0
      apps/course/__init__.py
  2. 8
      apps/course/admin.py
  3. 6
      apps/course/apps.py
  4. 0
      apps/course/migrations/__init__.py
  5. 25
      apps/course/models.py
  6. 3
      apps/course/tests.py
  7. 9
      apps/course/views.py
  8. 1
      project/settings.py
  9. 42
      project/templates/lilcity/_courses_item.html
  10. 266
      project/templates/lilcity/courses.html
  11. 27
      project/templates/lilcity/index.html
  12. 9
      project/urls.py

@ -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"

@ -44,6 +44,7 @@ INSTALLED_APPS = [
'apps.user', 'apps.user',
'apps.notification', 'apps.notification',
'apps.payment', 'apps.payment',
'apps.course',
] ]
MIDDLEWARE = [ MIDDLEWARE = [

@ -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 %}

@ -125,32 +125,7 @@
</div> </div>
</header> </header>
<div class="container"> <div class="container">
<div class="center" style="padding-top: 50px; padding-bottom: 50px;"> {% block content %}{% endblock content %}
<div><a href="email/index.html">email.html</a></div><br>
<div><a href="ui-kit.html">ui-kit.html</a></div><br>
<div><a href="main.html">main.html</a></div>
<div><a href="main-online.html">main-online.html</a></div>
<div><a href="main-online-soon.html">main-online-soon.html</a></div>
<div><a href="courses.html">courses.html</a></div>
<div><a href="result.html">result.html</a></div>
<div><a href="result-empty.html">result-empty.html</a></div>
<div><a href="course.html">course.html</a></div>
<div><a href="course-v2.html">course-v2.html</a></div>
<div><a href="course-soon.html">course-soon.html</a></div>
<div><a href="course-lock.html">course-lock.html</a></div>
<div><a href="course-bought.html">course-bought.html</a></div>
<div><a href="lesson.html">lesson.html</a></div>
<div><a href="profile.html">profile.html</a></div>
<div><a href="profile-settings.html">profile-settings.html</a></div>
<div><a href="profile-alerts.html">profile-alerts.html</a></div>
<div><a href="become-author.html">become-author.html</a></div>
<div><a href="history-transactions.html">history-transactions.html</a></div>
<div><a href="success-payment.html">success-payment.html</a></div>
<div><a href="success-application.html">success-application.html</a></div><br>
<div><a href="course-add.html">course-add.html</a></div>
<div><a href="course-add-lessons.html">course-add-lessons.html</a></div>
<div><a href="lesson-add.html">lesson-add.html</a></div>
</div>
</div> </div>
<footer class="footer"> <footer class="footer">
<div class="footer__center center"> <div class="footer__center center">

@ -16,9 +16,18 @@ Including another URLconf
from django.contrib import admin from django.contrib import admin
from django.urls import path, include from django.urls import path, include
from django.views.generic import TemplateView from django.views.generic import TemplateView
from django.conf import settings
from apps.course.views import CoursesView
urlpatterns = [ urlpatterns = [
path('admin/', admin.site.urls), path('admin/', admin.site.urls),
path('auth/', include(('apps.auth.urls', 'lilcity'))), path('auth/', include(('apps.auth.urls', 'lilcity'))),
path('courses/', CoursesView.as_view()),
path('', TemplateView.as_view(template_name="templates/lilcity/index.html")), path('', TemplateView.as_view(template_name="templates/lilcity/index.html")),
] ]
if settings.DEBUG:
from django.conf.urls.static import static
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Loading…
Cancel
Save