Dépôt où je met mes TP d'Informatique
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

103 lines
2.5KB

  1. #!/usr/bin/python3
  2. # -*- coding: utf-8 -*-
  3. # pylint: disable=invalid-name, missing-docstring
  4. """
  5. TP AP1
  6. Licence SESI 1ère année
  7. Univ. Lille 1
  8. Scipt permettant d'automatiser le rendu des TP
  9. """
  10. __author__ = "PREUD'HOMME Geoffrey"
  11. import os
  12. import zipfile
  13. base = './'
  14. rendeurs = [('BEAUSSART Jean-loup', 'Beaussart'),
  15. ('PREUD\\\'HOMME Geoffrey', 'PreudHomme')]
  16. def chemin(semestre, tp=None):
  17. return os.path.normpath(base + '/S' + str(semestre) + ('/TP' + str(tp) if tp else ''))
  18. def semestreProchain():
  19. i = 1
  20. while os.path.exists(chemin(i)):
  21. i += 1
  22. return i
  23. def semestreEnCours():
  24. return semestreProchain() - 1
  25. def tpProchain():
  26. i = 1
  27. semestre = semestreEnCours()
  28. while os.path.exists(chemin(semestre, i)):
  29. i += 1
  30. return i
  31. def tpEnCours():
  32. return tpProchain() - 1
  33. def fichiersTp(semestre, tp):
  34. # TODO .gitignore
  35. # TODO .tpfiles
  36. fichiers = fichiersPythons(semestre, tp)
  37. if semestre == 2:
  38. if tp == 3:
  39. fichiers.remove('bataille_navale_graphique.py')
  40. fichiers.append('jeu3.txt')
  41. if tp == 4:
  42. fichiers.append('Makefile')
  43. return fichiers
  44. def fichiersPythons(semestre, tp):
  45. chem = chemin(semestre, tp)
  46. return [i for i in os.listdir(chem) if i.endswith('.py') and os.path.isfile(os.path.join(chem, i))]
  47. def rendeur(semestre, tp):
  48. for i in fichiersPythons(semestre, tp):
  49. texte = open(os.path.join(chemin(semestre, tp), i), 'r').read()
  50. rend = ''
  51. rendeurMax = 500
  52. for j in range(len(rendeurs)):
  53. pos = texte.find(rendeurs[j][0])
  54. if pos < rendeurMax and pos >= 0:
  55. rendeurMax = pos
  56. rend = j
  57. if rend != '':
  58. return rend
  59. return None
  60. def personnesSurTP(semestre, tp):
  61. rend = rendeur(semestre, tp)
  62. personnes = [i[1] for i in rendeurs]
  63. personnes.remove(rendeurs[rend][1])
  64. personnes = [rendeurs[rend][1]] + personnes
  65. return personnes
  66. def creerZip(semestre, tp):
  67. personnes = personnesSurTP(semestre, tp)
  68. nomDossier = '_'.join(personnes)
  69. nomZip = 'tp%d_%s.zip' % (tp, ('_'.join(personnes).lower()))
  70. chem = chemin(semestre, tp)
  71. fichierZip = zipfile.ZipFile(os.path.join(chem, nomZip), 'w', zipfile.ZIP_DEFLATED)
  72. for f in fichiersTp(semestre, tp):
  73. fichierZip.write(os.path.join(chem, f), os.path.join(nomDossier, f))
  74. fichierZip.close()
  75. # os.link(chemin(semestreEnCours(), tpEnCours()), 't')
  76. # os.link(chemin(semestreEnCours()), 's')
  77. creerZip(semestreEnCours(), tpEnCours())