Skip to content

Commit

Permalink
Registration completed, reg.html updated
Browse files Browse the repository at this point in the history
  • Loading branch information
mariklolik committed Apr 23, 2020
2 parents f190b69 + 6b56e8c commit e026f3b
Show file tree
Hide file tree
Showing 21 changed files with 310 additions and 27 deletions.
6 changes: 6 additions & 0 deletions .idea/inspectionProfiles/Project_Default.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file modified __pycache__/account_api.cpython-37.pyc
Binary file not shown.
Binary file modified __pycache__/main.cpython-37.pyc
Binary file not shown.
53 changes: 48 additions & 5 deletions account_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,12 @@
from flask_login import LoginManager, login_user, logout_user, current_user
from dbremote.db_session import create_session, global_init
from dbremote.user import User, Author

from flask import request

from main import app
import os

import flask
from werkzeug.security import generate_password_hash

Expand All @@ -31,6 +36,18 @@ class RegistrationForm(FlaskForm):
'Repeat Password', validators=[DataRequired(), EqualTo('password')])
submit = SubmitField('Done!')

def validate_username(self, username):
session = create_session()
user = session.query(User).filter_by(nickname=username.data).first()
if user is not None:
raise ValidationError('Please use a different username.')

def validate_email(self, email):
session = create_session()
user = session.query(User).filter_by(email=email.data).first()
if user is not None:
raise ValidationError('Please use a different email address.')


@blueprint.route("/login", methods=["GET", "POST"])
def login():
Expand All @@ -50,6 +67,23 @@ def login():
return flask.render_template('login_template.html', title='Авторизация', form=form)


@blueprint.route("/login_author", methods=["GET", "POST"])
def login_author():
if current_user.is_authenticated:
return flask.redirect("/dashboard")
form = LoginForm()
if form.validate_on_submit():
author = session.query(Author).filter(Author.email == form.email.data).first()
if author and author.check_password(generate_password_hash(form.password.data)):
login_user(author, remember=form.remember_me.data)
return flask.redirect("/dashboard")
return flask.render_template('login.html',
form=form)
else:
print(form.errors)
return flask.render_template('login_template.html', form=form)


@blueprint.route('/register', methods=['GET', 'POST'])
def register():
if current_user.is_authenticated:
Expand All @@ -59,10 +93,16 @@ def register():
print(form.username.data)
print(form.email.data)
print(form.password.data)
user = User(nickname=form.username.data, email=form.email.data,
hashed_password=generate_password_hash(form.password.data))
user = User()
user.nickname = form.username.data
user.email = form.email.data
user.hashed_password = generate_password_hash(form.password.data)

# добавить проверку email
session = create_session()
session.add(user)
print(type(form.username.data), type(form.email.data),
type(generate_password_hash(form.password.data)))
session.commit()
return flask.redirect("/login")
return flask.render_template('registration_creator.html', title='Register', form=form)
Expand All @@ -72,11 +112,14 @@ def register():
def new_author():
form = RegistrationForm()
if form.validate():
author = Author(nickname=form.username.data,
email=form.email.data,
hashed_password=generate_password_hash(form.password.data))
author = Author()
author.nickname = form.username.data
author.email = form.email.data
author.hashed_password = generate_password_hash(form.password.data)
session = create_session()
session.add(author)
session.commit()
os.mkdir(f"data/{author.id}")
return flask.redirect("/login")
else:
print(form.errors)
Expand Down
Binary file modified db/data.sqlite
Binary file not shown.
4 changes: 2 additions & 2 deletions dbremote/__all_models.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
from .user import User
from .storys import Story
from . import user
from . import storys
Binary file modified dbremote/__pycache__/__all_models.cpython-37.pyc
Binary file not shown.
Binary file modified dbremote/__pycache__/db_session.cpython-37.pyc
Binary file not shown.
Binary file modified dbremote/__pycache__/storys.cpython-37.pyc
Binary file not shown.
Binary file modified dbremote/__pycache__/user.cpython-37.pyc
Binary file not shown.
6 changes: 3 additions & 3 deletions dbremote/storys.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,16 @@ class Story(SqlAlchemyBase):

id = sqlalchemy.Column(sqlalchemy.Integer,
primary_key=True, autoincrement=True)
user_id = sqlalchemy.Column(sqlalchemy.Integer,
author_id = sqlalchemy.Column(sqlalchemy.Integer,
sqlalchemy.ForeignKey("authors.id"))
user = orm.relation('Author')
author = orm.relationship('Author')

cover = sqlalchemy.Column(sqlalchemy.String, nullable=True)
content = sqlalchemy.Column(sqlalchemy.String, nullable=True)
head = sqlalchemy.Column(sqlalchemy.String, nullable=True)
likes_count = sqlalchemy.Column(sqlalchemy.Integer, nullable=True)

commented = orm.relation("Comment", secondary=comment_table)
commented = orm.relationship("Comment", secondary=comment_table)


class Comment(SqlAlchemyBase):
Expand Down
5 changes: 2 additions & 3 deletions dbremote/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,7 @@ class User(SqlAlchemyBase, UserMixin):
hashed_password = sqlalchemy.Column(sqlalchemy.String, nullable=True)
created_date = sqlalchemy.Column(sqlalchemy.DateTime,
default=datetime.datetime.now)
author = sqlalchemy.Column(sqlalchemy.Boolean, default=False)
followed = orm.relation("Author", secondary=follow_table)
followed = orm.relationship("Author", secondary=follow_table)


class Author(SqlAlchemyBase, UserMixin):
Expand All @@ -38,4 +37,4 @@ class Author(SqlAlchemyBase, UserMixin):
hashed_password = sqlalchemy.Column(sqlalchemy.String, nullable=True)
created_date = sqlalchemy.Column(sqlalchemy.DateTime,
default=datetime.datetime.now)
stories = orm.relation("Story", back_populates='authors')
stories = orm.relationship("Story", back_populates='author')
114 changes: 114 additions & 0 deletions feed.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
<!DOCTYPE HTML>
<html>

<head>
<title>stories.ua.kz.ru</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<link rel="stylesheet" href="static/css/main2.css" />
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<script src="https://kit.fontawesome.com/f755b64f54.js" crossorigin="anonymous"></script>
<!-- <noscript><link rel="stylesheet" href="assets/css/noscript.css" /></noscript> -->
</head>

<body class="homepage is-preload">
<!-- NAVBAR -->
<nav class="navbar navbar-light" id='navbar-nav'>
<div class="navbar-in" id='navbar-in'>STO <a href="/"><img src="https://img.icons8.com/nolan/64/r.png"></a>IES.RU</div>
</nav>
{% block content %}{% endblock %}

<div class="container">
<div class="row">
<div class="col">
<!-- Post header -->
<div class="post-name">
<h3 class="post-category">"POST NAME"</h3>
<div class="author-info">

<img src="static/img/mariklolik.jpg" alt="LOL" class='author-img'>
<span id='name'>Author name</span>
</div>
</div>
</div>

</div>
<div class="row">
<div class="col" id='#carousel'>
<div id="carousel-example-1z" class="carousel slide carousel-fade" data-ride="carousel">
<!--/.Indicators-->
<!--Slides-->
<div class="carousel-inner" role="listbox">
<!--First slide-->
<div class="carousel-item active" style="max-height: 100%">
<img class="d-block w-110" src="https://mdbootstrap.com/img/Photos/Slides/img%20(130).jpg" alt="First slide" style="height: 200px">
<div class="carousel-caption">
<a href='#' id='carousel-button'>Читать полностью</a>
</div>
</div>
<!--/First slide-->
<!--Second slide-->
<div class="carousel-item" style="max-height: 100%">
<img class="d-block w-110" src="https://mdbootstrap.com/img/Photos/Slides/img%20(129).jpg" alt="Second slide" style="height: 200px">
</div>
<!--/Second slide-->
<!--Third slide-->
<div class="carousel-item" style="max-height: 100%">
<img class="d-block w-110" src="https://mdbootstrap.com/img/Photos/Slides/img%20(70).jpg" alt="Third slide" style="height: 200px">
</div>
<!--/Third slide-->
</div>
<!--/.Slides-->
<!--Controls-->
<a class="carousel-control-prev" href="#carousel-example-1z" role="button" data-slide="prev" id="but">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#carousel-example-1z" role="button" data-slide="next" id="but">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
<!--/.Controls-->
</div>
</div>
</div>



<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>





<!-- FOOTER -->
<footer>
<div class="container">
<div class="d-flex justify-content-around">
<div class="footer-left">
<a href="https://vk.com/m.kashirsky"><i class="fab fa-vk fa-5x"></i></a>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Id enim voluptatibus culpa facere, eveniet qui libero atque, aliquam dignissimos velit, provident modi laudantium quae ipsa. Neque, inventore nobis explicabo optio.</p>
</div>

<div class="footer-center">
<i class="fab fa-discord fa-5x"></i>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Id enim voluptatibus culpa facere, eveniet qui libero atque, aliquam dignissimos velit, provident modi laudantium quae ipsa. Neque, inventore nobis explicabo optio.</p>
</div>

<div class="footer-right">
<a href="https://vk.com/kiryabikeev"><i class="fab fa-vk fa-5x"></i></a>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Id enim voluptatibus culpa facere, eveniet qui libero atque, aliquam dignissimos velit, provident modi laudantium quae ipsa. Neque, inventore nobis explicabo optio.</p>
</div>
</div>
</div>
</footer>

<!-- Scripts -->
<script src="static/js/jquery.min.js"></script>
<script src="static/js/main2.js"></script>

</body>

</html>
4 changes: 3 additions & 1 deletion main.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from dbremote import db_session
from flask import Flask, render_template
from flask import Flask, render_template, redirect
import account_api
from flask_login import LoginManager, login_user, logout_user, current_user
from dbremote.user import User, Author
Expand All @@ -25,6 +25,8 @@ def main():

@app.route("/")
def main_page():
if current_user.is_authenticated:
return redirect("/feed")
return render_template("index.html")


Expand Down
42 changes: 39 additions & 3 deletions static/css/main2.css
Original file line number Diff line number Diff line change
Expand Up @@ -414,11 +414,11 @@ form input {
margin: 0 auto;
text-align: center;
padding: 10px;
font-family:'Yanone Kaffeesatz', sans-serif;
font-family: 'Yanone Kaffeesatz', sans-serif;
border-radius: 5px;
}

#registration span{
#registration span {
justify-content: center;
margin: 0 auto;
border-radius: 5px;
Expand All @@ -435,6 +435,42 @@ form input {
font: 'Yanone Kaffeesatz', sans-serif;
color: darkblue;
}
#registration div{

#registration div {
margin: 20px;
}

#carousel-example-1z {
margin: 10%;
}

#but {
display: block;
margin: 25% 0 5% 0;
}


/* Smartphones (вертикальная и горизонтальная ориентация) ----------- */
@media only screen and (min-width : 320px) and (max-width : 480px) {
#carousel-example-1z {
margin: 0;
height: 150%;
}

#but {
display: block;
margin: 25% 0 5% 0;
}
}

/* Smartphones (вертикальная) ----------- */
@media only screen and (max-width: 320px) {
#carousel-example-1z {
margin: 0;
}

#but {
display: block;
margin: 25% 0 5% 0;
}
}
Binary file added static/img/socialdiscord.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/img/socialvk.png
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 stories_api.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from flask import jsonify
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, BooleanField, SubmitField
from wtforms.validators import DataRequired, ValidationError, EqualTo
from flask_login import LoginManager, login_user, logout_user, current_user
from dbremote.db_session import create_session, global_init
from dbremote.user import User, Author
from main import app
import flask
from werkzeug.security import generate_password_hash

global_init("db/data.sqlite")
session = create_session()

blueprint = flask.Blueprint('news_api', __name__,
template_folder='templates')


class CommentForm(FlaskForm):
content = StringField("Content",validators=[DataRequired()])

@blueprint.route("/feed", methods=["GET","POST"])
def
Loading

0 comments on commit e026f3b

Please sign in to comment.