def get_placeholder_options(): return { name: placeholder for name, placeholder in get_placeholders( 'designer-fields').viewitems() if not placeholder.admin_only or session.user.is_admin }
def _build_pdf(self, canvas): config = self.config tpl_data = self.tpl_data if self.template.background_image: with self.template.background_image.open() as f: self._draw_background( canvas, ImageReader(self._remove_transparency(f)), tpl_data, config.margin_horizontal, config.margin_vertical, tpl_data.width_cm * cm, tpl_data.height_cm * cm) placeholders = get_placeholders('designer-fields') for item in tpl_data.items: placeholder = placeholders.get(item['type']) if placeholder: if placeholder.group == 'event': text = placeholder.render(self.event) else: continue elif item.get('text') is not None: text = item['text'] self._draw_item(canvas, item, tpl_data, text, config.margin_horizontal, config.margin_vertical)
def _draw_badge(self, canvas, registration, template, tpl_data, pos_x, pos_y): """Draw a badge for a given registration, at position pos_x, pos_y (top-left corner).""" config = self.config badge_rect = (pos_x, self.height - pos_y - tpl_data.height_cm * cm, tpl_data.width_cm * cm, tpl_data.height_cm * cm) if config.dashed_border: canvas.saveState() canvas.setDash(1, 5) canvas.rect(*badge_rect) canvas.restoreState() if template.background_image: with template.background_image.open() as f: self._draw_background(canvas, ImageReader(self._remove_transparency(f)), tpl_data, *badge_rect) placeholders = get_placeholders('designer-fields') for item in tpl_data.items: placeholder = placeholders.get(item['type']) if placeholder: if placeholder.group == 'registrant': text = placeholder.render(registration) else: text = placeholder.render(registration.event) elif item['text']: text = item['text'] else: continue self._draw_item(canvas, item, tpl_data, text, pos_x, pos_y)
def _draw_badge(self, canvas, registration, pos_x, pos_y): """Draw a badge for a given registration, at position pos_x, pos_y (top-left corner).""" config = self.config tpl_data = self.tpl_data badge_rect = (pos_x, self.height - pos_y - tpl_data.height_cm * cm, tpl_data.width_cm * cm, tpl_data.height_cm * cm) if config.dashed_border: canvas.saveState() canvas.setDash(1, 5) canvas.rect(*badge_rect) canvas.restoreState() if self.template.background_image: with self.template.background_image.open() as f: self._draw_background(canvas, ImageReader(f), *badge_rect) placeholders = get_placeholders('designer-fields') for item in tpl_data.items: placeholder = placeholders.get(item['type']) if placeholder: if placeholder.group == 'registrant': text = placeholder.render(registration) else: text = placeholder.render(registration.event_new) elif item['text']: text = item['text'] self._draw_item(canvas, item, text, pos_x, pos_y)
def is_ticket(self): placeholders = get_placeholders('designer-fields') if any(placeholders[item['type']].is_ticket for item in self.data['items'] if item['type'] in placeholders): return True elif self.backside_template and self.backside_template.is_ticket: return True else: return False
def is_ticket(self): placeholders = get_placeholders('designer-fields') if any(placeholders[item['type']].is_ticket for item in self.data['items'] if item['type'] in placeholders): return True elif self.backside_template and self.backside_template.is_ticket: return True else: return False
def get_placeholder_options(): groups = { group_id: { 'title': group_title, 'options': {} } for group_id, group_title in GROUP_TITLES.viewitems() } for pname, placeholder in get_placeholders('designer-fields').viewitems(): groups[placeholder.group]['options'][pname] = placeholder.description return groups
def _draw_badge(self, canvas, registration, template, tpl_data, pos_x, pos_y): """ Draw a badge for a given registration, at position pos_x, pos_y (top-left corner). """ config = self.config badge_rect = (pos_x, self.height - pos_y - tpl_data.height_cm * cm, tpl_data.width_cm * cm, tpl_data.height_cm * cm) if config.dashed_border: canvas.saveState() canvas.setDash(1, 5) canvas.rect(*badge_rect) canvas.restoreState() if template.background_image: with template.background_image.open() as f: self._draw_background( canvas, ImageReader(self._remove_transparency(f)), tpl_data, *badge_rect) placeholders = get_placeholders('designer-fields') # Print images first image_placeholders = { name for name, placeholder in placeholders.items() if placeholder.is_image } items = sorted(tpl_data.items, key=lambda item: item['type'] not in image_placeholders) for item in items: placeholder = placeholders.get(item['type']) if placeholder: if placeholder.group == 'registrant': text = placeholder.render(registration) else: text = placeholder.render(registration.event) elif item['text']: text = item['text'] else: continue self._draw_item(canvas, item, tpl_data, text, pos_x, pos_y)
def _build_pdf(self, canvas): config = self.config tpl_data = self.tpl_data if self.template.background_image: with self.template.background_image.open() as f: self._draw_background(canvas, ImageReader(f), tpl_data, config.margin_horizontal, config.margin_vertical, tpl_data.width_cm * cm, tpl_data.height_cm * cm) placeholders = get_placeholders('designer-fields') for item in tpl_data.items: placeholder = placeholders.get(item['type']) if placeholder: if placeholder.group == 'event': text = placeholder.render(self.event) else: continue elif item.get('text') is not None: text = item['text'] self._draw_item(canvas, item, tpl_data, text, config.margin_horizontal, config.margin_vertical)
def get_placeholder_options(): return {name: placeholder for name, placeholder in get_placeholders('designer-fields').viewitems() if not placeholder.admin_only or session.user.is_admin}
def _draw_badge(self, canvas, registration, template, tpl_data, pos_x, pos_y): """ Draw a badge for a given registration, at position pos_x, pos_y (top-left corner). """ config = self.config badge_rect = (pos_x, self.height - pos_y - tpl_data.height_cm * cm, tpl_data.width_cm * cm, tpl_data.height_cm * cm) if config.dashed_border: canvas.saveState() canvas.setDash(1, 5) canvas.rect(*badge_rect) canvas.restoreState() if template.background_image: with template.background_image.open() as f: self._draw_background( canvas, ImageReader(self._remove_transparency(f)), tpl_data, *badge_rect) placeholders = get_placeholders('designer-fields') # Print images first image_placeholders = { name for name, placeholder in placeholders.items() if placeholder.is_image } items = sorted(tpl_data.items, key=lambda item: (int(item.get('zIndex', 10)), item[ 'type'] not in image_placeholders)) for item in items: placeholder = placeholders.get(item['type']) if placeholder: if placeholder.group == 'registrant': text = placeholder.render(registration) elif placeholder.group == 'event': text = placeholder.render(registration.event) elif placeholder.group == 'fixed': text = placeholder.render(item) else: raise ValueError( f'Unknown placeholder group: `{placeholder.group}`') else: continue item_data = { 'item': item, 'text': text, 'pos_x': pos_x, 'pos_y': pos_y } for update in values_from_signal( signals.event.designer.draw_item_on_badge.send( registration, items=items, height=self.height, width=self.width, data=item_data), as_list=True): item_data.update(update) self._draw_item(canvas, item_data['item'], tpl_data, item_data['text'], item_data['pos_x'], item_data['pos_y'])