Exemple #1
0
    def __init__(self, inputfile):
        self.conceitos = {}
        self.faltas = {}
        self.aulas = {}

        spreadsheetdoc = ODSReader(inputfile)
        sheetConceitos = getSheetConceitos(spreadsheetdoc)
        sheetPresencas = getSheetPresencas(spreadsheetdoc)
        sheetPlanoDeAulas = getSheetPlanoDeAulas(spreadsheetdoc)
        associateSheets(conceitos=sheetConceitos,
                        presencas=sheetPresencas,
                        plano=sheetPlanoDeAulas)

        self.conceitos, self.faltas = getConceitosFaltas(sheetConceitos)

        if sheetPresencas.planoDeAulas is not None:
            iterSheet = iter(sheetPresencas.planoDeAulas.iteritems())
            for data, aula in iterSheet:
                self.aulas[strDateCanonicalize(data)] = aula

        iterSheet = iter(sheetPresencas)
        next(iterSheet)
        rowNumber = 1
        for row in iterSheet:
            ++rowNumber
            ra = 0
            try:
                ra = int(row.get('ra', 0))
            except ValueError:
                pass
            if ra == 0:
                continue
            for data, idxData in sheetPresencas.idxData.iteritems():
                data = strDateCanonicalize(data)
                if data not in self.aulas:
                    self.aulas[data] = Aula(dia=data.strip('/')[0],
                                            mes=data.strip('/')[1],
                                            ano=sheetPlanoDeAulas.ano)
                presenca = str(row.get(idxData, '')).strip().lower()
                if presenca == 'p' or presenca == '1':
                    self.aulas[data].mapRAPresencas[ra] = True
                elif presenca == 'f' or presenca == '--' or \
                     presenca == '-' or presenca == '0':
                    self.aulas[data].mapRAPresencas[ra] = False
                else:
                    #print >> sys.stderr, \
                    #  "Presença não registrada para a data %s, ra %d" % (data,ra)
                    self.aulas[data].mapRAPresencas[ra] = None
Exemple #2
0
 def lancaAula(self, aula, turma):
     if turma.linkLancarNova is None:
         self.br.open(PortalDoProfessor.PORTAL_BASE_HREF +
                      "diario/turma.html?turma=" + turma.idturma)
         self.rereadLinksDiario(turma)
     if turma.linkLancarNova is None:
         print >> sys.stderr, "Não posso lançar aula para turma " + \
                              turma.codigo
         return False
     date = strDateCanonicalize(repr(aula))
     links = turma.linksLancarAula.get(date, None)
     if links is None:
         horasAula = aula.horasAula if aula.horasAula else 1
         return self.lancaAulaComLink(aula, turma, turma.linkLancarNova,
                                      aula.hora(), horasAula)
     else:
         try:
             for link in links:
                 data, horaInicio = link.text.split(" ")
                 return self.lancaAulaComLink(aula, turma, link, horaInicio,
                                              1)
         except urllib2.HTTPError:
             print >> sys.stderr, "ERRO: problema ao mudar aula " + repr(
                 aula)
             print >> sys.stderr, "      vou tentar deletar a aula e inseri-la novamente"
             for link in links:
                 print >> sys.stderr, "      deletando " + link.text
                 self.deletaAulaComLink(link, turma)
             print >> sys.stderr, "      inserindo aula"
             horasAula = aula.horasAula if aula.horasAula else 1
             return self.lancaAulaComLink(aula, turma, turma.linkLancarNova,
                                          aula.hora(), horasAula)
         return True
Exemple #3
0
 def lancaAula(self, aula, turma):
   if turma.linkLancarNova is None:
     self.br.open(PortalDoProfessor.PORTAL_BASE_HREF +
                  "diario/turma.html?turma=" + turma.idturma)
     self.rereadLinksDiario(turma)
   if turma.linkLancarNova is None:
     print >> sys.stderr, "Não posso lançar aula para turma " + \
                          turma.codigo
     return False
   date = strDateCanonicalize(repr(aula))
   links = turma.linksLancarAula.get(date, None)
   if links is None:
     horasAula = aula.horasAula if aula.horasAula else 1
     return self.lancaAulaComLink(aula, turma,
                                  turma.linkLancarNova,
                                  aula.hora(),
                                  horasAula)
   else:
     try:
       for link in links:
         data, horaInicio = link.text.split(" ")
         return self.lancaAulaComLink(aula, turma, link, horaInicio, 1)
     except urllib2.HTTPError:
       print >> sys.stderr, "ERRO: problema ao mudar aula " + repr(aula)
       print >> sys.stderr, "      vou tentar deletar a aula e inseri-la novamente"
       for link in links:
         print >> sys.stderr, "      deletando " + link.text
         self.deletaAulaComLink(link, turma)
       print >> sys.stderr, "      inserindo aula"
       horasAula = aula.horasAula if aula.horasAula else 1
       return self.lancaAulaComLink(aula, turma,
                                    turma.linkLancarNova,
                                    aula.hora(),
                                    horasAula)
     return True
  def __init__(self,inputfile):
    self.conceitos = {}
    self.faltas = {}
    self.aulas = {}

    spreadsheetdoc = ODSReader(inputfile)
    sheetConceitos = getSheetConceitos(spreadsheetdoc)
    sheetPresencas = getSheetPresencas(spreadsheetdoc)
    sheetPlanoDeAulas = getSheetPlanoDeAulas(spreadsheetdoc)
    associateSheets(conceitos=sheetConceitos, presencas=sheetPresencas,
                    plano=sheetPlanoDeAulas)

    self.conceitos, self.faltas = getConceitosFaltas(sheetConceitos)

    if sheetPresencas.planoDeAulas is not None:
      iterSheet = iter(sheetPresencas.planoDeAulas.iteritems())
      for data, aula in iterSheet:
        self.aulas[strDateCanonicalize(data)] = aula

    iterSheet = iter(sheetPresencas)
    next(iterSheet)
    rowNumber = 1
    for row in iterSheet:
      ++rowNumber
      ra = 0
      try:
        ra = int(row.get('ra', 0))
      except ValueError:
        pass
      if ra == 0:
        continue
      for data, idxData in sheetPresencas.idxData.iteritems():
        data = strDateCanonicalize(data)
        if data not in self.aulas:
          self.aulas[data] = Aula(dia = data.strip('/')[0],
                                  mes = data.strip('/')[1],
                                  ano = sheetPlanoDeAulas.ano)
        presenca = str(row.get(idxData, '')).strip().lower()
        if presenca == 'p' or presenca == '1':
          self.aulas[data].mapRAPresencas[ra] = True
        elif presenca == 'f' or presenca == '--' or \
             presenca == '-' or presenca == '0':
          self.aulas[data].mapRAPresencas[ra] = False
        else:
          #print >> sys.stderr, \
          #  "Presença não registrada para a data %s, ra %d" % (data,ra)
          self.aulas[data].mapRAPresencas[ra] = None
Exemple #5
0
 def rereadLinksDiario(self, turma):
     turma.linkLancarNova = None
     turma.linksLancarAula = {}
     regexLancarNova = re.compile(r"\?turma=[0-9]+$")
     for link in self.br.links(url_regex="formulario.html"):
         if regexLancarNova.search(link.url):
             turma.linkLancarNova = link
         else:
             date = strDateCanonicalize(link.text)
             linksLancarAula = turma.linksLancarAula.get(date, [])
             linksLancarAula.append(link)
             turma.linksLancarAula[date] = linksLancarAula
Exemple #6
0
 def rereadLinksDiario(self, turma):
   turma.linkLancarNova = None
   turma.linksLancarAula = {}
   regexLancarNova = re.compile(r"\?turma=[0-9]+$")
   for link in self.br.links(url_regex="formulario.html"):
     if regexLancarNova.search(link.url):
       turma.linkLancarNova = link
     else:
       date = strDateCanonicalize(link.text)
       linksLancarAula = turma.linksLancarAula.get(date, [])
       linksLancarAula.append(link)
       turma.linksLancarAula[date] = linksLancarAula 
Exemple #7
0
def associateSheets(conceitos, presencas, plano):
    plano.ano = None

    planoDeAulas = {}
    iterSheet = iter(plano)
    next(iterSheet)
    rownumber = 0
    for row in iterSheet:
        rownumber += 1

        data = row.get('data', None)
        if data is None:
            continue
        dia, mes, ano = parseData(data)
        if plano.ano is None and ano is not None:
            plano.ano = ano
        if ano is None:
            ano = plano.ano

        notasDeAula = row.get('notas de aula', default="Aula %02d" % rownumber)
        tipo = row.get('tipo', None)
        horaInicial = row.get('hora inicial', '00:00')
        horasAula = row.get('horas aula', 1)
        planoDeAulas[strDateCanonicalize(data)] = Aula(dia=dia,
                                                       mes=mes,
                                                       ano=ano,
                                                       descricao=notasDeAula,
                                                       tipo=tipo,
                                                       horaInicial=horaInicial,
                                                       horasAula=horasAula)
    # end for row in iterSheet:

    if matches(presencas, planoDeAulas):
        presencas.planoDeAulas = planoDeAulas
    else:
        presencas.planoDeAulas = None
        print >> sys.stderr, "Plano de Aulas e Presenças não combinam!"
def associateSheets(conceitos, presencas, plano):
  plano.ano = None

  planoDeAulas = {}
  iterSheet = iter(plano)
  next(iterSheet)
  rownumber = 0
  for row in iterSheet:
    rownumber += 1

    data = row.get('data', None)
    if data is None:
      continue
    dia, mes, ano = parseData(data)
    if plano.ano is None and ano is not None:
      plano.ano = ano
    if ano is None:
      ano = plano.ano

    notasDeAula = row.get('notas de aula', default="Aula %02d" % rownumber)
    tipo = row.get('tipo', None)
    horaInicial = row.get('hora inicial', '00:00')
    horasAula = row.get('horas aula', 1)
    planoDeAulas[strDateCanonicalize(data)] = Aula(dia = dia, mes = mes,
                                                   ano = ano,
                                                   descricao = notasDeAula,
                                                   tipo = tipo,
                                                   horaInicial = horaInicial,
                                                   horasAula = horasAula)
  # end for row in iterSheet:

  if matches(presencas, planoDeAulas):
    presencas.planoDeAulas = planoDeAulas
  else:
    presencas.planoDeAulas = None
    print >> sys.stderr, "Plano de Aulas e Presenças não combinam!"
 def getAula(self, data):
   try:
     return self.aulas[strDateCanonicalize(data)]
   except IndexError:
     return None
def matches(presencas, plano):
  for date in presencas.idxData.keys():
    if strDateCanonicalize(date) not in plano:
      return False
  return True
Exemple #11
0
 def getAula(self, data):
     try:
         return self.aulas[strDateCanonicalize(data)]
     except IndexError:
         return None
Exemple #12
0
def matches(presencas, plano):
    for date in presencas.idxData.keys():
        if strDateCanonicalize(date) not in plano:
            return False
    return True