Skip to main content

Build Wine rpm with 32 bit application support

Wine is a software to allow running Windows applications in Linux, MAC etc. platforms. It is available for installation from package managers like yum (RHEL, CentOS) and apt (Ubuntu). You can find more details on how it works in Wine wiki . But the default Wine package available from package manager does not have support for 32 bit Windows applications. This was the case for me. In Redhat Enterprise Linux 7.3, the wine package did not contain support for 32 bit windows applications. So the only option was to build a separate rpm of wine which will include this support. All the steps are executed on a RHEL 7.3 VM (x86_64). Step 1 Download and run shell script which will make wine 64 and 32 support for RHEL: https://github.com/zma/usefulscripts/blob/master/script/install-wine-i686-centos7.sh It accepts a version no. as CLI parameter e.g. 2.0.3 The script installs wine in /usr/local/ directory by default. We can verify the files that are being copied for wine using "

Simple employee table with OpenStack Horizon DataTable module

I was working on OpenStack dashboard (aka Horizon) few past few months and I will share a simple way to build your data tables based on Horizon.
To give a brief introduction of Horizon, it is the official dashboard project of OpenStack, the cloud operating system. Horizon is a python Django application. It provides pre-defined modules for common web application requirements like tabs, workflow, table etc. From Grizzly release onward Horizon modules are separated from OpenStack specific code. It allows one to use Horizon modules independently.

To build a data table in Horizon you need to simply create a model class for your data. The important thing to remember here is that the class must have an "id" attribute. Horizon will build rows based on this id. It can be alpha numeric also. Though it is not mandatory to display the id column in the table, you can still have it. Below is the data model for my Employee table -

The employee class has 4 attributes - id, name, address and the salary. Each of these attributes can be displayed in a column of our Horizon DataTable. I use below code in my views.py

We need to create a tables.py with TabledisplayTable class which allows us to map the columns to model attributes. Like this -
Finally we need a Django template to render this table. I have used the following code -
This should create the Employee table with 2 rows using Horizon DataTable module. Try it out.

Comments

  1. This comment has been removed by the author.

    ReplyDelete
  2. I have followed your this tutorials and it helps me a lot.

    I would like to ask some help, I am a newbie developer using django-framework, its been several months since i started to learning it.

    My boss ask me to develop some custom modules for openstack horizon and this tutorial makes me understand it a little.

    I am having a problem passing a data to a horizon datatable. Can you please have me some example fetching a data from openstack_dashboard.api.nova and pass it to a table.
    I have tried to do this but it always gives me an error telling the object is not itterable, i am using

    usage = api.nova.usage_get(self.request, self.tenant_id, start, end)

    ReplyDelete
    Replies
    1. For making the DataTable, you need a list (iterable) object. NovaUsage object is not a list. You need to extract the fields from the usage object and make a list before you return from get_data() method.

      Delete
  3. hii.. such a nice tutorial .. really helpful for me. actually i'm customizing horizon, i've created on tab with datatable and i have to fill that table from rest api which give json format in response. i used same code which you've written but i m getting one error "string indices must be integers, not str". please help me if you know how to fix it. here is my code for view http://pastebin.com/2NBnDrea

    ReplyDelete
    Replies
    1. I think you missed to convert the swobj variable, which is a string, to a python object. Try to use
      x = json.loads(swobj)
      then use the x variable in your for loop.

      Delete
    2. yes yes, that's my mistake. now i have table with data and table action. when i click on button it show ajax-model but in my case instead of drawing form inside ajax-model i have to create table which full fill by ajax-call response and need to draw html inputs like text and radio button. travel lots of horizon tutorial but didn't get any clue. . hope you understand my point. hoping some helpful suggestion from you.

      Thanks a lot :)

      Delete
    3. I am not in touch with Horizon for almost a year now. Can't be of much help to you.

      Delete

Post a Comment