mirror of
https://gitlab.com/animath/si/plateforme.git
synced 2025-06-29 20:31:11 +02:00
Add script to parse notes in Google Sheets
Signed-off-by: Emmy D'Anello <emmy.danello@animath.fr>
This commit is contained in:
@ -422,9 +422,6 @@ class Tournament(models.Model):
|
||||
|
||||
def create_spreadsheet(self):
|
||||
if self.notes_sheet_id:
|
||||
gc = gspread.service_account_from_dict(settings.GOOGLE_SERVICE_CLIENT)
|
||||
spreadsheet = gc.open_by_key(self.notes_sheet_id)
|
||||
spreadsheet.update_locale("fr_FR")
|
||||
return self.notes_sheet_id
|
||||
|
||||
gc = gspread.service_account_from_dict(settings.GOOGLE_SERVICE_CLIENT)
|
||||
@ -955,6 +952,34 @@ class Pool(models.Model):
|
||||
worksheet.insert_row([str(jury), jury.id], max_row)
|
||||
max_row += 1
|
||||
|
||||
def parse_spreadsheet(self):
|
||||
gc = gspread.service_account_from_dict(settings.GOOGLE_SERVICE_CLIENT)
|
||||
self.tournament.create_spreadsheet()
|
||||
spreadsheet = gc.open_by_key(self.tournament.notes_sheet_id)
|
||||
worksheet = spreadsheet.worksheet(f"Poule {self.short_name}")
|
||||
|
||||
average_cell = worksheet.find("Moyenne")
|
||||
min_row = 5
|
||||
max_row = average_cell.row - 2
|
||||
data = worksheet.get_values(f"A{min_row}:AF{max_row}")
|
||||
if not data or not data[0]:
|
||||
return
|
||||
|
||||
passage_width = 7 if self.participations.count() == 4 else 6
|
||||
for line in data:
|
||||
jury_name = line[0]
|
||||
jury_id = line[1]
|
||||
if not jury_id.isnumeric() or int(jury_id) not in self.juries.values_list("id", flat=True):
|
||||
print(format_lazy(_("The jury {jury} is not part of the jury for this pool."), jury=jury_name))
|
||||
continue
|
||||
|
||||
jury = self.juries.get(id=jury_id)
|
||||
for i, passage in enumerate(self.passages.all()):
|
||||
note = passage.notes.get(jury=jury)
|
||||
note_line = line[2 + i * passage_width:2 + (i + 1) * passage_width]
|
||||
note.set_all(*note_line)
|
||||
note.save()
|
||||
|
||||
def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
|
||||
self.update_juries_lines_spreadsheet()
|
||||
super().save(force_insert, force_update, using, update_fields)
|
||||
@ -1358,10 +1383,6 @@ class Note(models.Model):
|
||||
def has_any_note(self):
|
||||
return any(self.get_all())
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
super().save(*args, **kwargs)
|
||||
self.update_spreadsheet()
|
||||
|
||||
def __str__(self):
|
||||
return _("Notes of {jury} for {passage}").format(jury=self.jury, passage=self.passage)
|
||||
|
||||
|
Reference in New Issue
Block a user