Compare commits
3 Commits
ee80e7be55
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 8637dbbc45 | |||
| 9994c7b2f6 | |||
| efbd6cb670 |
167
api/.gitignore
vendored
167
api/.gitignore
vendored
@@ -1,164 +1,3 @@
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
share/python-wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
MANIFEST
|
||||
|
||||
# PyInstaller
|
||||
# Usually these files are written by a python script from a template
|
||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||
*.manifest
|
||||
*.spec
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.nox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
*.py,cover
|
||||
.hypothesis/
|
||||
.pytest_cache/
|
||||
cover/
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
*.pot
|
||||
|
||||
# Django stuff:
|
||||
*.log
|
||||
local_settings.py
|
||||
db.sqlite3
|
||||
db.sqlite3-journal
|
||||
|
||||
# Flask stuff:
|
||||
instance/
|
||||
.webassets-cache
|
||||
|
||||
# Scrapy stuff:
|
||||
.scrapy
|
||||
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
|
||||
# PyBuilder
|
||||
.pybuilder/
|
||||
target/
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# IPython
|
||||
profile_default/
|
||||
ipython_config.py
|
||||
|
||||
# pyenv
|
||||
# For a library or package, you might want to ignore these files since the code is
|
||||
# intended to run in multiple environments; otherwise, check them in:
|
||||
# .python-version
|
||||
|
||||
# pipenv
|
||||
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||
# install all needed dependencies.
|
||||
#Pipfile.lock
|
||||
|
||||
# poetry
|
||||
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
||||
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||
# commonly ignored for libraries.
|
||||
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
||||
#poetry.lock
|
||||
|
||||
# pdm
|
||||
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
||||
#pdm.lock
|
||||
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
||||
# in version control.
|
||||
# https://pdm.fming.dev/#use-with-ide
|
||||
.pdm.toml
|
||||
|
||||
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
||||
__pypackages__/
|
||||
|
||||
# Celery stuff
|
||||
celerybeat-schedule
|
||||
celerybeat.pid
|
||||
|
||||
# SageMath parsed files
|
||||
*.sage.py
|
||||
|
||||
# Environments
|
||||
.env
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
lib64/
|
||||
lib64
|
||||
bin/
|
||||
lib/
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
.spyproject
|
||||
|
||||
# Rope project settings
|
||||
.ropeproject
|
||||
|
||||
# mkdocs documentation
|
||||
/site
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
.dmypy.json
|
||||
dmypy.json
|
||||
|
||||
# Pyre type checker
|
||||
.pyre/
|
||||
|
||||
# pytype static type analyzer
|
||||
.pytype/
|
||||
|
||||
# Cython debug symbols
|
||||
cython_debug/
|
||||
|
||||
# PyCharm
|
||||
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
||||
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
||||
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
||||
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||
#.idea/
|
||||
|
||||
# Created by venv; see https://docs.python.org/3/library/venv.html
|
||||
*.sql
|
||||
db.*
|
||||
|
||||
10
api/Dockerfile
Normal file
10
api/Dockerfile
Normal file
@@ -0,0 +1,10 @@
|
||||
FROM python:latest
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY . /app
|
||||
|
||||
COPY requirements.txt requirements.txt
|
||||
RUN pip3 install -r requirements.txt
|
||||
|
||||
CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0"]
|
||||
@@ -59,7 +59,7 @@ def index():
|
||||
|
||||
@app.route('/test')
|
||||
def test():
|
||||
p = Payment(int(random.random()*100),5000,'TEST DE MESSAGE BIEN LONG SKLDJQLKDJQLKSJDQLSKJDQLKJD','Nom donation')
|
||||
p = Payment(int(random.random()*100),0,'TEST DE MESSAGE BIEN LONG SKLDJQLKDJQLKSJDQLSKJDQLKJD','Test')
|
||||
p.save(get_db())
|
||||
notify_client_payment(p)
|
||||
return jsonify(p), 200
|
||||
@@ -22,7 +22,8 @@ class Donator(json.JSONEncoder):
|
||||
def top_donator(conn: Connection):
|
||||
cur = conn.cursor()
|
||||
cur.execute("""select name, sum(amount) from orders
|
||||
group by name
|
||||
group by name
|
||||
order by sum(amount) desc
|
||||
LIMIT 5
|
||||
""")
|
||||
data = cur.fetchall();
|
||||
|
||||
BIN
api/db.sqlite
BIN
api/db.sqlite
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
home = /usr/lib/python-exec/python3.11
|
||||
home = /usr/lib/python-exec/python3.13
|
||||
include-system-site-packages = false
|
||||
version = 3.11.4
|
||||
executable = /usr/bin/python3.11
|
||||
command = /usr/lib/python-exec/python3.11/python -m venv /stuffs/src/helloasso/api
|
||||
version = 3.13.9
|
||||
executable = /usr/bin/python3.13
|
||||
command = /usr/lib/python-exec/python3.13/python -m venv --upgrade /ssd/src/helloasso/api
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
blinker==1.6.2
|
||||
click==8.1.7
|
||||
Flask==2.3.3
|
||||
Flask-Cors==4.0.0
|
||||
flask-sock==0.6.0
|
||||
h11==0.14.0
|
||||
itsdangerous==2.1.2
|
||||
Jinja2==3.1.2
|
||||
MarkupSafe==2.1.3
|
||||
simple-websocket==0.10.1
|
||||
Werkzeug==2.3.7
|
||||
wsproto==1.2.0
|
||||
blinker==1.9.0
|
||||
click==8.3.1
|
||||
Flask==3.1.2
|
||||
flask-cors==6.0.1
|
||||
flask-sock==0.7.0
|
||||
h11==0.16.0
|
||||
itsdangerous==2.2.0
|
||||
Jinja2==3.1.6
|
||||
MarkupSafe==3.0.3
|
||||
simple-websocket==1.1.0
|
||||
Werkzeug==3.1.4
|
||||
wsproto==1.3.2
|
||||
|
||||
19
frontend/Dockerfile
Normal file
19
frontend/Dockerfile
Normal file
@@ -0,0 +1,19 @@
|
||||
FROM node:latest as build
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY package*.json ./
|
||||
|
||||
RUN npm install
|
||||
|
||||
RUN npm install -g @angular/cli
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN ng build --configuration=production
|
||||
|
||||
FROM nginx:latest
|
||||
COPY ./nginx.conf /etc/nginx/conf.d/default.conf
|
||||
COPY --from=build app/dist/helloasso/browser/ /usr/share/nginx/html
|
||||
|
||||
EXPOSE 80
|
||||
10
frontend/nginx.conf
Normal file
10
frontend/nginx.conf
Normal file
@@ -0,0 +1,10 @@
|
||||
server {
|
||||
listen 0.0.0.0:80;
|
||||
listen [::]:80;
|
||||
|
||||
root /usr/share/nginx/html;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html =404;
|
||||
}
|
||||
}
|
||||
@@ -24,7 +24,7 @@ div {
|
||||
</video>
|
||||
<div>
|
||||
<p class="donation-name">{{ Name }}</p>
|
||||
<p class="donation-amount">{{ Euro }}</p>
|
||||
<p class="donation-test">{{ Message }}</p>
|
||||
<p class="donation-amount">{{ Euro }} €</p>
|
||||
<p class="donation-text">{{ Message }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Binary file not shown.
@@ -1,4 +1,5 @@
|
||||
export const environment = {
|
||||
production : false,
|
||||
apiUrl : 'http://localhost:5000/'
|
||||
production : true,
|
||||
apiUrl : 'apihelloasso.ringzero.fr'
|
||||
|
||||
};
|
||||
|
||||
@@ -13,10 +13,10 @@ export class ApiService {
|
||||
}
|
||||
|
||||
Total() {
|
||||
return this.httpClient.get(`${environment.apiUrl}/total`);
|
||||
return this.httpClient.get(`https://${environment.apiUrl}/total`);
|
||||
}
|
||||
|
||||
TopDonators() : Observable<Donator[]> {
|
||||
return this.httpClient.get<Donator[]>(`${environment.apiUrl}/topdonators`);
|
||||
return this.httpClient.get<Donator[]>(`https://${environment.apiUrl}/topdonators`);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import {observable, Observable, Observer, Subject} from 'rxjs';
|
||||
import { WSMessage } from '../app/models/WSMessage';
|
||||
import {environment} from '../environments/environment';
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
})
|
||||
@@ -23,7 +24,7 @@ export class WebsocketService {
|
||||
return !this.isConnected;
|
||||
}
|
||||
connect(){
|
||||
this.socket = new WebSocket('ws://localhost:5000/notify');
|
||||
this.socket = new WebSocket((environment.production?'wss://':'ws://') +environment.apiUrl+'/notify');
|
||||
|
||||
this.socket.onopen = () => {
|
||||
this.isConnected = true;
|
||||
|
||||
@@ -9,11 +9,12 @@ body {
|
||||
.donation-name{
|
||||
font-style: bold;
|
||||
color: red;
|
||||
font-size: 200%;
|
||||
}
|
||||
|
||||
.donation-text{
|
||||
font-style: bold;
|
||||
color: white;
|
||||
color: yellow;
|
||||
}
|
||||
|
||||
.donation-amount{
|
||||
|
||||
Reference in New Issue
Block a user