Changeset 3817 for lliurex-store


Ignore:
Timestamp:
Mar 6, 2017, 6:32:02 PM (3 years ago)
Author:
hectorgh
Message:

wip

Location:
lliurex-store/trunk/fuentes/lliurex-store-gui
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • lliurex-store/trunk/fuentes/lliurex-store-gui/Core.py

    r3814 r3817  
    99import SearchBox
    1010import LliurexStoreManager
     11import ResourcesManager
    1112
    1213
     
    5253        def init(self):
    5354               
     55                self.dprint("Creating resources manager...")
     56                self.resources=ResourcesManager.ResourcesManager()
    5457                self.dprint("Creating store manager...")
    5558                self.store=LliurexStoreManager.LliurexStoreManager()
  • lliurex-store/trunk/fuentes/lliurex-store-gui/DetailsBox.py

    r3814 r3817  
    261261               
    262262                info={}
    263                 info["image_url"]=pkg.banner_url
    264                 info["image_id"]=pkg.banner_id
     263               
     264                '''
     265               
     266                self.info["categories"]=self.info.setdefault("categories",[""])
     267                self.info["component"]=self.info.setdefault("component","")
     268                self.info["depends"]=self.info.setdefault("depends",)
     269                self.info["description"]=self.info.setdefault("description","")
     270                self.info["extraInfo"]=self.info.setdefault("extraInfo","")
     271                self.info["homepage"]=self.info.setdefault("homepage",)
     272                self.info["icon"]=self.info.setdefault("icon","")
     273                self.info["id"]=self.info.setdefault("id","")
     274                self.info["installerUrl"]=self.info.setdefault("installerUrl","")
     275                self.info["kudos"]=self.info.setdefault("kudos","")
     276                self.info["license"]=self.info.setdefault("license","")
     277                self.info["name"]=self.info.setdefault("name","")
     278                self.info["package"]=self.info.setdefault("package","")
     279               
     280                self.info["screenshots"]=self.info.setdefault("screenshots",[])
     281                if "screenshot" in self.info:
     282                        if  self.info["screenshot"] not in self.info["screenshots"]:
     283                                self.info["screenshots"].append(self.info["screenshot"])
     284               
     285                self.info["state"]=self.info.setdefault("state","")
     286                self.info["suggests"]=self.info.setdefault("suggests","")
     287                self.info["summary"]=self.info.setdefault("summary","")
     288                self.info["thumbnails"]=self.info.setdefault("thumbnails",[])
     289                self.info["version"]=self.info.setdefault("version","")
     290                self.info["videos"]=self.info.setdefault("videos",[])
     291               
     292
     293               
     294                for video in self.info["videos"]:
     295                        self.info["videos"][video]["preview"]=self.info["videos"][video].setdefault("preview","")
     296                        self.info["videos"][video]["url"]=self.info["videos"][video].setdefault("url","")
     297               
     298                self.info["banner_large"]=self.info.setdefault("banner_large",None)
     299                self.info["banner_small"]=self.info.setdefault("banner_small",None)
     300                self.info["category"]=self.info.setdefault("category",self.info["categories"][0])
     301                self.info["size"]=self.info.setdefault("size","")
     302                self.info["related_packages"]=self.info.setdefault("related_packages",[])
     303               
     304                '''
     305               
     306               
     307               
     308                info["image_url"]=pkg["banner_small"]
     309                info["image_id"]=pkg["package"]+"_banner_small"
    265310                info["x"]=self.banner_full_size
    266311                info["y"]=self.banner_full_size
    267312                info["aspect_ratio"]=False
    268                 info["pkg_name"]=pkg.name
    269                 info["installed"]=pkg.installed
    270                
    271                
    272                 if pkg.banner_url !=None:
    273                         #self.app_banner.download_image(pkg.banner_url,pkg.banner_id,self.banner_full_size,self.banner_full_size,False)
     313                info["pkg_name"]=pkg["package"]
     314                info["installed"]=pkg["status"]
     315               
     316               
     317                if pkg["banner_small"] !=None:
    274318                        self.app_banner.download_image(info)
    275319                else:
    276                         info["image_url"]=pkg.icon_url
    277                         self.app_banner.download_image(info)
    278                         #self.app_banner.create_banner_from_url(pkg.icon_url,pkg.banner_id,self.banner_full_size,self.banner_full_size,pkg.name)
     320                        info["image_path"]=self.core.resources.get_icon(pkg)
     321                        #self.app_banner.set_from_file(info)
     322                        self.app_banner.create_banner_from_file(pkg.icon_url,pkg.banner_id,self.banner_full_size,self.banner_full_size,pkg.name)
    279323               
    280324                self.version_value_label.set_text(pkg.version)
  • lliurex-store/trunk/fuentes/lliurex-store-gui/Package.py

    r3814 r3817  
    44        def __init__(self,dic):
    55               
    6                 self.banner_url=dic.setdefault("banner_url")
    7                 self.banner_id=dic.setdefault("banner_id")
    8                 self.version=dic.setdefault("version")
    9                 self.category=dic.setdefault("category")
    10                 self.license=dic.setdefault("license")
    11                 self.size=dic.setdefault("size")
    12                 self.website=dic.setdefault("website")
    13                 self.name=dic.setdefault("name")
    14                 self.debian_name=dic.setdefault("debian_name")
    15                 self.short_description=dic.setdefault("short_description")
    16                 self.full_description=dic.setdefault("full_description")
    17                 self.section=dic.setdefault("section")
    18                 self.icon_url=dic.setdefault("icon_url")
    19                 self.icon_id=dic.setdefault("icon_id")
    20                 self.video_preview_image=dic.setdefault("video_preview_image")
    21                 self.video_id=dic.setdefault("video_id")
    22                 self.video_url=dic.setdefault("video_url")
    23                 self.screenshot_url=dic.setdefault("screenshot_url")
    24                 self.screenshot_id=dic.setdefault("screenshot_id")
    25                 self.videos=dic.setdefault("videos",[])
    26                 self.screenshots=dic.setdefault("screenshots",[])
    27                 self.related_packages=dic.setdefault("related_packages",[])
    28                 self.installed=dic.setdefault("installed",False)
    29                        
     6                self.dic=dic
     7                self.fix_info()
    308               
    319        # __init__
    3210       
    33        
    34         def pprint(self):
     11        def fix_info(self):
    3512               
    36                 print(("BANNER_URL:",self.banner_url))
    37                 print(("BANNER_ID:",self.banner_id))
    38                 print(("VERSION:",self.version))
    39                 print(("CATEGORY:",self.category))
    40                 print(("LICENSE:",self.license))
    41                 print(("SIZE:",self.size))
    42                 print(("WEBSITE:",self.website))
    43                 print(("NAME",self.name))
    44                 print(("DEBIAN_NAME",self.debian_name))
    45                 print(("SHORT_DESCRIPTION",self.short_description))
    46                 print(("SECTION:",self.section))
    47                 print(("ICON_URL:",self.icon_url))
    48                 print(("ICON_ID:",self.icon_id))
    49                 print(("PREVIEW_IMAGE:",self.video_preview_image))
    50                 print(("VIDEO_ID:",self.video_id))
    51                 print(("VIDEO_URL:",self.video_url))
    52                 print(("SCREENSHOT_URL:",self.screenshot_url))
    53                 print(("SCREENSHOT_ID:",self.screenshot_id))
    54                 print(("VIDEOS:",self.videos))
    55                 print(("SCREENSHOTS:",self.screenshots))
    56                 print(("RELATED_PACKAGES:",self.related_packages))
    5713               
    58         #def pprint
     14                self.info["categories"]=self.info.setdefault("categories",[""])
     15                self.info["component"]=self.info.setdefault("component","")
     16                self.info["depends"]=self.info.setdefault("depends",)
     17                self.info["description"]=self.info.setdefault("description","")
     18                self.info["extraInfo"]=self.info.setdefault("extraInfo","")
     19                self.info["homepage"]=self.info.setdefault("homepage",)
     20                self.info["icon"]=self.info.setdefault("icon","")
     21                self.info["id"]=self.info.setdefault("id","")
     22                self.info["installerUrl"]=self.info.setdefault("installerUrl","")
     23                self.info["kudos"]=self.info.setdefault("kudos","")
     24                self.info["license"]=self.info.setdefault("license","")
     25                self.info["name"]=self.info.setdefault("name","")
     26                self.info["package"]=self.info.setdefault("package","")
     27               
     28                self.info["screenshots"]=self.info.setdefault("screenshots",[])
     29                if "screenshot" in self.info:
     30                        if  self.info["screenshot"] not in self.info["screenshots"]:
     31                                self.info["screenshots"].append(self.info["screenshot"])
     32               
     33                self.info["state"]=self.info.setdefault("state","")
     34                self.info["suggests"]=self.info.setdefault("suggests","")
     35                self.info["summary"]=self.info.setdefault("summary","")
     36                self.info["thumbnails"]=self.info.setdefault("thumbnails",[])
     37                self.info["version"]=self.info.setdefault("version","")
     38                self.info["videos"]=self.info.setdefault("videos",[])
     39               
     40                '''
     41                if "video" in self.info:
     42                        if  self.info["video"] not in self.info["videos"]:
     43                                self.info["videos"].append(self.info["video"])
     44                '''
     45               
     46                for video in self.info["videos"]:
     47                        self.info["videos"][video]["preview"]=self.info["videos"][video].setdefault("preview","")
     48                        self.info["videos"][video]["url"]=self.info["videos"][video].setdefault("url","")
     49               
     50                self.info["banner_large"]=self.info.setdefault("banner_large",None)
     51                self.info["banner_small"]=self.info.setdefault("banner_small",None)
     52                self.info["category"]=self.info.setdefault("category",self.info["categories"][0])
     53                self.info["size"]=self.info.setdefault("size","")
     54                self.info["related_packages"]=self.info.setdefault("related_packages",[])
     55               
     56               
     57        #def fix_info
    5958       
    6059       
     
    6564               
    6665               
    67                 if id=="ardour":
    68                
    69                         dic["banner_url"]="https://teoten.files.wordpress.com/2010/02/splash1.png"
    70                         dic["banner_id"]="ardour_banner"
    71                         dic["version"]="1.0"
    72                         dic["category"]="Music"
    73                         dic["license"]="GPL-3+"
    74                         dic["size"]="1231"
    75                         dic["website"]="http://www.google.es"
    76                         dic["name"]="Ardour"
    77                         dic["debian_name"]="ardour"
    78                         dic["short_description"]="Record, mix and master multi-track audio."
    79                         dic["full_description"]="""
     66                dic["categories"]=[]
     67                dic["component"]="universe"
     68                dic["depends"]=""
     69                dic["banner_large"]="https://teoten.files.wordpress.com/2010/02/splash1.png"
     70                dic["version"]="1.0"
     71                dic["category"]="Music"
     72                dic["license"]="GPL-3+"
     73                dic["size"]="1231"
     74                dic["homepage"]="http://www.google.es"
     75                dic["name"]="Ardour"
     76                dic["package"]="ardour"
     77                dic["summary"]="Record, mix and master multi-track audio."
     78                dic["description"]="""
    8079Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh. Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh. Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh. Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh. Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh. Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh. Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh. Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh.
    8180Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh. Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh.  Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh.Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh.
     
    8685Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh. Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh. Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh.
    8786"""
    88                         dic["section"]="Applications > Music > Ardour"
    89                         dic["icon_url"]="http://icons.iconarchive.com/icons/alecive/flatwoken/512/Apps-Ardour-icon.png"
    90                         dic["icon_id"]="ardour_icon"
    9187                       
    92                         dic["videos"]=[]
     88                dic["icon"]="64x64/ardour_ardour.png"
     89                dic["videos"]=[]
    9390                       
    94                         tmp={}
    95                         tmp["video_preview_image"]="https://farm6.staticflickr.com/5624/23815901722_4d1edf4ed1_b.jpg"
    96                         tmp["video_id"]="uncharted_01"
    97                         tmp["video_url"]="https://www.youtube.com/embed/hrYvDujhEck"
    98                         p=Package(tmp)
    99                         dic["videos"].append(p)
     91                tmp={}
     92                tmp["preview"]="https://farm6.staticflickr.com/5624/23815901722_4d1edf4ed1_b.jpg"
     93                tmp["url"]="https://www.youtube.com/embed/hrYvDujhEck"
     94                p=Package(tmp)
     95                dic["videos"].append(p)
    10096                       
    101                         tmp={}
    102                         tmp["video_preview_image"]="https://media.playstation.com/is/image/SCEA/nioh-box-art-01-ps4-us-10nov16?$image_block_desktop$"
    103                         tmp["video_id"]="nioh_01"
    104                         tmp["video_url"]="https://www.youtube.com/embed/y0TiK5rzBrQ"
    105                         p=Package(tmp)
    106                         dic["videos"].append(p)
     97                tmp={}
     98                tmp["preview"]="https://media.playstation.com/is/image/SCEA/nioh-box-art-01-ps4-us-10nov16?$image_block_desktop$"
     99                tmp["url"]="https://www.youtube.com/embed/y0TiK5rzBrQ"
     100                p=Package(tmp)
     101                dic["videos"].append(p)
    107102                       
    108103                       
    109104                       
    110                         dic["screenshots"]=[]
     105                dic["screenshots"]=[]
     106                dic["screenshots"].append("https://ardour.org/images/retina_no_plugs2.png")
     107                dic["screenshots"].append("https://ardour.org/images/editor4.png")
     108                dic["screenshots"].append("http://libremusicproduction.com/sites/default/files/tools/ardour_0.jpg")
     109                dic["screenshots"].append("https://ardour.org/images/lsd-mixer.png")
     110                dic["screenshots"].append("http://moderndogmagazine.com/sites/default/files/images/uploads/Pug.jpg")
    111111                       
    112                         tmp={}
    113                         tmp["screenshot_url"]="https://ardour.org/images/retina_no_plugs2.png"
    114                         tmp["screenshot_id"]="ardour_s01"
    115                         p=Package(tmp)
    116                         dic["screenshots"].append(p)
     112                               
     113               
     114                dic["related_packages"]=[]
     115                tmp={}
     116                tmp["banner"]="https://mir-s3-cdn-cf.behance.net/project_modules/disp/29947525486889.563460e87f09d.jpg"
     117                tmp["package"]="rosegarden"
     118                tmp["name"]="Rosegarden"
     119                p=Package(tmp)
     120                dic["related_packages"].append(p)
    117121                       
    118                         tmp["screenshot_url"]="https://ardour.org/images/editor4.png"
    119                         tmp["screenshot_id"]="ardour_s02"
    120                         p=Package(tmp)
    121                         dic["screenshots"].append(p)
    122                        
    123                         tmp["screenshot_url"]="http://libremusicproduction.com/sites/default/files/tools/ardour_0.jpg"
    124                         tmp["screenshot_id"]="ardour_s03"
    125                         p=Package(tmp)
    126                         dic["screenshots"].append(p)
    127                        
    128                         tmp["screenshot_url"]="https://ardour.org/images/lsd-mixer.png"
    129                         tmp["screenshot_id"]="ardour_s04"
    130                         p=Package(tmp)
    131                         dic["screenshots"].append(p)
    132                        
    133                         tmp["screenshot_url"]="http://moderndogmagazine.com/sites/default/files/images/uploads/Pug.jpg"
    134                         tmp["screenshot_id"]="ardour_s05"
    135                         p=Package(tmp)
    136                         dic["screenshots"].append(p)
    137                        
    138                        
    139                         dic["related_packages"]=[]
    140                         tmp={}
    141                         tmp["banner_url"]="https://mir-s3-cdn-cf.behance.net/project_modules/disp/29947525486889.563460e87f09d.jpg"
    142                         tmp["banner_id"]="rosegarden_banner"
    143                         tmp["debian_name"]="rosegarden"
    144                         p=Package(tmp)
    145                         dic["related_packages"].append(p)
    146                        
    147                         tmp={}
    148                         #tmp["banner_url"]="http://img02.deviantart.net/f02e/i/2015/146/3/7/audacity_logo_shadow_by_hectech-d8uwdme.png"
    149                         tmp["name"]="Audacity"
    150                         tmp["icon_url"]="https://cdn2.iconfinder.com/data/icons/squareplex/512/audacity.png"
    151                         tmp["banner_id"]="audacity_banner"
    152                         tmp["debian_name"]="audacity"
    153                         p=Package(tmp)
    154                         dic["related_packages"].append(p)
    155                        
    156                         tmp={}
    157                         tmp["banner_url"]="http://orig12.deviantart.net/da38/f/2011/266/8/c/lmms_logo_01_by_vaccieaux-d4anukd.jpg"
    158                         tmp["banner_id"]="lmms_banner"
    159                         tmp["debian_name"]="lmms"
    160                         p=Package(tmp)
    161                         dic["related_packages"].append(p)
     122                tmp={}
     123                tmp["name"]="Audacity"
     124                tmp["icon"]="64x64/audacity_audacity.png"
     125                tmp["package"]="audacity"
     126                p=Package(tmp)
     127                dic["related_packages"].append(p)
    162128       
    163                
    164                 else:
    165                        
    166                         dic["banner_url"]="https://4.bp.blogspot.com/-7B2F6d4vbP8/VxJmlWC5owI/AAAAAAAAGug/YO7JeHjHnjEGvTv2naEfcLmaFIsi2sdLwCLcB/s1600/clementine-950x632.jpg"
    167                         dic["banner_id"]="clementine_banner"
    168                         dic["version"]="1.0"
    169                         dic["category"]="Music"
    170                         dic["license"]="GPL-3+"
    171                         dic["size"]="1231"
    172                         dic["website"]="http://www.google.es"
    173                         dic["name"]="Clementine"
    174                         dic["debian_name"]="clementine"
    175                         dic["short_description"]="Plays music and last.fm streams"
    176                         dic["full_description"]="""
    177 Clementine is a multiplatform music player focusing on a fast and easy-to-use interface for searching and playing your music.\n
    178 Summary of included features:
    179  * Search and play your local music library
    180  * Listen to internet radio from Last.fm, SomaFM and Magnatune
    181  * Tabbed playlists, import and export M3U, XSPF, PLS and ASX
    182  * Visualisations from projectM
    183  * Transcode music into MP3, Ogg Vorbis, Ogg Speex, FLAC or AA
    184  * Edit tags on MP3 and OGG files, organise your music
    185  * Download missing album cover art from Last.fm
    186  * Native desktop notifications using libnotify
    187  * Supports MPRIS, or remote control using the command-line
    188  * Remote control using a Wii Remote, MPRIS or the command-line
    189  * Copy music to your iPod, iPhone, MTP or mass-storage USB player
    190 """
    191                         dic["section"]="Applications > Music > Clementine"
    192                         dic["icon_url"]="https://lh3.ggpht.com/8P0MAg8xeKY_JOIG_rBoQwb0QryDJGcg1u2bGaTlywJ9zOnfRD0uem8uRYF7Rh5upLE=w300"
    193                         dic["icon_id"]="clementine_icon"
    194                        
    195                         dic["videos"]=[]
    196                        
    197                         tmp={}
    198                         tmp["video_preview_image"]="https://farm6.staticflickr.com/5624/23815901722_4d1edf4ed1_b.jpg"
    199                         tmp["video_id"]="uncharted_01"
    200                         tmp["video_url"]="https://www.youtube.com/embed/hrYvDujhEck"
    201                         p=Package(tmp)
    202                         dic["videos"].append(p)
    203                        
    204                         tmp={}
    205                         tmp["video_preview_image"]="https://media.playstation.com/is/image/SCEA/nioh-box-art-01-ps4-us-10nov16?$image_block_desktop$"
    206                         tmp["video_id"]="nioh_01"
    207                         tmp["video_url"]="https://www.youtube.com/embed/y0TiK5rzBrQ"
    208                         p=Package(tmp)
    209                         dic["videos"].append(p)
    210                        
    211                        
    212                        
    213                         dic["screenshots"]=[]
    214                        
    215                         tmp={}
    216                         tmp["screenshot_url"]="http://exotichousecat.com/wp-content/uploads/2014/12/scottish-fold-main-image-1038x576.jpg"
    217                         tmp["screenshot_id"]="clementine_s01"
    218                         p=Package(tmp)
    219                         dic["screenshots"].append(p)
    220                        
    221                         tmp["screenshot_url"]="https://s-media-cache-ak0.pinimg.com/736x/ec/f4/78/ecf478324fd2fa025749d6fe6cd4d669.jpg"
    222                         tmp["screenshot_id"]="clementine_s02"
    223                         p=Package(tmp)
    224                         dic["screenshots"].append(p)
    225                        
    226                         tmp["screenshot_url"]="http://www.misgatitos.net/images/comprar-gato-camada-gatos2.jpg"
    227                         tmp["screenshot_id"]="clementine_s03"
    228                         p=Package(tmp)
    229                         dic["screenshots"].append(p)
    230                        
    231                         tmp["screenshot_url"]="https://www.askideas.com/media/19/Scottish-Fold-Kitten-Image.jpg"
    232                         tmp["screenshot_id"]="clementine_s04"
    233                         p=Package(tmp)
    234                         dic["screenshots"].append(p)
    235                        
    236                         tmp["screenshot_url"]="http://previews.123rf.com/images/svet_lana/svet_lana0811/svet_lana081100069/3908141-Scottish-fold-kitten-on-white-background-Stock-Photo-cat-ball-pet.jpg"
    237                         tmp["screenshot_id"]="clementine_s05"
    238                         p=Package(tmp)
    239                         dic["screenshots"].append(p)
    240                        
    241                        
    242                         dic["related_packages"]=[]
    243                         tmp={}
    244                         tmp["banner_url"]="https://mir-s3-cdn-cf.behance.net/project_modules/disp/29947525486889.563460e87f09d.jpg"
    245                         tmp["banner_id"]="rosegarden_banner"
    246                         tmp["debian_name"]="rosegarden"
    247                         p=Package(tmp)
    248                         dic["related_packages"].append(p)
    249                        
    250                         tmp={}
    251                         tmp["banner_url"]="http://img02.deviantart.net/f02e/i/2015/146/3/7/audacity_logo_shadow_by_hectech-d8uwdme.png"
    252                         tmp["banner_id"]="audacity_banner"
    253                         tmp["debian_name"]="audacity"
    254                         p=Package(tmp)
    255                         dic["related_packages"].append(p)
    256                        
    257                         tmp={}
    258                         tmp["banner_url"]="http://orig12.deviantart.net/da38/f/2011/266/8/c/lmms_logo_01_by_vaccieaux-d4anukd.jpg"
    259                         tmp["banner_id"]="lmms_banner"
    260                         tmp["debian_name"]="lmms"
    261                         p=Package(tmp)
    262                         dic["related_packages"].append(p)
    263                        
    264                         tmp={}
    265                         tmp["icon_url"]="https://upload.wikimedia.org/wikipedia/en/thumb/e/e3/Firefox-logo.svg/1072px-Firefox-logo.svg.png"
    266                         tmp["banner_id"]="firefox_banner"
    267                         tmp["name"]="Firefox"
    268                         tmp["debian_name"]="firefox"
    269                         p=Package(tmp)
    270                         dic["related_packages"].append(p)
    271                        
    272 
    273                        
    274 
    275                
    276                
    277129                return Package(dic)             
    278130               
Note: See TracChangeset for help on using the changeset viewer.