Example #1
0
 def _create_obj_from_cache(cls: Type[PKB], data: Any) -> Optional[PKB]:
     if cls._valid_data(data):
         obj = cls(**data)
         make_transient_to_detached(obj)
         obj = db.session.merge(obj, load=False)
         return obj
     return None
Example #2
0
    def fetch(self, path, params=None, **kw):
        if not params:
            params = list()
        elif isinstance(params, dict):
            params = list(params.items())

        if self.account:
            if self._should_refresh:
                yield self._refresh_access()

            if self.account.access_token:
                params.append(
                    (self.OAUTH_TOKEN_PARAM, self.account.access_token))
            provider = self.account.provider
        else:
            provider = Provider()
            provider.id = self.PROVIDER_ID
            make_transient_to_detached(provider)
            provider = self.db.merge(provider, load=False)

        params.append((self.OAUTH_CLIENT_KEY, provider.client_id))

        url = '{}/{}'.format(self.API_BASE_URL, path.lstrip('/'))
        uri = tornado.httputil.url_concat(url, params)
        response = yield self.http_client.fetch(uri, **kw)
        return response
Example #3
0
def edit_req(id):
    req = db_session.query(EnvironmentRequest).filter(
        EnvironmentRequest.id == id).first()

    if req:
        form = EnvironmentRequestForm(formdata=request.form, obj=req)

        if request.method == 'GET':
            form.keep_data.data = req.keep_data
            form.keep_ld.data = req.keep_ld
            form.backup_db.data = req.backup_db

        if request.method == 'POST' and form.validate():
            _ = req.environment_id
            _ = req.ods_id
            _ = req.osb_id
            _ = req.oss_id
            _ = req.swp_number

            db_session.expire(req, ['environment'])
            db_session.expire(req, ['swp_number'])
            db_session.expire(req, ['ods_integration'])
            db_session.expire(req, ['osb_integration'])
            db_session.expire(req, ['oss_integration'])

            make_transient(req)
            make_transient_to_detached(req)

            inspect(req).committed_state.update(id=NEVER_SET)
            inspect(req).committed_state.update(environment=NEVER_SET)
            inspect(req).committed_state.update(swp_number=NEVER_SET)
            inspect(req).committed_state.update(osb_integration=NEVER_SET)
            inspect(req).committed_state.update(ods_integration=NEVER_SET)
            inspect(req).committed_state.update(oss_integration=NEVER_SET)
            req.environment = form.environment.data
            req.requestedby = form.requestedby.data
            req.swp_number = form.swp_number.data
            req.zones = form.zones.data
            req.version = str(form.swp_number.data).split()[0]
            req.start_date = form.start_date.data
            req.delivery_date = str(form.delivery_date.data)
            req.backup_db = form.backup_db.data
            req.keep_data = form.keep_data.data
            req.keep_ld = form.keep_ld.data
            req.osb_integration = form.osb_integration.data
            req.ods_integration = form.ods_integration.data
            req.oss_integration = form.oss_integration.data

            req.source_uat_ref = str(form.source_uat_ref.data)
            req.delivery_notification = form.delivery_notification.data
            req.approval = False

            current_session = db_session.object_session(req)
            current_session.commit()
            flash('Environment Request updated successfully!')
            return redirect('/')
        return render_template('edit_request.html', form=form)
    else:
        return 'Error loading #{id}'.format(id=id)
Example #4
0
    def _get_dummy_translation(self) -> 'Translation':
        translation = getattr(self, '_dummy_translation', None)
        if translation is None:
            # Make a fake Translation object
            translation = Translation(self.id, self.original_language, self.original_text)
            make_transient_to_detached(translation)

        setattr(self, '_dummy_translation', translation)
        return translation
Example #5
0
    def test_secondary_as_join_complex_entity(self, registry):
        """integration test for #7868"""
        Base = registry.generate_base()

        class GrandParent(Base):
            __tablename__ = "grandparent"
            id = Column(Integer, primary_key=True)

            grand_children = relationship("Child",
                                          secondary="parent",
                                          lazy="dynamic",
                                          viewonly=True)

        class Parent(Base):
            __tablename__ = "parent"
            id = Column(Integer, primary_key=True)
            grand_parent_id = Column(Integer,
                                     ForeignKey("grandparent.id"),
                                     nullable=False)

        class Child(Base):
            __tablename__ = "child"
            id = Column(Integer, primary_key=True)
            type = Column(String)
            parent_id = Column(Integer,
                               ForeignKey("parent.id"),
                               nullable=False)

            __mapper_args__ = {
                "polymorphic_on": type,
                "polymorphic_identity": "unknown",
                "with_polymorphic": "*",
            }

        class SubChild(Child):
            __tablename__ = "subchild"
            id = Column(Integer, ForeignKey("child.id"), primary_key=True)

            __mapper_args__ = {
                "polymorphic_identity": "sub",
            }

        gp = GrandParent(id=1)
        make_transient_to_detached(gp)
        sess = fixture_session()
        sess.add(gp)
        self.assert_compile(
            gp.grand_children.filter_by(id=1),
            "SELECT child.id AS child_id, child.type AS child_type, "
            "child.parent_id AS child_parent_id, subchild.id AS subchild_id "
            "FROM parent, child LEFT OUTER JOIN subchild "
            "ON child.id = subchild.id "
            "WHERE :param_1 = parent.grand_parent_id "
            "AND parent.id = child.parent_id AND child.id = :id_1",
            {"id_1": 1},
        )
Example #6
0
    def save(self):
        data = self.data
        # remove the button
        data.pop('submit', None)
        forum = Forum(**data)
        # flush SQLA info from created instance so that it can be merged
        make_transient(forum)
        make_transient_to_detached(forum)

        return forum.save()
Example #7
0
    def save(self):
        data = self.data
        # remove the button
        data.pop('submit', None)
        forum = Forum(**data)
        # flush SQLA info from created instance so that it can be merged
        make_transient(forum)
        make_transient_to_detached(forum)

        return forum.save()
Example #8
0
    def save(self):
        data = self.data
        # delete submit and csrf_token from data
        data.pop('submit', None)
        data.pop('csrf_token', None)
        forum = Forum(**data)
        # flush SQLA info from created instance so that it can be merged
        make_transient(forum)
        make_transient_to_detached(forum)

        return forum.save()
Example #9
0
    def save(self):
        data = self.data
        # delete submit and csrf_token from data
        data.pop('submit', None)
        data.pop('csrf_token', None)
        forum = Forum(**data)
        # flush SQLA info from created instance so that it can be merged
        make_transient(forum)
        make_transient_to_detached(forum)

        return forum.save()
    def load_user_from_request(request):
        if 'user_id' not in session:
            return None

        if 'corporate_id' not in session:
            u = User(id=int(session['user_id']))
            make_transient_to_detached(u)
            db.session.add(u)
            return u

        if 'corporate_as_user' in request.headers:
            from models import Corporate
            if Corporate.can_access_user(
                    session['corporate_id'],
                    request.headers.get('corporate_as_user')):
                u = User(id=int(request.headers.get('corporate_as_user')))
                make_transient_to_detached(u)
                db.session.add(u)
                return u

        u = User(id=int(session['user_id']))
        make_transient_to_detached(u)
        db.session.add(u)
        return u