Projet

Général

Profil

Télécharger (3,69 ko) Statistiques
| Branche: | Tag: | Révision:

calebasse / calebasse / cv2helper.py @ 179a9cc1

1
from datetime import datetime
2

    
3
from django.conf import settings
4

    
5

    
6
def parse_date_ddmmyyyy(str_date):
7
    fmt = '%d%m%Y'
8
    return datetime.strptime(str_date, fmt)
9

    
10
def parse_date_yymmdd(str_date):
11
    fmt = '%y%m%d'
12
    return datetime.strptime(str_date, fmt)
13

    
14
def setter_date_ddmmyyyy(field):
15
    try:
16
        return parse_date_ddmmyyyy(str(field))
17
    except:
18
        pass
19

    
20
def setter_date_yymmdd(field):
21
    try:
22
        return parse_date_yymmdd(str(field))
23
    except:
24
        pass
25

    
26
def setter_periode(start, end):
27
    try:
28
        return parse_date_ddmmyyyy(str(start)), parse_date_ddmmyyyy(str(end))
29
    except:
30
        pass
31

    
32
if settings.CV2PARSER:
33
    import codecs
34
    import json
35
    from cv2parser import cvitale
36

    
37
    def parse(filename):
38
        f = codecs.open("calebasse/tables.json", 'r',
39
                encoding='ISO-8859-1')
40
        tables = json.loads(f.read())
41
        cv = cvitale.parse(filename)
42
        if cv.tech.finValidite:
43
            cv.tech.finValidite = setter_date_ddmmyyyy(cv.tech.finValidite)
44
        for beneficiaire in cv.listeBenef.get_element():
45
            """
46
            ident
47
            """
48
            beneficiaire.ident.naissance.date = \
49
        setter_date_ddmmyyyy(beneficiaire.ident.naissance.date)
50
            beneficiaire.ident.naissance.dateEnCarte = \
51
        setter_date_yymmdd(beneficiaire.ident.naissance.dateEnCarte)
52
            beneficiaire.ident.dateCertification = \
53
        setter_date_ddmmyyyy(beneficiaire.ident.dateCertification)
54

    
55
            """
56
            amo
57
            """
58
            if beneficiaire.amo.listePeriodesDroits and beneficiaire.amo.listePeriodesDroits.get_element():
59
                for p in beneficiaire.amo.listePeriodesDroits.get_element():
60
                    if p.debut and p.fin:
61
                        p.debut, p.fin = setter_periode(p.debut, p.fin)
62

    
63
            if beneficiaire.amo.service and \
64
                    beneficiaire.amo.service.periodeService:
65
                p = beneficiaire.amo.service.periodeService
66
                if p.debut and p.fin:
67
                    p.debut, p.fin = setter_periode(p.debut, p.fin)
68
            beneficiaire.amo.qualBenef = \
69
        tables['TABLE_QUALITE'][str(beneficiaire.amo.qualBenef)]
70
            if beneficiaire.amo.infoCompl:
71
                beneficiaire.amo.infoCompl = \
72
        tables['TABLE_DIVERS'][str(beneficiaire.amo.infoCompl)]
73
            if beneficiaire.amo.service and beneficiaire.amo.service.codeService:
74
                beneficiaire.amo.service.codeService = \
75
        tables['TABLE_SERVAMO'][str(beneficiaire.amo.service.codeService)]
76
            """
77
            mutuelle
78
            """
79
            if beneficiaire.mutuelle and beneficiaire.mutuelle.listePeriodes:
80
                for p in beneficiaire.mutuelle.listePeriodes.get_element():
81
                    if p.debut and p.fin:
82
                        p.debut, p.fin = setter_periode(p.debut, p.fin)
83
            if beneficiaire.mutuelle and beneficiaire.mutuelle.services \
84
                    and beneficiaire.mutuelle.services.typeService:
85
                beneficiaire.mutuelle.services.typeService = \
86
        tables['TABLE_SERVMUTAMC'][str(beneficiaire.mutuelle.services.typeService)]
87
            """
88
            amc
89
            """
90
            if beneficiaire.amc and beneficiaire.amc.validiteDonnees:
91
                p = beneficiaire.amc.validiteDonnees
92
                if p.debut and p.fin:
93
                    p.debut, p.fin = setter_periode(p.debut, p.fin)
94
            """
95
            cmu
96
            """
97
            if beneficiaire.cmu and beneficiaire.cmu.periode:
98
                p = beneficiaire.cmu.periode
99
                if p.debut and p.fin:
100
                    p.debut, p.fin = setter_periode(p.debut, p.fin)
101

    
102
        f.close()
103
        return cv
(5-5/19)