Script 552455e5910e_new_table_packages_py
[hide private]
[frames] | no frames]

Source Code for Script script-552455e5910e_new_table_packages_py

  1  """new table Packages 
  2   
  3  Revision ID: 552455e5910e 
  4  Revises: 450fe5f7942d 
  5  Create Date: 2015-07-07 12:19:28.536592 
  6   
  7  """ 
  8   
  9  # revision identifiers, used by Alembic. 
 10  revision = '552455e5910e' 
 11  down_revision = '450fe5f7942d' 
 12   
 13  from alembic import op 
 14  import sqlalchemy as sa 
 15  from sqlalchemy import and_ 
 16  from rpmUtils.miscutils import splitFilename 
 17  import os 
 18  import json 
 19   
20 -def parse_package_name(pkg):
21 if pkg.count(".") >= 3 and pkg.count("-") >= 2: 22 return splitFilename(pkg)[0] 23 # doesn"t seem like valid pkg string, try to guess package name 24 result = "" 25 pkg = pkg.replace(".rpm", "").replace(".src", "") 26 for delim in ["-", "."]: 27 if delim in pkg: 28 parts = pkg.split(delim) 29 for part in parts: 30 if any(map(lambda x: x.isdigit(), part)): 31 return result[:-1] 32 result += part + "-" 33 return result[:-1] 34 return pkg
35
36 -def upgrade():
37 ### commands auto generated by Alembic - please adjust! ### 38 op.create_table('package', 39 sa.Column('id', sa.Integer(), nullable=False), 40 sa.Column('name', sa.String(length=100), nullable=False), 41 sa.Column('source_type', sa.Integer(), nullable=True), 42 sa.Column('source_json', sa.Text(), nullable=True), 43 sa.Column('copr_id', sa.Integer(), nullable=True), 44 sa.ForeignKeyConstraint(['copr_id'], ['copr.id'], ), 45 sa.PrimaryKeyConstraint('id') 46 ) 47 op.add_column(u'build', sa.Column('package_id', sa.Integer(), nullable=True)) 48 op.add_column(u'build', sa.Column('source_json', sa.Text(), nullable=True)) 49 op.add_column(u'build', sa.Column('source_type', sa.Integer(), nullable=True)) 50 op.add_column(u'build_chroot', sa.Column('git_hash', sa.String(length=40), nullable=True)) 51 52 op.create_index('package_copr_id_name', 'package', ['copr_id', 'name']) 53 op.create_index('build_copr_id_package_id', 'build', ['copr_id', 'package_id']) 54 ### end Alembic commands ### 55 56 bind = op.get_bind() 57 connection = bind.connect() 58 59 package_table = sa.Table( 60 "package", 61 sa.MetaData(), 62 sa.Column("id", sa.Integer, nullable=False), 63 sa.Column("name", sa.String(100), nullable=False), 64 sa.Column("copr_id", sa.Integer, nullable=False), 65 sa.Column("source_type", sa.Integer, default=0), 66 sa.Column("source_json", sa.Text), 67 ) 68 69 build_table = sa.Table( 70 "build", 71 sa.MetaData(), 72 sa.Column("id", sa.Integer, nullable=False), 73 sa.Column("pkgs", sa.Text), 74 sa.Column("copr_id", sa.Integer), 75 sa.Column("package_id", sa.Integer), 76 sa.Column("source_type", sa.Integer, default=0), 77 sa.Column("source_json", sa.Text), 78 ) 79 80 for build in connection.execute(build_table.select()): 81 pkg_name = parse_package_name(os.path.basename(build.pkgs)) 82 package = connection.execute(package_table.select().where(and_( 83 package_table.c.name == pkg_name, package_table.c.copr_id == build.copr_id))).first() 84 if not package: 85 connection.execute(package_table.insert().values( 86 name = pkg_name, 87 copr_id = build.copr_id, 88 source_type = 0, # no default source 89 source_json = json.dumps({}))) 90 package = connection.execute(package_table.select().where(and_( 91 package_table.c.name == pkg_name, package_table.c.copr_id == build.copr_id))).first() 92 connection.execute(build_table.update().where(build_table.c.id == build.id).values( 93 package_id = package.id, 94 source_type = 1, # srpm url 95 source_json = json.dumps({"url": build.pkgs})))
96 97
98 -def downgrade():
99 ### commands auto generated by Alembic - please adjust! ### 100 op.drop_column(u'build_chroot', 'git_hash') 101 op.drop_column(u'build', 'source_type') 102 op.drop_column(u'build', 'source_json') 103 op.drop_column(u'build', 'package_id') 104 op.drop_table('package')
105 ### end Alembic commands ### 106