resource pool system

This commit is contained in:
Iain Learmonth 2022-09-26 13:40:59 +01:00
parent dc989dd7cb
commit 16f7e2199d
19 changed files with 382 additions and 105 deletions

View file

@ -1,6 +1,6 @@
import json
from datetime import datetime
from typing import Optional
from typing import Optional, Any
from flask import render_template, url_for, flash, redirect, Blueprint, Response
from flask.typing import ResponseReturnValue
@ -13,7 +13,7 @@ from app.extensions import db
from app.lists.bc2 import mirror_sites
from app.lists.bridgelines import bridgelines
from app.lists.mirror_mapping import mirror_mapping
from app.models.base import MirrorList
from app.models.base import MirrorList, Pool
from app.portal.util import response_404, view_lifecycle
bp = Blueprint("list", __name__)
@ -96,6 +96,7 @@ def list_new(group_id: Optional[int] = None) -> ResponseReturnValue:
form.encoding.choices = list(MirrorList.encodings_supported.items())
if form.validate_on_submit():
list_ = MirrorList()
list_.pool_id = form.pool.data
list_.provider = form.provider.data
list_.format = form.format.data
list_.encoding = form.encoding.data
@ -122,6 +123,7 @@ def list_new(group_id: Optional[int] = None) -> ResponseReturnValue:
class NewMirrorListForm(FlaskForm): # type: ignore
pool = SelectField('Resource Pool', validators=[DataRequired()])
provider = SelectField('Provider', validators=[DataRequired()])
format = SelectField('Distribution Method', validators=[DataRequired()])
encoding = SelectField('Encoding', validators=[DataRequired()])
@ -136,6 +138,12 @@ class NewMirrorListForm(FlaskForm): # type: ignore
filename = StringField('Filename', validators=[DataRequired()])
submit = SubmitField('Save Changes')
def __init__(self, *args: Any, **kwargs: Any) -> None:
super().__init__(*args, **kwargs)
self.pool.choices = [
(pool.id, pool.pool_name) for pool in Pool.query.all()
]
@bp.route('/edit/<list_id>', methods=['GET', 'POST'])
def list_edit(list_id: int) -> ResponseReturnValue:
@ -160,6 +168,7 @@ def list_edit(list_id: int) -> ResponseReturnValue:
form.format.choices = list(MirrorList.formats_supported.items())
form.encoding.choices = list(MirrorList.encodings_supported.items())
if form.validate_on_submit():
list_.pool_id = form.pool.data
list_.provider = form.provider.data
list_.format = form.format.data
list_.encoding = form.encoding.data