Compare commits
No commits in common. "12ca8e4296ca9693276422e524d7061685556ba0" and "dae877113c76b6f0eded7b2d63ef921123a2b559" have entirely different histories.
12ca8e4296
...
dae877113c
0
cache/crc321300331366.cache
vendored
Normal file
0
cache/crc321300331366.cache
vendored
Normal file
0
cache/crc322507170282.cache
vendored
Normal file
0
cache/crc322507170282.cache
vendored
Normal file
@ -21,8 +21,7 @@ dependencies = [
|
||||
"gunicorn",
|
||||
"imgkit",
|
||||
"wkhtmltopdf",
|
||||
"mistune",
|
||||
"aiohttp-session",
|
||||
"cryptography"
|
||||
"jinja-markdown2",
|
||||
"mistune"
|
||||
]
|
||||
|
||||
|
||||
@ -2,12 +2,6 @@ import pathlib
|
||||
from types import SimpleNamespace
|
||||
|
||||
from aiohttp import web
|
||||
from aiohttp_session import (
|
||||
get_session as session_get,
|
||||
session_middleware,
|
||||
setup as session_setup,
|
||||
)
|
||||
from aiohttp_session.cookie_storage import EncryptedCookieStorage
|
||||
from app.app import Application as BaseApplication
|
||||
|
||||
from snek.docs.app import Application as DocsApplication
|
||||
@ -23,19 +17,8 @@ from snek.view.login import LoginView
|
||||
from snek.view.login_form import LoginFormView
|
||||
from snek.view.register import RegisterView
|
||||
from snek.view.register_form import RegisterFormView
|
||||
from snek.view.status import StatusView
|
||||
from snek.view.web import WebView
|
||||
|
||||
# base64.urlsafe_b64encode(
|
||||
SESSION_KEY = b"c79a0c5fda4b424189c427d28c9f7c34"
|
||||
|
||||
|
||||
@web.middleware
|
||||
async def session_middleware(request, handler):
|
||||
setattr(request, "session", await session_get(request))
|
||||
response = await handler(request)
|
||||
return response
|
||||
|
||||
|
||||
class Application(BaseApplication):
|
||||
|
||||
@ -48,8 +31,6 @@ class Application(BaseApplication):
|
||||
super().__init__(
|
||||
middlewares=middlewares, template_path=self.template_path, *args, **kwargs
|
||||
)
|
||||
session_setup(self, EncryptedCookieStorage(SESSION_KEY))
|
||||
self._middlewares.append(session_middleware)
|
||||
self.jinja2_env.add_extension(MarkdownExtension)
|
||||
self.setup_router()
|
||||
self.setup_services()
|
||||
@ -70,7 +51,7 @@ class Application(BaseApplication):
|
||||
self.router.add_view("/about.md", AboutMDView)
|
||||
self.router.add_view("/docs.html", DocsHTMLView)
|
||||
self.router.add_view("/docs.md", DocsMDView)
|
||||
self.router.add_view("/status.json", StatusView)
|
||||
|
||||
self.router.add_view("/web.html", WebView)
|
||||
self.router.add_view("/login.html", LoginView)
|
||||
self.router.add_view("/login.json", LoginFormView)
|
||||
|
||||
Binary file not shown.
@ -67,7 +67,7 @@ class Room {
|
||||
class InlineAppElement extends HTMLElement {
|
||||
|
||||
constructor(){
|
||||
// this.
|
||||
this.
|
||||
}
|
||||
|
||||
}
|
||||
@ -77,45 +77,6 @@ class Page {
|
||||
|
||||
}
|
||||
|
||||
class RESTClient {
|
||||
debug = true
|
||||
|
||||
async get(url, params){
|
||||
params = params ? params : {}
|
||||
const encodedParams = new URLSearchParams(params);
|
||||
if(encodedParams)
|
||||
url += '?' + encodedParams
|
||||
const response = await fetch(url,{
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
});
|
||||
const result = await response.json()
|
||||
if(this.debug){
|
||||
console.debug({url:url,params:params,result:result})
|
||||
}
|
||||
return result
|
||||
}
|
||||
async post(url, data) {
|
||||
const response = await fetch(url,{
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
});
|
||||
|
||||
const result = await response.json()
|
||||
if(this.debug){
|
||||
console.debug({url:url,params:params,result:result})
|
||||
}
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
||||
const rest = new RESTClient()
|
||||
|
||||
class App {
|
||||
rooms = []
|
||||
constructor() {
|
||||
@ -123,9 +84,7 @@ class App {
|
||||
|
||||
|
||||
}
|
||||
async post(url, data){
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -282,10 +282,8 @@ class GenericForm extends HTMLElement {
|
||||
{
|
||||
const isValid = await me.validate()
|
||||
if(isValid){
|
||||
const saveResult = await me.submit()
|
||||
if(saveResult.redirect_url){
|
||||
window.location.pathname = saveResult.redirect_url
|
||||
}
|
||||
const isProcessed = await me.submit()
|
||||
console.info({processed:isProcessed})
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -317,6 +315,7 @@ class GenericForm extends HTMLElement {
|
||||
if(!field.is_valid){
|
||||
me.fields[field.name].setInvalid()
|
||||
me.fields[field.name].setErrors(field.errors)
|
||||
console.info(field.name,"is invalid")
|
||||
}else{
|
||||
me.fields[field.name].setValid()
|
||||
}
|
||||
@ -324,8 +323,10 @@ class GenericForm extends HTMLElement {
|
||||
me.fields[field.name].updateAttributes()
|
||||
})
|
||||
Object.values(form.fields).forEach(field=>{
|
||||
console.info(field.errors)
|
||||
me.fields[field.name].setErrors(field.errors)
|
||||
})
|
||||
console.info({XX:form})
|
||||
return form['is_valid']
|
||||
}
|
||||
async submit(){
|
||||
|
||||
@ -212,14 +212,6 @@ class DeletedField(ModelField):
|
||||
|
||||
class UUIDField(ModelField):
|
||||
|
||||
@property
|
||||
def value(self):
|
||||
return str(self._value)
|
||||
|
||||
@value.setter
|
||||
def value(self, val):
|
||||
self._value = str(val)
|
||||
|
||||
@property
|
||||
def initial_value(self):
|
||||
return str(uuid.uuid4())
|
||||
|
||||
@ -5,13 +5,6 @@ from snek.system.markdown import render_markdown
|
||||
|
||||
class BaseView(web.View):
|
||||
|
||||
login_required = False
|
||||
|
||||
async def _iter(self):
|
||||
if self.login_required and not self.session.get("logged_in"):
|
||||
return web.HTTPFound("/")
|
||||
return await super()._iter()
|
||||
|
||||
@property
|
||||
def app(self):
|
||||
return self.request.app
|
||||
@ -23,10 +16,6 @@ class BaseView(web.View):
|
||||
async def json_response(self, data):
|
||||
return web.json_response(data)
|
||||
|
||||
@property
|
||||
def session(self):
|
||||
return self.request.session
|
||||
|
||||
async def render_template(self, template_name, context=None):
|
||||
if template_name.endswith(".md"):
|
||||
response = await self.request.app.render_template(
|
||||
@ -57,8 +46,7 @@ class BaseFormView(BaseView):
|
||||
# Pass
|
||||
pass
|
||||
if post.get("action") == "submit" and result["is_valid"]:
|
||||
result = await self.submit(form)
|
||||
return await self.json_response(result)
|
||||
await self.submit(form)
|
||||
return await self.json_response(result)
|
||||
|
||||
async def submit(self, model=None):
|
||||
|
||||
@ -4,7 +4,6 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{% block title %}{% endblock %}</title>
|
||||
<script src="/app.js"></script>
|
||||
<style>{{ highlight_styles }}</style>
|
||||
<link rel="stylesheet" href="/style.css">
|
||||
<script src="/fancy-button.js"></script>
|
||||
|
||||
@ -3,13 +3,12 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Snek</title>
|
||||
<script src="/app.js"></script>
|
||||
<title>Dark Themed Chat Application</title>
|
||||
<link rel="stylesheet" href="base.css">
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<div class="logo">Snek</div>
|
||||
<div class="logo">Molodetz Chat</div>
|
||||
<nav>
|
||||
<a href="#">Home</a>
|
||||
<a href="#">Rooms</a>
|
||||
|
||||
@ -9,8 +9,4 @@ class RegisterFormView(BaseFormView):
|
||||
result = await self.app.services.user.register(
|
||||
form.email.value, form.username.value, form.password.value
|
||||
)
|
||||
self.request.session["uid"] = result["uid"]
|
||||
self.request.session["username"] = result["usernmae"]
|
||||
self.request.session["logged_in"] = True
|
||||
|
||||
return {"redirect_url": "/web.html"}
|
||||
print("SUBMITTED:", result)
|
||||
|
||||
@ -1,13 +0,0 @@
|
||||
from snek.system.view import BaseView
|
||||
|
||||
|
||||
class StatusView(BaseView):
|
||||
async def get(self):
|
||||
return await self.json_response(
|
||||
{
|
||||
"status": "ok",
|
||||
"username": self.session.get("username"),
|
||||
"logged_in": self.session.get("username") and True or False,
|
||||
"uid": self.session.get("uid"),
|
||||
}
|
||||
)
|
||||
@ -3,7 +3,5 @@ from snek.system.view import BaseView
|
||||
|
||||
class WebView(BaseView):
|
||||
|
||||
login_required = True
|
||||
|
||||
async def get(self):
|
||||
return await self.render_template("web.html")
|
||||
|
||||
Loading…
Reference in New Issue
Block a user