def number_pdf(self, participant_id): participant = Participant.objects.get(id=participant_id) activate(participant.application.language if participant. application else 'lv') output = BytesIO() c = canvas.Canvas(output, pagesize=A4) fill_page_with_image( "velo/media/competition/vestule/VBm_2016_vestule_ar_tekstu.jpg", c) c.setFont(_baseFontNameB, 18) c.drawString( 8.0 * cm, 20.45 * cm, "%s %s" % (participant.full_name.upper(), participant.birthday.year)) c.drawString(5.8 * cm, 18.2 * cm, str(participant.distance)) if participant.primary_number: c.setFont(_baseFontNameB, 35) c.drawString(15 * cm, 19.2 * cm, str(participant.primary_number)) # elif participant.distance_id == self.GIMENU_DISTANCE_ID: # c.setFont(_baseFontNameB, 25) # c.drawString(15*cm, 18.5*cm, "Amway") else: c.setFont(_baseFontNameB, 25) c.drawString(15 * cm, 19.225 * cm, "-") c.showPage() c.save() output.seek(0) return output
def generate_diploma(self, result): output = BytesIO() path = 'velo/results/files/diplomas/%i/%i.jpg' % ( self.competition_id, result.participant.distance_id) if not os.path.isfile(path): raise Exception c = canvas.Canvas(output, pagesize=A4) fill_page_with_image(path, c) c.setFont(_baseFontNameB, 35) c.drawCentredString(c._pagesize[0] / 2, 16.3 * cm, result.participant.full_name) if result.participant.distance_id in (self.SPORTA_DISTANCE_ID, self.TAUTAS_DISTANCE_ID): c.setFont(_baseFontName, 25) c.drawCentredString(c._pagesize[0] / 2, 15 * cm, "%i.vieta" % result.result_distance) c.setFont(_baseFontName, 18) c.drawCentredString( c._pagesize[0] / 2, 14 * cm, "Laiks: %s" % result.time.replace(microsecond=0)) c.drawCentredString(c._pagesize[0] / 2, 13 * cm, "Vidējais ātrums: %s km/h" % result.avg_speed) c.showPage() c.save() output.seek(0) return output
def number_pdf(self, participant_id): participant = Participant.objects.get(id=participant_id) activate(participant.application.language if participant.application else 'lv') output = BytesIO() c = canvas.Canvas(output, pagesize=A4) fill_page_with_image("velo/media/competition/vestule/VB2017.jpg", c) c.setFont(_baseFontNameB, 18) c.drawString(9.0*cm, 21.35*cm, "%s %s" % (participant.full_name.upper(), participant.birthday.year)) c.drawString(6.4*cm, 19.1*cm, str(participant.distance)) if participant.primary_number: c.setFont(_baseFontNameB, 35) c.drawString(16*cm, 20.1*cm, str(participant.primary_number)) # elif participant.distance_id == self.GIMENU_DISTANCE_ID: # c.setFont(_baseFontNameB, 25) # c.drawString(15*cm, 18.5*cm, "Amway") else: c.setFont(_baseFontNameB, 25) c.drawString(16*cm, 20.1*cm, "-") c.showPage() c.save() output.seek(0) return output
def generate_diploma(self, result): output = BytesIO() path = 'velo/results/files/diplomas/%i/%i.jpg' % (self.competition_id, result.participant.distance_id) if not os.path.isfile(path): raise Exception c = canvas.Canvas(output, pagesize=A4) fill_page_with_image(path, c) c.setFont(_baseFontNameB, 35) c.drawCentredString(c._pagesize[0] / 2, 16.3*cm, result.participant.full_name) c.setFont(_baseFontName, 25) c.drawCentredString(c._pagesize[0] / 2, 15*cm, "%i.vieta" % result.result_distance) c.setFont(_baseFontName, 18) c.drawCentredString(c._pagesize[0] / 2, 14*cm, "Laiks: %s" % result.time.replace(microsecond=0)) c.drawCentredString(c._pagesize[0] / 2, 13*cm, "Vidējais ātrums: %s km/h" % result.avg_speed) # if result.zero_time: # zero_time = datetime.datetime.combine(datetime.date.today(), result.zero_time) # delta = datetime.datetime.combine(datetime.date.today(), datetime.time(0, 0, 0)) - zero_time # zero_time = (datetime.datetime.combine(datetime.date.today(), result.time) + delta).time().replace(microsecond=0) # c.drawCentredString(c._pagesize[0] / 2, 12*cm, "Čipa laiks: %s" % zero_time) c.showPage() c.save() output.seek(0) return output
def number_pdf(self, participant_id): participant = Participant.objects.get(id=participant_id) output = BytesIO() c = canvas.Canvas(output, pagesize=A4) fill_page_with_image( "media/competition/vestule/RVm_2015_vestule_ar_tekstu.jpg", c) c.setFont(_baseFontNameB, 18) c.drawString( 5 * cm, 20 * cm, "%s %s" % (participant.full_name.upper(), participant.birthday.year)) c.drawString(5 * cm, 18 * cm, str(participant.distance)) if participant.primary_number: c.setFont(_baseFontNameB, 35) c.drawString(15 * cm, 18.5 * cm, str(participant.primary_number)) elif participant.distance_id == self.GIMENU_DISTANCE_ID: c.setFont(_baseFontNameB, 25) c.drawString(15 * cm, 18.5 * cm, "Amway") else: c.setFont(_baseFontNameB, 25) c.drawString(15 * cm, 18.5 * cm, "-") c.showPage() c.save() output.seek(0) return output
def generate_diploma(self, result): output = BytesIO() path = 'velo/results/files/diplomas/%i/%i.jpg' % (self.competition_id, result.participant.distance_id) if not os.path.isfile(path): raise Exception c = canvas.Canvas(output, pagesize=A4) fill_page_with_image(path, c) c.setFont(_baseFontNameB, 35) c.drawCentredString(c._pagesize[0] / 2, 16.3*cm, result.participant.full_name) if result.participant.distance_id in (self.SPORTA_DISTANCE_ID, self.TAUTAS_DISTANCE_ID): c.setFont(_baseFontName, 25) c.drawCentredString(c._pagesize[0] / 2, 15*cm, "%i.vieta" % result.result_distance) c.setFont(_baseFontName, 18) c.drawCentredString(c._pagesize[0] / 2, 14*cm, "Laiks: %s" % result.time.replace(microsecond=0)) c.drawCentredString(c._pagesize[0] / 2, 13*cm, "Vidējais ātrums: %s km/h" % result.avg_speed) c.showPage() c.save() output.seek(0) return output
def generate_diploma(self, result): output = BytesIO() path = 'velo/results/files/diplomas/%i/%i.jpg' % ( self.competition_id, result.participant.distance_id) if not os.path.isfile(path): raise Exception c = canvas.Canvas(output, pagesize=A4) fill_page_with_image(path, c) c.setFont(_baseFontNameB, 35) c.drawCentredString(c._pagesize[0] / 2, 16.3 * cm, result.participant.full_name) c.setFont(_baseFontName, 25) c.drawCentredString(c._pagesize[0] / 2, 15 * cm, "%i.vieta" % result.result_distance) c.setFont(_baseFontName, 18) c.drawCentredString(c._pagesize[0] / 2, 14 * cm, "Laiks: %s" % result.time.replace(microsecond=0)) c.drawCentredString(c._pagesize[0] / 2, 13 * cm, "Vidējais ātrums: %s km/h" % result.avg_speed) # if result.zero_time: # zero_time = datetime.datetime.combine(datetime.date.today(), result.zero_time) # delta = datetime.datetime.combine(datetime.date.today(), datetime.time(0, 0, 0)) - zero_time # zero_time = (datetime.datetime.combine(datetime.date.today(), result.time) + delta).time().replace(microsecond=0) # c.drawCentredString(c._pagesize[0] / 2, 12*cm, "Čipa laiks: %s" % zero_time) c.showPage() c.save() output.seek(0) return output
def number_pdf(self, participant_id): activate('lv') participant = Participant.objects.get(id=participant_id) output = BytesIO() c = canvas.Canvas(output, pagesize=A4) fill_page_with_image("velo/media/competition/vestule/RVm_2018_vestule_ar_tekstu.jpg", c) c.setFont(_baseFontNameB, 18) c.drawString(5*cm, 20.4*cm, "%s %s" % (participant.full_name.upper(), participant.birthday.year)) c.drawString(4*cm, 18.4*cm, str(participant.distance)) if participant.primary_number: c.setFont(_baseFontNameB, 35) c.drawString(15*cm, 19.4*cm, str(participant.primary_number)) # elif participant.distance_id == self.GIMENU_DISTANCE_ID: # c.setFont(_baseFontNameB, 25) # c.drawString(14*cm, 19.4*cm, "Ģimeņu br.") else: c.setFont(_baseFontNameB, 25) c.drawString(15.5*cm, 19.4*cm, "-") c.showPage() c.save() output.seek(0) return output
def generate_diploma(self, result): output = BytesIO() path = 'velo/results/files/diplomas/%i/%i.jpg' % ( self.competition_id, result.participant.distance_id) if not os.path.isfile(path): raise Exception # total_participants = result.participant.distance.participant_set.filter(is_participating=True).count() # total_group_participants = result.participant.distance.participant_set.filter(is_participating=True, group=result.participant.group).count() total_participants = result.competition.result_set.filter( participant__distance=result.participant.distance).count() total_group_participants = result.competition.result_set.filter( participant__distance=result.participant.distance, participant__group=result.participant.group).count() c = canvas.Canvas(output, pagesize=A4) fill_page_with_image(path, c) c.setFont(_baseFontNameB, 28) c.setFillColor(HexColor(0xf16b60)) c.drawString(c._pagesize[0] - 3.3 * cm, 28.3 * cm, str(result.participant.primary_number)) c.setFont(_baseFontNameB, 32) c.setFillColor(HexColor(0x46445c)) c.drawString(1 * cm, 28.2 * cm, result.participant.full_name) c.setFont(_baseFontName, 25) c.drawCentredString(5.55 * cm, 10 * cm, str(result.time.replace(microsecond=0))) c.drawCentredString(3 * cm, 6.5 * cm, str(result.result_distance)) c.drawCentredString(7.6 * cm, 6.5 * cm, str(total_participants)) c.drawCentredString(15.5 * cm, 6.5 * cm, "%s km/h" % result.avg_speed) c.drawCentredString(13.2 * cm, 9.3 * cm, str(result.result_group)) c.drawCentredString(17.7 * cm, 9.3 * cm, str(total_group_participants)) c.setFont(_baseFontName, 18) c.drawCentredString(15.5 * cm, 10.9 * cm, str(result.participant.group)) c.showPage() c.save() output.seek(0) return output
def generate_diploma(self, result): output = BytesIO() path = 'velo/results/files/diplomas/%i/%i.jpg' % (self.competition_id, result.participant.distance_id) if not os.path.isfile(path): raise Exception riga_tz = pytz.timezone("Europe/Riga") now = riga_tz.normalize(timezone.now()) if (now.date() == self.competition.competition_date) and now.hour < 17: total_participants = result.participant.distance.participant_set.filter(is_participating=True).count() total_group_participants = result.participant.distance.participant_set.filter(is_participating=True, group=result.participant.group).count() else: total_participants = result.competition.result_set.filter(participant__distance=result.participant.distance).count() total_group_participants = result.competition.result_set.filter(participant__distance=result.participant.distance, participant__group=result.participant.group).count() c = canvas.Canvas(output, pagesize=A4) fill_page_with_image(path, c) c.setFont(_baseFontNameB, 30) if result.participant.distance_id in (self.SPORTA_DISTANCE_ID, self.TAUTAS_DISTANCE_ID, self.GIMENU_DISTANCE_ID): c.drawCentredString(c._pagesize[0] / 2, 12.5*cm, result.participant.full_name) c.drawString(5.75*cm, 11.1 * cm, str(result.participant.primary_number)) if result.participant.distance_id in (self.SPORTA_DISTANCE_ID, self.TAUTAS_DISTANCE_ID): c.setFont(_baseFontName, 25) c.drawCentredString(14*cm, 7.7*cm, str(result.result_distance) if result.result_distance else '-') c.drawCentredString(17.5 * cm, 7.7 * cm, str(total_participants)) c.drawCentredString(5.25*cm, 7.7*cm, str(result.time.replace(microsecond=0))) c.drawCentredString(15.75*cm, 4.7*cm, "%s km/h" % result.avg_speed) c.drawCentredString(3.4*cm, 4.7*cm, str(result.result_group) if result.result_group else '-') c.drawCentredString(7.0 * cm, 4.7 * cm, str(total_group_participants)) elif result.participant.distance_id in (self.GIMENU_DISTANCE_ID, ): c.drawCentredString(5.25 * cm, 7.7 * cm, str(result.time.replace(microsecond=0))) else: c.drawCentredString(c._pagesize[0] / 2, 10.5 * cm, result.participant.full_name) c.showPage() c.save() output.seek(0) return output
def generate_diploma(self, result): output = BytesIO() path = 'velo/results/files/diplomas/%i/%i.jpg' % ( self.competition_id, result.participant.distance_id) if not os.path.isfile(path): raise Exception total_participants = result.competition.result_set.filter( participant__distance=result.participant.distance).count() total_group_participants = result.competition.result_set.filter( participant__distance=result.participant.distance, participant__group=result.participant.group).count() c = canvas.Canvas(output, pagesize=A4) fill_page_with_image(path, c) c.setFont(_baseFontNameB, 28) c.setFillColor(HexColor(0x9F2B36)) c.drawString(7 * cm, 13 * cm, str(result.participant.primary_number)) c.setFont(_baseFontNameB, 25) c.setFillColor(HexColor(0x46445c)) c.drawCentredString(c._pagesize[0] / 2, 14.5 * cm, result.participant.full_name) print(c._pagesize[0]) c.setFont(_baseFontName, 25) c.drawCentredString(176, 10.2 * cm, str(result.time.replace(microsecond=0))) c.drawCentredString(128, 7 * cm, str(result.result_group)) c.drawCentredString(230, 7 * cm, str(total_group_participants)) c.drawCentredString(420, 7 * cm, "%s km/h" % result.avg_speed) c.drawCentredString(370, 10.2 * cm, str(result.result_distance)) c.drawCentredString(472, 10.2 * cm, str(total_participants)) c.setFont(_baseFontName, 16) c.setFillColor(HexColor(0x9F2B36)) c.drawRightString(523, 11.6 * cm, str(result.participant.group)) c.showPage() c.save() output.seek(0) return output
def generate_diploma(self, result): output = BytesIO() path = 'velo/results/files/diplomas/%i/%i.jpg' % (self.competition_id, result.participant.distance_id) if not os.path.isfile(path): raise Exception total_participants = result.competition.result_set.filter(participant__distance=result.participant.distance).count() total_group_participants = result.competition.result_set.filter(participant__distance=result.participant.distance, participant__group=result.participant.group).count() c = canvas.Canvas(output, pagesize=A4) fill_page_with_image(path, c) c.setFont(_baseFontNameB, 28) c.setFillColor(HexColor(0x9F2B36)) c.drawString(7 * cm, 13 * cm, str(result.participant.primary_number)) c.setFont(_baseFontNameB, 25) c.setFillColor(HexColor(0x46445c)) c.drawCentredString(c._pagesize[0]/2, 14.5*cm, result.participant.full_name) print(c._pagesize[0]) c.setFont(_baseFontName, 25) c.drawCentredString(176, 10.2 * cm, str(result.time.replace(microsecond=0))) c.drawCentredString(128, 7*cm, str(result.result_group)) c.drawCentredString(230, 7*cm, str(total_group_participants)) c.drawCentredString(420, 7*cm, "%s km/h" % result.avg_speed) c.drawCentredString(370, 10.2*cm, str(result.result_distance)) c.drawCentredString(472, 10.2*cm, str(total_participants)) c.setFont(_baseFontName, 16) c.setFillColor(HexColor(0x9F2B36)) c.drawRightString(523, 11.6 * cm, str(result.participant.group)) c.showPage() c.save() output.seek(0) return output
def generate_diploma(self, result): output = BytesIO() path = 'velo/results/files/diplomas/%i/%i.jpg' % (self.competition_id, result.participant.distance_id) if not os.path.isfile(path): raise Exception # Until most of participants have finished, we show total registered participants. riga_tz = pytz.timezone("Europe/Riga") now = riga_tz.normalize(timezone.now()) if (now.date() == self.competition.competition_date) and now.hour < 17: total_participants = result.participant.distance.participant_set.filter(is_participating=True).count() total_group_participants = result.participant.distance.participant_set.filter(is_participating=True, group=result.participant.group).count() else: total_participants = result.competition.result_set.filter(participant__distance=result.participant.distance).count() total_group_participants = result.competition.result_set.filter(participant__distance=result.participant.distance, participant__group=result.participant.group).count() if self.competition_index == 1: c = canvas.Canvas(output, pagesize=(29.7*cm, 33.55*cm)) fill_page_with_image(path, c) c.setFont(_baseFontNameB, 32) c.setFillColor(HexColor(0x43455a)) c.drawString(c._pagesize[0] - 3.3 * cm, 23.7 * cm, str(result.participant.primary_number)) c.setFont(_baseFontNameB, 26) c.setFillColor(HexColor(0x43455a)) c.drawCentredString(c._pagesize[0] - 6.5 * cm, 25.7*cm, result.participant.full_name) c.setFont(_baseFontName, 32) c.drawCentredString(c._pagesize[0] - 7 * cm, 18.3 * cm, str(result.time.replace(microsecond=0))) c.drawCentredString(c._pagesize[0] - 9.3 * cm, 14.5 * cm, str(result.result_distance)) c.drawCentredString(c._pagesize[0] - 4.7 * cm, 14.5 * cm, str(total_participants)) c.drawCentredString(c._pagesize[0] - 7 * cm, 7.3 * cm, "%s km/h" % result.avg_speed) c.drawCentredString(c._pagesize[0] - 9.3 * cm, 10.8*cm, str(result.result_group)) c.drawCentredString(c._pagesize[0] - 4.7 * cm, 10.8*cm, str(total_group_participants)) elif self.competition_index == 2: c = canvas.Canvas(output, pagesize=(21*1.5*cm, 29.7*1.5*cm)) move_cm_w = 9*cm fill_page_with_image(path, c) c.setFont(_baseFontNameB, 32) c.setFillColor(HexColor(0x43455a)) c.drawString(c._pagesize[0] - 3.3 * cm - move_cm_w, 23.7 * cm, str(result.participant.primary_number)) c.setFont(_baseFontNameB, 26) c.setFillColor(HexColor(0x43455a)) c.drawCentredString(c._pagesize[0] - 6.5 * cm - move_cm_w, 26 * cm, result.participant.full_name) c.setFont(_baseFontName, 32) c.drawCentredString(c._pagesize[0] - 7 * cm - move_cm_w, 18.3 * cm, str(result.time.replace(microsecond=0))) c.drawCentredString(c._pagesize[0] - 9.3 * cm - move_cm_w, 13.5 * cm, str(result.result_distance)) c.drawCentredString(c._pagesize[0] - 4.7 * cm - move_cm_w, 13.5 * cm, str(total_participants)) c.drawCentredString(c._pagesize[0] - 7 * cm - move_cm_w, 4 * cm, "%s km/h" % result.avg_speed) c.drawCentredString(c._pagesize[0] - 9.3 * cm - move_cm_w, 8.8 * cm, str(result.result_group)) c.drawCentredString(c._pagesize[0] - 4.7 * cm - move_cm_w, 8.8 * cm, str(total_group_participants)) elif self.competition_index == 3: c = canvas.Canvas(output, pagesize=(29.7 * cm, 42 * cm)) fill_page_with_image(path, c) move_cm_w = 14*cm move_cm_h = 3*cm c.setFont(_baseFontNameB, 32) c.setFillColor(HexColor(0x43455a)) c.drawString(c._pagesize[0] - 3.3 * cm - move_cm_w - 2*cm, 23.7 * cm - move_cm_h - 0.2*cm, str(result.participant.primary_number)) c.setFont(_baseFontNameB, 26) c.setFillColor(HexColor(0x43455a)) c.drawCentredString(c._pagesize[0] - 6.5 * cm - move_cm_w, 25.7 * cm - move_cm_h, result.participant.full_name) c.setFont(_baseFontName, 32) c.drawCentredString(c._pagesize[0] - 7 * cm - move_cm_w, 18.3 * cm - move_cm_h, str(result.time.replace(microsecond=0))) c.drawCentredString(c._pagesize[0] - 9.3 * cm - move_cm_w, 14.5 * cm - move_cm_h - 1*cm, str(result.result_distance)) c.drawCentredString(c._pagesize[0] - 4.7 * cm - move_cm_w, 14.5 * cm - move_cm_h - 1*cm, str(total_participants)) c.drawCentredString(c._pagesize[0] - 7 * cm - move_cm_w, 7.3 * cm - move_cm_h - 2*cm, "%s km/h" % result.avg_speed) c.drawCentredString(c._pagesize[0] - 9.3 * cm - move_cm_w, 10.8 * cm - move_cm_h - 1.5*cm, str(result.result_group)) c.drawCentredString(c._pagesize[0] - 4.7 * cm - move_cm_w, 10.8 * cm - move_cm_h - 1.5*cm, str(total_group_participants)) # c.setFont(_baseFontName, 18) # c.drawCentredString(c._pagesize[0] - 7 * cm, 10.1 * cm, str(result.participant.group)) c.showPage() c.save() output.seek(0) return output
def generate_diploma(self, result): output = BytesIO() path = 'velo/results/files/diplomas/%i/%i.jpg' % ( self.competition_id, result.participant.distance_id) if not os.path.isfile(path): raise Exception # Until most of participants have finished, we show total registered participants. riga_tz = pytz.timezone("Europe/Riga") now = riga_tz.normalize(timezone.now()) if (now.date() == self.competition.competition_date) and now.hour < 17: total_participants = result.participant.distance.participant_set.filter( is_participating=True).count() total_group_participants = result.participant.distance.participant_set.filter( is_participating=True, group=result.participant.group).count() else: total_participants = result.competition.result_set.filter( participant__distance=result.participant.distance).count() total_group_participants = result.competition.result_set.filter( participant__distance=result.participant.distance, participant__group=result.participant.group).count() if self.competition_index == 1: c = canvas.Canvas(output, pagesize=(29.7 * cm, 33.55 * cm)) fill_page_with_image(path, c) c.setFont(_baseFontNameB, 32) c.setFillColor(HexColor(0x43455a)) c.drawString(c._pagesize[0] - 3.3 * cm, 23.7 * cm, str(result.participant.primary_number)) c.setFont(_baseFontNameB, 26) c.setFillColor(HexColor(0x43455a)) c.drawCentredString(c._pagesize[0] - 6.5 * cm, 25.7 * cm, result.participant.full_name) c.setFont(_baseFontName, 32) c.drawCentredString(c._pagesize[0] - 7 * cm, 18.3 * cm, str(result.time.replace(microsecond=0))) c.drawCentredString(c._pagesize[0] - 9.3 * cm, 14.5 * cm, str(result.result_distance)) c.drawCentredString(c._pagesize[0] - 4.7 * cm, 14.5 * cm, str(total_participants)) c.drawCentredString(c._pagesize[0] - 7 * cm, 7.3 * cm, "%s km/h" % result.avg_speed) c.drawCentredString(c._pagesize[0] - 9.3 * cm, 10.8 * cm, str(result.result_group)) c.drawCentredString(c._pagesize[0] - 4.7 * cm, 10.8 * cm, str(total_group_participants)) elif self.competition_index == 2: c = canvas.Canvas(output, pagesize=(21 * 1.5 * cm, 29.7 * 1.5 * cm)) move_cm_w = 9 * cm fill_page_with_image(path, c) c.setFont(_baseFontNameB, 32) c.setFillColor(HexColor(0x43455a)) c.drawString(c._pagesize[0] - 3.3 * cm - move_cm_w, 23.7 * cm, str(result.participant.primary_number)) c.setFont(_baseFontNameB, 26) c.setFillColor(HexColor(0x43455a)) c.drawCentredString(c._pagesize[0] - 6.5 * cm - move_cm_w, 26 * cm, result.participant.full_name) c.setFont(_baseFontName, 32) c.drawCentredString(c._pagesize[0] - 7 * cm - move_cm_w, 18.3 * cm, str(result.time.replace(microsecond=0))) c.drawCentredString(c._pagesize[0] - 9.3 * cm - move_cm_w, 13.5 * cm, str(result.result_distance)) c.drawCentredString(c._pagesize[0] - 4.7 * cm - move_cm_w, 13.5 * cm, str(total_participants)) c.drawCentredString(c._pagesize[0] - 7 * cm - move_cm_w, 4 * cm, "%s km/h" % result.avg_speed) c.drawCentredString(c._pagesize[0] - 9.3 * cm - move_cm_w, 8.8 * cm, str(result.result_group)) c.drawCentredString(c._pagesize[0] - 4.7 * cm - move_cm_w, 8.8 * cm, str(total_group_participants)) elif self.competition_index == 3: c = canvas.Canvas(output, pagesize=(29.7 * cm, 42 * cm)) fill_page_with_image(path, c) move_cm_w = 14 * cm move_cm_h = 3 * cm c.setFont(_baseFontNameB, 32) c.setFillColor(HexColor(0x43455a)) c.drawString(c._pagesize[0] - 3.3 * cm - move_cm_w - 2 * cm, 23.7 * cm - move_cm_h - 0.2 * cm, str(result.participant.primary_number)) c.setFont(_baseFontNameB, 26) c.setFillColor(HexColor(0x43455a)) c.drawCentredString(c._pagesize[0] - 6.5 * cm - move_cm_w, 25.7 * cm - move_cm_h, result.participant.full_name) c.setFont(_baseFontName, 32) c.drawCentredString(c._pagesize[0] - 7 * cm - move_cm_w, 18.3 * cm - move_cm_h, str(result.time.replace(microsecond=0))) c.drawCentredString(c._pagesize[0] - 9.3 * cm - move_cm_w, 14.5 * cm - move_cm_h - 1 * cm, str(result.result_distance)) c.drawCentredString(c._pagesize[0] - 4.7 * cm - move_cm_w, 14.5 * cm - move_cm_h - 1 * cm, str(total_participants)) c.drawCentredString(c._pagesize[0] - 7 * cm - move_cm_w, 7.3 * cm - move_cm_h - 2 * cm, "%s km/h" % result.avg_speed) c.drawCentredString(c._pagesize[0] - 9.3 * cm - move_cm_w, 10.8 * cm - move_cm_h - 1.5 * cm, str(result.result_group)) c.drawCentredString(c._pagesize[0] - 4.7 * cm - move_cm_w, 10.8 * cm - move_cm_h - 1.5 * cm, str(total_group_participants)) # c.setFont(_baseFontName, 18) # c.drawCentredString(c._pagesize[0] - 7 * cm, 10.1 * cm, str(result.participant.group)) c.showPage() c.save() output.seek(0) return output
def generate_diploma(self, result): output = BytesIO() path = 'velo/results/files/diplomas/%i/%i.jpg' % (self.competition_id, result.participant.distance_id) if not os.path.isfile(path): raise Exception # Until most of participants have finished, we show total registered participants. riga_tz = pytz.timezone("Europe/Riga") now = riga_tz.normalize(timezone.now()) if (now.date() == self.competition.competition_date) and now.hour < 17: total_participants = result.participant.distance.participant_set.filter(is_participating=True).count() total_group_participants = result.participant.distance.participant_set.filter(is_participating=True, group=result.participant.group).count() else: total_participants = result.competition.result_set.filter(participant__distance=result.participant.distance).count() total_group_participants = result.competition.result_set.filter(participant__distance=result.participant.distance, participant__group=result.participant.group).count() if self.competition_id in (80, 83): c = canvas.Canvas(output, pagesize=(21*cm, 29.7*cm)) fill_page_with_image(path, c) c.setFont(_baseFontNameB, 32) c.setFillColor(HexColor(0x47455b)) c.drawString(c._pagesize[0] - 9.3 * cm, 16.1 * cm, str(result.participant.primary_number)) c.setFont(_baseFontNameB, 26) c.setFillColor(HexColor(0x47455b)) c.drawCentredString(c._pagesize[0] - 9.8 * cm, 17.7*cm, result.participant.full_name) c.setFont(_baseFontName, 32) c.drawCentredString(c._pagesize[0] - 10.2 * cm, 12.6 * cm, str(result.time.replace(microsecond=0))) if result.participant.distance_id != self.VESELIBAS_DISTANCE_ID: c.drawCentredString(c._pagesize[0] - 12.1 * cm, 9.5 * cm, str(result.result_distance)) c.drawCentredString(c._pagesize[0] - 8.4 * cm, 9.5 * cm, str(total_participants)) c.drawCentredString(c._pagesize[0] - 10 * cm, 3.7 * cm, "%s km/h" % result.avg_speed) c.drawCentredString(c._pagesize[0] - 12.1 * cm, 6.5*cm, str(result.result_group)) c.drawCentredString(c._pagesize[0] - 8.4 * cm, 6.5*cm, str(total_group_participants)) else: c = canvas.Canvas(output, pagesize=(21 * cm, 29.7 * cm)) fill_page_with_image(path, c) c.setFont(_baseFontNameB, 32) c.setFillColor(HexColor(0x47455b)) c.drawString(c._pagesize[0] - 14.5 * cm, 10.5 * cm, str(result.participant.primary_number)) c.setFont(_baseFontNameB, 26) c.setFillColor(HexColor(0x47455b)) c.drawCentredString(c._pagesize[0] - 12.0 * cm, 12.1 * cm, result.participant.full_name) c.setFont(_baseFontName, 32) c.drawCentredString(c._pagesize[0] - 16.5 * cm, 7.7 * cm, str(result.time.replace(microsecond=0))) if result.participant.distance_id != self.VESELIBAS_DISTANCE_ID: c.drawCentredString(c._pagesize[0] - 10.1 * cm, 7.7 * cm, str(result.result_distance)) c.drawCentredString(c._pagesize[0] - 6.4 * cm, 7.7 * cm, str(total_participants)) c.drawCentredString(c._pagesize[0] - 8 * cm, 4.5 * cm, "%s km/h" % result.avg_speed) c.drawCentredString(c._pagesize[0] - 18.2 * cm, 4.5 * cm, str(result.result_group)) c.drawCentredString(c._pagesize[0] - 14.5 * cm, 4.5 * cm, str(total_group_participants)) c.showPage() c.save() output.seek(0) return output
def generate_diploma(self, result): output = BytesIO() path = 'velo/results/files/diplomas/%i/%i.jpg' % ( self.competition_id, result.participant.distance_id) if not os.path.isfile(path): raise Exception riga_tz = pytz.timezone("Europe/Riga") now = riga_tz.normalize(timezone.now()) if (now.date() == self.competition.competition_date) and now.hour < 17: total_participants = result.participant.distance.participant_set.filter( is_participating=True).count() total_group_participants = result.participant.distance.participant_set.filter( is_participating=True, group=result.participant.group).count() else: total_participants = result.competition.result_set.filter( participant__distance=result.participant.distance).count() total_group_participants = result.competition.result_set.filter( participant__distance=result.participant.distance, participant__group=result.participant.group).count() c = canvas.Canvas(output, pagesize=A4) fill_page_with_image(path, c) c.setFont(_baseFontNameB, 30) if result.participant.distance_id in (self.SPORTA_DISTANCE_ID, self.TAUTAS_DISTANCE_ID, self.GIMENU_DISTANCE_ID): c.drawCentredString(c._pagesize[0] / 2, 12.5 * cm, result.participant.full_name) c.drawString(5.75 * cm, 11.1 * cm, str(result.participant.primary_number)) if result.participant.distance_id in (self.SPORTA_DISTANCE_ID, self.TAUTAS_DISTANCE_ID): c.setFont(_baseFontName, 25) c.drawCentredString( 14 * cm, 7.7 * cm, str(result.result_distance) if result.result_distance else '-') c.drawCentredString(17.5 * cm, 7.7 * cm, str(total_participants)) c.drawCentredString(5.25 * cm, 7.7 * cm, str(result.time.replace(microsecond=0))) c.drawCentredString(15.75 * cm, 4.7 * cm, "%s km/h" % result.avg_speed) c.drawCentredString( 3.4 * cm, 4.7 * cm, str(result.result_group) if result.result_group else '-') c.drawCentredString(7.0 * cm, 4.7 * cm, str(total_group_participants)) elif result.participant.distance_id in (self.GIMENU_DISTANCE_ID, ): c.drawCentredString(5.25 * cm, 7.7 * cm, str(result.time.replace(microsecond=0))) else: c.drawCentredString(c._pagesize[0] / 2, 10.5 * cm, result.participant.full_name) c.showPage() c.save() output.seek(0) return output
def generate_diploma(self, result): output = BytesIO() path = 'velo/results/files/diplomas/%i/%i.jpg' % ( self.competition_id, result.participant.distance_id) if not os.path.isfile(path): raise Exception # Until most of participants have finished, we show total registered participants. riga_tz = pytz.timezone("Europe/Riga") now = riga_tz.normalize(timezone.now()) if (now.date() == self.competition.competition_date) and now.hour < 17: total_participants = result.participant.distance.participant_set.filter( is_participating=True).count() total_group_participants = result.participant.distance.participant_set.filter( is_participating=True, group=result.participant.group).count() else: total_participants = result.competition.result_set.filter( participant__distance=result.participant.distance).count() total_group_participants = result.competition.result_set.filter( participant__distance=result.participant.distance, participant__group=result.participant.group).count() if self.competition_id in (80, 83): c = canvas.Canvas(output, pagesize=(21 * cm, 29.7 * cm)) fill_page_with_image(path, c) c.setFont(_baseFontNameB, 32) c.setFillColor(HexColor(0x47455b)) c.drawString(c._pagesize[0] - 9.3 * cm, 16.1 * cm, str(result.participant.primary_number)) c.setFont(_baseFontNameB, 26) c.setFillColor(HexColor(0x47455b)) c.drawCentredString(c._pagesize[0] - 9.8 * cm, 17.7 * cm, result.participant.full_name) c.setFont(_baseFontName, 32) c.drawCentredString(c._pagesize[0] - 10.2 * cm, 12.6 * cm, str(result.time.replace(microsecond=0))) if result.participant.distance_id != self.VESELIBAS_DISTANCE_ID: c.drawCentredString(c._pagesize[0] - 12.1 * cm, 9.5 * cm, str(result.result_distance)) c.drawCentredString(c._pagesize[0] - 8.4 * cm, 9.5 * cm, str(total_participants)) c.drawCentredString(c._pagesize[0] - 10 * cm, 3.7 * cm, "%s km/h" % result.avg_speed) c.drawCentredString(c._pagesize[0] - 12.1 * cm, 6.5 * cm, str(result.result_group)) c.drawCentredString(c._pagesize[0] - 8.4 * cm, 6.5 * cm, str(total_group_participants)) else: c = canvas.Canvas(output, pagesize=(21 * cm, 29.7 * cm)) fill_page_with_image(path, c) c.setFont(_baseFontNameB, 32) c.setFillColor(HexColor(0x47455b)) c.drawString(c._pagesize[0] - 14.5 * cm, 10.5 * cm, str(result.participant.primary_number)) c.setFont(_baseFontNameB, 26) c.setFillColor(HexColor(0x47455b)) c.drawCentredString(c._pagesize[0] - 12.0 * cm, 12.1 * cm, result.participant.full_name) c.setFont(_baseFontName, 32) c.drawCentredString(c._pagesize[0] - 16.5 * cm, 7.7 * cm, str(result.time.replace(microsecond=0))) if result.participant.distance_id != self.VESELIBAS_DISTANCE_ID: c.drawCentredString(c._pagesize[0] - 10.1 * cm, 7.7 * cm, str(result.result_distance)) c.drawCentredString(c._pagesize[0] - 6.4 * cm, 7.7 * cm, str(total_participants)) c.drawCentredString(c._pagesize[0] - 8 * cm, 4.5 * cm, "%s km/h" % result.avg_speed) c.drawCentredString(c._pagesize[0] - 18.2 * cm, 4.5 * cm, str(result.result_group)) c.drawCentredString(c._pagesize[0] - 14.5 * cm, 4.5 * cm, str(total_group_participants)) c.showPage() c.save() output.seek(0) return output