added avatar url
parent
03d926dbe4
commit
8366c4199d
|
@ -79,6 +79,7 @@ def send_avatars_img(path):
|
||||||
Import all views
|
Import all views
|
||||||
'''
|
'''
|
||||||
from .views import MenuViews
|
from .views import MenuViews
|
||||||
|
from .views import AvatarViews
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,21 +1,21 @@
|
||||||
from admin import app
|
from admin import app
|
||||||
|
|
||||||
from .keycloak_client import KeycloakClient
|
from .keycloak_client import KeycloakClient
|
||||||
from .moodle import Moodle
|
from .moodle import Moodle
|
||||||
from .nextcloud import Nextcloud
|
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
|
import logging as log
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
import traceback, os
|
import traceback, os, json
|
||||||
|
|
||||||
from time import sleep
|
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, \
|
from flask_socketio import SocketIO, emit, join_room, leave_room, \
|
||||||
close_room, rooms, disconnect, send
|
close_room, rooms, disconnect, send
|
||||||
socketio = SocketIO(app)
|
socketio = SocketIO(app)
|
||||||
import json
|
|
||||||
|
|
||||||
class Admin():
|
class Admin():
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
@ -121,6 +121,19 @@ class Admin():
|
||||||
except:
|
except:
|
||||||
log.warning('KEYCLOAK: Seems to be there already')
|
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:
|
try:
|
||||||
log.warning('NEXTCLOUD: Adding user ddadmin and adding to group admin')
|
log.warning('NEXTCLOUD: Adding user ddadmin and adding to group admin')
|
||||||
self.nextcloud.add_user(dduser,ddpassword,group='admin',email=ddmail,displayname='DD Admin')
|
self.nextcloud.add_user(dduser,ddpassword,group='admin',email=ddmail,displayname='DD Admin')
|
||||||
|
|
|
@ -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 |
|
@ -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')
|
|
@ -19,7 +19,7 @@ services:
|
||||||
- /etc/localtime:/etc/localtime:ro
|
- /etc/localtime:/etc/localtime:ro
|
||||||
- ${BUILD_ROOT_PATH}/admin/src:/admin # Revome in production
|
- ${BUILD_ROOT_PATH}/admin/src:/admin # Revome in production
|
||||||
- ${BUILD_ROOT_PATH}/../custom:/admin/custom #:ro 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}/moodle/saml2:/admin/moodledata/saml2:rw
|
||||||
- ${DATA_FOLDER}/saml_certs:/admin/saml_certs:rw
|
- ${DATA_FOLDER}/saml_certs:/admin/saml_certs:rw
|
||||||
env_file:
|
env_file:
|
||||||
|
|
|
@ -14,7 +14,7 @@ services:
|
||||||
#- ${BUILD_ROOT_PATH}/docker/api/src:/api:rw ## Develop
|
#- ${BUILD_ROOT_PATH}/docker/api/src:/api:rw ## Develop
|
||||||
- ${CUSTOM_PATH}/custom/menu:/api/menu
|
- ${CUSTOM_PATH}/custom/menu:/api/menu
|
||||||
- ${CUSTOM_PATH}/custom/img:/api/api/static/img
|
- ${CUSTOM_PATH}/custom/img:/api/api/static/img
|
||||||
- ${DATA_FOLDER}/avatars/:/api/avatars:ro
|
- ${DATA_FOLDER}/avatars:/api/avatars:ro
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
networks:
|
||||||
- isard_net
|
- isard_net
|
||||||
|
|
|
@ -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],
|
||||||
|
# ),
|
||||||
|
# ),
|
||||||
|
# )
|
Loading…
Reference in New Issue