Advertisement
GeeckoDev

formafetch omg neww

Dec 8th, 2012
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.06 KB | None | 0 0
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import os
  5. import mechanize
  6. from bs4 import BeautifulSoup
  7.  
  8. ### Globals
  9.  
  10. base = './base/' # Where the data will be stored
  11. estts = [] # List of establishments
  12. br = mechanize.Browser()
  13.  
  14. ### Classes
  15.  
  16. class Group(object):
  17.     def __init__(self, name='', folder=''):
  18.         self.name = name
  19.         self.folder = folder
  20.  
  21. class Department(object):
  22.     def __init__(self, name='', folder=''):
  23.         self.name = name
  24.         self.folder = folder
  25.         self.groups = []
  26.    
  27.     # Fetch the department's groups from the server
  28.     def fetch(self):
  29.        
  30.    
  31.     # Creates the department
  32.     def create(self, file):        
  33.         # Update the listing file and create the folder
  34.         if not os.path.exists(self.folder):
  35.             os.mkdir(self.folder)
  36.         file.write(self.name + ';' + self.folder + '\n')
  37.        
  38.         # Create the groups
  39.         os.chdir(self.folder)
  40.        
  41.         for group in self.groups:
  42.             group.create()
  43.        
  44.         os.chdir('..')
  45.  
  46. class Establishment(object):
  47.     def __init__(self, name='', folder=''):
  48.         self.name = name
  49.         self.folder = folder
  50.         self.depts = []
  51.    
  52.     # Creates the establishment
  53.     def create(self, file):
  54.         # Update the listing file and create the folder
  55.         if not os.path.exists(self.folder):
  56.             os.mkdir(self.folder)
  57.         file.write(self.name + ';' + self.folder + '\n')
  58.        
  59.         # Create the departments
  60.         os.chdir(self.folder)
  61.         depts_file = open('depts', 'w')
  62.        
  63.         for dept in self.depts:
  64.             dept.create(depts_file)
  65.        
  66.         depts_file.close()
  67.         os.chdir('..')
  68.    
  69.     # Add a department
  70.     def add(self, dept):
  71.         self.depts.append(dept)
  72.  
  73. ### Functions
  74.  
  75. def login(dpt):
  76.     r = br.open('http://www.formadep.fr/' + dpt.name)
  77.     r = br.open('http://www.formadep.fr/extretud/exte_edtgroupe.aspx')
  78.     return r
  79.  
  80. ### Actual script
  81.  
  82. # Fill estts with the data we know, the rest will be fetched from the server.
  83.  
  84. estts.append(Establishment('IUT La Rochelle', '17000'))
  85. estts[0].add(Department('Génie Bio', 'gblr'))
  86. estts[0].add(Department('Génie Civil', 'gclr'))
  87. estts[0].add(Department('Informatique', 'infolarochelle'))
  88. estts[0].add(Department('Réseaux et Télécom', 'rtlr'))
  89. estts[0].add(Department('Tech de Co', 'tclr'))
  90.  
  91. estts.append(Establishment('IUT Créteil', '94000'))
  92. estts[1].add(Department('Génie Bio', 'gbcreteil'))
  93. estts[1].add(Department('Réseaux et Télécom', 'rtcreteil'))
  94. estts[1].add(Department('Tech de Co', 'tccreteil'))
  95. estts[1].add(Department('Mesures Physiques', 'mpcreteil'))
  96. estts[1].add(Department('GEii', 'geiicreteil'))
  97. estts[1].add(Department('Chimie', 'chimiecreteil'))
  98.  
  99. estts.append(Establishment('IUT Saint-Brieuc', '22000'))
  100. estts[2].depts.append(Department('Tech de Co', 'tcstbrieuc'))
  101.  
  102. # Change dir to base
  103.  
  104. os.chdir(base)
  105.  
  106. # Create the establishments
  107.  
  108. estts_file = open('estts', 'w')
  109.  
  110. for estt in estts:
  111.     estt.create(estts_file)
  112.  
  113. estts_file.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement