Skip to content

Commit 163796a

Browse files
nnhathunglthanhhieukhangon
authored
feature-8980: Badge creation in wizard misses default options (#9023)
* feature-8980: Badge creation in wizard misses default options font style options * feature-8980: Badge creation in wizard misses default options add font style as multiple choice * fix multiple head revision * fix empty font style * fix ci/cd * fix ci/cd --------- Co-authored-by: lthanhhieu <[email protected]> Co-authored-by: Khang On - TMA <[email protected]>
1 parent 004fd61 commit 163796a

File tree

7 files changed

+108
-11
lines changed

7 files changed

+108
-11
lines changed

app/api/badge_forms.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ def after_get(badge_forms):
4545
badgeFieldForms = (
4646
BadgeFieldForms.query.filter_by(badge_form_id=item['id'])
4747
.filter_by(badge_id=item['attributes']['badge-id'])
48+
.order_by(BadgeFieldForms.id.asc())
4849
.all()
4950
)
5051
for badgeFieldForm in badgeFieldForms:
@@ -127,7 +128,7 @@ def before_patch(_args, kwargs, data):
127128
badgeFieldForm.font_name = badgeField['font_name']
128129
badgeFieldForm.font_size = badgeField['font_size']
129130
badgeFieldForm.font_color = badgeField['font_color']
130-
badgeFieldForm.font_weight = badgeField['font_weight']
131+
badgeFieldForm.font_weight = badgeField.get('font_weight')
131132
badgeFieldForm.text_rotation = badgeField['text_rotation']
132133
badgeFieldForm.text_alignment = badgeField['text_alignment']
133134
badgeFieldForm.text_type = badgeField['text_type']

app/api/custom/schema/badge_form_field.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from marshmallow import Schema, fields
22

3+
from app.api.schema.badge_field_forms import FontWeight
4+
35

46
class BadgeFieldFormSchema(Schema):
57
"""Badge Field Form Schema"""
@@ -11,7 +13,7 @@ class BadgeFieldFormSchema(Schema):
1113
sample_text = fields.String(allow_none=True)
1214
font_size = fields.Integer(allow_none=True)
1315
font_name = fields.String(allow_none=True)
14-
font_weight = fields.Integer(allow_none=True)
16+
font_weight = fields.List(fields.Nested(FontWeight), allow_none=True)
1517
font_color = fields.String(allow_none=True)
1618
text_rotation = fields.Integer(allow_none=True)
1719
text_alignment = fields.String(allow_none=True)

app/api/helpers/badge_forms.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,30 @@ def create_preivew_badge_pdf(badgeForms):
2929
badgeForms = badgeForms[0]
3030
badgeFieldForms = badgeForms['badgeFields']
3131
badgeId = badgeForms['badgeID']
32+
for badge_field in badgeFieldForms:
33+
font_weight = []
34+
font_style = []
35+
text_decoration = []
36+
if badge_field.get('font_weight'):
37+
for item in badge_field.get('font_weight'):
38+
if item.get('font_weight'):
39+
font_weight.append(item.get('font_weight'))
40+
if item.get('font_style'):
41+
font_style.append(item.get('font_style'))
42+
if item.get('text_decoration'):
43+
text_decoration.append(item.get('text_decoration'))
44+
if not font_weight:
45+
badge_field['font_weight'] = 'none'
46+
else:
47+
badge_field['font_weight'] = ','.join(font_weight)
48+
if not font_style:
49+
badge_field['font_style'] = 'none'
50+
else:
51+
badge_field['font_style'] = ','.join(font_style)
52+
if not text_decoration:
53+
badge_field['text_decoration'] = 'none'
54+
else:
55+
badge_field['text_decoration'] = ','.join(text_decoration)
3256
create_save_pdf(
3357
render_template(
3458
'pdf/badge_forms.html', badgeForms=badgeForms, badgeFieldForms=badgeFieldForms
@@ -119,6 +143,32 @@ def create_print_badge_pdf(badge_form, ticket_holder, list_field_show):
119143
continue
120144

121145
get_value_from_field_indentifier(field, ticket_holder)
146+
147+
for badge_field in badgeFieldForms:
148+
font_weight = []
149+
font_style = []
150+
text_decoration = []
151+
if badge_field.get('font_weight'):
152+
for item in badge_field.get('font_weight'):
153+
if item.get('font_weight'):
154+
font_weight.append(item.get('font_weight'))
155+
if item.get('font_style'):
156+
font_style.append(item.get('font_style'))
157+
if item.get('text_decoration'):
158+
text_decoration.append(item.get('text_decoration'))
159+
if not font_weight:
160+
badge_field['font_weight'] = 'none'
161+
else:
162+
badge_field['font_weight'] = ','.join(font_weight)
163+
if not font_style:
164+
badge_field['font_style'] = 'none'
165+
else:
166+
badge_field['font_style'] = ','.join(font_style)
167+
if not text_decoration:
168+
badge_field['text_decoration'] = 'none'
169+
else:
170+
badge_field['text_decoration'] = ','.join(text_decoration)
171+
122172
create_save_pdf(
123173
render_template(
124174
'pdf/badge_forms.html', badgeForms=badge_form, badgeFieldForms=badgeFieldForms

app/api/schema/badge_field_forms.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
1+
from marshmallow.schema import Schema
12
from marshmallow_jsonapi import fields
2-
from marshmallow_jsonapi.flask import Relationship, Schema
3+
from marshmallow_jsonapi.flask import Relationship
34

45
from app.api.helpers.utilities import dasherize
56
from utils.common import use_defaults
67

78

9+
class FontWeight(Schema):
10+
name = fields.String(required=False)
11+
font_weight = fields.String(required=False)
12+
font_style = fields.String(required=False)
13+
text_decoration = fields.String(required=False)
14+
15+
816
@use_defaults()
917
class BadgeFieldFormSchema(Schema):
1018
"""API Schema for Badge Field Forms database model"""
@@ -35,7 +43,7 @@ class Meta:
3543
text_type = fields.String(required=False)
3644
is_deleted = fields.Boolean(required=False, default=False)
3745
font_name = fields.String(required=False)
38-
font_weight = fields.Integer(required=False)
46+
font_weight = fields.List(fields.Nested(FontWeight), allow_none=True, required=False)
3947
font_color = fields.String(required=False)
4048
margin_top = fields.Integer(required=False)
4149
margin_bottom = fields.Integer(required=False)

app/models/badge_field_form.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class BadgeFieldForms(db.Model):
2020
sample_text = db.Column(db.String, nullable=True)
2121
font_size = db.Column(db.Integer, nullable=True)
2222
font_name = db.Column(db.String, nullable=True)
23-
font_weight = db.Column(db.Integer, nullable=True)
23+
font_weight = db.Column(ARRAY(db.JSON), nullable=True)
2424
font_color = db.Column(db.String, nullable=True)
2525
text_rotation = db.Column(db.Integer, nullable=True)
2626
text_alignment = db.Column(db.String, nullable=True)

app/templates/pdf/badge_forms.html

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,21 @@
1111
{% for badgeFieldForm in badgeFieldForms %}
1212
{% if badgeFieldForm.custom_field == 'QR' %}
1313
<div id="badge_qr" style="text-align: center;
14-
margin-top:{{badgeFieldForm.margin_top}}mm;
15-
margin-bottom:{{badgeFieldForm.margin_bottom}}mm;
16-
margin-left:{{badgeFieldForm.margin_left}}mm;
14+
margin-top:{{badgeFieldForm.margin_top}}mm;
15+
margin-bottom:{{badgeFieldForm.margin_bottom}}mm;
16+
margin-left:{{badgeFieldForm.margin_left}}mm;
1717
margin-right:{{badgeFieldForm.margin_right}}mm;">
1818
<img src="data:image/png;base64, {{ badgeFieldForm.sample_text }}" width="400" alt="QR" />
1919
</div>
2020
{% else %}
21-
<p class="field-style"
21+
<p class="field-style"
2222
style="font-family: {{badgeFieldForm.font_name}};
2323
font-size: {{badgeFieldForm.font_size}} px;
2424
text-align: center;
2525
text-transform: {{badgeFieldForm.text_type}};
26-
font-weight:{{badgeFieldForm.font_weight}};
26+
font-weight: {{badgeFieldForm.font_weight}};
27+
font-style: {{badgeFieldForm.font_style}};
28+
text-decoration: {{badgeFieldForm.text_decoration}};
2729
-webkit-transform: rotate({{badgeFieldForm.text_rotation}}deg);
2830
-moz-transform: rotate({{badgeFieldForm.text_rotation}}deg);
2931
-o-transform: rotate({{badgeFieldForm.text_rotation}}deg);
@@ -39,4 +41,4 @@
3941
{% endfor %}
4042
</div>
4143
</body>
42-
</html>
44+
</html>
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
"""empty message
2+
3+
Revision ID: 8b5bc48e1d4c
4+
Revises: 21c79d253f21
5+
Create Date: 2023-08-01 14:10:12.187180
6+
7+
"""
8+
9+
from alembic import op
10+
import sqlalchemy as sa
11+
from sqlalchemy.dialects import postgresql
12+
13+
# revision identifiers, used by Alembic.
14+
revision = '8b5bc48e1d4c'
15+
down_revision = '21c79d253f21'
16+
17+
18+
def upgrade():
19+
# ### commands auto generated by Alembic - please adjust! ###
20+
op.alter_column('badge_field_forms', 'font_weight',
21+
existing_type=sa.TEXT(),
22+
type_=postgresql.ARRAY(sa.JSON()),
23+
postgresql_using='font_weight::json[]',
24+
existing_nullable=True)
25+
# ### end Alembic commands ###
26+
27+
28+
def downgrade():
29+
# ### commands auto generated by Alembic - please adjust! ###
30+
op.alter_column('badge_field_forms', 'font_weight',
31+
existing_type=postgresql.ARRAY(sa.JSON()),
32+
type_=sa.TEXT(),
33+
existing_nullable=True)
34+
# ### end Alembic commands ###

0 commit comments

Comments
 (0)