Skip to content

Commit

Permalink
myndfskr pretty much done for now
Browse files Browse the repository at this point in the history
  • Loading branch information
staffanm committed May 16, 2018
1 parent 3e552c9 commit bf4459f
Show file tree
Hide file tree
Showing 18 changed files with 267 additions and 191 deletions.
2 changes: 1 addition & 1 deletion ferenda/pdfreader.py
Original file line number Diff line number Diff line change
Expand Up @@ -1121,7 +1121,7 @@ def convert(self, filename, workdir=None, images=True,
# it's important that we open the file as a bytestream since
# we might do byte-level manipulation in _parse_xml.
if keep_xml == "bz2":
fp = BZ2File(convertedfile)
fp = BZ2File(convertedfile, mode="rb")
else:
fp = open(convertedfile, "rb")
return fp
Expand Down
2 changes: 1 addition & 1 deletion ferenda/sources/legal/se/direktiv.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ def download(self, basefile=None):
super(DirTrips, self).download()


def downloaded_to_intermediate(self, basefile):
def downloaded_to_intermediate(self, basefile, attachment=None):
return self._extract_text(basefile)

def extract_head(self, fp, basefile):
Expand Down
4 changes: 2 additions & 2 deletions ferenda/sources/legal/se/fixedlayoutsource.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,9 +120,9 @@ def get_default_options(cls):
opts['imgfiles'] = ['img/spinner.gif']
return opts

def downloaded_to_intermediate(self, basefile):
def downloaded_to_intermediate(self, basefile, attachment=None):
# force just the conversion part of the PDF handling
downloaded_path = self.store.downloaded_path(basefile)
downloaded_path = self.store.downloaded_path(basefile, attachment=attachment)
intermediate_path = self.store.intermediate_path(basefile)
intermediate_dir = os.path.dirname(intermediate_path)
ocr_lang = None
Expand Down
210 changes: 129 additions & 81 deletions ferenda/sources/legal/se/myndfskr.py

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions ferenda/sources/legal/se/propositioner.py
Original file line number Diff line number Diff line change
Expand Up @@ -558,12 +558,12 @@ def sanitize_identifier(self, identifier):
# FixedLayoutSource.downloaded_to_intermediate will always convert
# things to pdf, even html files. But if we only have html
# (eg. plaintext, we should work with that)
def downloaded_to_intermediate(self, basefile):
downloaded_path = self.store.downloaded_path(basefile)
def downloaded_to_intermediate(self, basefile, attachment=None):
downloaded_path = self.store.downloaded_path(basefile, attachment=attachment)
if downloaded_path.endswith(".html"):
return self._extract_text(basefile)
else:
return super(PropTrips, self).downloaded_to_intermediate(basefile)
return super(PropTrips, self).downloaded_to_intermediate(basefile, attachment)

def extract_head(self, fp, basefile):
# get metadata from plaintext html even if we have doc/pdf,
Expand Down
14 changes: 8 additions & 6 deletions ferenda/sources/legal/se/sfs.py
Original file line number Diff line number Diff line change
Expand Up @@ -595,11 +595,12 @@ def extract_head(self, fp, basefile):
if notfound:
raise InteExisterandeSFS(str(notfound))
textheader = fp.read(2048)
idx = textheader.index("-"*64)
assert(isinstance(textheader, bytes))
idx = textheader.index(b"-"*64)
header = textheader[:idx]
offset = len(header)
fp.seek(offset + 66) # the extra 66 for the dividing ruler made of hyphens + newlines
return soup, header
return soup, header.decode(self.source_encoding)

def extract_metadata(self, datatuple, basefile):
soup, reader = datatuple
Expand Down Expand Up @@ -967,10 +968,11 @@ def polish_metadata(self, attributes):
if issued:
resource.graph.add((resource.identifier, DCTERMS.issued, issued))
else:
# create a totally incorrect value, otherwise
# lagen.nu.SFS.infer_triples wont be able to generate a
# owl:sameAs uri
resource.graph.add((resource.identifier, DCTERMS.issued, Literal(datetime.today())))
# create a non-date value so that
# lagen.nu.SFS.infer_triples will at least be able to
# generate a stable owl:sameAs uri
issued = str(r.value(DCTERMS.identifier)).split(" ", 1)[1]
resource.graph.add((resource.identifier, DCTERMS.issued, Literal(issued)))
return resource


Expand Down
10 changes: 5 additions & 5 deletions ferenda/sources/legal/se/swedishlegalsource.py
Original file line number Diff line number Diff line change
Expand Up @@ -581,7 +581,7 @@ def parse(self, doc):
doc.meta = resource.graph
doc.uri = str(resource.identifier)
if orig_uri != doc.uri:
newbasefile = self.basefile_from_uri(uri)
newbasefile = self.basefile_from_uri(doc.uri)
if newbasefile:
# change the basefile we're dealing with. Touch
# self.store.parsed_path(basefile) first so we don't
Expand Down Expand Up @@ -626,10 +626,10 @@ def parse_open(self, basefile, attachment=None):
# parse_convert_to_intermediate(basefile) to convert
# downloaded_path -> intermediate_path (eg.
# WordReader.read, SFS.extract_sfst)
fp = self.downloaded_to_intermediate(basefile)
fp = self.downloaded_to_intermediate(basefile, attachment)
else:
# 3. recieve intermediate_path as open file (binary?)
fp = self.store.open_intermediate(basefile)
fp = self.store.open_intermediate(basefile, mode="rb")
# 4. call patch_if_needed, recieve as open file (binary?)
return self.patch_if_needed(fp, basefile)

Expand Down Expand Up @@ -690,7 +690,7 @@ def patch_if_needed(self, fp, basefile):



def downloaded_to_intermediate(self, basefile):
def downloaded_to_intermediate(self, basefile, attachment=None):
"""Given a basefile, convert the corresponding downloaded file
into some suitable intermediate format and returns an open file
to that intermediate format (if any).
Expand All @@ -704,7 +704,7 @@ def downloaded_to_intermediate(self, basefile):
redone.
"""
return open(self.store.downloaded_path(basefile))
return open(self.store.downloaded_path(basefile, attachment=attachment))

def parse_metadata(self, fp, basefile):
"""Given a open file containing raw document content (or intermediate
Expand Down
32 changes: 29 additions & 3 deletions lagen/nu/sameas.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@
print_function, unicode_literals)
from builtins import *

from rdflib import Graph, Namespace, RDF, URIRef
from rdflib.namespace import OWL
from rdflib import Graph, Namespace, RDF, URIRef, Literal
from rdflib.namespace import OWL, DCTERMS
from cached_property import cached_property

from ferenda import util
from ferenda import ResourceLoader
from ferenda.thirdparty.coin import URIMinter

from ferenda.sources.legal.se import RPUBL

class SameAs(object):
@cached_property
Expand Down Expand Up @@ -55,7 +55,33 @@ def infer_metadata(self, resource, basefile):
if hasattr(sup, 'infer_metadata'):
sup.infer_metadata(resource, basefile)
try:
# a slight problem when minting sameas uris for
# :KonsolideradGrundforfattning documents (at least in
# myndfskr): These RDF resources contain a
# rpubl:konsoliderar triple that has a URIRef (not a
# BNode) as object. That URIRef uses a https://lagen.nu/
# prefix. coin.Template.get_base/guarded_base expects that
# such URIRefs should start with the base prefix, which
# for the sameas minter is http://rinfo.lagrummet.se/. So
# it falls back to trying to recursively mint the URI for
# the base act, which fails because the RDF resource
# doesn't contain all needed triples. The way to fix this
# is probably to identify any rpubl:konsoliderar triples
# and munge the URIRef before passing it to the sameas
# minter.
k = resource.value(RPUBL.konsoliderar)
temp_issued = None
if k and str(k.identifier).startswith(self.minter.space.base):
newuri = str(k.identifier).replace(self.minter.space.base,
self.sameas_minter.space.base)
resource.remove(RPUBL.konsoliderar)
resource.add(RPUBL.konsoliderar, URIRef(newuri))
if not resource.value(DCTERMS.issued):
temp_issued = Literal(self.consolidation_date(basefile))
resource.add(DCTERMS.issued, temp_issued)
sameas_uri = self.sameas_minter.space.coin_uri(resource)
if temp_issued:
resource.remove(DCTERMS.issued, temp_issued)
resource.add(OWL.sameAs, URIRef(sameas_uri))
except ValueError as e:
self.log.error("Couldn't mint owl:sameAs: %s" % e)
Expand Down
2 changes: 1 addition & 1 deletion lagen/nu/sfs.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,10 +96,10 @@ def infer_metadata(self, resource, basefile):
# postprocess_doc as well, because for this lagen.nu-derived
# class it needs to be done at this point, but for use of the
# superclass directly, it needs to be done at some point.
sameas_uri = self.sameas_minter.space.coin_uri(resource)
for o in resource.objects(DCTERMS.issued):
if not o.datatype:
resource.remove(DCTERMS.issued, o)
sameas_uri = self.sameas_minter.space.coin_uri(resource)
resource.add(OWL.sameAs, URIRef(sameas_uri))
resource.graph.add((URIRef(self.canonical_uri(basefile, True)),
OWL.sameAs, resource.identifier))
Expand Down
2 changes: 1 addition & 1 deletion test/files/repo/propregeringen/parsed/2005-06/173.xhtml
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@
<div class="section" property="dcterms:title" content="Vad avses med en missbruksmodell respektive hanteringsmodell?" typeof="bibo:DocumentPart" about="https://lagen.nu/prop/2005/06:173#S5-1">
<span rel="dcterms:isPartOf" href="https://lagen.nu/prop/2005/06:173#S5"/>
<span about="https://lagen.nu/prop/2005/06:173#S5-1" property="bibo:chapter" content="5.1"/>
<p class="textbox fontspec0" style="top: 364px; left: 85px; height: 60px; width: 562px">Begreppen missbruksmodell och hanteringsmodell introducerades i förarbetena till <a href="https://lagen.nu/1998:204" rel="dcterms:references">personuppgiftslagen</a> (<a href="https://lagen.nu/sou/1997:39#sid179" rel="dcterms:references">SOU 1997:39 s. 179</a> ff. och prop. 1997/98: 44 s. 36 f.). </p>
<p class="textbox fontspec0" style="top: 364px; left: 85px; height: 60px; width: 562px">Begreppen missbruksmodell och hanteringsmodell introducerades i förarbetena till <a href="https://lagen.nu/1998:204" rel="dcterms:references">personuppgiftslagen</a> (<a href="https://lagen.nu/sou/1997:39#sid179" rel="dcterms:references">SOU 1997:39 s. 179</a> ff. och <a href="https://lagen.nu/prop/1997/98:44#sid36" rel="dcterms:references">prop. 1997/98: 44 s. 36</a> f.). </p>
<p class="textbox fontspec0" style="top: 428px; left: 85px; height: 125px; width: 558px">Förenklat uttryckt reglerar en lagstiftning uppbyggd enligt en hanteringsmodell själva hanteringen av personuppgifter oavsett om hanteringen kan betecknas som harmlös eller känslig från integritetssynpunkt. Regleringen omfattar all användning av personuppgifter oavsett syfte, omfattning och art. I en sådan modell finns därmed regler om hur personuppgifter skall hanteras från det att de samlas in till dess de utplånas. </p>
<p class="textbox fontspec0" style="top: 558px; left: 85px; height: 189px; width: 560px">En reglering enligt en missbruksmodell koncentrerar sig i stället på sådant utnyttjande av personuppgifter som kan karakteriseras som ett missbruk. Så länge inte personuppgifterna missbrukas på så sätt att den personliga integriteten kränks är behandlingen tillåten. De som förespråkar en sådan modell brukar utgå från att själva hanteringen av personuppgifterna skall vara i det närmaste fri. Det väsentliga i den modellen blir i stället att identifiera vilken användning av personuppgifter som utgör ett sådant missbruk att den bör förbjudas, dvs. i första hand skadeståndsbeläggas eller kriminaliseras. </p>
</div>
Expand Down
2 changes: 1 addition & 1 deletion test/files/repo/propregeringen/parsed/2012-13/182.xhtml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
<div class="section" property="dcterms:title" content="Ärendet och dess beredning" typeof="bibo:DocumentPart" about="https://lagen.nu/prop/2012/13:182#S3">
<span rel="dcterms:isPartOf" href="https://lagen.nu/prop/2012/13:182"/>
<span about="https://lagen.nu/prop/2012/13:182#S3" property="bibo:chapter" content="3"/>
<p class="textbox fontspec0" style="top: 107px; left: 77px; height: 133px; width: 458px">Internationell delgivning i Sverige och utomlands regleras i huvudsak i två äldre kungörelser. En från 1909 och en annan från 1933. Regeringen konstaterade i samband med införandet av lagen (<a href="https://lagen.nu/2000:562" rel="dcterms:references">2000:562</a>) om internationell rättslig hjälp i brottmål att bestämmelserna i kungörelserna var föråldrade och i behov av en genomgripande översyn (prop.1999/2000:61 s. 73–74). Detta behov upprepades i förarbetena till den nya delgivningslag som trädde i kraft den 1 april 2011 (<a href="https://lagen.nu/prop/2009/10:237#sid96" rel="dcterms:references">prop. 2009/10:237 s. 96</a>). </p>
<p class="textbox fontspec0" style="top: 107px; left: 77px; height: 133px; width: 458px">Internationell delgivning i Sverige och utomlands regleras i huvudsak i två äldre kungörelser. En från 1909 och en annan från 1933. Regeringen konstaterade i samband med införandet av lagen (<a href="https://lagen.nu/2000:562" rel="dcterms:references">2000:562</a>) om internationell rättslig hjälp i brottmål att bestämmelserna i kungörelserna var föråldrade och i behov av en genomgripande översyn (<a href="https://lagen.nu/prop/1999/2000:61#sid73" rel="dcterms:references">prop.1999/2000:61 s. 73</a><a href="https://lagen.nu/prop/1999/2000:61#sid74" rel="dcterms:references">74</a>). Detta behov upprepades i förarbetena till den nya delgivningslag som trädde i kraft den 1 april 2011 (<a href="https://lagen.nu/prop/2009/10:237#sid96" rel="dcterms:references">prop. 2009/10:237 s. 96</a>). </p>
<p class="textbox fontspec0" style="top: 245px; left: 77px; height: 151px; width: 455px">Nya internationella överenskommelser om delgivningssamarbete har utvecklat nya former för delgivning över gränserna. Bistånd med delgivning söks genom direktkontakter mellan ländernas behöriga myndigheter i stället för att använda sig av centrala organ, vilket är det sätt som nämnda kungörelser huvudsakligen föreskriver. Mot bl.a. denna bakgrund och med en målsättning att modernisera regelverket för internationell delgivning har en utredare fått i uppdrag att biträda Justitiedepartementet med att göra en översyn av reglerna om internationell delgivning. </p>
<p class="textbox fontspec0" style="top: 400px; left: 76px; height: 151px; width: 454px">I promemorian Internationell delgivning (<a href="https://lagen.nu/ds/2011:46" rel="dcterms:references">Ds 2011:46</a>) föreslås ett nytt regelverk för internationell delgivning. Huvudparten av regelverket kan enligt utredaren regleras i förordning. I promemorian föreslås dock vissa ändringar i <a href="https://lagen.nu/2010:1932" rel="dcterms:references">delgivningslagen (2010:1932)</a> och <a href="https://lagen.nu/2009:400" rel="dcterms:references">offentlighets- och sekretesslagen (2009:400)</a>. En sammanfattning av promemorians förslag återfinns i <i>bilaga 1</i>. Promemorians lagförslag finns i <i>bilaga 2</i>. Promemorian har remissbehandlats. En förteckning över remissinstanserna finns i <i>bilaga 3</i>. En sammanställning av remissyttrandena finns tillgänglig i Justitiedepartementet (dnr Ju2011/7600/BIRS). </p>
<p class="textbox fontspec4" style="top: 572px; left: 76px; height: 13px; width: 59px">
Expand Down
2 changes: 1 addition & 1 deletion test/files/repo/propriksdagen/parsed/1987-88/155.xhtml
Original file line number Diff line number Diff line change
Expand Up @@ -687,7 +687,7 @@
<p class="textbox fontspec6" style="top: 634px; left: 27px; height: 52px; width: 363px">För att brottet skall vara fullbordat krävs att gärningsntztntten utnyttjar eller röjer hemligheten. Straffet för ft3l'Clilg$Spl()t1Cl'l har satts till böter eller fängelse i högst två ar. Även försök eller förberedelse till brottet skall kunna bestraffas. </p>
<p class="textbox fontspec8" style="top: 692px; left: 28px; height: 25px; width: 361px">Några exempel ;na fall där fkiretatgssjvitmeri skulle föreligga enligt utredningens förslag: </p>
<p class="textbox fontspec6" style="top: 721px; left: 39px; height: 11px; width: 351px">En ;inställd tar sig in i en verkstad dit han inte har tillträde och stjäl en </p>
<p class="textbox fontspec6" style="top: 41px; left: 47px; height: 99px; width: 473px">prototyp till en båtmotor. som han sedan överlämnzir till en konkurrent. Prop. 1987/88: 155 l-ln utomstående person läser på en egen skärm av kommersiell inforina- Bilaga l tion som passerar ett företags dator ("datorn läcker"). llan zinvänder sedan informationen <b>i </b>egen rörelse och vinner därigenom konkurrensfördelar. En konkurrent lurar till sig uppgifter om en vara under förespegling att han tänker kâipa den. l-lan sätter sedan <b>i </b>gång tillverkning av motsvarande produkt. </p>
<p class="textbox fontspec6" style="top: 41px; left: 47px; height: 99px; width: 473px">prototyp till en båtmotor. som han sedan överlämnzir till en konkurrent. <a href="https://lagen.nu/prop/1987/88:155" rel="dcterms:references">Prop. 1987/88: 155</a> l-ln utomstående person läser på en egen skärm av kommersiell inforina- Bilaga l tion som passerar ett företags dator ("datorn läcker"). llan zinvänder sedan informationen <b>i </b>egen rörelse och vinner därigenom konkurrensfördelar. En konkurrent lurar till sig uppgifter om en vara under förespegling att han tänker kâipa den. l-lan sätter sedan <b>i </b>gång tillverkning av motsvarande produkt. </p>
<p class="textbox fontspec5" style="top: 152px; left: 47px; height: 16px; width: 215px">Missbruk av företagshemlighet (3-6 <b>§§) i </b></p>
<p class="textbox fontspec8" style="top: 183px; left: 48px; height: 84px; width: 361px">Företagsspioneri innebär enligt 2 § <b>i </b>utredningens förslag ett angrepp på en företagshemlighet från en utomstående persons sida. En annan typ av angrepp är när någon har anförtrotts en företagshemlighet och sedan utnyttjar eller röjer denna på ett sätt som avviker från vad som var avsett. Ett sildzint förtroendemissbruk har utredningen kallat missbruk av företagshem- lighet. </p>
<p class="textbox fontspec5" style="top: 270px; left: 48px; height: 128px; width: 361px">Missbruk av företagshemlighet är enligt utredningens mening i allmänhet inte lika zillvzirligt som företagsspioneri. Ofta finns goda möjligheter att komma tillrätta med situationen utan att man behöver tillgripa alltför stränga påföljder. Utredningen anser därför att missbruk av företagshemlighet normalt inte skall behöva följas av straff._Straffpåföljd har dock ansetts nödvändigi fall av missbruk av företagshemlighet i affärsförbindelse. En av utredningen företagen fältundersökning har nämligen visat att det i sådana relationer förekommer missbruk i en utsträckning som inte kan tolercras. Detta gäller t. ex. vid anbudsförfaranden. </p>
Expand Down
Loading

0 comments on commit bf4459f

Please sign in to comment.