adding defaults, modifiers, traits and attributes
This commit is contained in:
@@ -6,7 +6,6 @@ from collections import defaultdict
|
||||
from pyramid.httpexceptions import HTTPFound
|
||||
from pyramid.interfaces import IRoutesMapper
|
||||
|
||||
from ttfrog.attribute_map import AttributeMap
|
||||
from ttfrog.db.manager import db
|
||||
from ttfrog.db import transaction_log
|
||||
|
||||
@@ -69,6 +68,8 @@ class BaseController:
|
||||
self._form = self.model_form(self.request.POST, obj=self.record)
|
||||
else:
|
||||
self._form = self.model_form(obj=self.record)
|
||||
if not self.record.id:
|
||||
self._form.process()
|
||||
return self._form
|
||||
|
||||
@property
|
||||
@@ -82,18 +83,16 @@ class BaseController:
|
||||
self.attrs['all_records'] = db.query(self.model).all()
|
||||
|
||||
def template_context(self, **kwargs) -> dict:
|
||||
return AttributeMap.from_dict({
|
||||
'c': dict(
|
||||
config=self.config,
|
||||
request=self.request,
|
||||
form=self.form,
|
||||
record=self.record,
|
||||
routes=get_all_routes(self.request),
|
||||
resources=self.resources,
|
||||
**self.attrs,
|
||||
**kwargs,
|
||||
)
|
||||
})
|
||||
return dict(
|
||||
config=self.config,
|
||||
request=self.request,
|
||||
form=self.form,
|
||||
record=self.record,
|
||||
routes=get_all_routes(self.request),
|
||||
resources=self.resources,
|
||||
**self.attrs,
|
||||
**kwargs,
|
||||
)
|
||||
|
||||
def save(self):
|
||||
if not self.form.save.data:
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
from ttfrog.webserver.controllers.base import BaseController
|
||||
from ttfrog.webserver.forms import DeferredSelectField, DeferredSelectMultipleField
|
||||
from ttfrog.db.schema import Character, Ancestry, CharacterClass, STATS
|
||||
from ttfrog.db.schema import Character, Ancestry, CharacterClass, AncestryTrait, Modifier, STATS
|
||||
from ttfrog.db.manager import db
|
||||
from ttfrog.attribute_map import AttributeMap
|
||||
|
||||
from wtforms_alchemy import ModelForm
|
||||
from wtforms.fields import SubmitField, SelectMultipleField
|
||||
from wtforms.widgets import Select
|
||||
@@ -35,3 +38,14 @@ class CharacterSheet(BaseController):
|
||||
return super().resources + [
|
||||
{'type': 'script', 'uri': 'js/character_sheet.js'},
|
||||
]
|
||||
|
||||
def template_context(self, **kwargs) -> dict:
|
||||
ctx = super().template_context(**kwargs)
|
||||
if self.record.ancestry:
|
||||
ancestry = db.query(Ancestry).filter_by(name=self.record.ancestry).one()
|
||||
ctx['traits'] = {}
|
||||
for trait in db.query(AncestryTrait).filter_by(ancestry_id=ancestry.id).all():
|
||||
ctx['traits'][trait.description] = db.query(Modifier).filter_by(source_table_name=trait.__tablename__, source_table_id=trait.id).all()
|
||||
else:
|
||||
ctx['traits'] = {};
|
||||
return ctx
|
||||
|
||||
@@ -2,6 +2,10 @@ from pyramid.response import Response
|
||||
from pyramid.view import view_config
|
||||
from ttfrog.db.manager import db
|
||||
from ttfrog.db.schema import Ancestry
|
||||
from ttfrog.attribute_map import AttributeMap
|
||||
|
||||
def response_from(controller):
|
||||
return controller.response() or AttributeMap.from_dict({'c': controller.template_context()})
|
||||
|
||||
|
||||
@view_config(route_name='index')
|
||||
@@ -12,5 +16,4 @@ def index(request):
|
||||
|
||||
@view_config(route_name='sheet', renderer='character_sheet.html')
|
||||
def sheet(request):
|
||||
controller = request.context
|
||||
return controller.response() or controller.template_context()
|
||||
return response_from(request.context)
|
||||
|
||||
Reference in New Issue
Block a user