added avatar url

root 2021-05-30 22:58:26 +02:00
parent 03d926dbe4
commit 8366c4199d
8 changed files with 142 additions and 9 deletions

View File

@ -79,6 +79,7 @@ def send_avatars_img(path):
Import all views
'''
from .views import MenuViews
from .views import AvatarViews

View File

@ -1,21 +1,21 @@
from admin import app
from .keycloak_client import KeycloakClient
from .moodle import Moodle
from .nextcloud import Nextcloud
from .nextcloud_exc import *
from .avatars import Avatars
from .helpers import filter_roles_list, filter_roles_listofdicts
import logging as log
from pprint import pprint
import traceback, os
import traceback, os, json
from time import sleep
from .nextcloud_exc import *
from .helpers import filter_roles_list, filter_roles_listofdicts
from flask_socketio import SocketIO, emit, join_room, leave_room, \
close_room, rooms, disconnect, send
socketio = SocketIO(app)
import json
class Admin():
def __init__(self):
@ -121,6 +121,19 @@ class Admin():
except:
log.warning('KEYCLOAK: Seems to be there already')
try:
log.warning('KEYCLOAK: Adding default users system_teacher, system_manager and system_student users')
uid=self.keycloak.add_user('system_manager','Manager','System','fakemanager@fake.com','m@n@g3r',group='manager')
self.keycloak.assign_realm_roles(uid,'manager')
uid=self.keycloak.add_user('system_teacher','Teacher','System','faketeacher@fake.com','t3@ch3r',group='teacher')
self.keycloak.assign_realm_roles(uid,'teacher')
uid=self.keycloak.add_user('system_student','Student','System','fakestudent@fake.com','stud3nt',group='student')
self.keycloak.assign_realm_roles(uid,'student')
log.warning('KEYCLOAK: OK')
except:
log.warning('KEYCLOAK: Seems to be there already')
try:
log.warning('NEXTCLOUD: Adding user ddadmin and adding to group admin')
self.nextcloud.add_user(dduser,ddpassword,group='admin',email=ddmail,displayname='DD Admin')

View File

@ -0,0 +1,33 @@
from requests import get, post
from admin import app
import logging as log
from pprint import pprint
import os
from os import listdir
from os.path import isfile, join
from .postgres import Postgres
# Module variables to connect to moodle api
class Avatars():
def __init__(self):
self.keycloak_pg=Postgres('isard-apps-postgresql','keycloak',os.environ['KEYCLOAK_DB_USER'],os.environ['KEYCLOAK_DB_PASSWORD'])
def username2id(self,username):
q = """select id, username from user_entity where username = '%s'""" % (username)
try:
return self.keycloak_pg.select(q)[0][0]
except:
pass
return False
def get_files(self):
path='avatars/master-avatars/'
onlyfiles = [f for f in listdir(path) if isfile(join(path, f))]
pprint(onlyfiles)
# def generate_missing(self, users):
# for u in users:

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -0,0 +1,23 @@
#!flask/bin/python
# coding=utf-8
from admin import app
import logging as log
import traceback
from uuid import uuid4
import time,json
import sys,os
from flask import render_template, Response, request, redirect, url_for, jsonify, send_file
from pprint import pprint
from ..lib.avatars import Avatars
avatars=Avatars()
@app.route('/isard-sso-admin/avatar/<username>', methods=['GET'])
def avatar(username):
userid=avatars.username2id(username)
if userid:
return send_file('../avatars/master-avatars/'+userid, mimetype='image/jpeg')
return send_file('static/img/usera.jpg', mimetype='image/jpeg')

View File

@ -19,7 +19,7 @@ services:
- /etc/localtime:/etc/localtime:ro
- ${BUILD_ROOT_PATH}/admin/src:/admin # Revome in production
- ${BUILD_ROOT_PATH}/../custom:/admin/custom #:ro in production
- ${DATA_FOLDER}/avatars:/admin/avatars:rw
- ${DATA_FOLDER}/avatars:/admin/avatars:ro
- ${DATA_FOLDER}/moodle/saml2:/admin/moodledata/saml2:rw
- ${DATA_FOLDER}/saml_certs:/admin/saml_certs:rw
env_file:

View File

@ -14,7 +14,7 @@ services:
#- ${BUILD_ROOT_PATH}/docker/api/src:/api:rw ## Develop
- ${CUSTOM_PATH}/custom/menu:/api/menu
- ${CUSTOM_PATH}/custom/img:/api/api/static/img
- ${DATA_FOLDER}/avatars/:/api/avatars:ro
- ${DATA_FOLDER}/avatars:/api/avatars:ro
restart: unless-stopped
networks:
- isard_net

63
minio-client-test.py Normal file
View File

@ -0,0 +1,63 @@
from minio import Minio
from minio.commonconfig import REPLACE, CopySource
# Create client with anonymous access.
# client = Minio("isard-apps-avatars")
# # Create client with access and secret key.
# client = Minio("s3.amazonaws.com", "ACCESS-KEY", "SECRET-KEY")
# Create client with access key and secret key with specific region.
client = Minio(
"isard-sso-avatars:9000",
access_key="AKIAIOSFODNN7EXAMPLE",
secret_key="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
secure=False
)
buckets = client.list_buckets()
for bucket in buckets:
print(bucket.name, bucket.creation_date)
response = client.get_object("master-avatars", "89423d20-3915-4e67-b227-86f099f1816a")
print(response)
result = client.copy_object(
"master-avatars",
"prova",
CopySource("master-avatars", "89423d20-3915-4e67-b227-86f099f1816a"),
)
client.remove_object("master-avatars", "prova")
result = client.fput_object(
"master-avatars", "test", "admin/static/img/background.png",
content_type="image/jpeg ",
)
objects = client.list_objects("master-avatars")
for obj in objects:
print(obj.key)
exit(1)
try:
response = client.get_object("master-avatars", "my-object")
print(response)
# Read data from response.
finally:
response.close()
response.release_conn()
# region="my-region",
# # Create client with custom HTTP client using proxy server.
# import urllib3
# client = Minio(
# "SERVER:PORT",
# access_key="ACCESS_KEY",
# secret_key="SECRET_KEY",
# secure=True,
# http_client=urllib3.ProxyManager(
# "https://PROXYSERVER:PROXYPORT/",
# timeout=urllib3.Timeout.DEFAULT_TIMEOUT,
# cert_reqs="CERT_REQUIRED",
# retries=urllib3.Retry(
# total=5,
# backoff_factor=0.2,
# status_forcelist=[500, 502, 503, 504],
# ),
# ),
# )