Example #1
0
def new_mark():
    form = MarkForm()
    if form.validate_on_submit():
        m = Mark()
        form.populate_obj(m)
        m.owner_id = g.user.id
        m.created = datetime.utcnow()
        if form.tags.data:
            m.tags = ' '.join([t.strip()
                              for t in form.tags.data.strip().split(',')])\
                        .lower()
        m.clicks = 0
        if not form.title.data:
            soup = BSoup(urlopen(form.url.data))
            m.title = soup.title.string
        db.session.add(m)
        db.session.commit()
        flash('New mark %s added' % (m.title), category='info')
        return redirect(url_for('marks'))
    if request.args.get('url'):
        form.url.data = request.args.get('url')
    if request.args.get('title'):
        form.title.data = request.args.get('title')
    if request.args.get('type') == 'feed':
        form.type.data = 'feed'
    return render_template('mark/new.html',
                           title='New mark',
                           form=form)
Example #2
0
def new_mark():
    form = MarkForm()
    if form.validate_on_submit():
        m = Mark()
        form.populate_obj(m)
        m.owner_id = g.user.id
        m.created = datetime.utcnow()
        if form.tags.data:
            m.tags = ' '.join([t.strip()
                              for t in form.tags.data.strip().split(',')])\
                        .lower()
        m.clicks = 0
        if not form.title.data:
            soup = BSoup(urlopen(form.url.data))
            m.title = soup.title.string
        db.session.add(m)
        db.session.commit()
        flash('New mark %s added' % (m.title), category='info')
        return redirect(url_for('marks'))
    if request.args.get('url'):
        form.url.data = request.args.get('url')
    if request.args.get('title'):
        form.title.data = request.args.get('title')
    if request.args.get('type') == 'feed':
        form.type.data = 'feed'
    return render_template('mark/new.html', title='New mark', form=form)
Example #3
0
def giveMark(request, grade_id, lesson_id):
    render = {}
    grade = get_object_or_404(Grade, id = grade_id)
    lesson = get_object_or_404(Lesson, id = lesson_id)
    if (grade in request.user.grades.all()) and (lesson.teacher == request.user):
        if not request.POST.get('send'):
            marks = []
            pupilsForMarks = []
            for pupil in Pupil.objects.filter(grade = grade):
                if request.POST.get('pupil-%d' % pupil.id):
                    try:
                        mark = Mark.objects.get(lesson = lesson, pupil = pupil)
                        markForm = MarkForm(prefix = pupil.id, instance = mark)
                    except ObjectDoesNotExist:
                        markForm = MarkForm(prefix = pupil.id)
                    marks.append({'name': pupil.fi(), 'form': markForm})
                    pupilsForMarks.append(pupil.id)
            render['marks'] = marks
            return render_to_response('marks/teacher/giveMark.html', render, context_instance = RequestContext(request))
        else:
            error = 0
            for pupil in Pupil.objects.filter(grade = grade):
                if request.POST.get('%d-mark' % pupil.id) or request.POST.get('%d-absent' % pupil.id):
                    form = MarkForm(request.POST, prefix = pupil.id)
                    if form.is_valid():
                        try:
                            mark = Mark.objects.get(pupil = Pupil.objects.get(id = pupil.id), 
                                                    lesson = lesson)
                        except ObjectDoesNotExist:
                            mark = Mark()
                        mark.pupil = Pupil.objects.get(id = pupil.id)
                        mark.lesson = lesson
                        mark.mark = form.cleaned_data['mark']
                        mark.absent = form.cleaned_data['absent']
                        mark.comment = form.cleaned_data['comment']
                        mark.save()
                    else:
                        error = 1
            if error == 0:
                return HttpResponseRedirect('/marks/grade/%d/' % grade.id)
            else: 
                marks = []
                for pupil in Pupil.objects.filter(grade = grade):
                    if request.POST.get('%d-mark' % pupil.id) or request.POST.get('%d-absent' % pupil.id):
                        marks.append({'name': pupil.fi(), 'form': MarkForm(request.POST, prefix = pupil.id)})
                render['marks'] = marks
                return render_to_response('marks/teacher/giveMark.html', render, context_instance = RequestContext(request))
    return Http404
Example #4
0
File: app.py Project: lamak/utmr
def check_mark():
    form = MarkForm()
    form.fsrar.choices = Utm.utm_choices()
    params = {
        'template_name_or_list': 'mark.html',
        'title': 'Проверка марок УТМ',
        'description': 'Запрос наличия марки в УТМ (для помарочного учета)',
        'form': form,
    }
    if request.method == 'POST':
        res = None
        file = 'queryfilter.xml'
        xml = get_xml_template(file)
        url_suffix = '/opt/in/QueryFilter'
        mark = request.form['mark'].strip()
        utm = Utm.get_one(fsrar=request.form['fsrar'])
        form.fsrar.data = utm.fsrar

        query = create_unique_mark_xml(utm.fsrar, mark, xml)
        url = utm.url() + url_suffix
        files = {'xml_file': (file, open(query, 'rb'), 'application/xml')}
        try:
            r = requests.post(url, files=files)
            for sign in ET.fromstring(
                    r.text).iter('{http://fsrar.ru/WEGAIS/QueryFilter}result'):
                res = sign.text
        except requests.ConnectionError:
            res = 'УТМ недоступен'
        except UnicodeError:
            res = 'Ошибка в URL проверьте переменные окружения'
        log = f'Проверка марки: {utm.title} [{utm.fsrar}] {mark[:16]}...{mark[-16:]} {res}'
        flash(log)
        logging.info(log)

    return render_template(**params)
Example #5
0
File: app.py Project: lamak/utmr
def convert_base36():
    """ Расшифровка алккода из АМ PDF417 (cтарого образца)"""
    def base36encode(number: int,
                     alphabet='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ') -> str:
        """Converts an integer to a base36 string."""
        if not isinstance(number, int):
            raise TypeError('number must be an integer')

        base36 = ''
        sign = ''

        if number < 0:
            sign = '-'
            number = -number

        if 0 <= number < len(alphabet):
            return sign + alphabet[number]

        while number != 0:
            number, i = divmod(number, len(alphabet))
            base36 = alphabet[i] + base36

        return sign + base36

    def base36decode(number: str):
        return int(number[3:19], 36)

    def convert_to_alccode(number):
        return str(base36decode(number)).zfill(19)

    def convert_to_pdf417_part(code):
        return base36encode(int(code)).zfill(16)

    form = MarkForm()

    params = {
        'form':
        form,
        'template_name_or_list':
        'base36.html',
        'title':
        'Преобразование PDF и алкокода',
        'description':
        f'Расшифровываем алкокод из PDF417, формирует часть PDF417 для поиска из алкокода',
    }
    if request.method == 'POST':

        mark = form.mark.data.rstrip()
        if len(mark) == 68:
            flash(convert_to_alccode(mark))
        elif len(mark) == 19:
            flash(convert_to_pdf417_part(mark))
        elif len(mark) == 150:
            flash('Невозможно извлечь алкокод из марки нового образца')
        else:
            flash('Неожиданная длина марки')

    return render_template(**params)
Example #6
0
def edit_mark(id):
    m = g.user.mid(id)
    form = MarkForm(obj=m)
    if not m:
        abort(403)
    if form.validate_on_submit():
        form.populate_obj(m)
        m.updated = datetime.utcnow()
        db.session.add(m)
        db.session.commit()
        flash('Mark %s updated' % (form.title.data), category='info')
        if form.referrer.data and is_safe_url(form.referrer.data):
            return redirect(form.referrer.data)
        return redirect(url_for('marks'))
    form.referrer.data = request.referrer
    return render_template('mark/edit.html',
                           title='Edit mark - %s' % m.title,
                           form=form)
Example #7
0
def edit_mark(id):
    m = g.user.mid(id)
    form = MarkForm(obj=m)
    if not m:
        abort(403)
    if form.validate_on_submit():
        form.populate_obj(m)
        m.updated = datetime.utcnow()
        db.session.add(m)
        db.session.commit()
        flash('Mark %s updated' % (form.title.data), category='info')
        if form.referrer.data and is_safe_url(form.referrer.data):
            return redirect(form.referrer.data)
        return redirect(url_for('marks'))
    form.referrer.data = request.referrer
    return render_template('mark/edit.html',
                           title='Edit mark - %s' % m.title,
                           form=form)