← Back to team overview

widelands-dev team mailing list archive

Re: [Merge] lp:~widelands-dev/widelands-website/encyclopedia into lp:widelands-website

 

Review: Approve

must not be merged before the corresponding WL branch is deployed on the website. 

lgtm to me in general, though I did not test it. What is the plan for generating the JSON files? It seems you expect them to be dumped into the JSON directory in the repo - do you want to check those files into the repo or should they be regenerated on the server?

Diff comments:

> 
> === modified file 'wlhelp/management/commands/update_help.py'
> --- wlhelp/management/commands/update_help.py	2012-05-19 19:55:15 +0000
> +++ wlhelp/management/commands/update_help.py	2016-02-28 18:45:27 +0000
> @@ -45,32 +36,45 @@
>          Parses the definitions for one tribe and generates the models
>  
>          name - name of the tribe
> -        conf - path to the tribe/conf file
>          """
> -        self._tribe = Tribe(name)
> +        self._delete_old_media_dir(name) # You can deactivate this line if you don't need to clean house.

I feel uneasy about that line. While the media directory is deleted, all requests will return 404. It would be better do build into media_20160214, then `ln -sf media_20160214 media`, then remove the old media dirs. That way adding new data is atomic.

> +
> +        base_directory = os.path.normpath(WIDELANDS_SVN_DIR + "/data")
> +        json_directory = os.path.normpath(base_directory + "/map_object_info")
> +
> +        tribeinfo_file = open(os.path.normpath(json_directory + "/tribe_" + name + ".json"), "r")
> +        tribeinfo = json.load(tribeinfo_file)
> +
> +        self._tribe = Tribe(tribeinfo, json_directory)
>          # Generate the Tribe
>          self._to = TribeModel.objects.get_or_create(name=name.lower())[0]
> -        self._to.displayname = normalize_name(self._tribe._conf.getstring("tribe", "name"))
> -        self._to.descr = normalize_name(self._tribe._conf.getstring("tribe", "descr"))
> +        self._to.displayname = tribeinfo['descname']
> +        self._to.descr = tribeinfo['tooltip']
>          # copy icon
> -        dn = "%s/wlhelp/img/%s/" % (MEDIA_ROOT,self._to.name)
> +        dn = "%s/wlhelp/img/%s/" % (MEDIA_ROOT, tribeinfo['name'])
>          try:
>              os.makedirs(dn)
>          except OSError, o:
>              if o.errno != 17:
>                  raise
>          new_name = path.join(dn, "icon.png")
> -        file = path.join(self._tribe._tdir,self._tribe._conf.getstring("tribe", "icon"))
> +        file = os.path.normpath(base_directory + "/" + tribeinfo['icon'])
>          shutil.copy(file, new_name )
>          self._to.icon_url = path.normpath("%s/%s" % (MEDIA_URL, new_name[len(MEDIA_ROOT):]))
>          self._to.save()
>  
> -    def parse( self ):
> +    def parse( self, tribename, base_directory, json_directory ):
>          """Put all data into the database"""
> -        #self._delete_old_media_dir() why delete it? We can simply overwrite data
> -        self._parse_workers()
> -        self._parse_wares()
> -        self._parse_buildings()
> +        self._delete_old_data(tribename) # You can deactivate this line if you don't need to clean house.
> +
> +        wares_file = open(os.path.normpath(json_directory + "/" + tribename + "_wares.json"), "r")
> +        self._parse_wares(base_directory, json.load(wares_file))
> +
> +        workers_file = open(os.path.normpath(json_directory + "/" + tribename + "_workers.json"), "r")
> +        self._parse_workers(base_directory, json.load(workers_file))
> +
> +        buildings_file = open(os.path.normpath(json_directory + "/" + tribename + "_buildings.json"), "r")
> +        self._parse_buildings(base_directory, json.load(buildings_file))
>  
>      def graph( self ):
>          """Make all graphs"""


-- 
https://code.launchpad.net/~widelands-dev/widelands-website/encyclopedia/+merge/287410
Your team Widelands Developers is subscribed to branch lp:widelands-website.


References