From 8366c4199d28ba20b51cfa8477c5962b05c3c555 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 30 May 2021 22:58:26 +0200 Subject: [PATCH] added avatar url --- admin/src/admin/__init__.py | 1 + admin/src/admin/lib/admin.py | 27 +++++++++--- admin/src/admin/lib/avatars.py | 33 ++++++++++++++ admin/src/admin/static/img/usera.jpg | Bin 0 -> 21255 bytes admin/src/admin/views/AvatarViews.py | 23 ++++++++++ docker-compose-parts/admin.yml | 2 +- docker-compose-parts/api.yml | 2 +- minio-client-test.py | 63 +++++++++++++++++++++++++++ 8 files changed, 142 insertions(+), 9 deletions(-) create mode 100644 admin/src/admin/lib/avatars.py create mode 100644 admin/src/admin/static/img/usera.jpg create mode 100644 admin/src/admin/views/AvatarViews.py create mode 100644 minio-client-test.py diff --git a/admin/src/admin/__init__.py b/admin/src/admin/__init__.py index 3b22800..e0e0d6d 100644 --- a/admin/src/admin/__init__.py +++ b/admin/src/admin/__init__.py @@ -79,6 +79,7 @@ def send_avatars_img(path): Import all views ''' from .views import MenuViews +from .views import AvatarViews diff --git a/admin/src/admin/lib/admin.py b/admin/src/admin/lib/admin.py index a5d8772..6567bf6 100644 --- a/admin/src/admin/lib/admin.py +++ b/admin/src/admin/lib/admin.py @@ -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): @@ -120,7 +120,20 @@ class Admin(): log.warning('KEYCLOAK: OK') 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') diff --git a/admin/src/admin/lib/avatars.py b/admin/src/admin/lib/avatars.py new file mode 100644 index 0000000..1db2318 --- /dev/null +++ b/admin/src/admin/lib/avatars.py @@ -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: diff --git a/admin/src/admin/static/img/usera.jpg b/admin/src/admin/static/img/usera.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ac5146c0953499640dec7efda6a8dc74e4cddbc2 GIT binary patch literal 21255 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 bPAOK?SerBo{yh?%30{P!LQ&KI06+iPwX0!v literal 0 HcmV?d00001 diff --git a/admin/src/admin/views/AvatarViews.py b/admin/src/admin/views/AvatarViews.py new file mode 100644 index 0000000..52ebb8a --- /dev/null +++ b/admin/src/admin/views/AvatarViews.py @@ -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/', 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') \ No newline at end of file diff --git a/docker-compose-parts/admin.yml b/docker-compose-parts/admin.yml index 55d571e..faa6038 100644 --- a/docker-compose-parts/admin.yml +++ b/docker-compose-parts/admin.yml @@ -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: diff --git a/docker-compose-parts/api.yml b/docker-compose-parts/api.yml index 053901d..f271b06 100644 --- a/docker-compose-parts/api.yml +++ b/docker-compose-parts/api.yml @@ -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 diff --git a/minio-client-test.py b/minio-client-test.py new file mode 100644 index 0000000..a6b309c --- /dev/null +++ b/minio-client-test.py @@ -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], +# ), +# ), +# )