コード例 #1
0
def upload_appliance(fpath):

    fname = os.path.basename(fpath)
    fsize = os.stat(fpath).st_size
    fhash = _md5sum(fpath)

    old = db.query(Appliance).filter_by(checksum=fhash).count()
    if old:
        logging.warning(_('%s already exists in LuoYunCloud DB.') % fpath)
        return

    users = [
        db.query(User).get(1),
        db.query(User).filter_by(username='******').first(), None
    ]
    for user in users:
        if user and _isadmin(user):
            break

    catalog = db.query(ApplianceCatalog).order_by(ApplianceCatalog.id).first()

    if user:

        r = _save_upfile(fpath, fhash)
        if r:
            dpath = os.path.join(appdir, 'appliance_%s' % fhash)
            if os.path.exists(dpath):
                logging.warning(_('%s already exists !') % dpath)
            else:
                logging.error(r)
                return
        else:
            logging.debug(_('Save appliance %s success.') % fpath)

        new = Appliance(name=fname.replace('.', ' '),
                        user=user,
                        filesize=fsize,
                        checksum=fhash)
        new.isprivate = False
        new.isuseable = True
        new.islocked = False
        new.catalog_id = catalog.id
        db.add(new)
        db.commit()
        logging.debug(
            _('Insert appliance to DB success, owner is %s') % user.username)
    else:
        logging.error(_('Have not found admin user, please check DB !'))
コード例 #2
0
ファイル: models.py プロジェクト: weizai118/LuoYunCloud
    def target_url(self):
        # TODO: use reverse_url
        url = ''
        try:
            if ( self.target_type == 3 and
                 db.query(Node).get(self.target_id) ):
                url = '/admin/node?id=%s&action=view' % self.target_id
            elif ( self.target_type == 4 and
                   db.query(Instance).get(self.target_id) ):
                url = '/admin/instance/view?id=%s' % self.target_id
        except:
            pass

        if url:
            return '<a href="%s" target="_blank">%s</a>' % (url, self.target_id)
        else:
            return self.target_id
コード例 #3
0
def upload_appliance(fpath):

    fname = os.path.basename(fpath)
    fsize = os.stat(fpath).st_size
    fhash = _md5sum(fpath)

    old = db.query(Appliance).filter_by(checksum = fhash).count()
    if old:
        logging.warning(_('%s already exists in LuoYunCloud DB.') % fpath)
        return

    users = [ db.query(User).get(1),
              db.query(User).filter_by(username='******').first(),
              None ]
    for user in users:
        if user and _isadmin(user):
            break

    catalog = db.query(ApplianceCatalog).order_by(ApplianceCatalog.id).first()

    if user:

        r = _save_upfile(fpath, fhash)
        if r:
            dpath = os.path.join(appdir, 'appliance_%s' % fhash)
            if os.path.exists(dpath):
                logging.warning(_('%s already exists !') % dpath)
            else:
                logging.error(r)
                return
        else:
            logging.debug(_('Save appliance %s success.') % fpath)

        new = Appliance( name = fname.replace('.', ' '), user = user,
                         filesize = fsize, checksum = fhash )
        new.isprivate = False
        new.isuseable = True
        new.islocked = False
        new.catalog_id = catalog.id
        db.add(new)
        db.commit()
        logging.debug(_('Insert appliance to DB success, owner is %s') % user.username)
    else:
        logging.error(_('Have not found admin user, please check DB !'))
コード例 #4
0
ファイル: manage.py プロジェクト: luoyun/homepress
def default_value(db):

    from app.auth.models import Group, Permission, User
    from yweb.locale import LANGUAGES
    from app.language.models import Language

    # languages
    for L in LANGUAGES:
        lang = db.query(Language).filter_by(codename=L['codename']).first()
        if lang: continue
        lang = Language(name=L['name'],
                        name_en=L['name_en'],
                        codename=L['codename'])
        db.add(lang)

    # Permission
    for codename, name in settings.default_permission:
        p = db.query(Permission).filter_by(codename=codename).first()
        if p: continue
        p = Permission(codename=codename, name=name)
        db.add(p)

    # Group
    for name in settings.default_group:
        g = db.query(Group).filter_by(name=name).first()
        if g: continue
        g = Group(name=name, islocked=True)
        db.add(g)

    # User
    for username, password in settings.default_user:
        u = db.query(User).filter_by(username=username).first()
        if u: continue
        enc_password = enc_login_passwd(password)
        u = User(username=username, password=enc_password)
        db.add(u)

    # User Group
    for groupname, username in settings.default_user_group:
        u = db.query(User).filter_by(username=username).first()
        g = db.query(Group).filter_by(name=groupname).first()
        if u and (g not in u.groups):
            u.groups.append(g)

    # Group Permission
    for groupname, codename in settings.default_group_permission:
        g = db.query(Group).filter_by(name=groupname).first()
        p = db.query(Permission).filter_by(codename=codename).first()
        if p not in g.permissions:
            g.permissions.append(p)

    db.commit()
コード例 #5
0
ファイル: manage.py プロジェクト: luoyun/homepress
def default_value(db):

    from app.auth.models import Group, Permission, User
    from yweb.locale import LANGUAGES
    from app.language.models import Language

    # languages
    for L in LANGUAGES:
        lang = db.query(Language).filter_by(codename = L['codename']).first()
        if lang: continue
        lang = Language( name = L['name'],
                         name_en = L['name_en'],
                         codename = L['codename'] )
        db.add(lang)

    # Permission
    for codename, name in settings.default_permission:
        p = db.query(Permission).filter_by(codename = codename).first()
        if p: continue
        p = Permission(codename = codename, name = name)
        db.add(p)

    # Group
    for name in settings.default_group:
        g = db.query(Group).filter_by(name=name).first()
        if g: continue
        g = Group(name = name, islocked = True)
        db.add(g)

    # User
    for username, password in settings.default_user:
        u = db.query(User).filter_by(username=username).first()
        if u: continue
        enc_password = enc_login_passwd(password)
        u = User(username = username, password = enc_password)
        db.add(u)

    # User Group
    for groupname, username in settings.default_user_group:
        u = db.query(User).filter_by(username=username).first()
        g = db.query(Group).filter_by(name=groupname).first()
        if u and (g not in u.groups):
            u.groups.append(g)

    # Group Permission
    for groupname, codename in settings.default_group_permission:
        g = db.query(Group).filter_by(name=groupname).first()
        p = db.query(Permission).filter_by(codename=codename).first()
        if p not in g.permissions:
            g.permissions.append(p)

    db.commit()
コード例 #6
0
def update_appliance_logo():

    appliances = db.query(Appliance)

    for A in appliances:
        old_logo = os.path.join(A.logodir, 'alogo.png')
        if os.path.exists(old_logo):
            os.rename(old_logo, A._p_logo_raw)
            print A._p_logo_raw
#        else: # for test
#            if os.path.exists(A._p_logo):
#                os.rename(A._p_logo, old_logo)
        if os.path.exists(A._p_logo_raw):
            A.rebuild_logo()
        else:
            print 'NOT FOUND : ', A._p_logo_raw
コード例 #7
0
def update_appliance_logo():

    appliances = db.query(Appliance)

    for A in appliances:
        old_logo = os.path.join(A.logodir, 'alogo.png')
        if os.path.exists(old_logo):
            os.rename(old_logo, A._p_logo_raw)
            print A._p_logo_raw


#        else: # for test
#            if os.path.exists(A._p_logo):
#                os.rename(A._p_logo, old_logo)
        if os.path.exists(A._p_logo_raw):
            A.rebuild_logo()
        else:
            print 'NOT FOUND : ', A._p_logo_raw
コード例 #8
0
    instance_id = Column(ForeignKey("instance.id"))
    instance = relationship("Instance", backref=backref("static_ips", order_by=id))

    created = Column(DateTime, default=datetime.now)
    updated = Column(DateTime, default=datetime.now)

    def __init__(self, ip, user, instance=None):
        self.ip = ip
        self.user_id = user.id
        if instance:
            self.instance_id = instance.id


ERROR, OK = [], []
EXIST_ERROR, EXIST_OK = [], []
for x in db.query(IpAssign).all():
    if x.instance_id:
        newip = db.query(IPPool).filter_by(ip=x.ip).first()
        if newip:
            if newip.instance_id:
                if newip.instance_id != x.instance_id:
                    EXIST_ERROR.append((x.ip, newip.instance_id))
                else:
                    EXIST_OK.append((x.ip, newip.instance_id))
            else:
                OK.append((x.ip, x.instance_id))
        else:
            ERROR.append((x.ip, x.instance_id))


if ERROR:
コード例 #9
0
ファイル: forms.py プロジェクト: cloudcache/LuoYunCloud
def wiki_catalogs():
    return db.query(WikiCatalog).all()
コード例 #10
0
    instance = relationship("Instance",
                            backref=backref('static_ips', order_by=id))

    created = Column(DateTime, default=datetime.now)
    updated = Column(DateTime, default=datetime.now)

    def __init__(self, ip, user, instance=None):
        self.ip = ip
        self.user_id = user.id
        if instance:
            self.instance_id = instance.id


ERROR, OK = [], []
EXIST_ERROR, EXIST_OK = [], []
for x in db.query(IpAssign).all():
    if x.instance_id:
        newip = db.query(IPPool).filter_by(ip=x.ip).first()
        if newip:
            if newip.instance_id:
                if newip.instance_id != x.instance_id:
                    EXIST_ERROR.append((x.ip, newip.instance_id))
                else:
                    EXIST_OK.append((x.ip, newip.instance_id))
            else:
                OK.append((x.ip, x.instance_id))
        else:
            ERROR.append((x.ip, x.instance_id))

if ERROR:
    print 'The following ip->instance binding failed:'
コード例 #11
0
ファイル: models.py プロジェクト: weizai118/LuoYunCloud
 def whois(self):
     if (self.who_id and db.query(User).get(self.who_id)):
         return self.who.username
コード例 #12
0
ファイル: models.py プロジェクト: afeide/LuoYunCloud
 def whois(self):
     if (self.who_id and db.query(User).get(self.who_id)):
         return self.who.username