separate_pages
quadrismegistus 4 years ago
parent 68b20ef9ee
commit 7b752abfd6

1
.gitignore vendored

@ -1 +1,2 @@
__pycache__
client/examples/*

@ -31,6 +31,7 @@
height: dp(56)
spacing: '10dp'
pos_hint: {'center_x': .5}
size_hint_x:1
MDIconButton:
icon: 'sd'

@ -1 +0,0 @@
Subproject commit 30295797691bf6a88bfebee077a4f14b5785dcf2

@ -1 +0,0 @@
Subproject commit 7fbab74c5693430ea486ac359fa7a032596c232b

@ -1 +0,0 @@
Subproject commit 54dc22eac3bb22ed0fbde6aa83cd5069370bcdfc

@ -1 +0,0 @@
Subproject commit 1e0d1dd230e31737fdec3c365b64b88145d46965

@ -1,69 +0,0 @@
from kivy.uix.scrollview import ScrollView
class EndEventScroll(ScrollView):
def on_scroll_stop(self, *args, **kwargs):
result = super(EndEventScroll, self).on_scroll_stop(*args, **kwargs)
if self.scroll_y < 0 and hasattr(self, 'on_end_event'):
self.on_end_event()
return result
if __name__ == '__main__':
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.properties import ObjectProperty
class CustomScrollView(EndEventScroll):
layout1 = ObjectProperty(None)
def on_end_event(self):
height = 0.0
for i in range(40):
btn = Button(text=str(i), size_hint=(None, None),
size=(200, 100))
self.layout1.add_widget(btn)
height += btn.height
height = float(height / self.layout1.cols)
procent = (100.0 * height)/float(self.layout1.height)
self.scroll_y += procent/100.0
class ScrollViewApp(App):
def build(self):
layout1 = GridLayout(cols=4, spacing=10, size_hint=(None, None))
layout1.bind(minimum_height=layout1.setter('height'),
minimum_width=layout1.setter('width'))
for i in range(40):
btn = Button(text=str(i), size_hint=(None, None),
size=(200, 100))
layout1.add_widget(btn)
scrollview1 = CustomScrollView(bar_width='2dp', layout1=layout1)
scrollview1.add_widget(layout1)
layout2 = GridLayout(cols=4, spacing=10, size_hint=(None, None))
layout2.bind(minimum_height=layout2.setter('height'),
minimum_width=layout2.setter('width'))
for i in range(40):
btn = Button(text=str(i), size_hint=(None, None),
size=(200, 100))
layout2.add_widget(btn)
scrollview2 = ScrollView(scroll_type=['bars'],
bar_width='9dp',
scroll_wheel_distance=100)
scrollview2.add_widget(layout2)
root = GridLayout(cols=2)
root.add_widget(scrollview1)
root.add_widget(scrollview2)
return root
ScrollViewApp().run()

@ -38,3 +38,6 @@ testing2
{}
{}
{}
<Response [401]>
FAILED!Login failed
FAILED!Login failed

@ -31,7 +31,60 @@ MyLayout:
ScreenManager:
id: scr_mngr
# transition: NoTransition()
LoginScreen:
name: "login"
# text: "Login"
# icon: "login"
MDBoxLayout:
orientation: "vertical"
pos_hint: {'center_x':.5, 'center_y':0.55}
size_hint:0.5,0.5
padding:'10dp'
id: loginbox
MDTextField:
id: username
hint_text: "Username"
required: True
helper_text_mode: "on_error"
MDTextField:
id: password
password: True
hint_text: "Password"
required: True
helper_text_mode: "on_error"
MDBoxLayout:
id: buttonbox
size_hint_y: None
adaptive_width: True
height: dp(56)
spacing: '10dp'
pos_hint: {'center_x': .5}
MDRaisedButton:
text: "login"
on_release:
app.login(username.text, password.text)
#app.root.change_screen("welcome")
MDRectangleFlatButton:
text: "register"
on_release:
app.register(username.text, password.text)
MDLabel:
id: login_status
text:""
theme_text_color: 'Error'
pos_hint:{'center_x':.5}
WelcomeScreen:
name: 'welcome'

@ -20,6 +20,8 @@ from kivy.metrics import dp
from kivy.properties import NumericProperty
from kivymd.uix.list import * #MDList, ILeftBody, IRightBody, ThreeLineAvatarListItem, TwoLineAvatarListItem, BaseListItem, ImageLeftWidget
from kivy.uix.image import Image, AsyncImage
import requests,json
root = None
app = None
@ -30,10 +32,12 @@ def log(x):
class MyLayout(BoxLayout):
scr_mngr = ObjectProperty(None)
def change_screen(self, screen, *args):
self.scr_mngr.current = screen
class MyLabel(MDLabel):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
@ -86,8 +90,26 @@ class PostCard(MDCard):
content.font_style='Body1'
self.add_widget(content)
class ProtectedScreen(MDScreen):
def on_pre_enter(self):
global app
if app.logged_on==False:
app.root.change_screen('login')
class WelcomeScreen(MDScreen): pass
class LoginScreen(MDScreen): pass
class PeopleScreen(ProtectedScreen): pass
class EventsScreen(ProtectedScreen): pass
class MessagesScreen(ProtectedScreen): pass
class NotificationsScreen(ProtectedScreen): pass
class FeedScreen(MDScreen):
class FeedScreen(ProtectedScreen):
def on_enter(self):
i=0
lim=5
@ -101,27 +123,44 @@ class FeedScreen(MDScreen):
post = PostCard(title='Marx Zuckerberg',img_src='avatar.jpg',content=ln.strip())
print(post)
root.ids.post_carousel.add_widget(post)
class WelcomeScreen(MDScreen): pass
class PeopleScreen(MDScreen): pass
class EventsScreen(MDScreen): pass
class MessagesScreen(MDScreen): pass
class NotificationsScreen(MDScreen): pass
class MainApp(MDApp):
title = 'Gyre'
api = 'http://localhost:5555/api'
logged_on=False
def build(self):
global app,root
app = self
self.root = root = Builder.load_file('main.kv')
self.root.change_screen('feed')
self.root.change_screen('login')
return self.root
def login(self,un,pw):
url = self.api+'/login'
res = requests.post(url, json={'name':un, 'passkey':pw})
if res.status_code==200:
self.logged_on=True
self.root.change_screen('welcome')
else:
self.root.ids.login_status.text=res.text
def register(self,un,pw):
url = self.api+'/register'
res = requests.post(url, json={'name':un, 'passkey':pw})
if res.status_code==200:
self.logged_on=True
self.root.change_screen('welcome')
else:
self.root.ids.login_status.text=res.text
if __name__ == '__main__':
App = MainApp()
App.run()

@ -14,7 +14,7 @@ class Person(MyGraphObject):
name = Property()
name_irl = Property()
pass_key = Property()
passkey = Property()
posts = RelatedTo('Post','WROTE')
follows = RelatedTo('Person','FOLLOWS')
@ -74,7 +74,7 @@ def test_models():
x.posts.add(p1)
y.posts.add(p2)
G.push(y)
y.posts.add(p3)
g1=Group(); g1.name='BlocBloc'

@ -0,0 +1 @@
python3 server.py

@ -3,7 +3,7 @@ from flask import request, jsonify
from pathlib import Path
from models import *
from flask_api import FlaskAPI, status, exceptions
from werkzeug.security import generate_password_hash,check_password_hash
# Start server
@ -16,6 +16,56 @@ def home(): return '404 go home friend'
# Api Functions
## LOGIN
@app.route('/api/login',methods=['POST'])
def login():
data=request.json
name=data.get('name','')
passkey=data.get('passkey','')
if not (name and passkey):
return 'Login failed',status.HTTP_400_BAD_REQUEST
persons = list(Person.match(G,name))
if not persons:
return 'Login failed',status.HTTP_401_UNAUTHORIZED
person = persons[0]
real_passkey = person.passkey
if not check_password_hash(real_passkey, passkey):
return 'Login failed',status.HTTP_401_UNAUTHORIZED
return 'Login success',status.HTTP_200_OK
@app.route('/api/register',methods=['POST'])
def register():
data=request.json
name=data.get('name','')
passkey=data.get('passkey','')
if not (name and passkey):
return 'Register failed',status.HTTP_400_BAD_REQUEST
person = list(Person.match(G,name))
if person:
return 'User exists',status.HTTP_401_UNAUTHORIZED
passkey = generate_password_hash(passkey)
person = Person()
person.name = name
person.passkey = passkey
G.push(person)
print('REGISTERED!',data)
return 'Account created',status.HTTP_200_OK
## CREATE

Loading…
Cancel
Save