Compare commits
4 Commits
08093627c9
...
c178556a2e
Author | SHA1 | Date | |
---|---|---|---|
c178556a2e | |||
cb5affab48 | |||
079be0bb46 | |||
df436e0b88 |
@ -1,6 +1,7 @@
|
|||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
from rest_framework import permissions, status
|
from rest_framework import permissions, status
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
|
from django.contrib.auth import logout
|
||||||
from django.http import HttpRequest
|
from django.http import HttpRequest
|
||||||
from rest_framework.authentication import SessionAuthentication
|
from rest_framework.authentication import SessionAuthentication
|
||||||
|
|
||||||
@ -16,4 +17,5 @@ class DeleteView(APIView):
|
|||||||
if (request.user.check_password(password) == False):
|
if (request.user.check_password(password) == False):
|
||||||
return Response({"password": ["Password wrong."]})
|
return Response({"password": ["Password wrong."]})
|
||||||
request.user.delete()
|
request.user.delete()
|
||||||
|
logout(request)
|
||||||
return Response("user deleted", status=status.HTTP_200_OK)
|
return Response("user deleted", status=status.HTTP_200_OK)
|
17
frontend/static/css/search.css
Normal file
17
frontend/static/css/search.css
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#app img
|
||||||
|
{
|
||||||
|
max-height: 100px;
|
||||||
|
max-width: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#app ul
|
||||||
|
{
|
||||||
|
margin: 5px 0 0 0;
|
||||||
|
padding: 0 0 0 0;
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#app li
|
||||||
|
{
|
||||||
|
margin: 10px 10px 0 0;
|
||||||
|
}
|
@ -1,35 +1,57 @@
|
|||||||
import AbstractAuthentifiedView from "./AbstractAuthentifiedView.js";
|
import AbstractView from "./AbstractView.js";
|
||||||
import {client} from "../index.js";
|
import {client} from "../index.js";
|
||||||
|
|
||||||
export default class extends AbstractAuthentifiedView {
|
export default class extends AbstractView {
|
||||||
constructor(params) {
|
constructor(params) {
|
||||||
super(params, "Search");
|
super(params, "Search");
|
||||||
}
|
}
|
||||||
|
|
||||||
async postInit() {
|
async postInit() {
|
||||||
let profiles = await client.profiles.all();
|
|
||||||
console.log(profiles);
|
|
||||||
let users = ["cramptéMan", "cacaMan", "chatteWomen"]
|
|
||||||
|
|
||||||
let list_users = document.getElementById('list_users');
|
let search = document.getElementById("form");
|
||||||
for (const user of users) {
|
search.addEventListener("input", this.users)
|
||||||
var new_user = document.createElement("li");
|
|
||||||
new_user.appendChild(document.createTextNode(user));
|
this.users();
|
||||||
list_users.appendChild(new_user);
|
|
||||||
}
|
|
||||||
console.log(list_users);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async leavePage() {
|
async users() {
|
||||||
|
|
||||||
|
let search = document.getElementById("form").value;
|
||||||
|
|
||||||
|
|
||||||
|
let users = await client.profiles.all();
|
||||||
|
let list_users = document.getElementById('list_users');
|
||||||
|
list_users.innerHTML = "";
|
||||||
|
|
||||||
|
users.filter(user => user.username.startsWith(search) == true).forEach((user) => {
|
||||||
|
var new_user = document.createElement("li");
|
||||||
|
|
||||||
|
// username
|
||||||
|
let username = document.createElement("a");
|
||||||
|
username.href = `/profiles/${user.user_id}`;
|
||||||
|
username.appendChild(document.createTextNode(user.username));
|
||||||
|
new_user.appendChild(username);
|
||||||
|
|
||||||
|
// break line
|
||||||
|
new_user.appendChild(document.createElement("br"));
|
||||||
|
|
||||||
|
// avatar
|
||||||
|
var img = document.createElement("img");
|
||||||
|
img.src = user.avatar_url;
|
||||||
|
new_user.appendChild(img);
|
||||||
|
|
||||||
|
list_users.appendChild(new_user);
|
||||||
|
});
|
||||||
|
console.log(list_users);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async getHtml() {
|
async getHtml() {
|
||||||
return `
|
return `
|
||||||
<h1>Search</h1>
|
<link rel="stylesheet" href="/static/css/search.css">
|
||||||
|
|
||||||
<form id="form">
|
<input id="form" type="text" name="message" placeholder="userbozo"/>
|
||||||
<input type="text" name="message" placeholder="user name to crampte"/>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<div id="users">
|
<div id="users">
|
||||||
<ul id="list_users">
|
<ul id="list_users">
|
||||||
|
@ -11,7 +11,7 @@ def upload_to(instance, filename: str):
|
|||||||
# Create your models here.
|
# Create your models here.
|
||||||
class ProfileModel(models.Model):
|
class ProfileModel(models.Model):
|
||||||
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||||
avatar_url = models.ImageField(upload_to=upload_to, default="../static/avatars/default.avif") #blank=True, null=True)
|
avatar_url = models.ImageField(upload_to=upload_to, default="./profiles/static/avatars/default.avif") #blank=True, null=True)
|
||||||
|
|
||||||
@receiver(post_save, sender=User)
|
@receiver(post_save, sender=User)
|
||||||
def on_user_created(sender, instance, created, **kwargs):
|
def on_user_created(sender, instance, created, **kwargs):
|
||||||
|
@ -38,7 +38,7 @@ class ProfileViewSet(viewsets.ModelViewSet):
|
|||||||
profile: ProfileModel = ProfileModel.objects.get(pk=self.request.user.pk)
|
profile: ProfileModel = ProfileModel.objects.get(pk=self.request.user.pk)
|
||||||
avatar = self.request.data.get("file", None)
|
avatar = self.request.data.get("file", None)
|
||||||
if (avatar is not None):
|
if (avatar is not None):
|
||||||
if (profile.avatar_url.name != "default.avif"):
|
if (profile.avatar_url.name != "./profiles/static/avatars/default.avif"):
|
||||||
profile.avatar_url.storage.delete(profile.avatar_url.name)
|
profile.avatar_url.storage.delete(profile.avatar_url.name)
|
||||||
profile.avatar_url = avatar
|
profile.avatar_url = avatar
|
||||||
profile.save()
|
profile.save()
|
Loading…
Reference in New Issue
Block a user