Пример #1
0
def save_picture(request):
    picture = Picture.objects.get(pk=request.POST['picture_id'])
    user_info = request.user.get_profile()
    user_info.picture = picture
    user_info.save()

    thumb       = Picture.create_thumbnail(picture, 180, 180)
    thumb_small = Picture.create_thumbnail(picture, 50, 50)

    return HttpResponse('{"result":{"picture_id":%s,"thumb_id":%s,"width":%d,"height":%d,"thumb_small_id":%s}}' % (str(picture.id), thumb.id, thumb.width, thumb.height, thumb_small.id), 'text/html', 200)
Пример #2
0
    def testCreatePicture(self):
        logging.info('creating a picture ...')

        picture = Picture()
        picture.picture  = db.Blob(self.picture_file)
        picture.filename = PictureTestCase.PICTURE_FILE_NAME
        picture.save()

        self.assertEquals(193, picture.width)
        self.assertEquals(237, picture.height)
        self.assertEquals('jpg', picture.format)
Пример #3
0
def save_picture(request, id):
    picture = Picture.objects.get(pk=request.POST["picture_id"])
    disc = get_object_or_404(Discipline, pk=id)
    disc.picture = picture
    disc.save()

    return HttpResponse(
        '{"result":{"picture_id":%s,"thumb_id":%s,"thumb_small_id":%s}}'
        % (
            str(picture.id),
            Picture.create_thumbnail(picture, 180, 180).id,
            Picture.create_thumbnail(picture, 50, 50).id,
        ),
        "text/html",
        200,
    )
Пример #4
0
    def testSomething(self):
        picture = Picture()
        picture.picture  = db.Blob(self.picture_file)
        picture.filename = AlbumTestCase.PICTURE_FILE_NAME
        picture.save()

        institution = Institution(name='Institution', picture=picture, description='Description', homepage='http://www.homepage.com')
        institution.save()

        album = Album.create_album(title='Some party', instance=institution)
        album.add_picture(picture)

        logging.info('Institution albums: %s' % str(Album.objects.for_model(institution)))

        for rpa in album.picture_album_set.all():
            logging.info('Picture - %s [%d x %d]' % (rpa.picture.filename, rpa.picture.width, rpa.picture.height))
Пример #5
0
    def testCreateThumbnail(self):
        picture = Picture()
        picture.picture  = db.Blob(self.picture_file)
        picture.filename = PictureTestCase.PICTURE_FILE_NAME
        picture.save()

        thumb = Picture.create_thumbnail(picture, 32, 32)
        self.assertTrue(thumb is not None)
Пример #6
0
def set_picture(request):
    picture = Picture()
    picture.picture = request.FILES['picture'].read()
    picture.save()
    request.session['picture_id'] = picture.id
    thumb       = Picture.create_thumbnail(picture, 200, 200)
    thumb_small = Picture.create_thumbnail(picture, 50, 50)

    return HttpResponse('{"result":{"picture_id":%s,"thumb_id":%s,"width":%d,"height":%d,"thumb_small_id":%s}}' % (str(picture.id), thumb.id, thumb.width, thumb.height, thumb_small.id), 'text/html', 200)
Пример #7
0
def add_picture(request, class_name, slug, album_id):
    instance = get_class(class_name).objects.get(slug=slug)
    album    = Album.objects.get(pk=album_id)
    form     = None

    if request.method == 'GET':
        form = PictureForm()
    else:
        form = PictureForm(request.POST)
        if form.is_valid():
            data = form.cleaned_data
            if request.FILES.has_key('picture'):
                picture = Picture()
                picture.picture = request.FILES['picture'].read()
                picture.save()

                rpa = RelPictureAlbum(picture=picture, album=album)

                if data.has_key('description'):
                    rpa.description = data['description']
                if data.has_key('is_cover'):
                    rpa.is_cover = True
                    
                rpa.save()

                return HttpResponseRedirect(reverse('portal.album.views.detail', args=[class_name, slug, album_id, ]))
            else:
                form.errors['picture'] = form.error_class([_('The picture is required.'),])

    ctx = {
        'instance': instance,
        'album': album,
        'form': form,
    }

    return direct_to_template(request, 'album/add_picture.html', ctx)
Пример #8
0
    def testGetThumbnail(self):
        picture = Picture()
        picture.picture  = db.Blob(self.picture_file)
        picture.filename = PictureTestCase.PICTURE_FILE_NAME
        picture.save()

        pre_thumb = Picture.create_thumbnail(picture, 32, 32)
        self.assertTrue(pre_thumb is not None)

        thumb = Picture.get_thumbnail(picture, 32, 32)
        self.assertTrue(thumb is not None)
        self.assertEquals(pre_thumb.id, thumb.id) # It should not create a new thumbnail
        self.assertTrue(thumb.width <= 32)
        self.assertTrue(thumb.height <= 32)
        self.assertEquals('jpg', thumb.format)

        thumb = Picture.get_thumbnail(picture, 64, 64)
        self.assertTrue(thumb is not None)
        self.assertTrue(thumb.id != pre_thumb.id)

        thumb = Picture.get_thumbnail(picture, 128, 128)
        self.assertTrue(thumb is not None)
        self.assertTrue(thumb.id != pre_thumb.id)
Пример #9
0
def get_discipline(request):
    codigo = request.POST["codigo"]
    senha = request.POST["senha"]

    queryset = DisciplineMetadata.objects.filter(cod_turma=codigo, senha=senha)
    if not queryset.exists():
        return HttpResponse(
            '{"status":"erro","mensagem":"Não foi possível localizar uma disciplina com os dados informados"}'
        )

    discipline = queryset[0].discipline

    imagem = "<img style='float:left' src='%s' width='50px' heighth='50px'/>" % media_url("images/books.png")
    if discipline.picture:
        thumb = Picture.get_thumbnail(discipline.picture, 50, 50)
        imagem = "<img style='float:left' src='/image/%d/' width='%dpx' heighth='%dpx'/>" % (
            thumb.id,
            thumb.width,
            thumb.height,
        )

    return HttpResponse(
        u'{"status":"ok","nome":"%s","id":"%s","imagem":"%s"}' % (discipline.name, discipline.id, imagem)
    )
Пример #10
0
def user_info(request, user_id):
    user      = User.objects.get(pk=user_id)
    user_info = user.get_profile()

    horario_tbl = None

    if user_info.schedule_cache:
        horario_tbl = user_info.schedule_cache
    else:
        dias      = ('segunda', 'terca', 'quarta', 'quinta', 'sexta', 'sabado')
        cores     = ('#BFCFF2', '#F1c8c8', '#FFCBB6', '#FFFFAA', '#D7BCF2', '#BBBBFF', '#A1EDB2', '#BBFFFF', '#FFF7D7')
        cor_atual = 0
        horarios  = []

        if user_info.is_teacher or user_info.get_disciplines_studies():
            disciplinas = []

            if user_info.is_teacher:
                disciplinas = [d.disciplinemetadata_set.all()[0] for d in user_info.get_disciplines_teaches() if d.disciplinemetadata_set.exists()]
            else:
                disciplinas = [d.disciplinemetadata_set.all()[0] for d in user_info.get_disciplines_studies() if d.disciplinemetadata_set.exists()]

            horario_tbl = u'<h2>Horário</h2>'
            horario_tbl += u'<table id="horario_table">\n'
            horario_tbl += u'<thead><tr><th>&nbsp;</th><th>Segunda</th><th>Terça</th><th>Quarta</th><th>Quinta</th><th>Sexta</th><th>Sábado</th></tr></thead>\n'
            horario_tbl += u'<tbody>\n'

            for d in disciplinas:
                for dia in range(0, 6):
                    if d.__dict__[dias[dia]] and d.__dict__[dias[dia]] != 'null':
                        horarios += get_hora_inicio_fim(d.__dict__[dias[dia]])
            horarios = set(horarios)
            horarios = list(horarios)
            horarios.sort()

            rowspan_map     = {}
            rowspan_app_map = {}

            for hora in horarios:
                for dia in range(0, 6):
                    for d in disciplinas:
                        if d.__dict__[dias[dia]] and d.__dict__[dias[dia]] != 'null':
                            horario = get_hora_inicio_fim(d.__dict__[dias[dia]])
                            if hora >= horario[0] and hora < horario[1]:
                                key = (dia, d)
                                qtd = 0
                                if rowspan_map.has_key(key): qtd = rowspan_map[key]
                                rowspan_map[key] = qtd + 1

            for i in range(len(horarios)):
                hora = horarios[i]
                qtd_hora = 0

                if i < len(horarios) - 1:
                    hora_fim = horarios[i + 1]
                    horario_tmp = u'<tr><th>%02d:%02d<br/>%02d:%02d</th>' % (hora.hour, hora.minute,hora_fim.hour, hora_fim.minute)
                else:
                    horario_tmp = u'<tr><th>%02d:%02d</th>' % (hora.hour, hora.minute)

                for dia in range(0, 6):
                    qtd_dia = 0
                    for d in disciplinas:
                        if d.__dict__[dias[dia]] and d.__dict__[dias[dia]] != 'null':
                            horario = get_hora_inicio_fim(d.__dict__[dias[dia]])

                            if hora >= horario[0] and hora < horario[1]:
                                qtd_dia  += 1
                                qtd_hora += 1

                                key = (dia, d)

                                if not rowspan_app_map.has_key(key):
                                    rowspan_app_map[key] = True

                                    tooltip = u''

                                    if d.discipline.picture:
                                        tooltip += u"<img src='/image/%d/'/>" % Picture.get_thumbnail(d.discipline.picture, 50, 50).id
                                    else:
                                        tooltip += u"<img src='%s' width='50px' height='50px'/>" % media_url('images/books.png')
                                    tooltip += u'%s<br/>'% d.discipline.name
                                    tooltip += u'<b>Sala:</b> %s<br/>' % d.discipline.get_sala()
                                    tooltip += u'<b>Horário:</b> %s' % d.discipline.get_horario().replace('\n', '<br/>')

                                    link = reverse('portal.disciplines.views.detail', args=[d.discipline.course.institution.slug, d.discipline.course.slug, d.discipline.slug])

                                    img = None
                                    if d.discipline.picture:
                                        img = u"<img src='/image/%d/'/>" % Picture.get_thumbnail(d.discipline.picture, 10, 10).id
                                    else:
                                        img = u"<img src='%s' width='10px' height='10px'/>" % media_url('images/books.png')
                                    horario_tmp += u'<td rowspan="%d" class="filled" style="background-color:%s" title="%s"><div>%s<a href="%s">%s</a></div></td>' % (rowspan_map[key], cores[cor_atual], tooltip, img, link, d.discipline.name.split('-')[0])
                                    cor_atual = (cor_atual + 1) % len(cores)
                                break;
                    if qtd_dia == 0:
                        horario_tmp += u'<td>&nbsp;</td>'
                horario_tmp += u'</tr>\n'
                if qtd_hora > 0:
                    horario_tbl += horario_tmp
            horario_tbl += u'</tbody></table>'
        if len(horarios) == 0:
            horario_tbl = ''
            disciplinas = []

            if user_info.is_teacher:
                disciplinas = user_info.get_disciplines_teaches()
            else:
                disciplinas = user_info.get_disciplines_studies()

            if len(disciplinas) > 0:
                horario_tbl += '<h2>Disciplinas</h2>'
                horario_tbl += '<ul class="item_list">'

                for d in disciplinas:
                    horario_tbl += '<li>'
                    horario_tbl += '<a href="%s">' % reverse('portal.disciplines.views.detail', args=[d.course.institution.slug, d.course.slug, d.slug])
                    if d.picture:
                        horario_tbl += '<img src="/image/%d/"/>' % Picture.get_thumbnail(d.picture, 50, 50).id
                    else:
                        horario_tbl += '<img src="%s" width="50px" height="50px"/>' % media_url('images/books.png')
                    horario_tbl += '<p>%s</p>' % d.name
                    horario_tbl += '</a>'
                    horario_tbl += '</li>'

                horario_tbl += '</ul>'
        user_info.schedule_cache = horario_tbl
        user_info.save()

    msg_form = MessageForm(user.get_profile())
    upload_url, upload_data = prepare_upload(request, reverse('portal.messages.views.attach_file'))

    ctx = {
        'user_obj'   : user,
        'profile'    : user.get_profile(),
        'horario'    : horario_tbl,
        'msg_form'   : msg_form,
        'attach_form': AttachmentForm(),
        'upload_url' : upload_url,
        'upload_data': upload_data,
        'next'       : request.get_full_path(),
    }

    return direct_to_template(request, 'registration/profile.html', ctx)
Пример #11
0
def show_thumbnail(picture, size):
    size = size.lower().split('x')
    return show_image(Picture.get_thumbnail(picture, int(size[0]), int(size[1])))
Пример #12
0
def save_picture(request, slug):
    picture = Picture.objects.get(pk=request.POST['picture_id'])
    inst = get_object_or_404(Institution, slug__exact=slug)
    inst.picture = picture
    inst.save()

    return HttpResponse('{"result":{"picture_id":%s,"thumb_id":%s,"thumb_small_id":%s}}' % (str(picture.id), Picture.create_thumbnail(picture, 180, 180).id, Picture.create_thumbnail(picture, 50, 50).id), 'text/html', 200)
Пример #13
0
def save_picture(request, id):
    picture = Picture.objects.get(pk=request.POST['picture_id'])
    course = get_object_or_404(Course, pk=id)
    course.picture = picture
    course.save()

    return HttpResponse('{"result":{"picture_id":%s,"thumb_id":%s,"thumb_small_id":%s}}' % (str(picture.id), Picture.create_thumbnail(picture, 180, 180).id, Picture.create_thumbnail(picture, 50, 50).id), 'text/html', 200)