def add_student(request, group_id=None): """Add a student.""" group = get_object_or_404(model.Group, id=group_id) if group_id else None if request.method == 'POST': form = forms.AddStudentForm( request.POST, elder=request.user.profile, group=group) if form.is_valid(): with xact.xact(): student = form.save() tracking.track(request, 'added student') return redirect_to_village(student, group) else: form = forms.AddStudentForm(elder=request.user.profile, group=group) return TemplateResponse( request, 'village/student_form/add_student.html', { 'form': form, 'group': group, 'code': group.code if group else request.user.profile.code, 'default_lang_code': settings.LANGUAGE_CODE, 'pyo_phone': formats.display_phone( request.user.profile.source_phone), 'group_just_created': group and request.GET.get('created', None), }, )
def __init__(self, *a, **kw): """ Pull instance/rel kwargs out, set initial data. Optional 'rel' kwarg is the relationship between the edited elder and a student, if the elder is being edited in a student village context. """ self.instance = kw.pop('instance') self.rel = kw.pop('rel', None) initial = kw.setdefault('initial', {}) initial['name'] = self.instance.name initial['role'] = self.instance.role_in_context initial['phone'] = (formats.display_phone(self.instance.phone) if self.instance.phone else '') super(EditFamilyForm, self).__init__(*a, **kw)
def __init__(self, *a, **kw): """ Pull instance/rel kwargs out, set initial data. Optional 'rel' kwarg is the relationship between the edited elder and a student, if the elder is being edited in a student village context. """ self.instance = kw.pop('instance') self.rel = kw.pop('rel', None) initial = kw.setdefault('initial', {}) initial['name'] = self.instance.name initial['role'] = self.instance.role_in_context initial['phone'] = ( formats.display_phone(self.instance.phone) if self.instance.phone else '' ) super(EditFamilyForm, self).__init__(*a, **kw)
def display_phone(number): if number is not None: number = formats.display_phone(number) return number
def generate_instructions_pdf(stream, lang, name, code, phone, group=None): """Generate a parent signup instructions PDF and write it to stream.""" template_dir = os.path.dirname(os.path.abspath(__file__)) template_path = os.path.join( template_dir, 'parent-instructions-template.pdf', ) display_phone = formats.display_phone(phone) if lang != settings.LANGUAGE_CODE: code += " " + lang code = code.lower() sections = { 'header': '%s %s' % (get_text(lang, 'action'), name), 'phone_label': get_text(lang, 'phone_label'), 'phone': display_phone, 'code_label': get_text(lang, 'code_label'), 'code': code, 'sample_to_label': 'To: ', 'sample_to': display_phone, 'sample_message_label': 'Message: ', 'sample_message': code, 'note': get_text(lang, 'note'), 'signature': get_text(lang, 'signature'), 'date': get_text(lang, 'date'), 'footer': get_text(lang, 'footer'), } if group: sections['group'] = unicode(group) template_page = pyPdf.PdfFileReader(open(template_path, 'rb')).getPage(0) buffer = io.BytesIO() c = canvas.Canvas(buffer, pagesize=landscape(LETTER)) text_color = Color(*[color/255.0 for color in COLOR]) for name, text in sections.items(): coords, fontname, fontsize, wrap = SECTIONS[name] style = ParagraphStyle( name=name, fontName=fontname, fontSize=fontsize, textColor=text_color, leading=fontsize + 4, ) p = Paragraph(text, style=style) p.wrapOn(c, wrap or 600, 600) p.drawOn(c, coords[0], coords[1]) c.showPage() c.save() # Get the value of the BytesIO buffer and write it to the response. additions_page = pyPdf.PdfFileReader(buffer).getPage(0) template_page.mergePage(additions_page) output = pyPdf.PdfFileWriter() output.addPage(template_page) output.write(stream) buffer.close()
def test_display_phone(): """Converts E.164 to XXX-XXX-XXXX.""" assert formats.display_phone('+15555555555') == '555-555-5555'
def generate_instructions_pdf(stream, lang, name, code, phone, group=None): """Generate a parent signup instructions PDF and write it to stream.""" template_dir = os.path.dirname(os.path.abspath(__file__)) template_path = os.path.join( template_dir, 'parent-instructions-template.pdf', ) display_phone = formats.display_phone(phone) if lang != settings.LANGUAGE_CODE: code += " " + lang code = code.lower() sections = { 'header': '%s %s' % (get_text(lang, 'action'), name), 'phone_label': get_text(lang, 'phone_label'), 'phone': display_phone, 'code_label': get_text(lang, 'code_label'), 'code': code, 'sample_to_label': 'To: ', 'sample_to': display_phone, 'sample_message_label': 'Message: ', 'sample_message': code, 'note': get_text(lang, 'note'), 'signature': get_text(lang, 'signature'), 'date': get_text(lang, 'date'), 'footer': get_text(lang, 'footer'), } if group: sections['group'] = unicode(group) template_page = pyPdf.PdfFileReader(open(template_path, 'rb')).getPage(0) buffer = io.BytesIO() c = canvas.Canvas(buffer, pagesize=landscape(LETTER)) text_color = Color(*[color / 255.0 for color in COLOR]) for name, text in sections.items(): coords, fontname, fontsize, wrap = SECTIONS[name] style = ParagraphStyle( name=name, fontName=fontname, fontSize=fontsize, textColor=text_color, leading=fontsize + 4, ) p = Paragraph(text, style=style) p.wrapOn(c, wrap or 600, 600) p.drawOn(c, coords[0], coords[1]) c.showPage() c.save() # Get the value of the BytesIO buffer and write it to the response. additions_page = pyPdf.PdfFileReader(buffer).getPage(0) template_page.mergePage(additions_page) output = pyPdf.PdfFileWriter() output.addPage(template_page) output.write(stream) buffer.close()