Skip to content

Automated backup and restore postgres database – different server – using python

August 21, 2012

we are using dump and restore commands  for DB backup and restoring

below code is used to backup db from one server to restore another server

import os
import pxssh
import pexpect

#DB backup local in local folder
#below line excute dump command syntax(pg_dump -U {user-name} {source_db} -f {dumpfilename.sql})
#change ur appropiate names

os.system('pg_dump -U openerp test_001 -f dump_test.backup')
print "backup_successfull"

######################################################################

#backup file send to server
#scp(secured copy) syntax "scp 'source-path' 'destination-path'"---change source-path and destination-path

child = pexpect.spawn('scp /home/usr_name/Desktop/dump_test.backup  usr_name@123.123.123.123:///home/usr_name')
child.expect('.*password:*')

#change password in below line
child.sendline('secret_passwd')
child.expect(pexpect.EOF)
#####################################################################

#Create a server login and restore DB
s = pxssh.pxssh()
#change ur hostID, username, password
if not s.login ('123.123.123.111', 'username', 'secret_passwd'):
    print "SSH session failed on login."
    print str(s)
else:
    print "SSH session login successful in 123.123.123.111"
   #below line excute restore command syntax(psql -U {user-name} -d {desintation_db}-f {dumpfilename.sql}})
   s.sendline('psql -U db_user -d dump_ssh -f dump_test.backup')
   s.prompt()
   print s.before     # print everything before the prompt.
   s.logout()

#end of code

OpenERP Developer at ItaraIT Solution

June 4, 2012

I was  relieved from Amachu Infrasoft Service on march.

Now(7thMay) i joined in ItaraIt Solution http://itarait.com/ as a OpenERP Developer

Currently I’m working in client(SAMS College of Engg, Chennai) side implementation.

OpenERP Developer, E-ndicus Infotech

October 23, 2011

Last september 19,  i joined as OpenERP Developer  at E-ndicus Infotech Pvt Ltd Chennai http://e-ndicus.com/

now i’m working in python to devlop openERP

Web Scraping in Ruby

May 12, 2011

Hpricot is a HTML parser, fantastic ruby library, easy to install and easy usage

To install

sudo gem install hpricot open-uri

open-uri is using a network streams

here i posted a simple web scraping code

This code to fetch the group of student results from the Annauniversity website


# Fetch my class students exam result from AnnaUniversity site
# Progamme name scrabing_exam_results.rb
# Author : Rajkumar.S
# version : 0.01
# License: GNU GPL 3

require 'rubygems'
require 'open-uri'
require 'hpricot'

url = "http://result.annauniv.edu/cgi-bin/result/re10.pl?regno="
# exam_no is a range
exam_no = "52108621001".."52108621039"

exam_no.each do |each_number|
doc=Hpricot(open(url+each_number))
data=doc.search('table')
# write a file as html format easily view all results in one page
File.open("result.html","a") {|f| f.puts(data)}
# find the inside content of table tag
x=doc.search('table').inner_html
# it is remove the html tags
a=x.gsub(/<\/?[^>]*>/,"")
# spearate an array where \n is placed
b=a.split.join("\n")
puts b+"\n"+"======================="

File.open("result.txt","a") { |f| f.puts(b+"\n\n"+"=================")}

end

Google maps in rails-3

April 15, 2011

Using a gmaps4rails gem to display a map in our application

create a rails application

$ rails new gmaps -d mysql

then configure mysql  password

In Gemfile add a gem as ==== gem ‘gmaps4rails’

and bundle it

create a scaffold  $ rails g scaffold Location name:string address:string longitude:float latitude:float.

remove the longitude and latitude fields in _form.html.erb

After that, add this in layout

<%= yield :head %> (in your header) <%= yield :scripts %> (in your footer)

/app/views/layouts/application.html.erb

<html>
<head>
  <title>Googlemap</title>
  <%= stylesheet_link_tag :all %>
  <%= javascript_include_tag :defaults %>
  <%= csrf_meta_tag %>
  <%= yield :head %>
</head>
<body>
<%= yield %>
<%= yield :scripts %>
</body>
</html>

In model /app/models/location.rb to add

class Location < ActiveRecord::Base
 acts_as_gmappable
      def gmaps4rails_address
          address
      end
       def gmaps4rails_infowindow
         "<h4>#{name}</h4>" << "<h4>#{address}</h4>"
     end
end

add the line in controller /app/controllers/locations_controller.rb

def index
    @locations = Location.all
    @json = Location.all.to_gmaps4rails
    ..........
    ..........

In your view app/views/locations/index.html.erb to add a last line as

    <%= gmaps4rails(@json) %>

then start the server to put the name and address, longitude and latitude as set automatically,
then will be show the markers as corresponding address and click the marker icon
it will shows infowindow as name and address

Sample in heroku: http://hrgmaps.heroku.com/

Rails 3: Nested model form(line item) using jquery and Ajax

March 23, 2011

Nested model form(line item) : நெஸ்டட் மாடல் பார்ம் என்பது ஒரு படிவத்தினுல் இன்னொறு மாடலில் உள் ள field -யை உள்னுழைப்பதாகும்.

முந்தைய பதிவினில் (post) நாம் ஒரே படிவத்தில் உள்ள field -யை hide செய்வதையும் show செய்வதையும் பற்றி பார்த்தோம்.

தற்போது line item எப்படி செய்வது என்பதை பற்றி காண்போம்.

முதலில் கீழ் வரும் கட்டளையை பயன்படுத்தி ரெயில்ஸ்-யில் ஓர் project -யை உருவாக்கவும்

$ rails new lineitemtest -d mysql

பின்னர் config/database.yml -ல் தங்களது mysql கடவுச்சொல்லை அதற்குரிய இடத்தில் பதிவுசெய்யவும்.

Interview மற்றும் Applicant என்ற இரண்டு மாடல்களை scaffold பயன்படுத்தி பின்வரும் கட்டளைகள் கொண்டு உருவாக்கவும்

$ rails g scaffold Interview name:string interview_date:date

$ rails g scaffold Applicant name:string interview:references

இவற்றிற்கான database -னை உருவாக்கவும்

$ rake db:create

$ rake db:migrate

இந்த project-ல் jquery -யினை பயன்படுத்த உள்ளதால் அதற்கான மூல நிரலை இங்கே நகலெடுத்து jquery-1.5.js என்ற கோப்பினை உருவாக்கி அதனுல் ஒட்டி /public/javascripts -ல் பதிவு செய்யவும். பின்பு /app/views/layouts/application.html.erb -ல் கீழ் உள்ளவாறு மாற்றம் செய்யவும்.

<%= stylesheet_link_tag :all %>
<%= javascript_include_tag 'jquery-1.5.1' %>
<%= csrf_meta_tag %>

app/models/interview.rb -ல் ஒன்றுக்கு மேற்பட்ட nested applicants ஏற்றுக்கொள்ள

has_many :applicants
accepts_nested_attributes_for :applicants

app/models/applicants.rb

class Applicant < ActiveRecord::Base
belongs_to :interview
end

என்ற வரியை பதிவு செய்யவும்

நம்முைடய interview form-ல் line item -ஐ  கெண்டு வருவதற்கு கீழ்கண்ட நிரல்களை app/view/interviews/_form.html.erb -ல் submit div class ற்கு மேல் உள்ளிடவும்.

<div class="item">
<%= add_applicant_link ("add freshers") %>
</div>
<div id="result">
</div>

மேலுள்ள add_applicant_link க்கிற்கான function-னை interview_helper-ல் எழுதவும்.

/app/helpers/interview_helper.rb -ல்

module InterviewsHelper
def add_applicant_link(person)
link_to person, "#", :class => "add_applicant_class"
end
end

மேலுல்ல class -யினை பயன்படுத்தி புதிதாக jquery -யை public/javascripts/firstscript.js  உருவாக்கி நம்முடைய நிரலை கீழ் உள்ளவாறு எழுதவும்.

$(document).ready(function(){
$('.add_applicant_class').click(function(){   //in interview helper
  $.ajax({
  type:'POST',
  url:'add_applicants',  data:'',
  success: function(data){
  $(data).appendTo('#result');
  }
})
});
});

நம்முடைய firstscript.js jquery-யினை application-வுடன் இணைக்க app/views/layouts/application.html.erb-ல் கிழ் உள்ளவாறு இனணக்கவும்.

<%= stylesheet_link_tag :all %>
<%= javascript_include_tag 'jquery-1.5.1', 'firstscript' %>
<%= csrf_meta_tag %>

ajax-ல் கூறிய add_applicants url, controller-யை கூப்பிடுகிறது ஆகையால் app/controllers/interview.rb -ல்
கீழுள்ள funtion னை உள்ளிடவும்

def add_applicants
render :partial => 'applicants', :locals => {:applicant_object => Applicant.new}
end

render :partial க்கான view-வை புதிதாக app/views/interview-ல் _applicants.html.erb என்று உருவாக்கி கீழ் உள்ள நிரலை இடவும்.

<div class="field">
<%= fields_for "interview[new_applicant_attributes[]]",applicant_object do |applicant_form| %>
<%= "applicant" %>
<%= applicant_form.text_field :name %>
<% end %>
</div>

மேலே பெறப்பட்ட new_applicant_attributes[]-ஐ database-ல் பதிய app/models/interviews.rb-ல் புதிய funtion-ஐ கீழ் உள்ளவாறு எழுதவும்.

class Interview < ActiveRecord::Base
has_many :applicants
accepts_nested_attributes_for :applicants
 def new_applicant_attributes=attributes
attributes.each do |record|
applicants.build(record)
end
end
end

add_applicants-ஐ வெளியீட்டில் காண்பதற்கு config/routes.rb-ல் வழி(path)யினை கூற

resources :applicants
match "interviews/add_applicants" => "interviews#add_applicants"
resources :interviews

வெளியீட்டினை காண்பதற்கு
$ rails server  என்ற கட்டளையை முனையத்தில் உள்ளிடவும்.
show வினை சொடுக்கினால் உள்ளிடப்பட்ட அனைத்து applicants-ஐ காண app/views/interviews/show.html.erb-ல் கீழ் உள்ள நிரலை எழுதவும்.

<p>
<b>Applicants:</b>
<ol>
<% for applicant in @interview.applicants %>
<li><%= applicant.name %></li>
<% end %>
</ol>
</p>

Rails 3: jquery basics

March 22, 2011

I created the  jquery using simple rails 3 application

$ rails new jquery_example -d mysql

At first we copy the jquery uncompressed file here and create a file in public/javascripts/jquery1.5.js  and paste it. This is a base file of jquery

then

$ gedit config/database.yml

put your password as corresponding field

$ rails g scaffold Student name:string standard:string mark:integer status:boolean description:string

$ rake db:create

$ rake db:migrate

go to app/views/students/_form.html.erb and edit it as follows,  this id’s and class are using jquery for client side validations


<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :standard %><br />
<%= f.text_field :standard %>
</div>

<div class="field">
<%= f.label :mark %><br />
<%= f.text_field :mark, :id => "mark_id" %>
</div>
<div class="field">
<%= f.label :status %><br />
<%= f.check_box :status, :id => "status_id" %>
</div>

<div class="description" style="display:none">
<%= f.label :description %><br />
<%= f.text_field :description %>
</div>
<div class="filed">
<%= f.submit %>
</div>

we write our own jquery code in public/javascripts/myscript.js and save it

$(document).ready(function(){
$('#mark_id').click(function(){
alert ('carefully enter the mark');
});
$('#status_id').click(function(){
if ($('#status_id').attr('checked'))
{$('.description').show();
}
else
{
$('.description').hide();
}
});
});

we must given a path of our jquery files unless its not working so
app/views/layout/application.html.erb in this file to remove :defaults jquery had prototype and enter our file names
as below

<%= stylesheet_link_tag :all %>
<%= javascript_include_tag 'jquery-1.5', 'myscript.js' %>
<%= csrf_meta_tag %>

to run our application

status check box is ticked it shows the description field otherwise it was hidden, because before we mention style=”display:none” in _form.html.erb