+$(RSYNC) --relative ./sfa/ --exclude migrations $(SSHURL)/usr/lib\*/python2.\*/site-packages/
synclibdeb: synccheck
+$(RSYNC) --relative ./sfa/ --exclude migrations $(SSHURL)/usr/share/pyshared/
+syncmigrations:
+ +$(RSYNC) ./sfa/storage/migrations/versions/*.py $(SSHURL)/usr/share/sfa/migrations/versions/
syncbin: synccheck
+$(RSYNC) $(BINS) $(SSHURL)/usr/bin/
syncinit: synccheck
record_dict['reg-researchers'] = options.reg_researchers
if hasattr(options, 'email') and options.email:
record_dict['email'] = options.email
+ # authorities can have a name for standalone deployment
+ if hasattr(options, 'name') and options.name:
+ record_dict['name'] = options.name
if hasattr(options, 'reg_pis') and options.reg_pis:
record_dict['reg-pis'] = options.reg_pis
parser.add_option('-x', '--xrn', dest='xrn', metavar='<xrn>', help='object hrn/urn (mandatory)')
parser.add_option('-t', '--type', dest='type', metavar='<type>', help='object type', default=None)
parser.add_option('-e', '--email', dest='email', default="", help="email (mandatory for users)")
+ parser.add_option('-n', '--name', dest='name', default="", help="name (optional for authorities)")
parser.add_option('-k', '--key', dest='key', metavar='<key>', help='public key string or file',
default=None)
parser.add_option('-s', '--slices', dest='slices', metavar='<slices>', help='Set/replace slice xrns',
from sqlalchemy import Table, MetaData, Column, ForeignKey
from sqlalchemy import Integer, String
-metadata=MetaData()
+metadata = MetaData()
-# this is needed my migrate so it can locate 'records.record_id'
+# this is needed by migrate so it can locate 'records.record_id'
records = \
Table ( 'records', metadata,
Column ('record_id', Integer, primary_key=True),
from sqlalchemy import Table, MetaData, Column, ForeignKey
from sqlalchemy import Integer, String
-metadata=MetaData()
+metadata = MetaData()
# this is needed by migrate so it can locate 'records.record_id'
records = \
from sqlalchemy import Table, MetaData, Column
from sqlalchemy import Integer, String
-metadata=MetaData()
+metadata = MetaData()
+
sliver_allocation_table = \
Table ( 'sliver_allocation', metadata,
Column('sliver_id', String, primary_key=True),
--- /dev/null
+# this move is about adding a 'name' column in the 'authority' table
+
+#from sfa.util.sfalogging import logger
+
+from sqlalchemy import MetaData, Table, Column, String
+from migrate.changeset.schema import create_column, drop_column
+
+def upgrade(migrate_engine):
+ metadata = MetaData(bind = migrate_engine)
+ authorities = Table('authorities', metadata, autoload=True)
+ name_column = Column('name', String)
+ name_column.create(authorities)
+
+def downgrade(migrate_engine):
+ metadata = MetaData(bind = migrate_engine)
+ authorities = Table('authorities', metadata, autoload=True)
+ authorities.c.name.drop()
__mapper_args__ = { 'polymorphic_identity' : 'authority' }
record_id = Column (Integer, ForeignKey ("records.record_id"), primary_key=True)
#### extensions come here
+ name = Column ('name', String)
+ #### extensions come here
reg_pis = relationship \
('RegUser',
secondary=authority_pi_table,
backref='reg_authorities_as_pi')
def __init__ (self, **kwds):
+ # handle local settings
+ if 'name' in kwds:
+ self.name = kwds.pop('name')
# fill in type if not previously set
if 'type' not in kwds: kwds['type']='authority'
# base class constructor
# no proper data yet, just hack the typename
def __repr__ (self):
- return RegRecord.__repr__(self).replace("Record","Authority")
+ result = RegRecord.__repr__(self).replace("Record", "Authority")
+ result.replace(">", " name={}>".format(self.name))
+ return result
def update_pis (self, pi_hrns, dbsession):
# strip that in case we have <researcher> words </researcher>