101ff891783928971fa116918396b0f55ffe22e6
[sigmawcs.git] / project / wcs / lib.py
1 # -=- encoding: utf-8 -=-
2
3 import os.path
4 from simplejson import loads
5 import zipfile
6
7 from jsontopdf import JsonToPdf
8 from wcs.settings import DATA_DIR
9
10 def getCandidaturesJson(source='local'):
11 candidatures = []
12 if source == 'local':
13 # Fichiers WCS importés en local : .json et pièces jointes
14 if os.path.exists(DATA_DIR):
15 listjson = [f for f in os.listdir(DATA_DIR) if f.endswith('.json')]
16 for candidature in listjson :
17 fichier = "%s%s" % (DATA_DIR, candidature)
18
19 f = open(fichier, 'r')
20 data = f.read()
21 f.close()
22
23 data = loads(data, encoding='utf-8')
24 data['wcs_json_filename'] = unicode(candidature)
25 candidatures.append(data)
26 else:
27 pass
28 return candidatures
29
30 def createPdf(candidature):
31 """Créer un fichier PDF représentant la candidature WCS avec toutes ses données reçues.
32 PDF basé sur la structure de données de WCS (pas SIGMA) :
33 ingérable à court terme sauf si créé côté serveur.
34
35 À terme, le PDF doit être généré à partir de la page HTML du formulaire WCS
36 tel qu'il peut être vu par le candidat.
37 -> Construction des PDF serveur side.
38 """
39 baseName = candidature['wcs_json_filename'].rstrip('.json')
40 pdfFilePath = "%s%s.pdf" % (DATA_DIR, baseName)
41
42 converter = JsonToPdf()
43 pdf = converter.convertFromFile(candidature)
44 f = open(pdfFilePath, 'w')
45 f.write(pdf.getvalue())
46 f.close()
47
48 def createZip(candidature):
49 """Constitue une dossier ZIP comprenant :
50 * le formulaire en PDF
51 * les pièces jointes soumises par candidat
52 """
53 baseName = candidature['wcs_json_filename'].rstrip('.json')
54 zipFilePath = "%s%s.zip" % (DATA_DIR, baseName)
55 archive = zipfile.ZipFile(zipFilePath, "w", zipfile.ZIP_STORED)
56
57 if os.path.exists(DATA_DIR):
58 files = [f for f in os.listdir(DATA_DIR) \
59 if f.startswith(baseName) and not f.endswith('.json') and not f.endswith('.zip')]
60 for f in files:
61 filePath = DATA_DIR + f
62 archive.write(filePath, f)
63 archive.close()
64
65 def premiereMaj(s):
66 """Met le premier caractère en majuscule et reste minuscule"""
67 premiere = s[0]
68 reste = s[1:]
69
70 return premiere.upper() + reste.lower()
71
72 def majSansAccent(s):
73 result = ''
74 avant = u'ÇÁÀÂÉÈÊËÍÌÎÏÓÒÔÖÚÙÛÜÝỲŶŸ'
75 apres = u'CAAAEEEEIIIIOOOOUUUUYYYY'
76
77 for char in s:
78 i = avant.find(char)
79 if i >= 0:
80 char = apres[i]
81 result += char
82
83 return result