def import_bet(self, force_update): liste = csv.reader(open(self.bet_fil)) liste.next() try: highest_pk = Giro.objects.all().order_by("-pk")[0].pk except: highest_pk = -1 for num, rad in enumerate(liste): if num % 1000 == 0 and num != 0: transaction.commit() yield unicode(num) # Hopp over ferdig-importerte betalingar if not force_update and int(rad[7]) < highest_pk: continue if not force_update and Giro.objects.filter(pk=rad[7]).exists(): continue g = Giro(pk=rad[7], hensikt='P', status='F') # Finn andsvarleg medlem try: g.medlem = Medlem.objects.alle().get(pk=rad[0]) except Medlem.DoesNotExist: logger.warning(u"Fann ikkje medlem %s. %s " % (rad[0], rad)) continue # Kva konto if rad[2].upper() in [ k[0] for k in KONTI ]: g.konto = rad[2].upper() elif rad[1].upper() == 'L': # Livstidsmedlem if not g.medlem.status == 'L': g.medlem.status = 'L' g.medlem.save() logger.warning(u"Oppdaterte %s til L. %s " % (g.medlem, rad)) logger.warning(u"Hopper over %s (L). %s " % (g.medlem, rad)) continue elif rad[6].isdigit(): # Viss det er pengar gjeng me ut i frå at det er snakk om kasse g.konto = 'K' logger.warning(u"Gjettar at pengar (%s) er til KASSE %s -- %s" % (rad[6], g.medlem, rad)) else: logger.warning(u"Kjenner ikkje att konto: {0}, {1}".format(g.medlem, rad)) continue # Kor mykje pengar inn? try: g.belop = float(rad[6]) except ValueError: g.belop = 0 logger.warning(u"Beløp = 0: {0}, {1}".format(g.medlem, rad)) if len(rad[4]) > 3: g.innbetalt = parse(rad[4]) g.innbetalt_belop = g.belop else: logger.warning(u"Ikkje innbetalt! {0}, {1}".format(g.medlem, rad)) try: g.oppretta = datetime.datetime(int(rad[5]), 1, 1, 0, 0) except ValueError: logger.warning(u"Gjettar oppretta==innbetalt: {0}, {1}".format(g.medlem, rad)) g.oppretta = g.innbetalt g.gjeldande_aar = g.oppretta.year if rad[3] != "MEDLEMSKONTO": g.desc = rad[3] g.save() if num < 99: yield unicode(g)