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)
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) )
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> </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> </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)
def show_thumbnail(picture, size): size = size.lower().split('x') return show_image(Picture.get_thumbnail(picture, int(size[0]), int(size[1])))