init
4
.dockerignore
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
.dockerignore
|
||||||
|
makefile
|
||||||
|
README.md
|
||||||
|
.secrets
|
0
.gitignore
vendored
Normal file
4
.secrets
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
for /adminsystemdb
|
||||||
|
|
||||||
|
login 1w05h7py180p4h10g
|
||||||
|
password fos2g5i47tt90n1p
|
17
Dockerfile
Executable file
@ -0,0 +1,17 @@
|
|||||||
|
FROM python:alpine
|
||||||
|
|
||||||
|
EXPOSE 80
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
RUN python3 -m venv venv
|
||||||
|
|
||||||
|
RUN venv/bin/pip3 install django==5.0
|
||||||
|
|
||||||
|
RUN venv/bin/python3 manage.py migrate
|
||||||
|
|
||||||
|
RUN venv/bin/python3 manage.py makemigrations
|
||||||
|
|
||||||
|
CMD [ "venv/bin/python3", "manage.py", "runserver", "0.0.0.0:80", "--insecure" ]
|
0
adminsystemdb/__init__.py
Executable file
5
adminsystemdb/admin.py
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
from django.contrib import admin
|
||||||
|
from .models import Poseters
|
||||||
|
|
||||||
|
# Register your models here.
|
||||||
|
admin.site.register(Poseters)
|
6
adminsystemdb/apps.py
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
|
class AdminsystemdbConfig(AppConfig):
|
||||||
|
default_auto_field = 'django.db.models.BigAutoField'
|
||||||
|
name = 'adminsystemdb'
|
25
adminsystemdb/migrations/0001_initial.py
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
# Generated by Django 4.1.6 on 2023-04-17 06:09
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
initial = True
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Poseters',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('papka', models.CharField(max_length=20, verbose_name='papka')),
|
||||||
|
('title', models.TextField(verbose_name='tilte')),
|
||||||
|
('authror', models.TextField(verbose_name='author')),
|
||||||
|
('date', models.CharField(max_length=40, verbose_name='date')),
|
||||||
|
('content', models.TextField(verbose_name='render content')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
19
adminsystemdb/migrations/0002_poseters_desc.py
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
# Generated by Django 4.1.6 on 2023-04-17 07:50
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('adminsystemdb', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='poseters',
|
||||||
|
name='desc',
|
||||||
|
field=models.TextField(default=str, verbose_name='desctiption'),
|
||||||
|
preserve_default=False,
|
||||||
|
),
|
||||||
|
]
|
18
adminsystemdb/migrations/0003_alter_poseters_authror.py
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 4.1.6 on 2023-04-17 07:53
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('adminsystemdb', '0002_poseters_desc'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='poseters',
|
||||||
|
name='authror',
|
||||||
|
field=models.TextField(blank=True, verbose_name='author'),
|
||||||
|
),
|
||||||
|
]
|
18
adminsystemdb/migrations/0004_poseters_img_preview.py
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 4.1.6 on 2023-04-22 19:57
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('adminsystemdb', '0003_alter_poseters_authror'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='poseters',
|
||||||
|
name='img_preview',
|
||||||
|
field=models.TextField(blank=True, verbose_name='img_preview'),
|
||||||
|
),
|
||||||
|
]
|
0
adminsystemdb/migrations/__init__.py
Executable file
13
adminsystemdb/models.py
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
from django.db import models
|
||||||
|
|
||||||
|
# Create your models here.
|
||||||
|
class Poseters(models.Model):
|
||||||
|
papka = models.CharField("papka", max_length=20)
|
||||||
|
title = models.TextField("tilte")
|
||||||
|
authror = models.TextField("author", blank=True)
|
||||||
|
date = models.CharField("date", max_length=40)
|
||||||
|
content = models.TextField("render content")
|
||||||
|
desc = models.TextField("desctiption")
|
||||||
|
img_preview = models.TextField("img_preview", blank=True)
|
||||||
|
def __str__(self) -> str:
|
||||||
|
return self.title
|
64
adminsystemdb/static/loginedtest/script.js
Executable file
@ -0,0 +1,64 @@
|
|||||||
|
const form = document.querySelector("form");
|
||||||
|
let list_preview = "[";
|
||||||
|
let postname = "";
|
||||||
|
let authtor = "";
|
||||||
|
|
||||||
|
form.addEventListener("submit", (e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
const foromdata = new FormData(form);
|
||||||
|
for (intem of foromdata) {
|
||||||
|
console.log(intem[0], intem[1]);
|
||||||
|
}
|
||||||
|
fetch("get_res", {
|
||||||
|
method: "POST",
|
||||||
|
body: foromdata,
|
||||||
|
})
|
||||||
|
.then((res) => res.json())
|
||||||
|
.then((res) => {
|
||||||
|
document.getElementById("header").value = "";
|
||||||
|
document.getElementById("text").value = "";
|
||||||
|
document.getElementById("img").value = "";
|
||||||
|
document.getElementById("log").value += res["text"];
|
||||||
|
list_preview += res["list_preview"];
|
||||||
|
|
||||||
|
document.getElementById("post_namee").value = res["postname"];
|
||||||
|
document.getElementById("authtorr").value = res["authtor"];
|
||||||
|
|
||||||
|
document.getElementById("to_list").value = list_preview + "]";
|
||||||
|
console.log(list_preview);
|
||||||
|
foromdata.append("tolist", list_preview + "]");
|
||||||
|
fetch("getlist", {
|
||||||
|
method: "POST",
|
||||||
|
body: foromdata,
|
||||||
|
})
|
||||||
|
.then((res) => res.json())
|
||||||
|
.then((res) => {
|
||||||
|
console.log(list_preview);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
function go_to_preview() {
|
||||||
|
try {
|
||||||
|
const foromdata = new FormData(form);
|
||||||
|
foromdata.append("tolist", list_preview + "]");
|
||||||
|
fetch("get_res/preview", {
|
||||||
|
method: "POST",
|
||||||
|
body: foromdata,
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function clear_all() {
|
||||||
|
list_preview = "[";
|
||||||
|
document.getElementById("header").value = "";
|
||||||
|
document.getElementById("text").value = "";
|
||||||
|
document.getElementById("log").value = "";
|
||||||
|
document.getElementById("post_name").value = "";
|
||||||
|
document.getElementById("post_name").value = "";
|
||||||
|
document.getElementById("desc").value = "";
|
||||||
|
document.getElementById("img").value = "";
|
||||||
|
document.getElementById("authtor").value = "";
|
||||||
|
}
|
666
adminsystemdb/static/loginedtest/style.css
Executable file
@ -0,0 +1,666 @@
|
|||||||
|
html,
|
||||||
|
body,
|
||||||
|
div,
|
||||||
|
span,
|
||||||
|
applet,
|
||||||
|
object,
|
||||||
|
iframe,
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6,
|
||||||
|
p,
|
||||||
|
blockquote,
|
||||||
|
pre,
|
||||||
|
a,
|
||||||
|
abbr,
|
||||||
|
acronym,
|
||||||
|
address,
|
||||||
|
big,
|
||||||
|
cite,
|
||||||
|
code,
|
||||||
|
del,
|
||||||
|
dfn,
|
||||||
|
em,
|
||||||
|
img,
|
||||||
|
ins,
|
||||||
|
kbd,
|
||||||
|
q,
|
||||||
|
s,
|
||||||
|
samp,
|
||||||
|
small,
|
||||||
|
strike,
|
||||||
|
strong,
|
||||||
|
sub,
|
||||||
|
sup,
|
||||||
|
tt,
|
||||||
|
var,
|
||||||
|
b,
|
||||||
|
u,
|
||||||
|
i,
|
||||||
|
center,
|
||||||
|
dl,
|
||||||
|
dt,
|
||||||
|
dd,
|
||||||
|
ol,
|
||||||
|
ul,
|
||||||
|
li,
|
||||||
|
fieldset,
|
||||||
|
form,
|
||||||
|
label,
|
||||||
|
legend,
|
||||||
|
table,
|
||||||
|
caption,
|
||||||
|
tbody,
|
||||||
|
tfoot,
|
||||||
|
thead,
|
||||||
|
tr,
|
||||||
|
th,
|
||||||
|
td,
|
||||||
|
article,
|
||||||
|
aside,
|
||||||
|
canvas,
|
||||||
|
details,
|
||||||
|
embed,
|
||||||
|
figure,
|
||||||
|
figcaption,
|
||||||
|
footer,
|
||||||
|
header,
|
||||||
|
hgroup,
|
||||||
|
menu,
|
||||||
|
nav,
|
||||||
|
output,
|
||||||
|
ruby,
|
||||||
|
section,
|
||||||
|
summary,
|
||||||
|
time,
|
||||||
|
mark,
|
||||||
|
audio,
|
||||||
|
video {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
font-size: 100%;
|
||||||
|
font: inherit;
|
||||||
|
vertical-align: baseline;
|
||||||
|
}
|
||||||
|
:focus {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
article,
|
||||||
|
aside,
|
||||||
|
details,
|
||||||
|
figcaption,
|
||||||
|
figure,
|
||||||
|
footer,
|
||||||
|
header,
|
||||||
|
hgroup,
|
||||||
|
menu,
|
||||||
|
nav,
|
||||||
|
section {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol,
|
||||||
|
ul {
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote,
|
||||||
|
q {
|
||||||
|
quotes: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote:before,
|
||||||
|
blockquote:after,
|
||||||
|
q:before,
|
||||||
|
q:after {
|
||||||
|
content: "";
|
||||||
|
content: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
border-spacing: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="search"]::-webkit-search-cancel-button,
|
||||||
|
input[type="search"]::-webkit-search-decoration,
|
||||||
|
input[type="search"]::-webkit-search-results-button,
|
||||||
|
input[type="search"]::-webkit-search-results-decoration {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
-moz-appearance: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="search"] {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
-moz-appearance: none;
|
||||||
|
-webkit-box-sizing: content-box;
|
||||||
|
-moz-box-sizing: content-box;
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
textarea {
|
||||||
|
overflow: auto;
|
||||||
|
vertical-align: top;
|
||||||
|
resize: vertical;
|
||||||
|
}
|
||||||
|
audio,
|
||||||
|
canvas,
|
||||||
|
video {
|
||||||
|
display: inline-block;
|
||||||
|
*display: inline;
|
||||||
|
*zoom: 1;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
audio:not([controls]) {
|
||||||
|
display: none;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
[hidden] {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
html {
|
||||||
|
font-size: 100%; /* 1 */
|
||||||
|
-webkit-text-size-adjust: 100%; /* 2 */
|
||||||
|
-ms-text-size-adjust: 100%; /* 2 */
|
||||||
|
}
|
||||||
|
a:focus {
|
||||||
|
outline: thin dotted;
|
||||||
|
}
|
||||||
|
a:active,
|
||||||
|
a:hover {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
border: 0; /* 1 */
|
||||||
|
-ms-interpolation-mode: bicubic; /* 2 */
|
||||||
|
}
|
||||||
|
figure {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
form {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
fieldset {
|
||||||
|
border: 1px solid #c0c0c0;
|
||||||
|
margin: 0 2px;
|
||||||
|
padding: 0.35em 0.625em 0.75em;
|
||||||
|
}
|
||||||
|
legend {
|
||||||
|
border: 0; /* 1 */
|
||||||
|
padding: 0;
|
||||||
|
white-space: normal; /* 2 */
|
||||||
|
*margin-left: -7px; /* 3 */
|
||||||
|
}
|
||||||
|
button,
|
||||||
|
input,
|
||||||
|
select,
|
||||||
|
textarea {
|
||||||
|
font-size: 100%; /* 1 */
|
||||||
|
margin: 0; /* 2 */
|
||||||
|
vertical-align: baseline; /* 3 */
|
||||||
|
*vertical-align: middle; /* 3 */
|
||||||
|
}
|
||||||
|
button,
|
||||||
|
input {
|
||||||
|
line-height: normal;
|
||||||
|
}
|
||||||
|
button,
|
||||||
|
select {
|
||||||
|
text-transform: none;
|
||||||
|
}
|
||||||
|
button,
|
||||||
|
html input[type="button"], /* 1 */
|
||||||
|
input[type="reset"],
|
||||||
|
input[type="submit"] {
|
||||||
|
-webkit-appearance: button; /* 2 */
|
||||||
|
cursor: pointer; /* 3 */
|
||||||
|
*overflow: visible; /* 4 */
|
||||||
|
}
|
||||||
|
button[disabled],
|
||||||
|
html input[disabled] {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
input[type="checkbox"],
|
||||||
|
input[type="radio"] {
|
||||||
|
box-sizing: border-box; /* 1 */
|
||||||
|
padding: 0; /* 2 */
|
||||||
|
*height: 13px; /* 3 */
|
||||||
|
*width: 13px; /* 3 */
|
||||||
|
}
|
||||||
|
input[type="search"] {
|
||||||
|
-webkit-appearance: textfield; /* 1 */
|
||||||
|
-moz-box-sizing: content-box;
|
||||||
|
-webkit-box-sizing: content-box; /* 2 */
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
input[type="search"]::-webkit-search-cancel-button,
|
||||||
|
input[type="search"]::-webkit-search-decoration {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
}
|
||||||
|
button::-moz-focus-inner,
|
||||||
|
input::-moz-focus-inner {
|
||||||
|
border: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
textarea {
|
||||||
|
overflow: auto; /* 1 */
|
||||||
|
vertical-align: top; /* 2 */
|
||||||
|
}
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
border-spacing: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
html,
|
||||||
|
button,
|
||||||
|
input,
|
||||||
|
select,
|
||||||
|
textarea {
|
||||||
|
color: #222;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-moz-selection {
|
||||||
|
background: #b3d4fc;
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
::selection {
|
||||||
|
background: #b3d4fc;
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
border: 0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
textarea {
|
||||||
|
resize: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chromeframe {
|
||||||
|
margin: 0.2em 0;
|
||||||
|
background: #ccc;
|
||||||
|
color: #000;
|
||||||
|
padding: 0.2em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
html {
|
||||||
|
box-sizing: border-box;
|
||||||
|
height: 100%;
|
||||||
|
scroll-behavior: smooth;
|
||||||
|
}
|
||||||
|
|
||||||
|
*,
|
||||||
|
*::after,
|
||||||
|
*::before {
|
||||||
|
box-sizing: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
font-family: "Roboto", sans-serif;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 1.2;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 1000px;
|
||||||
|
margin: 0 auto;
|
||||||
|
height: 100%;
|
||||||
|
padding: 0 0px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
background-color: #212429;
|
||||||
|
margin-top: 75px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.header h1 {
|
||||||
|
text-align: center;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 30px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main {
|
||||||
|
background-color: white;
|
||||||
|
flex: 1 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer {
|
||||||
|
background-color: #212429;
|
||||||
|
flex: 0 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
padding: 75px 0;
|
||||||
|
font-size: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.n_bar{
|
||||||
|
max-width: 175px;
|
||||||
|
width: 300px;
|
||||||
|
height: 100%;
|
||||||
|
margin: 0;
|
||||||
|
float: left;
|
||||||
|
font-size: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.in_content{
|
||||||
|
max-width: 1000px;
|
||||||
|
width: 650px;
|
||||||
|
margin-left: 50px;
|
||||||
|
/* display: inline; */
|
||||||
|
height: 100%;
|
||||||
|
text-align: left;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.button2 {
|
||||||
|
align-items: center;
|
||||||
|
background-color: rgba(255, 255, 255, 0.7);
|
||||||
|
color: #000000;
|
||||||
|
cursor: pointer;
|
||||||
|
display: flex;
|
||||||
|
font-family: ui-sans-serif,system-ui,-apple-system,system-ui,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 700;
|
||||||
|
line-height: 1.5;
|
||||||
|
text-decoration: none;
|
||||||
|
text-transform: uppercase;
|
||||||
|
outline: 0;
|
||||||
|
border: 0;
|
||||||
|
/* padding: 1rem; */
|
||||||
|
/* margin-bottom: 20px; */
|
||||||
|
margin-top: 20px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.button2:before {
|
||||||
|
background-color: #000000;
|
||||||
|
content: "";
|
||||||
|
display: inline-block;
|
||||||
|
height: 1px;
|
||||||
|
margin-right: 0px;
|
||||||
|
transition: all .42s cubic-bezier(.25,.8,.25,1);
|
||||||
|
width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button2:hover:before {
|
||||||
|
background-color: #000000;
|
||||||
|
width: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.gkod_team_label {
|
||||||
|
font-size: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo_img {
|
||||||
|
width: auto;
|
||||||
|
height: 70px;
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.title_img{
|
||||||
|
margin-top: 50px;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer .content {
|
||||||
|
color: #80808080;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar {
|
||||||
|
position: fixed;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 75px;
|
||||||
|
background: white;
|
||||||
|
border-bottom: 2px solid #e2e8f0;
|
||||||
|
|
||||||
|
/* #252850; */
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar__wrap {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hamb {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
text-decoration: none;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
text-transform: uppercase;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.menu > li > a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar__wrap .menu {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar__wrap .menu > li {
|
||||||
|
display: flex;
|
||||||
|
align-items: stretch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar__wrap .menu > li > a {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
padding: 0 20px;
|
||||||
|
/* color: rgba(255, 255, 255, 0.7); */
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar__wrap .menu > li > a:hover {
|
||||||
|
/* color: rgba(255, 255, 255, 1); */
|
||||||
|
/* color: #252850; */
|
||||||
|
background-color: #252850;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.menu2 > li > a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar__wrap .menu2 {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar__wrap .menu2 > li {
|
||||||
|
display: flex;
|
||||||
|
align-items: stretch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar__wrap .menu2 > li > a {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
padding: 0 20px;
|
||||||
|
/* color: rgba(255, 255, 255, 0.7); */
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar__wrap .menu2 > li > a:hover {
|
||||||
|
/* color: rgba(255, 255, 255, 1); */
|
||||||
|
/* color: #252850; */
|
||||||
|
background-color: #252850;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.title_logo:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* .more_butt{
|
||||||
|
width: 150px;
|
||||||
|
height: 35px;
|
||||||
|
background-color: rgba(107, 107, 107, 0.5);
|
||||||
|
color: white;
|
||||||
|
border-radius: 15px;
|
||||||
|
border-color: rgba(107, 107, 107);
|
||||||
|
font-size: 20px;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
.more_butt:hover{
|
||||||
|
background-color: #C89365;
|
||||||
|
color: black;
|
||||||
|
} */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.more_butt {
|
||||||
|
margin-top: 20px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
width: 200px;
|
||||||
|
background-color: #252850;
|
||||||
|
font-size: 15px;
|
||||||
|
/* background: transparent; */
|
||||||
|
/* padding: 1em 1.5em; */
|
||||||
|
/* #C89365; */
|
||||||
|
padding: 10px 20px;
|
||||||
|
color: #ffffff;
|
||||||
|
text-transform: uppercase;
|
||||||
|
transition: .5s ease;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.img_content{
|
||||||
|
border-radius: 15px;
|
||||||
|
border-color: rgba(107, 107, 107);
|
||||||
|
border: 2px;
|
||||||
|
margin-top: 20px;
|
||||||
|
height: auto;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.gkod_team_label {
|
||||||
|
font-size: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.selected{
|
||||||
|
background-color: #252850;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.card {
|
||||||
|
width: 100%;
|
||||||
|
max-height: 300px;
|
||||||
|
height: 300px;
|
||||||
|
text-align: center;
|
||||||
|
background-color: #C89365;
|
||||||
|
}
|
||||||
|
.card_img{
|
||||||
|
width: 50%;
|
||||||
|
height: 300px;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.card_text{
|
||||||
|
width: 50%;
|
||||||
|
max-height: 300px;
|
||||||
|
height: 300px;
|
||||||
|
float: left;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.card_in_img{
|
||||||
|
width: auto;
|
||||||
|
height: 100%;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.card_in_text{
|
||||||
|
height: auto;
|
||||||
|
margin: 0 auto;
|
||||||
|
font-family:'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||||
|
padding-left: 14px;
|
||||||
|
padding-right: 14px;
|
||||||
|
padding-top: 14px;
|
||||||
|
padding-bottom: 14px;
|
||||||
|
font-size: 22px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
BIN
adminsystemdb/static/tmp/z10.JPG
Executable file
After Width: | Height: | Size: 462 KiB |
BIN
adminsystemdb/static/tmp/zz10.JPG
Executable file
After Width: | Height: | Size: 462 KiB |
254
adminsystemdb/templates/blog_preview/index.html
Executable file
@ -0,0 +1,254 @@
|
|||||||
|
{% load static %}
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" href="{% static 'loginedtest/style.css' %}">
|
||||||
|
<link rel="stylesheet" href="{% static 'first/style.css' %}" />
|
||||||
|
<title>Preview</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav class="navbar">
|
||||||
|
<div class="container">
|
||||||
|
|
||||||
|
<div class="navbar__wrap">
|
||||||
|
|
||||||
|
<div class="hamb">
|
||||||
|
<div class="hamb__field" id="hamb">
|
||||||
|
<span class="bar"></span>
|
||||||
|
<span class="bar"></span>
|
||||||
|
<span class="bar"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="coltxt" onclick="window.location.href='{% url 'home' %}'">
|
||||||
|
<div style="width: 100%; font-size: 30px; align-self: center; height: 30px;" class="cool_text">
|
||||||
|
<div id="one" style="margin-left: 10px; padding-left: 10px;">E</div>
|
||||||
|
<div id="two"><div id="twoo">КАТЕРИНБУРГ</div></div>
|
||||||
|
|
||||||
|
<div id="three" style="color: blue;">G</div>
|
||||||
|
<div id="four"><div id="fourr">UIDE</div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mobile_coltxt" onclick="window.location.href='/'">
|
||||||
|
<label>EKB</label><label style="color: blue; padding-left: 0px; margin-left: 10px; margin-right: 10px;">GUIDE</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<ul class="menu" id="menu">
|
||||||
|
<li>
|
||||||
|
<span class="activate_dropdown" onclick="window.location.href='{% url 'history' %}'" {% if papka == 'history'%}style="background-color: rgba(75, 75, 225); color: white;"{% endif%}><label style="color:blue">И</label>стория</span>
|
||||||
|
<div class="moving_dropdown">
|
||||||
|
<div class="move_me_content">
|
||||||
|
{% block history_dropdown %}{% endblock %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<span class="activate_dropdown" onclick="window.location.href='{% url 'placess' %}'" {% if papka == 'places'%}style="background-color: rgba(75, 75, 225); color: white;"{% endif%}><label style="color:blue">М</label>еста</span>
|
||||||
|
<div class="moving_dropdown">
|
||||||
|
<div class="move_me_content">
|
||||||
|
{% block places_dropdown %}{% endblock %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<span class="activate_dropdown" onclick="window.location.href='{% url 'celebrity' %}'" {% if papka == 'celebrity'%}style="background-color: rgba(75, 75, 225); color: white;"{% endif%}><label style="color:blue">З</label>наменитости</span>
|
||||||
|
<div class="moving_dropdown">
|
||||||
|
<div class="move_me_content">
|
||||||
|
{% block celebrity_dropdown %}{% endblock %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<span class="activate_dropdown" onclick="window.location.href='{% url 'theaters_and_music' %}'" {% if papka == 'theaters_and_music'%}style="background-color: rgba(75, 75, 225); color: white;"{% endif%}><label style="color:blue">Т</label>еатры и музыка</span>
|
||||||
|
<div class="moving_dropdown">
|
||||||
|
<div class="move_me_content">
|
||||||
|
{% block theaters_and_music_dropdown %}{% endblock %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div class="popup" id="popup"><ul class="menu" id="menu">
|
||||||
|
<li style="width: 100%; justify-content: center;">
|
||||||
|
<div class="dropdown" style="width: 100%;">
|
||||||
|
<button style=" border: none; background-color: white;width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 20px 0;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: black;
|
||||||
|
border-top: 2px solid #e2e8f0;
|
||||||
|
border-bottom: 2px solid #e2e8f0;
|
||||||
|
margin-bottom: 10px;">test dropdown menu</button>
|
||||||
|
<div class="dropdown-content" style="background-color: white;">
|
||||||
|
<a href="/history">history</a>
|
||||||
|
<a href="/places">places</a>
|
||||||
|
<a href="/celebrities">celebrities</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li><a href="/history">История</a></li>
|
||||||
|
<li><a href="/places">Места</a></li>
|
||||||
|
<li><a href="/celebrities">Знаменитости</a></li>
|
||||||
|
<li><a href="/theaters">Театры и музыка</a></li>
|
||||||
|
<li style="width: 100%; justify-content: center;">
|
||||||
|
<div class="dropdown" style="width: 100%;">
|
||||||
|
<button style=" border: none; background-color: white;width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 20px 0;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: black;
|
||||||
|
border-top: 2px solid #e2e8f0;
|
||||||
|
border-bottom: 2px solid #e2e8f0;
|
||||||
|
margin-bottom: 10px;">test dropdown menu</button>
|
||||||
|
<div class="dropdown-content">
|
||||||
|
<a href="/history">history</a>
|
||||||
|
<a href="/places">places</a>
|
||||||
|
<a href="/celebrities">celebrities</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<main class="main">
|
||||||
|
<div class="container">
|
||||||
|
<div class="content">
|
||||||
|
|
||||||
|
<div class="n_bar">
|
||||||
|
{% if testthing %}
|
||||||
|
|
||||||
|
{% for object in testthing %}
|
||||||
|
{% if object.0 == 'header' %}
|
||||||
|
{% if forloop.counter == 1 %}
|
||||||
|
<a href="#hh{{ forloop.counter }}" style="word-wrap: break-word; overflow-wrap: break-word; padding-top: 10px;" class="button2">{{object.1}}</a>
|
||||||
|
{% else %}
|
||||||
|
<a href="#hh{{ forloop.counter }}" style="word-wrap: break-word; overflow-wrap: break-word;" class="button2">{{object.1}}</a>
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="in_content">
|
||||||
|
<br>
|
||||||
|
<label style="font-size: 40px; width: 40px; margin-top: 20px; word-wrap: break-word;">{% if title %}{{title}}{% else %}Нету названия!{% endif %}
|
||||||
|
<hr style="max-width: auto; margin-left: 0px;"></label>
|
||||||
|
|
||||||
|
|
||||||
|
{% if testthing %}
|
||||||
|
{% for object in testthing %}
|
||||||
|
|
||||||
|
{% if object.0 == 'header' %}
|
||||||
|
<div id="hh{{ forloop.counter }}"></div>
|
||||||
|
{% if forloop.counter == 1 %}
|
||||||
|
<div>
|
||||||
|
{% else %}
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<label style="font-size: 40px; width: 40px; overflow-wrap: break-word;">{{object.1}}<hr style="max-width: auto; margin-left:0;"></label>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{% if object.0 == 'text' %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<pre style="max-width: 650px; word-wrap: break-word; text-align: left;font-size: 20px; white-space: pre-wrap;">{{object.1}}</pre>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
{% if object.0 == 'img' %}
|
||||||
|
{% for picture in object.1 %}
|
||||||
|
<img src="{% static picture %}" class="img_content" alt="imgg">
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{% if authtor %}
|
||||||
|
<br>
|
||||||
|
<label>{{authtor}}</label>
|
||||||
|
{% endif %}
|
||||||
|
<br>
|
||||||
|
{{date}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<form method="post" action="{% url 'posttodb' %}">
|
||||||
|
{% csrf_token %}
|
||||||
|
<textarea style="display: none;" name="papka">{{papka}}</textarea>
|
||||||
|
|
||||||
|
<textarea style="display: none;" name="title">{{title}}</textarea>
|
||||||
|
|
||||||
|
<textarea style="display: none;" name="authtor">{{authtor}}</textarea>
|
||||||
|
<textarea style="display: none;" name="date">{{date}}</textarea>
|
||||||
|
<textarea style="display: none;" name="testthing">{{testthing}}</textarea>
|
||||||
|
<textarea style="display: none;" name="desc">{{desc}}</textarea>
|
||||||
|
<textarea style="display: none;" name="img_preview">{{img_preview}}</textarea>
|
||||||
|
<button style="width: 200px;height: 40px; border: none; ">post</button>
|
||||||
|
</form>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
<script src="{% static 'first/script.js' %}"></script>
|
||||||
|
<footer class="footer">
|
||||||
|
<div class="container" style="background: #212429;">
|
||||||
|
<div class="content">
|
||||||
|
<label class="gkod_team_label">Made by <label>Gkod</label> team</label
|
||||||
|
><br />
|
||||||
|
ggkkoodd@gmail.com
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<label onclick="window.location.href='/coments'"
|
||||||
|
>Форма для обратной связи
|
||||||
|
<hr style="max-width: 320px"
|
||||||
|
/></label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
10
adminsystemdb/templates/dbloginadmin/index.html
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
<form method="post" action="{% url 'editdbsite' %}">
|
||||||
|
{% csrf_token %}
|
||||||
|
<label>user</label>
|
||||||
|
<input name="userrr">
|
||||||
|
<br>
|
||||||
|
<label>password</label>
|
||||||
|
<input name="password" type="password">
|
||||||
|
<br>
|
||||||
|
<button type="submit">login</button>
|
||||||
|
</form>
|
192
adminsystemdb/templates/loginedtest/index.html
Executable file
@ -0,0 +1,192 @@
|
|||||||
|
{% load static %}
|
||||||
|
<div></div>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<style type="text/css">
|
||||||
|
* {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
border: none;
|
||||||
|
width: 200px;
|
||||||
|
height: 40px;
|
||||||
|
margin-top: 10px;
|
||||||
|
background: black;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btnn, .file-upload > input[type='file'] {
|
||||||
|
border: none;
|
||||||
|
height: 40px;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-upload {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-upload > input[type='file'] {
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
height: 100%;
|
||||||
|
opacity: 0;
|
||||||
|
cursor: pointer;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-upload > span {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 5px 10px;
|
||||||
|
background-color: #000;
|
||||||
|
border-radius: 5px;
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
color: #fff;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-container {
|
||||||
|
width: 600px;
|
||||||
|
height: 500px;
|
||||||
|
border: 2px solid black;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin: 0 auto;
|
||||||
|
display: flex;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-container > div {
|
||||||
|
width: 250px;
|
||||||
|
height: 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-container label {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-container input, .post-container textarea {
|
||||||
|
width: 100%;
|
||||||
|
height: 35px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
padding: 5px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-container textarea {
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview-container {
|
||||||
|
width: 600px;
|
||||||
|
border: 2px solid black;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin: 20px auto 0;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview-container label {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview-container textarea, .preview-container select, .preview-container button {
|
||||||
|
margin-top: 10px;
|
||||||
|
width: 100%;
|
||||||
|
padding: 5px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview-container select {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview-container button {
|
||||||
|
height: 40px;
|
||||||
|
background: black;
|
||||||
|
color: white;
|
||||||
|
border: none;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
<title>make post</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div>
|
||||||
|
<form method="POST" action="{% url 'postres' %}" enctype="multipart/form-data">
|
||||||
|
{% csrf_token %}
|
||||||
|
<div class="post-container">
|
||||||
|
<div>
|
||||||
|
<label for="post_name">Название статьи</label>
|
||||||
|
<input id="post_name" name="postname" value="" required>
|
||||||
|
|
||||||
|
<label for="log">log</label>
|
||||||
|
<textarea id="log"></textarea>
|
||||||
|
|
||||||
|
<label for="authtor">Автор</label>
|
||||||
|
<input id="authtor" name="authtor" value="" style="width: 160px;">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label for="header">Заголовок (max 69)</label>
|
||||||
|
<input id="header" name="header" value="" maxlength="69">
|
||||||
|
|
||||||
|
<label for="text">Текст</label>
|
||||||
|
<textarea id="text" name="text"></textarea>
|
||||||
|
|
||||||
|
<label for="img">Картинка:</label>
|
||||||
|
<label class="file-upload">
|
||||||
|
<span>Выбрать картинку/картинки</span>
|
||||||
|
<input type="file" accept="image/jpeg, image/png" id="img" name="imgg" multiple>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<button type="button" onclick="clear_all()">Очистить</button>
|
||||||
|
<button>Добавить</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<form method="POST" action="{% url 'blog_preview' %}" enctype="multipart/form-data" target="_blank">
|
||||||
|
{% csrf_token %}
|
||||||
|
<textarea style="display: none" name="to_list" id="to_list">
|
||||||
|
</textarea>
|
||||||
|
|
||||||
|
<textarea style="display: none" name="postnamee" id="post_namee">
|
||||||
|
</textarea>
|
||||||
|
|
||||||
|
<textarea style="display: none" name="authtorr" id="authtorr">
|
||||||
|
</textarea>
|
||||||
|
<div class="preview-container">
|
||||||
|
<div style="display: flex; flex-direction: column; margin-right: 20px;">
|
||||||
|
<label for="desc">Описание</label>
|
||||||
|
<textarea id="desc" name="desc"></textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="display: flex; flex-direction: column;">
|
||||||
|
<label style="font-size: 16px;">Картинка для предпросмотра</label>
|
||||||
|
<label class="file-upload" style="margin-top: 10px;">
|
||||||
|
<span>Выбрать картинку</span>
|
||||||
|
<input type="file" accept="image/jpeg, image/png" id="imgg_preview" name="imgg_preview">
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<select name="papka" required>
|
||||||
|
<option value=""> </option>
|
||||||
|
<option value="history">История</option>
|
||||||
|
<option value="places">Места</option>
|
||||||
|
<option value="celebrity">Знаменитости</option>
|
||||||
|
<option value="theaters_and_music">Театры и музыка</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<button type="submit">Перейти к предпросмотру</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<script src="{% static 'loginedtest/script.js' %}"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
226
adminsystemdb/templates/preview_api/base.html
Executable file
@ -0,0 +1,226 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
{% block style %}{% endblock %}
|
||||||
|
<title>{% block headmain %}{% endblock %}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav class="navbar">
|
||||||
|
<div class="container">
|
||||||
|
<div class="navbar__wrap">
|
||||||
|
<div class="hamb">
|
||||||
|
<div class="hamb__field" id="hamb">
|
||||||
|
<span class="bar"></span>
|
||||||
|
<span class="bar"></span>
|
||||||
|
<span class="bar"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="coltxt" onclick="window.location.href='{% url 'home' %}'">
|
||||||
|
<div
|
||||||
|
style="
|
||||||
|
width: 100%;
|
||||||
|
font-size: 30px;
|
||||||
|
align-self: center;
|
||||||
|
height: 30px;
|
||||||
|
"
|
||||||
|
class="cool_text"
|
||||||
|
>
|
||||||
|
<div id="one" style="margin-left: 10px; padding-left: 10px">
|
||||||
|
E
|
||||||
|
</div>
|
||||||
|
<div id="two"><div id="twoo">КАТЕРИНБУРГ</div></div>
|
||||||
|
|
||||||
|
<div id="three" style="color: blue">G</div>
|
||||||
|
<div id="four"><div id="fourr">UIDE</div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mobile_coltxt" onclick="window.location.href='/'">
|
||||||
|
<label>EKB</label
|
||||||
|
><label
|
||||||
|
style="
|
||||||
|
color: blue;
|
||||||
|
padding-left: 0px;
|
||||||
|
margin-left: 10px;
|
||||||
|
margin-right: 10px;
|
||||||
|
"
|
||||||
|
>GUIDE</label
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<ul class="menu" id="menu">
|
||||||
|
<li>
|
||||||
|
<span class="activate_dropdown" onclick="window.location.href='{% url 'history' %}'" {% if papka == 'history'%}style="background-color: rgba(75, 75, 225); color: white;"{% endif%}><label style="color:blue">И</label>стория</span>
|
||||||
|
<div class="moving_dropdown">
|
||||||
|
<div class="move_me_content">
|
||||||
|
{% block history_dropdown %}{% endblock %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<span class="activate_dropdown" onclick="window.location.href='{% url 'placess' %}'" {% if papka == 'places'%}style="background-color: rgba(75, 75, 225); color: white;"{% endif%}><label style="color:blue">М</label>еста</span>
|
||||||
|
<div class="moving_dropdown">
|
||||||
|
<div class="move_me_content">
|
||||||
|
{% block places_dropdown %}{% endblock %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<span class="activate_dropdown" onclick="window.location.href='{% url 'celebrity' %}'" {% if papka == 'celebrity'%}style="background-color: rgba(75, 75, 225); color: white;"{% endif%}><label style="color:blue">З</label>наменитости</span>
|
||||||
|
<div class="moving_dropdown">
|
||||||
|
<div class="move_me_content">
|
||||||
|
{% block celebrity_dropdown %}{% endblock %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<span class="activate_dropdown" onclick="window.location.href='{% url 'theaters_and_music' %}'" {% if papka == 'theaters_and_music'%}style="background-color: rgba(75, 75, 225); color: white;"{% endif%}><label style="color:blue">Т</label>еатры и музыка</span>
|
||||||
|
<div class="moving_dropdown">
|
||||||
|
<div class="move_me_content">
|
||||||
|
{% block theaters_and_music_dropdown %}{% endblock %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div class="popup" id="popup">
|
||||||
|
<ul class="menu" id="menu">
|
||||||
|
<li style="width: 100%; justify-content: center">
|
||||||
|
<div class="dropdown" style="width: 100%">
|
||||||
|
<button
|
||||||
|
style="
|
||||||
|
border: none;
|
||||||
|
background-color: white;
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 20px 0;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: black;
|
||||||
|
border-top: 2px solid #e2e8f0;
|
||||||
|
border-bottom: 2px solid #e2e8f0;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
test dropdown menu
|
||||||
|
</button>
|
||||||
|
<div class="dropdown-content" style="background-color: white">
|
||||||
|
<a href="/history">history</a>
|
||||||
|
<a href="/places">places</a>
|
||||||
|
<a href="/celebrities">celebrities</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li><a href="/history">История</a></li>
|
||||||
|
<li><a href="/places">Места</a></li>
|
||||||
|
<li><a href="/celebrities">Знаменитости</a></li>
|
||||||
|
<li><a href="/theaters">Театры и музыка</a></li>
|
||||||
|
<li style="width: 100%; justify-content: center">
|
||||||
|
<div class="dropdown" style="width: 100%">
|
||||||
|
<button
|
||||||
|
style="
|
||||||
|
border: none;
|
||||||
|
background-color: white;
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 20px 0;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: black;
|
||||||
|
border-top: 2px solid #e2e8f0;
|
||||||
|
border-bottom: 2px solid #e2e8f0;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
test dropdown menu
|
||||||
|
</button>
|
||||||
|
<div class="dropdown-content">
|
||||||
|
<a href="/history">history</a>
|
||||||
|
<a href="/places">places</a>
|
||||||
|
<a href="/celebrities">celebrities</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<main class="main">
|
||||||
|
<div class="container">
|
||||||
|
<div class="content">
|
||||||
|
{% block maincontent %}{% endblock %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer class="footer" style="">
|
||||||
|
<div class="container" style="background: #212429;">
|
||||||
|
<div class="content" style="
|
||||||
|
">
|
||||||
|
<div class="fo1" style="
|
||||||
|
">
|
||||||
|
|
||||||
|
<label>Основные разделы</label>
|
||||||
|
<br>
|
||||||
|
<label onclick="window.location.href='/history/'" style="
|
||||||
|
cursor: pointer;
|
||||||
|
">История</label>
|
||||||
|
|
||||||
|
<label onclick="window.location.href='/places/'" style="
|
||||||
|
cursor: pointer;
|
||||||
|
">Места</label>
|
||||||
|
<label onclick="window.location.href='/celebrity/'" style="
|
||||||
|
cursor: pointer;
|
||||||
|
">Знаменитости</label>
|
||||||
|
<label onclick="window.location.href='/theaters_and_music/'" style="
|
||||||
|
cursor: pointer;
|
||||||
|
">Театры и музыка</label>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="fo2">
|
||||||
|
<label class="gkod_team_label" style="
|
||||||
|
height: 50px;
|
||||||
|
width: 300px;
|
||||||
|
">Made by Gkod team</label><label onclick="window.location.href='mailto:gkod@gkod.fun'" style="
|
||||||
|
cursor: pointer;
|
||||||
|
">gkod@gkod.fun</label>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div style="display: flex;justify-content: center;align-items: center;flex-direction: column;margin-top: 30px;">
|
||||||
|
<label onclick="window.location.href='/coments'" style="
|
||||||
|
cursor: pointer;
|
||||||
|
">Форма для обратной связи
|
||||||
|
<hr style="max-width: 320px"></label>
|
||||||
|
<div style="
|
||||||
|
margin-top: 20px;
|
||||||
|
">
|
||||||
|
<img onclick="window.location.href='https://vk.com/okhlupin_k'" src="/static/tmp/sl286z9378p2687u5srp20230425131051.png"
|
||||||
|
style="height: 70px; cursor: pointer;" alt="vkicon"/>
|
||||||
|
<img onclick="window.location.href='https://t.me/koka_c17'" src="/static/tmp/q109d033r5q04i8734rl520230425155022.png"
|
||||||
|
style="height: 70px; cursor: pointer;" alt="tgicon"/></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
|
||||||
|
{% block js %}{% endblock %}
|
||||||
|
</body>
|
||||||
|
</html>
|
109
adminsystemdb/templates/preview_api/index.html
Executable file
@ -0,0 +1,109 @@
|
|||||||
|
{% extends "preview_api/base.html" %}
|
||||||
|
{% load static %}
|
||||||
|
|
||||||
|
{% block headmain %}EKB{% endblock %}
|
||||||
|
|
||||||
|
{% block style%}
|
||||||
|
<link rel="stylesheet" href="{% static 'loginedtest/style.css' %}">
|
||||||
|
<link rel="stylesheet" href="{% static 'first/style.css' %}" />
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{% block history_dropdown %}
|
||||||
|
{% if random_history %}
|
||||||
|
{% for ran in random_history %}
|
||||||
|
<a href="/{{ran.papka}}/?type={{ran.papka}}&title={{ran.title}}">{{ran.title}}</a>
|
||||||
|
{% endfor %}
|
||||||
|
{% else %}
|
||||||
|
<a href="">ошибка....</a>
|
||||||
|
{% endif %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
|
||||||
|
{% block places_dropdown %}
|
||||||
|
{% if random_places %}
|
||||||
|
{% for ran in random_places %}
|
||||||
|
<a href="/{{ran.papka}}/?type={{ran.papka}}&title={{ran.title}}">{{ran.title}}</a>
|
||||||
|
{% endfor %}
|
||||||
|
{% else %}
|
||||||
|
<a href="">ошибка....</a>
|
||||||
|
{% endif %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
|
||||||
|
{% block celebrity_dropdown %}
|
||||||
|
{% if random_celebrity %}
|
||||||
|
{% for ran in random_celebrity %}
|
||||||
|
<a href="/{{ran.papka}}/?type={{ran.papka}}&title={{ran.title}}">{{ran.title}}</a>
|
||||||
|
{% endfor %}
|
||||||
|
{% else %}
|
||||||
|
<a href="">ошибка....</a>
|
||||||
|
{% endif %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
|
||||||
|
{% block theaters_and_music_dropdown %}
|
||||||
|
{% if random_theaters_and_music %}
|
||||||
|
{% for ran in random_theaters_and_music %}
|
||||||
|
<a href="/{{ran.papka}}/?type={{ran.papka}}&title={{ran.title}}">{{ran.title}}</a>
|
||||||
|
{% endfor %}
|
||||||
|
{% else %}
|
||||||
|
<a href="">ошибка....</a>
|
||||||
|
{% endif %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{% block maincontent %}
|
||||||
|
|
||||||
|
<div class="n_bar">
|
||||||
|
|
||||||
|
<a href="#hh{{ forloop.counter }}" style="word-wrap: break-word; overflow-wrap: break-word; padding-top: 10px;" class="button2">{{title}}</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="in_content" style="padding-top: 25px;">
|
||||||
|
<label style="font-size: 40px; width: 40px;">{{namee}}<hr style="max-width: 400px; margin-left:0;"></label>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label style="font-size: 30px; margin-top: 20px;">{{title}}<hr style="max-width: 90px; margin-left:0;"></label>
|
||||||
|
|
||||||
|
<label style="font-size: 20px; ">{{desc}}</label>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<!-- <img src="{% static 'places/img/p1.jpg' %}" class="img_content"> -->
|
||||||
|
{% if img_preview %}
|
||||||
|
<img src="{% static img_preview %}" class="img_content">
|
||||||
|
{% endif %}
|
||||||
|
<button class="more_butt">Подробнее</button>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<form method="post" action="{% url 'blog_preview2' %}">
|
||||||
|
{% csrf_token %}
|
||||||
|
<textarea style="display: none;" name="papka">{{papka}}</textarea>
|
||||||
|
<textarea style="display: none;" name="title">{{title}}</textarea>
|
||||||
|
<textarea style="display: none;" name="authtor">{{authtor}}</textarea>
|
||||||
|
<textarea style="display: none;" name="testthing">{{testthing}}</textarea>
|
||||||
|
<textarea style="display: none;" name="desc">{{desc}}</textarea>
|
||||||
|
<textarea style="display: none;" name="img_preview">{{img_preview}}</textarea>
|
||||||
|
<button style="width: 200px;height: 40px; border: none; ">Далее</button>
|
||||||
|
</form>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
|
||||||
|
{% block js %}<script src="{% static 'first/script.js' %}"></script>{% endblock %}
|
3
adminsystemdb/tests.py
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
from django.test import TestCase
|
||||||
|
|
||||||
|
# Create your tests here.
|
15
adminsystemdb/ttmp.py
Executable file
@ -0,0 +1,15 @@
|
|||||||
|
import random
|
||||||
|
|
||||||
|
def main():
|
||||||
|
n = 20
|
||||||
|
al = "abcdefghigklmnopqrstuvwxyz"
|
||||||
|
thing = ""
|
||||||
|
for i in range(0, 16):
|
||||||
|
a = random.randint(0, 1)
|
||||||
|
if a == 0:
|
||||||
|
thing += al[random.randint(0, len(al))]
|
||||||
|
else:
|
||||||
|
thing += str(random.randint(0, 10))
|
||||||
|
print(thing)
|
||||||
|
input()
|
||||||
|
|
12
adminsystemdb/urls.py
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
from django.urls import path, include
|
||||||
|
from . import views
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
path('', views.index),
|
||||||
|
path('edit/', views.inacound, name='editdbsite'),
|
||||||
|
path('edit/get_res', views.get_data, name='postres'),
|
||||||
|
path('edit/getlist', views.clear_blog, name='clear_blog'),
|
||||||
|
path('edit/preview', views.blog_preview, name='blog_preview'),
|
||||||
|
path('edit/preview2', views.blog_preview2, name='blog_preview2'),
|
||||||
|
path("edit/postt", views.post_to_db, name='posttodb')
|
||||||
|
]
|
205
adminsystemdb/views.py
Executable file
@ -0,0 +1,205 @@
|
|||||||
|
from django.shortcuts import render, redirect, HttpResponse
|
||||||
|
from django.core.files.storage import default_storage
|
||||||
|
from django.core.files.base import ContentFile
|
||||||
|
from django.conf import settings
|
||||||
|
from .models import Poseters
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
|
import random
|
||||||
|
import json
|
||||||
|
import ast
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
# Create your views here.
|
||||||
|
def index(req):
|
||||||
|
# return redirect('dbloginadmin/index.html')
|
||||||
|
return render(req, 'dbloginadmin/index.html')
|
||||||
|
|
||||||
|
def inacound(req):
|
||||||
|
if req.method == 'POST':
|
||||||
|
if req.POST.get('userrr') == '1w05h7py180p4h10g' and req.POST.get('password') == 'fos2g5i47tt90n1p':
|
||||||
|
return render(req, 'loginedtest/index.html')
|
||||||
|
else:
|
||||||
|
return redirect('/adminsystemdb')
|
||||||
|
else:
|
||||||
|
return redirect('/adminsystemdb')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def get_random():
|
||||||
|
n = 20
|
||||||
|
al = "abcdefghigklmnopqrstuvwxyz"
|
||||||
|
thing = ""
|
||||||
|
for i in range(0, n):
|
||||||
|
a = random.randint(0, 1)
|
||||||
|
if a == 0:
|
||||||
|
thing += al[random.randint(0, len(al)-1)]
|
||||||
|
else:
|
||||||
|
thing += str(random.randint(0, 10))
|
||||||
|
return thing
|
||||||
|
|
||||||
|
|
||||||
|
def get_data(req):
|
||||||
|
|
||||||
|
try:
|
||||||
|
if not req.POST['csrfmiddlewaretoken']:
|
||||||
|
return HttpResponse('fuk yo')
|
||||||
|
except Exception:
|
||||||
|
return HttpResponse('')
|
||||||
|
|
||||||
|
|
||||||
|
text_res = ""
|
||||||
|
|
||||||
|
list_res = []
|
||||||
|
|
||||||
|
if req.POST['header']:
|
||||||
|
text_res += f"\nзагаловок: {req.POST['header']}\n"
|
||||||
|
list_res.append(['header', f"{req.POST['header']}"])
|
||||||
|
|
||||||
|
if req.POST['text']:
|
||||||
|
text_res += f"\nтекст: {req.POST['text']}\nзтекст\n"
|
||||||
|
list_res.append(['text', f"{req.POST['text']}"])
|
||||||
|
|
||||||
|
|
||||||
|
if req.FILES.getlist('imgg'):
|
||||||
|
imgs_names = []
|
||||||
|
for i in req.FILES.getlist('imgg'):
|
||||||
|
fo = ""
|
||||||
|
for j in i.name[::-1]:
|
||||||
|
if j == ".":
|
||||||
|
fo += j
|
||||||
|
break
|
||||||
|
fo += j
|
||||||
|
nn = get_random() + f"{datetime.now()}".replace("-", "").replace(" ", "").replace(":", "").replace(".", "")[:-6] + fo[::-1]
|
||||||
|
nn = nn.replace(" ", "_")
|
||||||
|
path = default_storage.save(f"tmp/{nn}", ContentFile(i.read()))
|
||||||
|
tmp_file = os.path.join(settings.MEDIA_ROOT, path)
|
||||||
|
os.replace(tmp_file, tmp_file[:-len(nn)-10]+f'static/tmp/{nn}')
|
||||||
|
|
||||||
|
imgs_names.append(nn)
|
||||||
|
text_res += f"картинка: {imgs_names}"
|
||||||
|
|
||||||
|
list_res.append(['img', ['tmp/'+ i for i in imgs_names] ])
|
||||||
|
|
||||||
|
|
||||||
|
if len(f"{list_res}") == 2:
|
||||||
|
data = json.dumps(
|
||||||
|
{'text':text_res,
|
||||||
|
'list_preview':'',
|
||||||
|
'postname': req.POST["postname"],
|
||||||
|
'authtor': req.POST["authtor"]
|
||||||
|
}
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
data = json.dumps(
|
||||||
|
{'text':text_res,
|
||||||
|
'list_preview':f"{list_res}"[1:-1]+',',
|
||||||
|
'postname': req.POST["postname"],
|
||||||
|
'authtor': req.POST["authtor"]
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
return HttpResponse(data)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def clear_blog(req):
|
||||||
|
|
||||||
|
res = ast.literal_eval(req.POST['tolist'])
|
||||||
|
|
||||||
|
|
||||||
|
return HttpResponse(f"{res}")
|
||||||
|
global text_imgs
|
||||||
|
global res_text_render
|
||||||
|
global post_name
|
||||||
|
global authtor
|
||||||
|
global new_res_text_render
|
||||||
|
new_res_text_render = []
|
||||||
|
text_imgs = []
|
||||||
|
res_text_render = ""
|
||||||
|
post_name = ""
|
||||||
|
authtor = ""
|
||||||
|
return render(req, 'loginedtest/index.html')
|
||||||
|
|
||||||
|
def blog_preview(req):
|
||||||
|
if Poseters.objects.filter(title=req.POST['postnamee']).values():
|
||||||
|
return HttpResponse("Статья с таким названием уже существует!")
|
||||||
|
|
||||||
|
try:
|
||||||
|
res = ast.literal_eval(req.POST['to_list'])
|
||||||
|
except Exception:
|
||||||
|
res = ''
|
||||||
|
|
||||||
|
if req.FILES.getlist('imgg_preview'):
|
||||||
|
i = req.FILES.getlist('imgg_preview')[0]
|
||||||
|
fo = ""
|
||||||
|
for j in i.name[::-1]:
|
||||||
|
if j == ".":
|
||||||
|
fo += j
|
||||||
|
break
|
||||||
|
fo += j
|
||||||
|
nn = get_random() + f"{datetime.now()}".replace("-", "").replace(" ", "").replace(":", "").replace(".", "")[:-6] + fo[::-1]
|
||||||
|
nn = nn.replace(" ", "_")
|
||||||
|
path = default_storage.save(f"tmp/{nn}", ContentFile(i.read()))
|
||||||
|
tmp_file = os.path.join(settings.MEDIA_ROOT, path)
|
||||||
|
os.replace(tmp_file, tmp_file[:-len(nn)-10]+f'static/tmp/{nn}')
|
||||||
|
|
||||||
|
# path = default_storage.save(f"tmp/{i.name}", ContentFile(i.read()))
|
||||||
|
# tmp_file = os.path.join(settings.MEDIA_ROOT, path)
|
||||||
|
# name = ""
|
||||||
|
# for j in tmp_file[::-1]:
|
||||||
|
# if j == '/':
|
||||||
|
# break
|
||||||
|
# name += j
|
||||||
|
# name = name[::-1]
|
||||||
|
# os.replace(tmp_file, tmp_file[:-len(name)-10]+f'adminsystemdb/static/tmp/{name}')
|
||||||
|
img_preview = 'tmp/' + nn
|
||||||
|
|
||||||
|
else:
|
||||||
|
img_preview = ''
|
||||||
|
|
||||||
|
return render(req, "preview_api/index.html", {"namee":"preview",
|
||||||
|
|
||||||
|
"title":req.POST['postnamee'],
|
||||||
|
"testthing":res,
|
||||||
|
"authtor":req.POST["authtorr"],
|
||||||
|
"papka":req.POST["papka"],
|
||||||
|
"desc":req.POST["desc"],
|
||||||
|
"img_preview": img_preview,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def blog_preview2(req):
|
||||||
|
try:
|
||||||
|
res = ast.literal_eval(req.POST['testthing'])
|
||||||
|
except Exception:
|
||||||
|
res = ''
|
||||||
|
return render(req, 'blog_preview/index.html',{'title':req.POST['title'],
|
||||||
|
"testthing":res,
|
||||||
|
"authtor":req.POST["authtor"],
|
||||||
|
"date":f" {datetime.today()}"[:-10],
|
||||||
|
"papka":req.POST["papka"],
|
||||||
|
"desc":req.POST["desc"],
|
||||||
|
"img_preview": req.POST['img_preview']
|
||||||
|
})
|
||||||
|
|
||||||
|
def post_to_db(req):
|
||||||
|
src = req.POST
|
||||||
|
|
||||||
|
|
||||||
|
papka = src["papka"]
|
||||||
|
title = src["title"]
|
||||||
|
authtor = src["authtor"]
|
||||||
|
date = src["date"]
|
||||||
|
testthing = src["testthing"]
|
||||||
|
desc = src["desc"]
|
||||||
|
img_preview = src["img_preview"]
|
||||||
|
Poseters.objects.create(papka=papka, title=title, authror=authtor, date=date, content=testthing, desc=desc, img_preview=img_preview)
|
||||||
|
|
||||||
|
return redirect(f"/{papka}?type={papka}&title={title}")
|
BIN
db.sqlite3
Executable file
0
ekbguid/__init__.py
Executable file
16
ekbguid/asgi.py
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
"""
|
||||||
|
ASGI config for ekbguid 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/5.0/howto/deployment/asgi/
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
from django.core.asgi import get_asgi_application
|
||||||
|
|
||||||
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ekbguid.settings')
|
||||||
|
|
||||||
|
application = get_asgi_application()
|
128
ekbguid/settings.py
Executable file
@ -0,0 +1,128 @@
|
|||||||
|
"""
|
||||||
|
Django settings for ekbguid project.
|
||||||
|
|
||||||
|
Generated by 'django-admin startproject' using Django 5.0.3.
|
||||||
|
|
||||||
|
For more information on this file, see
|
||||||
|
https://docs.djangoproject.com/en/5.0/topics/settings/
|
||||||
|
|
||||||
|
For the full list of settings and their values, see
|
||||||
|
https://docs.djangoproject.com/en/5.0/ref/settings/
|
||||||
|
"""
|
||||||
|
|
||||||
|
from pathlib import Path
|
||||||
|
import os
|
||||||
|
|
||||||
|
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
||||||
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
|
|
||||||
|
|
||||||
|
# Quick-start development settings - unsuitable for production
|
||||||
|
# See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/
|
||||||
|
|
||||||
|
# SECURITY WARNING: keep the secret key used in production secret!
|
||||||
|
SECRET_KEY = 'django-insecure-=mymof#qotdln6&+jy$w)l_-e5q+u8pqgui5(w-9=f$%8o_emz'
|
||||||
|
|
||||||
|
# SECURITY WARNING: don't run with debug turned on in production!
|
||||||
|
DEBUG = False
|
||||||
|
|
||||||
|
ALLOWED_HOSTS = ['*']
|
||||||
|
|
||||||
|
|
||||||
|
# Application definition
|
||||||
|
|
||||||
|
INSTALLED_APPS = [
|
||||||
|
'django.contrib.admin',
|
||||||
|
'django.contrib.auth',
|
||||||
|
'django.contrib.contenttypes',
|
||||||
|
'django.contrib.sessions',
|
||||||
|
'django.contrib.messages',
|
||||||
|
'django.contrib.staticfiles',
|
||||||
|
"adminsystemdb",
|
||||||
|
"mainapp"
|
||||||
|
]
|
||||||
|
|
||||||
|
MIDDLEWARE = [
|
||||||
|
'django.middleware.security.SecurityMiddleware',
|
||||||
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
|
'django.middleware.common.CommonMiddleware',
|
||||||
|
'django.middleware.csrf.CsrfViewMiddleware',
|
||||||
|
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||||
|
'django.contrib.messages.middleware.MessageMiddleware',
|
||||||
|
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||||
|
]
|
||||||
|
|
||||||
|
ROOT_URLCONF = 'ekbguid.urls'
|
||||||
|
|
||||||
|
TEMPLATES = [
|
||||||
|
{
|
||||||
|
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||||
|
'DIRS': [],
|
||||||
|
'APP_DIRS': True,
|
||||||
|
'OPTIONS': {
|
||||||
|
'context_processors': [
|
||||||
|
'django.template.context_processors.debug',
|
||||||
|
'django.template.context_processors.request',
|
||||||
|
'django.contrib.auth.context_processors.auth',
|
||||||
|
'django.contrib.messages.context_processors.messages',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
WSGI_APPLICATION = 'ekbguid.wsgi.application'
|
||||||
|
|
||||||
|
|
||||||
|
# Database
|
||||||
|
# https://docs.djangoproject.com/en/5.0/ref/settings/#databases
|
||||||
|
|
||||||
|
DATABASES = {
|
||||||
|
'default': {
|
||||||
|
'ENGINE': 'django.db.backends.sqlite3',
|
||||||
|
'NAME': BASE_DIR / 'db.sqlite3',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Password validation
|
||||||
|
# https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators
|
||||||
|
|
||||||
|
AUTH_PASSWORD_VALIDATORS = [
|
||||||
|
{
|
||||||
|
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
# Internationalization
|
||||||
|
# https://docs.djangoproject.com/en/5.0/topics/i18n/
|
||||||
|
|
||||||
|
LANGUAGE_CODE = 'en-us'
|
||||||
|
|
||||||
|
TIME_ZONE = 'UTC'
|
||||||
|
|
||||||
|
USE_I18N = True
|
||||||
|
|
||||||
|
USE_TZ = True
|
||||||
|
|
||||||
|
|
||||||
|
# Static files (CSS, JavaScript, Images)
|
||||||
|
# https://docs.djangoproject.com/en/5.0/howto/static-files/
|
||||||
|
|
||||||
|
STATIC_ROOT = 'static'
|
||||||
|
|
||||||
|
STATIC_URL = 'static/'
|
||||||
|
|
||||||
|
# Default primary key field type
|
||||||
|
# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field
|
||||||
|
|
||||||
|
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
24
ekbguid/urls.py
Executable file
@ -0,0 +1,24 @@
|
|||||||
|
"""
|
||||||
|
URL configuration for ekbguid project.
|
||||||
|
|
||||||
|
The `urlpatterns` list routes URLs to views. For more information please see:
|
||||||
|
https://docs.djangoproject.com/en/5.0/topics/http/urls/
|
||||||
|
Examples:
|
||||||
|
Function views
|
||||||
|
1. Add an import: from my_app import views
|
||||||
|
2. Add a URL to urlpatterns: path('', views.home, name='home')
|
||||||
|
Class-based views
|
||||||
|
1. Add an import: from other_app.views import Home
|
||||||
|
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
|
||||||
|
Including another URLconf
|
||||||
|
1. Import the include() function: from django.urls import include, path
|
||||||
|
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
|
||||||
|
"""
|
||||||
|
from django.contrib import admin
|
||||||
|
from django.urls import path, include
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
path('admin/', admin.site.urls),
|
||||||
|
path('', include('mainapp.urls')),
|
||||||
|
path('adminsystemdb/', include('adminsystemdb.urls')),
|
||||||
|
]
|
16
ekbguid/wsgi.py
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
"""
|
||||||
|
WSGI config for ekbguid project.
|
||||||
|
|
||||||
|
It exposes the WSGI callable as a module-level variable named ``application``.
|
||||||
|
|
||||||
|
For more information on this file, see
|
||||||
|
https://docs.djangoproject.com/en/5.0/howto/deployment/wsgi/
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
from django.core.wsgi import get_wsgi_application
|
||||||
|
|
||||||
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ekbguid.settings')
|
||||||
|
|
||||||
|
application = get_wsgi_application()
|
0
mainapp/__init__.py
Executable file
5
mainapp/admin.py
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
from django.contrib import admin
|
||||||
|
from .models import Comments
|
||||||
|
|
||||||
|
# Register your models here.
|
||||||
|
admin.site.register(Comments)
|
6
mainapp/apps.py
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
|
class MainappConfig(AppConfig):
|
||||||
|
default_auto_field = 'django.db.models.BigAutoField'
|
||||||
|
name = 'mainapp'
|
25
mainapp/migrations/0001_initial.py
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
# Generated by Django 4.1.6 on 2023-04-23 08:33
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
initial = True
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Comments',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('name', models.CharField(max_length=50, verbose_name='Имя')),
|
||||||
|
('mail', models.CharField(max_length=100, verbose_name='Почта')),
|
||||||
|
('phone_num', models.CharField(max_length=15, verbose_name='Номер')),
|
||||||
|
('coment', models.TextField(verbose_name='Сообщение')),
|
||||||
|
('date_time', models.CharField(max_length=50, verbose_name='Время')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
0
mainapp/migrations/__init__.py
Executable file
11
mainapp/models.py
Executable file
@ -0,0 +1,11 @@
|
|||||||
|
from django.db import models
|
||||||
|
|
||||||
|
# Create your models here.
|
||||||
|
class Comments(models.Model):
|
||||||
|
name = models.CharField("Имя", max_length=50)
|
||||||
|
mail = models.CharField("Почта", max_length=100)
|
||||||
|
phone_num = models.CharField("Номер", max_length=15)
|
||||||
|
coment = models.TextField("Сообщение")
|
||||||
|
date_time = models.CharField("Время", max_length=50)
|
||||||
|
def __str__(self) -> str:
|
||||||
|
return self.name
|
BIN
mainapp/static/first/img/p1.png
Executable file
After Width: | Height: | Size: 192 KiB |
BIN
mainapp/static/first/img/p2.png
Executable file
After Width: | Height: | Size: 147 KiB |
BIN
mainapp/static/first/img/p3.png
Executable file
After Width: | Height: | Size: 368 KiB |
BIN
mainapp/static/first/img/p4.png
Executable file
After Width: | Height: | Size: 259 KiB |
48
mainapp/static/first/script.js
Executable file
@ -0,0 +1,48 @@
|
|||||||
|
const hamb = document.querySelector("#hamb");
|
||||||
|
const popup = document.querySelector("#popup");
|
||||||
|
const menu = document.querySelector("#menu").cloneNode(1);
|
||||||
|
const body = document.body;
|
||||||
|
|
||||||
|
hamb.addEventListener("click", hambHandler);
|
||||||
|
|
||||||
|
function hambHandler(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
popup.classList.toggle("open");
|
||||||
|
hamb.classList.toggle("active");
|
||||||
|
body.classList.toggle("noscroll");
|
||||||
|
// renderPopup();
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderPopup() {
|
||||||
|
popup.appendChild(menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Код для закрытия меню при нажатии на ссылку
|
||||||
|
|
||||||
|
const links = Array.from(menu.children);
|
||||||
|
|
||||||
|
links.forEach((link) => {
|
||||||
|
link.addEventListener("click", closeOnClick);
|
||||||
|
});
|
||||||
|
|
||||||
|
function closeOnClick() {
|
||||||
|
popup.classList.remove("open");
|
||||||
|
hamb.classList.remove("active");
|
||||||
|
body.classList.remove("noscroll");
|
||||||
|
}
|
||||||
|
window.onscroll = function() {scrollFunction()};
|
||||||
|
|
||||||
|
function scrollFunction() {
|
||||||
|
if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
|
||||||
|
document.getElementById("myBtn").style.display = "block";
|
||||||
|
} else {
|
||||||
|
document.getElementById("myBtn").style.display = "none";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// When the user clicks on the button, scroll to the top of the document
|
||||||
|
function topFunction() {
|
||||||
|
document.body.scrollTop = 0; // For Safari
|
||||||
|
document.documentElement.scrollTop = 0; // For Chrome, Firefox, IE and Opera
|
||||||
|
}
|
||||||
|
|
1052
mainapp/static/first/style.css
Executable file
BIN
mainapp/static/tmp/03r8rig64710n68g23fk520230425072347.jpg
Executable file
After Width: | Height: | Size: 688 KiB |
BIN
mainapp/static/tmp/05t87x9y1tuz51a4ks745y3ve10z88t5p1267bs1u.jpg
Executable file
After Width: | Height: | Size: 91 KiB |
BIN
mainapp/static/tmp/08711kze20r15uge1k25ga0zg79iep110ixe10kp4o.jpg
Executable file
After Width: | Height: | Size: 267 KiB |
BIN
mainapp/static/tmp/0c63t2racs7dq910f510c30uv58u1vgu6a42vnzw6k.jpg
Executable file
After Width: | Height: | Size: 72 KiB |
BIN
mainapp/static/tmp/0i1u51610810nlmxyy00l51015n6v53s4di10354calu.jpg
Executable file
After Width: | Height: | Size: 522 KiB |
BIN
mainapp/static/tmp/0q01091u0k1tgu7nsguq620230425072156.jpg
Executable file
After Width: | Height: | Size: 30 KiB |
BIN
mainapp/static/tmp/10100va7tmn3c5qp5g5710u6t93894fh2fdc4avxt86.jpg
Executable file
After Width: | Height: | Size: 985 KiB |
BIN
mainapp/static/tmp/103dg86f9py6g20041t10i20230425070740.jpg
Executable file
After Width: | Height: | Size: 98 KiB |
BIN
mainapp/static/tmp/103qrg24c820zhru0xidt20230425095528.jpg
Executable file
After Width: | Height: | Size: 99 KiB |
BIN
mainapp/static/tmp/1075h30at2z5rr3fgx80l20230425071849.jpg
Executable file
After Width: | Height: | Size: 70 KiB |
BIN
mainapp/static/tmp/1090nqu89m51511040957y20230425160312.png
Executable file
After Width: | Height: | Size: 5.5 KiB |
BIN
mainapp/static/tmp/110rn312lg98v10yin7zh107otvaru896231m84e2az.jpg
Executable file
After Width: | Height: | Size: 83 KiB |
BIN
mainapp/static/tmp/110s96sw10481077yfqw1xuueinoxd2953ia35ae810i.jpg
Executable file
After Width: | Height: | Size: 275 KiB |
BIN
mainapp/static/tmp/12p35821bt4663bhbnvpg20xp74kt3g5t310qx34.jpg
Executable file
After Width: | Height: | Size: 463 KiB |
BIN
mainapp/static/tmp/135no2710029yi23poit967n6u460m910f10665df65.jpeg
Executable file
After Width: | Height: | Size: 974 KiB |
BIN
mainapp/static/tmp/1r3wd4gbl94i0m52xcvg5uokdqnq40sg10k3pm12e.jpg
Executable file
After Width: | Height: | Size: 644 KiB |
BIN
mainapp/static/tmp/1sp1c8m733w9ca2f869ba523396l10gp1ndt3o9ne.jpg
Executable file
After Width: | Height: | Size: 110 KiB |
BIN
mainapp/static/tmp/25sp105951pn25c6co107h20230425070705.jpg
Executable file
After Width: | Height: | Size: 232 KiB |
BIN
mainapp/static/tmp/2m875197ir1188v7s10i410do4x192q99ok2rvz9kt.JPG
Executable file
After Width: | Height: | Size: 351 KiB |
BIN
mainapp/static/tmp/2oh3h7v8s8b5w022ec1010b6kp10g3z02t7f05xcz66.jpg
Executable file
After Width: | Height: | Size: 463 KiB |
BIN
mainapp/static/tmp/3109a6a6f221991339y9u20230425070809.jpg
Executable file
After Width: | Height: | Size: 170 KiB |
BIN
mainapp/static/tmp/31k0n8g639e32264hiu120230425095204.jpg
Executable file
After Width: | Height: | Size: 199 KiB |
BIN
mainapp/static/tmp/3s937dwo10zon2fm510awtzytlyi5wa77feb9vv462.jpg
Executable file
After Width: | Height: | Size: 187 KiB |
BIN
mainapp/static/tmp/3usp5l9v2x5t4108k7r12l81ae1kp2yhg25108o32l.jpg
Executable file
After Width: | Height: | Size: 403 KiB |
BIN
mainapp/static/tmp/3wby7a63x27k1dl3400a72qtiq4k9u05z9ex8287.jpg
Executable file
After Width: | Height: | Size: 75 KiB |
BIN
mainapp/static/tmp/4110764iuutuo5k1h1g4f7zrig100nq5g9gs04ged8.jpg
Executable file
After Width: | Height: | Size: 463 KiB |
BIN
mainapp/static/tmp/467f201ni410d10105a0106574101079z3hx1k81610gxon.jpg
Executable file
After Width: | Height: | Size: 275 KiB |
BIN
mainapp/static/tmp/517m3bfp776x2f8b5435lw0syvwwaz9tfsy1rg82.jpg
Executable file
After Width: | Height: | Size: 85 KiB |
BIN
mainapp/static/tmp/56o941b024k711324sbd20230425071805.png
Executable file
After Width: | Height: | Size: 1.0 MiB |
BIN
mainapp/static/tmp/61077ioyo77v11010f89e720230425095420.jpg
Executable file
After Width: | Height: | Size: 196 KiB |
BIN
mainapp/static/tmp/61331v64kq8u5o23u3g820230425072307.jpg
Executable file
After Width: | Height: | Size: 122 KiB |
BIN
mainapp/static/tmp/6p9106t28191av10v7068k20230426063130.jpg
Executable file
After Width: | Height: | Size: 377 KiB |
BIN
mainapp/static/tmp/79y6br107luvq4xr44fn920230425072434.jpg
Executable file
After Width: | Height: | Size: 688 KiB |
BIN
mainapp/static/tmp/7axefx5qh70172lrc33e20230425071826.jpg
Executable file
After Width: | Height: | Size: 56 KiB |
BIN
mainapp/static/tmp/7c43d01032gm086120ui15r0dwv20vr10c2d10r1d02.jpg
Executable file
After Width: | Height: | Size: 226 KiB |
BIN
mainapp/static/tmp/7kmn18od3yh96xy0sgyd20230425071741.jpg
Executable file
After Width: | Height: | Size: 99 KiB |
BIN
mainapp/static/tmp/7p3oectm1omr44b3gcy9df8p7110eqfat689b58l1.JPG
Executable file
After Width: | Height: | Size: 462 KiB |
BIN
mainapp/static/tmp/80gng16l78310h7fnu7gvq5p60i9192r23c01t27a.jpg
Executable file
After Width: | Height: | Size: 187 KiB |
BIN
mainapp/static/tmp/81u28w3rykq63102104v7520230425071754.jpg
Executable file
After Width: | Height: | Size: 88 KiB |
BIN
mainapp/static/tmp/821ffzzf1k910wv6p58eq20230425070956.jpg
Executable file
After Width: | Height: | Size: 58 KiB |
BIN
mainapp/static/tmp/84w2xw17510zp9cfz7fqon6m010i10525g1r1alzuvb.JPG
Executable file
After Width: | Height: | Size: 462 KiB |
BIN
mainapp/static/tmp/8fr0a5210l5v7pzbwg9v420230425095812.jpg
Executable file
After Width: | Height: | Size: 152 KiB |
BIN
mainapp/static/tmp/8i9xhg4h5577e1972l68f6g97vk1mg0rb94osuff.jpg
Executable file
After Width: | Height: | Size: 236 KiB |
BIN
mainapp/static/tmp/8pz2v2n6af9rgt2yv7x6yohy2qx7lpqobe9zq6p10.JPG
Executable file
After Width: | Height: | Size: 462 KiB |
BIN
mainapp/static/tmp/8qw27ty176m84x0i4e81020230425071815.jpg
Executable file
After Width: | Height: | Size: 1.0 MiB |
BIN
mainapp/static/tmp/904x0a616f1gti5h10t91020230425071059.jpg
Executable file
After Width: | Height: | Size: 290 KiB |
BIN
mainapp/static/tmp/9064o103910836v8510byh1wl910xffwr1ir1p8oaw53.jpg
Executable file
After Width: | Height: | Size: 72 KiB |
BIN
mainapp/static/tmp/92glu66q0xk510370105ae20230425072242.jpg
Executable file
After Width: | Height: | Size: 105 KiB |
BIN
mainapp/static/tmp/97x629sk102t6v789218rq9ms3qoc402887f63k7r.jpg
Executable file
After Width: | Height: | Size: 652 KiB |
BIN
mainapp/static/tmp/9f62zf1fo28mh8rrf29afyl652tt32yk01llfuru.jpg
Executable file
After Width: | Height: | Size: 417 KiB |
BIN
mainapp/static/tmp/9mlr1u108xa6de4899841020230426063148.jpg
Executable file
After Width: | Height: | Size: 377 KiB |
BIN
mainapp/static/tmp/9y67f1n9ns10g36ozc991020230425070932.jpg
Executable file
After Width: | Height: | Size: 153 KiB |
BIN
mainapp/static/tmp/a0q7b9mi935605og2107720230425071839.jpg
Executable file
After Width: | Height: | Size: 344 KiB |
BIN
mainapp/static/tmp/a1010nc27410fizhe567q720230425071730.jpg
Executable file
After Width: | Height: | Size: 170 KiB |
BIN
mainapp/static/tmp/bad gallileo.jpg
Executable file
After Width: | Height: | Size: 87 KiB |