Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added Practice/Kisunkina/__init__.py
Empty file.
14 changes: 14 additions & 0 deletions Practice/Kisunkina/lec 13/homework 13.1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Привести два примера предметной области, для представления которых лучше использовать
# NoSQL-подход. Аргументировать ответ, используя критерии выбора между SQL и NoSQL.

1) В моей голове возник пример с Википедией:
+ масштабируемое хранилище информации
+ прозрачность внесения изменений (добавление новых узлов и связей или их удаление)

2) Веб - аналитика:
+ обеспечение быстрого доступа к данным
+ хранение больших объемов агрегированных даннх

3) социальные сети:
+ иммет сложные отношения между объектами, несмотря на это идёт легкий поик по базе данных
+ требуемая скорость работы и обработки внесенной информации
29 changes: 29 additions & 0 deletions Practice/Kisunkina/lec 14/homework_14.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Написать функцию to_roman, которая принимает целое число, а возвращает строку,
# отображающую это число римскими цифрами. Например, на вход подается 6, возвращается - "VI";
# на вход подается 23, возвращается "XXIII". Входные данные должны быть в диапазоне от 1 до 5000,
# если подается число не из этого диапазона, или не число, то должны выбрасываться ошибка типа
# NonValidInput. Этот тип ошибки надо создать отдельно. Также необходимо в папке с файлом,
# содержащим вашу функцию, создать файл tests.py, внутри которой необходимо определить тесты для
# вашей функции. Тесты должны покрывать все возможное поведение функции, включая порождения ошибки
# при некорректных входных данных.

class Error(Exception):
pass

class RomanNumber:
__roman_numbers = {'M': 1000, 'CM': 900, 'D': 500, 'CD': 400,
'C': 100, 'XC': 90, 'L': 50, 'XL': 40,
'X': 10, 'IX': 9, 'V': 5, 'IV': 4, 'I': 1}
max_number = 5000

def to_roman(self, number):
roman = ""
if isinstance(number, int):
if 1 <= number <= self.max_number:
for key, value in self.__roman_numbers.items():
while number >= value:
roman += key
number -= value
return roman
raise Error("NonValidInput")

16 changes: 16 additions & 0 deletions Practice/Kisunkina/lec 14/test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import pytest
from homework_14 import RomanNumber
from homework_14 import Error


class TestMyProv:
_test_roman = RomanNumber()

@pytest.mark.parametrize("number, roman_number", [(9, "IX"), (1050, "ML")])
def test_to_roman(self, number, roman_number):
assert self._test_roman.to_roman(number) == roman_number

@pytest.mark.parametrize("number", ['3459', 5521, -2])
def test_my_error1(self, number):
with pytest.raises(Error):
self._test_roman.to_roman(number)
Empty file.
Empty file.
8 changes: 8 additions & 0 deletions Practice/Kisunkina/lec 15/coolapp/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@


# Register your models here.

from django.contrib import admin
from .models import Film

admin.site.register(Film)
6 changes: 6 additions & 0 deletions Practice/Kisunkina/lec 15/coolapp/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.apps import AppConfig


class CoolappConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'coolapp'
Binary file added Practice/Kisunkina/lec 15/coolapp/foto/111.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
23 changes: 23 additions & 0 deletions Practice/Kisunkina/lec 15/coolapp/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Generated by Django 4.2.4 on 2023-08-12 13:15

from django.db import migrations, models


class Migration(migrations.Migration):

initial = True

dependencies = [
]

operations = [
migrations.CreateModel(
name='Film',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=200)),
('desc', models.TextField()),
('pub_date', models.DateTimeField(auto_now_add=True, verbose_name='date published')),
],
),
]
19 changes: 19 additions & 0 deletions Practice/Kisunkina/lec 15/coolapp/migrations/0002_film_rate.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Generated by Django 4.2.4 on 2023-08-12 13:53

import django.core.validators
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('coolapp', '0001_initial'),
]

operations = [
migrations.AddField(
model_name='film',
name='rate',
field=models.IntegerField(default=1, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(10)]),
),
]
Empty file.
8 changes: 8 additions & 0 deletions Practice/Kisunkina/lec 15/coolapp/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from django.db import models
from django.core.validators import MaxValueValidator, MinValueValidator

class Film(models.Model):
name = models.CharField(max_length=200)
desc = models.TextField()
pub_date = models.DateTimeField('date published', auto_now_add=True)
rate = models.IntegerField(validators=[MinValueValidator(1), MaxValueValidator(10)], default=1)
3 changes: 3 additions & 0 deletions Practice/Kisunkina/lec 15/coolapp/static/css/main.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
body {
background-color: #f6e4fa; /* Цвет фона */
}
Empty file.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file.
15 changes: 15 additions & 0 deletions Practice/Kisunkina/lec 15/coolapp/templates/coolapp/base.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{% load static %}

<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="{% static 'css/main.css' %}">
<meta charset="UTF-8">
<title>About films</title>
</head>
<body>
<h1><a href="/films">Нажми на меня, чтобы посмотреть фильмы!</a></h1>
{% block content %}
{% endblock %}
</body>
</html>
16 changes: 16 additions & 0 deletions Practice/Kisunkina/lec 15/coolapp/templates/coolapp/films.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{% extends 'coolapp/base.html' %}
{% block content %}
<h1><a href="/">Нажми на меня, чтобы вернуться на главную страницу!</a></h1>

{% for film in films %}
<h2> {{ film.name }} </h2>
<p> {{ film.desc }} </p>
{% if film.pub_date %}
<p> Film date - {{ film.pub_date }}! </p>
{% else %}
<p> Film date - Unknown! </p>
{% endif %}
<p> {{ film.rate }} </p>
{% endfor %}

{% endblock content %}
8 changes: 8 additions & 0 deletions Practice/Kisunkina/lec 15/coolapp/templates/coolapp/forms.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from django import forms
from coolapp.models import Film

class FilmForm(forms.ModelForm):
class Meta:
model = Film
fields = ('name', 'desc', 'rate')
# поля pub_date и id заполняются сами
18 changes: 18 additions & 0 deletions Practice/Kisunkina/lec 15/coolapp/templates/coolapp/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{% extends 'coolapp/base.html' %}
{% block content %}

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>Привет, ты находишься на сайте {{ sitename }}</h1>
<p>Эта страница посвящена нескольким фильмам!</p>
<p>Приятного просмотра!</p>
<img src="https://i.ytimg.com/vi/xY3us_q0s_w/mqdefault.jpg">
</body>
</html>

{% endblock content %}
9 changes: 9 additions & 0 deletions Practice/Kisunkina/lec 15/coolapp/templates/coolapp/new.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{% extends 'coolapp/base.html' %}
{% block content %}

<h1>New film</h1>
<form method="POST">{% csrf_token %}
{{ form.as_p }}
<button type="submit">Save</button> </form>

{% endblock content %}
3 changes: 3 additions & 0 deletions Practice/Kisunkina/lec 15/coolapp/tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.test import TestCase

# Create your tests here.
10 changes: 10 additions & 0 deletions Practice/Kisunkina/lec 15/coolapp/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from django.urls import path
from . import views


urlpatterns = [
path('', views.index, name='index'),
path('new/', views.new, name='new'),
path('films/', views.films, name='films'),
path('<int:film_id>/', views.new, name='new'),
]
43 changes: 43 additions & 0 deletions Practice/Kisunkina/lec 15/coolapp/views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@


# Create your views here.

from django.http import HttpResponse

from django.shortcuts import render
from .models import Film
from .templates.coolapp.forms import FilmForm
from django.shortcuts import redirect


def index(request):
return render(request, 'coolapp/index.html')

def films(request):
return render(request, 'coolapp/films.html',
{'films': Film.objects.all()})

# def new(request):
# return render(request, 'coolapp/new.html', {'form': FilmForm()})

def new(request, film_id=None):
if request.method == "POST":
form = FilmForm(request.POST)
if form.is_valid():
film = form.save()
return redirect(f'/{film.id}', film=film)
if film_id:
film = Film.objects.get(id=film_id)
else:
film = Film()
return render(request, 'coolapp/new.html',
{'form': FilmForm(instance=film)})

def index(request):
return render(request, 'coolapp/index.html', {'sitename': 'О хороших фильмах'})






Empty file.
16 changes: 16 additions & 0 deletions Practice/Kisunkina/lec 15/coolsite/asgi.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
"""
ASGI config for coolsite project.

It exposes the ASGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/4.2/howto/deployment/asgi/
"""

import os

from django.core.asgi import get_asgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'coolsite.settings')

application = get_asgi_application()
Loading