Esempio n. 1
0
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),
            },
        )
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)
Esempio n. 4
0
def display_phone(number):
    if number is not None:
        number = formats.display_phone(number)
    return number
Esempio n. 5
0
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()
Esempio n. 6
0
def test_display_phone():
    """Converts E.164 to XXX-XXX-XXXX."""
    assert formats.display_phone('+15555555555') == '555-555-5555'
def test_display_phone():
    """Converts E.164 to XXX-XXX-XXXX."""
    assert formats.display_phone('+15555555555') == '555-555-5555'
Esempio n. 8
0
def display_phone(number):
    if number is not None:
        number = formats.display_phone(number)
    return number
Esempio n. 9
0
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()