Skip to content
This repository was archived by the owner on Mar 25, 2025. It is now read-only.
Open
2,141 changes: 2,141 additions & 0 deletions doc/ctgb_xls/toegelaten_middelen.xls

Large diffs are not rendered by default.

Binary file added doc/ctgb_xls/toegelaten_middelen.xlsx
Binary file not shown.
2,942 changes: 2,942 additions & 0 deletions doc/ctgb_xls/vervallen_middelen.xls

Large diffs are not rendered by default.

Binary file added doc/ctgb_xls/vervallen_middelen.xlsx
Binary file not shown.
Binary file added doc/design/ER-pestileaks-nu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 4 additions & 1 deletion pestileaks/admin.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
from django.contrib import admin
from pestileaks.models import Gewas, GebruiksRegel, Aantasting,\
from pestileaks.models import CtgbToelating, CtgbWerkzamestof, CtgbHoeveelheid, Gewas, GebruiksRegel, Aantasting,\
ToepassingsMethode, Middel

admin.site.register(CtgbToelating)
admin.site.register(CtgbWerkzamestof)
admin.site.register(CtgbHoeveelheid)
admin.site.register(Gewas)
admin.site.register(ToepassingsMethode)
admin.site.register(Middel)
Expand Down
15 changes: 14 additions & 1 deletion pestileaks/api.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from tastypie.resources import ModelResource, ALL, ALL_WITH_RELATIONS
from models import Gewas, ToepassingsMethode, Middel, Aantasting, GebruiksRegel
from models import CtgbToelating, CtgbWerkzamestof, , Gewas, ToepassingsMethode, Middel, Aantasting, GebruiksRegel
from django.db.models import Q
import operator

Expand All @@ -21,6 +21,19 @@ class Meta:
filtering = {
'naam': ALL,
}

class CtgbToelatingResource(ModelResource):
class Meta:
queryset = CtgbToelating.objects.all()
ordering=['toelatingnr', 'middelnaam','toelatinghouder','MAP','Moedertoelating']

class CtgbWerkzamestofResource(ModelResource):
class Meta:
queryset = CtgbWerkzamestof.objects.all()

class CtgbHoeveelheidResource(ModelResource):
class Meta:
queryset = CtgbHoeveelheid.objects.all()

class ToepassingsMethodeResource(ModelResource):
class Meta:
Expand Down
114 changes: 114 additions & 0 deletions pestileaks/management/commands/leesCtgbToelating.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
import logging
from django.core.management.base import BaseCommand
from pestileaks.models import CtgbToelating,CtgbWerkzamestof,CtgbHoeveelheid
import xlrd
import re

logger = logging.getLogger(__name__)

def convertdate(test_date):
import datetime,xlrd
date_format='%d-%m-%Y'
try:
str(float(test_date))
datetuple=xlrd.xldate_as_tuple(float(test_date),0)
my_date=str(datetime.date(datetuple[0],datetuple[1],datetuple[2]))
except:
try:
datetime.datetime.strptime(test_date, date_format)
my_date=test_date[6]+test_date[7]+test_date[8]+test_date[9]+'-'+test_date[3]+test_date[4]+'-'+test_date[0]+test_date[1]
except:
my_date=None
return my_date

def mkint(mystring):
if (mystring not in [None,'']):
b = int(float(mystring))
else:
b = None
return b

class Command(BaseCommand):


def handle(self, *args, **options):
docs = [['toegelaten_middelen.xlsx',1,'toegelaten_middelen.xls'],['vervallen_middelen.xlsx',0,'vervallen_middelen']]

for i in docs:
doc = xlrd.open_workbook("doc/ctgb_xls/"+i[0])
for sheet in doc.sheets():
if (sheet.name==i[2]):
for rx in range(1, sheet.nrows):
toelatingnr = sheet.cell_value(rx,0)
middelnaam = sheet.cell_value(rx,1)
MAP = sheet.cell_value(rx,3)
a=sheet.cell_value(rx,4)
Moedertoelating = mkint(a)
toelatinghouder = sheet.cell_value(rx,5)
startdatum = convertdate(sheet.cell_value(rx,6))
expiratiedatum = convertdate(sheet.cell_value(rx,7))
biogewas = sheet.cell_value(rx,8)
werkzamestoftot = sheet.cell_value(rx,9)
print 'wz=',werkzamestoftot
lista=werkzamestoftot.split(' # ',)
print 'lista=',lista # [u'piperonylbutoxide 0,075%', u'pyrethrinen 0,03%']
b=0
while (b<len(lista)):
print 'b=',b
lista1=re.split(r', (?=[0-9])',lista[b].lstrip())
print 'lista1=',lista1
if ('mengsel van:' not in lista1[0]):
lista11=re.split(r" (?=[0-9])",lista1[0])
else:
lista11=[lista1[0],None]
werkzamestof=lista11[0]
if (len(lista11)>1):
concentratie=lista11[1]
else:
concentratie=None
print 'werkzamestof=',werkzamestof
print 'conc=',concentratie
CtgbWerkzamestof.objects.create(toelatingnr=toelatingnr,werkzamestof=werkzamestof)
CtgbHoeveelheid.objects.create(toelatingnr=toelatingnr,werkzamestof=werkzamestof,concentratie=concentratie)
c=1
print 'lenlista1=',len(lista1)
print 'c=',c
while (c<len(lista1)):
lista11=re.split(r", (?=[0-9])",lista1[c])
for concentratie in lista11:
print 'conc2=',concentratie
CtgbHoeveelheid.objects.create(toelatingnr=toelatingnr,werkzamestof=werkzamestof,concentratie=concentratie)
c=c+1
b=b+1
toepassing = sheet.cell_value(rx,10)
print 'prowcode1=',sheet.cell_value(rx,11)
a = sheet.cell_value(rx,11)
pro_wcode= mkint(a)
print 'prowcode2=',pro_wcode
pro_opgebruikdatum = convertdate(sheet.cell_value(rx,12))
pro_afleverdatum = convertdate(sheet.cell_value(rx,13))
nopro_wcode = convertdate(sheet.cell_value(rx,14))
nopro_opgebruikdatum = convertdate(sheet.cell_value(rx,15))
nopro_afleverdatum = convertdate(sheet.cell_value(rx,16))
toegelaten_janee = i[1]
CtgbToelating.objects.create(\
toelatingnr=toelatingnr,\
middelnaam=middelnaam,\
MAP=MAP,Moedertoelating=Moedertoelating,\
toelatinghouder=toelatinghouder,\
startdatum=startdatum,\
expiratiedatum=expiratiedatum,\
biogewas=biogewas,\
werkzamestoftot=werkzamestoftot,\
toepassing=toepassing,\
pro_wcode=pro_wcode,\
pro_opgebruikdatum=pro_opgebruikdatum,\
pro_afleverdatum=pro_afleverdatum,\
nopro_wcode=pro_wcode,\
nopro_opgebruikdatum=pro_opgebruikdatum,\
nopro_afleverdatum=pro_afleverdatum,\
toegelaten_janee=toegelaten_janee)




33 changes: 32 additions & 1 deletion pestileaks/models.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from django.db.models import Model, ForeignKey, CharField, IntegerField, FloatField, SmallIntegerField, NullBooleanField
from django.db.models import Model, ForeignKey, CharField, IntegerField, FloatField, SmallIntegerField, NullBooleanField, DateField
from django.db.models.fields import TextField

class Gewas(Model):
Expand Down Expand Up @@ -47,6 +47,35 @@ class TeeltDoel(Model):
naam = CharField(max_length=250, blank=False, null=False, unique=True)
edi_code = CharField(max_length=10)


class CtgbToelating(Model):
toelatingnr = IntegerField(null=True)
middelnaam = CharField(max_length=250, blank=False, null=False)
MAP = CharField(max_length=250, blank=False, null=False)
toelatinghouder = CharField(max_length=250, blank=False, null=True)
Moedertoelating = IntegerField(null=True)
startdatum = DateField(null=True)
expiratiedatum = DateField(null=True)
biogewas = CharField(max_length=250, blank=False, null=True)
werkzamestoftot = CharField(max_length=250, blank=False, null=True)
toepassing = CharField(max_length=250, blank=False, null=True)
pro_wcode = IntegerField(null=True)
pro_opgebruikdatum = DateField(null=True)
pro_afleverdatum = DateField(null=True)
nopro_wcode = IntegerField(null=True)
nopro_opgebruikdatum = DateField(null=True)
nopro_afleverdatum = DateField(null=True)
toegelaten_janee = IntegerField(null=False)

class CtgbWerkzamestof(Model):
toelatingnr = IntegerField(null=True)
werkzamestof = CharField(max_length=250,blank=False,null=True)

class CtgbHoeveelheid(Model):
toelatingnr = IntegerField(null=True)
werkzamestof = CharField(max_length=250,blank=False,null=True)
concentratie = CharField(max_length=250,blank=False,null=True)

class ToepassingsMethode(Model):
naam = CharField(max_length=250, blank=False, null=False, unique=True)
#identifier = CharField(max_length=10, blank=False, null=False, unique=True)
Expand Down Expand Up @@ -82,6 +111,7 @@ class Meta:
class GebruiksRegel(Model):
middel = ForeignKey(Middel, null=False, blank=False)

#test = ForeignKey(Test, null=True, blank=True) # kan denk ik weg, Rik #weggehaald, check of goed gaat!
gewas = ForeignKey(Gewas, null=True, blank=True)
teeltdoel = ForeignKey(TeeltDoel, null=True, blank=True)
# bedekking = CharField(max_length=50, blank=True, null=False, choices=BEDEKKING_TYPES)
Expand All @@ -103,6 +133,7 @@ def __unicode__(self):
return "%s %s %s %s" % (self.gewas, self.middel, self.toepassings_methode, self.aantasting)

class Meta:
#ordering = ['test', 'gewas', 'middel', 'toepassings_methode', 'aantasting']
ordering = ['gewas', 'middel', 'toepassings_methode', 'aantasting']
verbose_name_plural = "gebruiksregels"

7 changes: 5 additions & 2 deletions pestileaks/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from django.contrib import admin
from tastypie.api import Api
from pestileaks.api import GewasResource, ToepassingsMethodeResource,\
from pestileaks.api import CtgbToelatingResource, CtgbWerkzamestofResource, CtgbHoeveelheidResource, GewasResource, ToepassingsMethodeResource,\
MiddelResource, AantastingResource, GebruiksRegelResource
admin.autodiscover()

Expand All @@ -21,9 +21,12 @@
)

v1_api = Api(api_name='api')
v1_api.register(CtgbToelatingResource())
v1_api.register(CtgbWerkzamestofResource())
v1_api.register(CtgbHoeveelheidResource())
v1_api.register(GewasResource())
v1_api.register(ToepassingsMethodeResource())
v1_api.register(MiddelResource())
v1_api.register(AantastingResource())
v1_api.register(GebruiksRegelResource())
urlpatterns += v1_api.urls
urlpatterns += v1_api.urls
4 changes: 2 additions & 2 deletions pestileaks/views.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from annoying.decorators import render_to
import json
from django.http import HttpResponse
from pestileaks.models import Gewas, GebruiksRegel, Aantasting, Middel
from pestileaks.models import CtgbToelating, CtgbWerkzamestof, CtgbHoeveelheid, Gewas, GebruiksRegel, Aantasting, Middel
from collections import OrderedDict
import itertools

Expand Down Expand Up @@ -67,4 +67,4 @@ def middelen(request):
middelen = list(lst)
if len(middelen) > minsize: middel_per_bedrijf.append({'name':bedrijf, 'children':[{'name': m.naam} for m in middelen]})
return HttpResponse(json.dumps(middel_per_bedrijf), content_type="application/json")