Fix.
This commit is contained in:
		
							parent
							
								
									7ca2bc5776
								
							
						
					
					
						commit
						f291c0f2e4
					
				@ -20,7 +20,7 @@ class RegisterForm(Form):
 | 
				
			|||||||
        required=True,
 | 
					        required=True,
 | 
				
			||||||
        min_length=2,
 | 
					        min_length=2,
 | 
				
			||||||
        max_length=20,
 | 
					        max_length=20,
 | 
				
			||||||
        regex=r"^[a-zA-Z0-9_]+$",
 | 
					        regex=r"^[a-zA-Z0-9_-]+$",
 | 
				
			||||||
        place_holder="Username",
 | 
					        place_holder="Username",
 | 
				
			||||||
        type="text",
 | 
					        type="text",
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
				
			|||||||
@ -5,6 +5,15 @@ from snek.system.service import BaseService
 | 
				
			|||||||
class UserService(BaseService):
 | 
					class UserService(BaseService):
 | 
				
			||||||
    mapper_name = "user"
 | 
					    mapper_name = "user"
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					    async def search(self, query, **kwargs):
 | 
				
			||||||
 | 
					        query = query.strip().lower()
 | 
				
			||||||
 | 
					        if not query:
 | 
				
			||||||
 | 
					            raise []
 | 
				
			||||||
 | 
					        results = []
 | 
				
			||||||
 | 
					        async for result in self.find(username=dict(ilike='%' + query + '%'), **kwargs):
 | 
				
			||||||
 | 
					            results.append(result)
 | 
				
			||||||
 | 
					        return results
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    async def validate_login(self, username, password):
 | 
					    async def validate_login(self, username, password):
 | 
				
			||||||
        model = await self.get(username=username)
 | 
					        model = await self.get(username=username)
 | 
				
			||||||
        if not model:
 | 
					        if not model:
 | 
				
			||||||
 | 
				
			|||||||
@ -1,65 +1,4 @@
 | 
				
			|||||||
<!DOCTYPE html>
 | 
					{% extends "app.html" %} 
 | 
				
			||||||
<html lang="en">
 | 
					{% block main %}
 | 
				
			||||||
<head>
 | 
					 | 
				
			||||||
  <meta charset="UTF-8">
 | 
					 | 
				
			||||||
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
					 | 
				
			||||||
  <title>Snek</title>
 | 
					 | 
				
			||||||
  <style>{{highlight_styles}}</style>
 | 
					 | 
				
			||||||
  <script src="/push.js"></script>
 | 
					 | 
				
			||||||
  <script src="/upload-button.js"></script>
 | 
					 | 
				
			||||||
  <script src="/html-frame.js"></script>
 | 
					 | 
				
			||||||
  <script src="/schedule.js"></script>
 | 
					 | 
				
			||||||
  <script src="/app.js"></script>
 | 
					 | 
				
			||||||
  <script src="/models.js"></script>
 | 
					 | 
				
			||||||
  <script src="/message-list.js"></script>
 | 
					 | 
				
			||||||
  <script src="/message-list-manager.js"></script>
 | 
					 | 
				
			||||||
  <script src="/chat-input.js"></script>
 | 
					 | 
				
			||||||
  <script src="/chat-window.js"></script>
 | 
					 | 
				
			||||||
  <link rel="stylesheet" href="/base.css">
 | 
					 | 
				
			||||||
  <link rel="manifest" href="/manifest.json" />
 | 
					 | 
				
			||||||
  <link rel="icon" type="image/png" href="/image/snek1.png" sizes="32x32">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</head>
 | 
					 | 
				
			||||||
<body>
 | 
					 | 
				
			||||||
  <header>
 | 
					 | 
				
			||||||
    <div class="logo">Snek</div>
 | 
					 | 
				
			||||||
    <nav>
 | 
					 | 
				
			||||||
      <a href="/web.html">🏠</a>
 | 
					 | 
				
			||||||
      <a style="display:none" id="install-button" href="#">📥</a>
 | 
					 | 
				
			||||||
      <a href="/web.html">👥</a>
 | 
					 | 
				
			||||||
      <a href="#">⚙️</a>
 | 
					 | 
				
			||||||
      <a href="/logout.html">🔒</a>
 | 
					 | 
				
			||||||
    </nav>
 | 
					 | 
				
			||||||
  </header>
 | 
					 | 
				
			||||||
  <main>
 | 
					 | 
				
			||||||
    <aside class="sidebar">
 | 
					 | 
				
			||||||
      <h2>Chat Rooms</h2>
 | 
					 | 
				
			||||||
      <ul>
 | 
					 | 
				
			||||||
        <li><a href="#">General</a></li>
 | 
					 | 
				
			||||||
        <li><a href="#">Development</a></li>
 | 
					 | 
				
			||||||
        <li><a href="#">Support</a></li>
 | 
					 | 
				
			||||||
        <li><a href="#">Random</a></li>
 | 
					 | 
				
			||||||
       
 | 
					 | 
				
			||||||
      </ul>
 | 
					 | 
				
			||||||
    </aside>
 | 
					 | 
				
			||||||
    <chat-window class="chat-area"></chat-window>
 | 
					    <chat-window class="chat-area"></chat-window>
 | 
				
			||||||
  </main>
 | 
					{% endblock %}
 | 
				
			||||||
  <script>
 | 
					 | 
				
			||||||
let installPrompt = null 
 | 
					 | 
				
			||||||
        window.addEventListener("beforeinstallprompt", async(event) => {
 | 
					 | 
				
			||||||
            event.preventDefault();
 | 
					 | 
				
			||||||
            installPrompt = event;
 | 
					 | 
				
			||||||
            //document.addEventListener("DOMContentLoaded", () => {
 | 
					 | 
				
			||||||
           
 | 
					 | 
				
			||||||
            const button = document.getElementById("install-button")
 | 
					 | 
				
			||||||
            button.addEventListener("click", async ()=>{  
 | 
					 | 
				
			||||||
            const result = await installPrompt.prompt()
 | 
					 | 
				
			||||||
            console.info(result.outcome)
 | 
					 | 
				
			||||||
            })
 | 
					 | 
				
			||||||
            button.style.display = 'inline-block'
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
          });
 | 
					 | 
				
			||||||
        ;
 | 
					 | 
				
			||||||
    </script>
 | 
					 | 
				
			||||||
</body>
 | 
					 | 
				
			||||||
</html>
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -46,6 +46,11 @@ class RPCView(BaseView):
 | 
				
			|||||||
                await self.services.socket.subscribe(self.ws,subscription["channel_uid"])
 | 
					                await self.services.socket.subscribe(self.ws,subscription["channel_uid"])
 | 
				
			||||||
       
 | 
					       
 | 
				
			||||||
            return record 
 | 
					            return record 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        async def search_user(self, query): 
 | 
				
			||||||
 | 
					            self._require_login()
 | 
				
			||||||
 | 
					            return [user['username'] for user in await self.services.user.search(query)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        async def get_user(self, user_uid):
 | 
					        async def get_user(self, user_uid):
 | 
				
			||||||
            self._require_login()
 | 
					            self._require_login()
 | 
				
			||||||
            if not user_uid:
 | 
					            if not user_uid:
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user