Anonymous avatar Anonymous committed 61a9b12

- Failed courses are included in notification (as 'F', not 'Ikkje greidd' i.e).
- Fixed problem with sending email (call of email.MIMEText())
- Fixed a tc.follow() problem with norwegian letters

Comments (0)

Files changed (1)

 # -*- coding: utf-8 -*-
 
 import smtplib
-import email
+from email.mime.text import MIMEText
 import sys
 import os
 import twill
     tc.follow('Se opplysninger om deg')
 except te.TwillAssertionError:
     try:
-        tc.follow('Sjå opplysningar om deg')
+        # Merk: wildcard i linknavn. krøll med æøå.
+        tc.follow('Sj. opplysningar om deg')
     except te.TwillAssertionError:
         print "Feil: ukjent språg?"
         sys.exit(1)
 # show() er desverre ganske snakkesalig, så vi bytter fra stdout
 # til ett vilkårlig StringIO objekt under kall for å få mindre støy.
 twill.set_output(StringIO.StringIO())
-data = tc.show('studweb.html')
+data = tc.show()
 twill.set_output(fp=None)
 
 tc.follow('Logg ut')
 
 
-# Napper fagkode og karakterer ut av HTML, og putter i array.
+# Napper fagkode og karakterer ut av HTML, konverterer stryk
+# til bokstavkarakter, og konverterer deretter til array.
 # Eks. på resultat: [["INF1000", "B"], ["INF1040", "E"]]
 res = re.findall('<tr class="pysj\d">(.*?)</tr>', data)
-ans = []
+ans = {}
 for i in res:
-    if not re.search("Ikkje|Ikke", i):
+    if not re.search("Ikkje møtt|Ikke møtt", i):
         tmp = re.findall("<td.*?>(.*?)</td>", i)
-        ans = ans + [[tmp[1], tmp[7]]]
+        if not re.search("[A-E]", tmp[7]):
+            tmp[7] = "F"
+        if (not ans.has_key(tmp[1])) or (ans.has_key(tmp[1]) and ans[tmp[1]]== "F"):
+            ans[tmp[1]] = tmp[7]
+ans = reduce(lambda x, y: x + [[y, ans[y]]], ans, [])
 
 # Hvis første gang programmet kjører,
 # har vi ingen gammel fil å sammenligne med,
 # Vi har ny(e) karakter, send epost/sms med karakter.
 if len(new):
     print "Nytt resultat fra StudentWeb."
-    
-    karakterer = reduce(lambda x,y: x + y[0] + ": " + y[1] + ", ", new, '')[:-2]
-    print karakterer
+
+    # Lager pen tekst med fagkode og karakterer:
+    melding = "Nytt resultat fra StudentWeb: "
+    melding += reduce(lambda x,y: x + y[0] + ": " + y[1] + ", ", new, '')[:-2]
+    print melding
 
     if epost:
         print "Sender e-post"
-        msg = email.MIMEText("Nytt resultat fra StudentWeb. Logg inn her: https://studweb.uio.no\n" + karakterer)
+        msg = MIMEText(melding)
         msg['Subject'] = "StudentWeb oppdatert"
         msg['From'] = epost
         msg['To'] = epost
         tc.follow("Send 25 gratis SMS")
         tc.fv('2', 'gsmnumber', netcom_sms_brukernavn)
         tc.submit('submitChooseContact')
-        tc.fv('2', 'message', "Nytt resultat fra StudentWeb. Logg inn her: https://studweb.uio.no\n" + karakterer)
+        tc.fv('2', 'message', melding)
         tc.submit('submitSendsms')
 
     if telenor_sms_brukernavn:
         
         # Send
         tc.fv("smsSendSmsForm", "toAddress", telenor_sms_brukernavn)
-        tc.fv("smsSendSmsForm", "message", "Nytt resultat fra StudentWeb. Logg inn her: https://studweb.uio.no\n" + karakterer)
+        tc.fv("smsSendSmsForm", "message", melding)
         tc.submit()
 
         # Logout
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.