def process(req):
        args = req.args
        ps = dict()
        if u'app' in args:
            ps[u'app'] = args.get(u'app')
        if u'version_code' in args:
            ps[u'version_code'] = int(args.get(u'version_code'))
        if u'category' in args:
            ps[u'category'] = args.get(u'category')
        if u'order' in args:
            ps[u'order'] = args.get(u'order')
        if u'page' in args:
            ps[u'page'] = int(args.get(u'page'))
        if u'count' in args:
            ps[u'count'] = int(args.get(u'count'))
        if u'mod' in args:
            ps[u'mod'] = args.get(u'mod')

        validate_params(SCHEMA, ps)
        ctx = context(req)
        return purchaser_services.list_products(ctx,
            ps.get(u'app'),
            ps.get(u'version_code'),
            ps.get(u'category', u'*'),
            ps.get(u'order', u'updated'),
            ps.get(u'mod', u'*'),
            (ps.get(u'page', 0), ps.get(u'count', 10)))
 def process(req):
     args = req.args
     ps = dict()
     if u'app' in args:
         ps[u'app'] = args.get(u'app')
     validate_params(SCHEMA, ps)
     ctx = context(req)
     return publisher_services.get_app_products(ctx, ps.get(u'app'))
def index_page():
    ctx = context(flask.request)
    all_apps = publisher_services.get_all_apps(ctx)
    return flask.render_template(u'publisher_index.jinja2',
                                 page_title=u'Index',
                                 all_apps=all_apps,
                                 ticket=flask.session.get(u'ticket', u''),
    )
 def process(req):
     args = req.args
     ps = dict()
     if u'app' in args:
         ps[u'app'] = args.get(u'app')
     validate_params(SCHEMA, ps)
     ctx = context(req)
     return publisher_services.get_app_products(ctx, ps.get(u'app'))
def index_page():
    ctx = context(flask.request)
    all_apps = publisher_services.get_all_apps(ctx)
    return flask.render_template(
        u'publisher_index.jinja2',
        page_title=u'Index',
        all_apps=all_apps,
        ticket=flask.session.get(u'ticket', u''),
    )
 def process(req):
     args = req.args
     ps = dict()
     if u'app' in args:
         ps[u'app'] = args.get(u'app')
     if u'category' in args:
         ps[u'category'] = args.get(u'category')
     validate_params(SCHEMA, ps)
     ctx = context(req)
     return publisher_services.get_available_pricetags_for_lang(ctx, ps.get(u'app'), ps.get(u'category'), ctx.locale)
 def process(req):
     args = req.args
     ps = dict()
     if u'id' in args:
         ps[u'id'] = args.get(u'id')
     if u'version' in args:
         ps[u'version'] = args.get(u'version')
     validate_params(SCHEMA, ps)
     ctx = context(req)
     return publisher_services.get_product(ctx, ps.get(u'id'), ps.get(u'version'))
 def process(req):
     args = req.args
     ps = dict()
     if u'id' in args:
         ps[u'id'] = args.get(u'id')
     if u'flag' in args:
         ps[u'flag'] = str2bool(args.get(u'flag'))
     ctx = context(req)
     validate_params(SCHEMA, ps)
     return publisher_services.active_product(ctx, ps[u'id'], ps[u'flag'])
 def process(req):
     args = req.args
     ps = dict()
     if u'id' in args:
         ps[u'id'] = args.get(u'id')
     if u'flag' in args:
         ps[u'flag'] = str2bool(args.get(u'flag'))
     ctx = context(req)
     validate_params(SCHEMA, ps)
     return publisher_services.active_product(ctx, ps[u'id'], ps[u'flag'])
 def process(req):
     args = req.args
     ps = dict()
     if u'id' in args:
         ps[u'id'] = args.get(u'id')
     if u'version' in args:
         ps[u'version'] = args.get(u'version')
     validate_params(SCHEMA, ps)
     ctx = context(req)
     return publisher_services.get_product(ctx, ps.get(u'id'),
                                           ps.get(u'version'))
 def process(req):
     args = req.args
     ps = dict()
     if u'app' in args:
         ps[u'app'] = args.get(u'app')
     if u'category' in args:
         ps[u'category'] = args.get(u'category')
     validate_params(SCHEMA, ps)
     ctx = context(req)
     return publisher_services.get_available_pricetags_for_lang(
         ctx, ps.get(u'app'), ps.get(u'category'), ctx.locale)
def transit_page():
    ctx = context(flask.request)
    all_apps = publisher_services.get_all_apps(ctx)
    app = flask.request.args.get(u'app')
    version = flask.request.args.get(u'version')
    id = flask.request.args.get(u'id')
    return flask.render_template(u'publisher_products_transit.jinja2',
                                 page_title=u'Continue editing?',
                                 all_apps=all_apps,
                                 app=app,
                                 version=version,
                                 id=id,
                                 ticket=flask.session.get(u'ticket', u''),
    )
Example #13
0
    def process(req):
        args = req.args
        ps = dict()
        if u'id' in args:
            ps[u'id'] = args.get(u'id')
        if u'version' in args:
            ps[u'version'] = args.get(u'version')
        if u'google_iab_order_id' in args:
            ps[u'google_iab_order_id'] = args.get(u'google_iab_order_id')

        validate_params(SCHEMA, ps)
        ctx = context(req)
        return purchaser_services.purchase(ctx, ps.get(u'id'),
                                           ps.get(u'version'),
                                           ps.get(u'google_iab_order_id', u''))
def transit_page():
    ctx = context(flask.request)
    all_apps = publisher_services.get_all_apps(ctx)
    app = flask.request.args.get(u'app')
    version = flask.request.args.get(u'version')
    id = flask.request.args.get(u'id')
    return flask.render_template(
        u'publisher_products_transit.jinja2',
        page_title=u'Continue editing?',
        all_apps=all_apps,
        app=app,
        version=version,
        id=id,
        ticket=flask.session.get(u'ticket', u''),
    )
    def process(req):
        args = req.args
        ps = dict()
        if u'id' in args:
            ps[u'id'] = args.get(u'id')
        if u'version' in args:
            ps[u'version'] = args.get(u'version')
        if u'google_iab_order_id' in args:
            ps[u'google_iab_order_id'] = args.get(u'google_iab_order_id')

        validate_params(SCHEMA, ps)
        ctx = context(req)
        return purchaser_services.purchase(ctx,
            ps.get(u'id'),
            ps.get(u'version'),
            ps.get(u'google_iab_order_id', u''))
 def process(req):
     ps = merge_request_params(req)
     validate_params(SCHEMA, ps)
     ctx = context(req)
     f = ps[u'file']
     tmpfile = save_upload_file(f, u'tmp_' + uuid_hex() + u'.tmp')
     try:
         r = None
         with Resource(tmpfile) as res:
             ps1 = read_params_from_res(ps, res, tmpfile)
             r = publisher_services.upsert_version(ctx, **ps1)
         return r
     finally:
         try:
             os.remove(tmpfile)
         except:
             pass
 def process(req):
     ps = merge_request_params(req)
     validate_params(SCHEMA, ps)
     ctx = context(req)
     f = ps[u'file']
     tmpfile = save_upload_file(f, u'tmp_' + uuid_hex() + u'.tmp')
     try:
         r = None
         with Resource(tmpfile) as res:
             ps1 = read_params_from_res(ps, res, tmpfile)
             r = publisher_services.upsert_version(ctx, **ps1)
         return r
     finally:
         try:
             os.remove(tmpfile)
         except:
             pass
def list_products_page():
    ctx = context(flask.request)
    if not ctx.has_borqs_id():
        return redirect_to_signin()

    app = flask.request.args.get(u'app')
    if not app:
        app = flask.session.get(u'current_app')
        if app:
            return flask.redirect(u'/publisher/products/list.html?app=' + app)
        else:
            return _redirect_to_index()

    all_apps = publisher_services.get_all_apps(ctx)
    if not all_apps:
        return _redirect_to_index()

    categories = publisher_services.get_app_categories(ctx, app)
    products = publisher_services.get_app_products(ctx, app)
    category_products = []
    for c in categories:
        c1 = {
            u'app': c[u'app_id'],
            u'category': c[u'category'],
            u'category_name': c[u'category_name'],
            u'products': []
        }
        for p in products:
            if p[u'category'] == c[u'category']:
                c1[u'products'].append(p)
        category_products.append(c1)

    flask.session[u'current_app'] = app
    resp = flask.render_template(
        u'publisher_product_list.jinja2',
        page_title=u'Edit product',
        app_id=app,
        all_apps=all_apps,
        category_products=category_products,
        ticket=flask.session.get(u'ticket', u''),
        nav_paths=[],
    )
    return resp
def list_products_page():
    ctx = context(flask.request)
    if not ctx.has_borqs_id():
        return redirect_to_signin()

    app = flask.request.args.get(u'app')
    if not app:
        app = flask.session.get(u'current_app')
        if app:
            return flask.redirect(u'/publisher/products/list.html?app=' + app)
        else:
            return _redirect_to_index()

    all_apps = publisher_services.get_all_apps(ctx)
    if not all_apps:
        return _redirect_to_index()

    categories = publisher_services.get_app_categories(ctx, app)
    products = publisher_services.get_app_products(ctx, app)
    category_products = []
    for c in categories:
        c1 = {
            u'app': c[u'app_id'],
            u'category': c[u'category'],
            u'category_name': c[u'category_name'],
            u'products': []
        }
        for p in products:
            if p[u'category'] == c[u'category']:
                c1[u'products'].append(p)
        category_products.append(c1)

    flask.session[u'current_app'] = app
    resp = flask.render_template(u'publisher_product_list.jinja2',
                                 page_title=u'Edit product',
                                 app_id=app,
                                 all_apps=all_apps,
                                 category_products=category_products,
                                 ticket=flask.session.get(u'ticket', u''),
                                 nav_paths=[],
    )
    return resp
    def process(req):
        ps = merge_request_params(req)
        validate_params(SCHEMA, ps)
        ctx = context(req)
        if u'id' not in ps and u'file' in ps:
            f = ps[u'file']
            tmpfile = save_upload_file(f, u'tmp_' + uuid_hex() + u'.tmp')
            ps[u'file'] = DummyFile(tmpfile, f.filename)
            try:
                with Resource(tmpfile) as res:
                    ps[u'id'] = res.manifest.pid

                return publisher_services.upsert_version(ctx, **ps)
            finally:
                try:
                    os.remove(tmpfile)
                except:
                    pass
        else:
            return publisher_services.upsert_version(ctx, **ps)
    def process(req):
        ps = merge_request_params(req)
        validate_params(SCHEMA, ps)
        ctx = context(req)
        if u'id' not in ps and u'file' in ps:
            f = ps[u'file']
            tmpfile = save_upload_file(f, u'tmp_' + uuid_hex() + u'.tmp')
            ps[u'file'] = DummyFile(tmpfile, f.filename)
            try:
                with Resource(tmpfile) as res:
                    ps[u'id'] = res.manifest.pid

                return publisher_services.upsert_version(ctx, **ps)
            finally:
                try:
                    os.remove(tmpfile)
                except:
                    pass
        else:
            return publisher_services.upsert_version(ctx, **ps)
Example #22
0
def main_menu():
    tool_context = context('2137')
    while(True):
        print("1. Deauth attack")
        print('2. Attack TCP SYN')

        print('3  Reconnaissance mode')
        print('4  Take gateway address')
        print('Q  Quit')
        menu_key = input('Select option\n')

        if(menu_key == "Q" or menu_key == 'q'):
            sys.exit(0)
        if(menu_key == "4"):
            tool_context.get_gateway_ip_addr()
        if(menu_key == "2"):
            tool_context.tcp_syn_attack()
        if(menu_key == "3"):
            tool_context.recoissance()
        if(menu_key == '5'):
            tool_context.deauth_ap_attack()
Example #23
0
    def process(req):
        args = req.args
        ps = dict()
        if u'app' in args:
            ps[u'app'] = args.get(u'app')
        if u'version_code' in args:
            ps[u'version_code'] = int(args.get(u'version_code'))
        if u'category' in args:
            ps[u'category'] = args.get(u'category')
        if u'order' in args:
            ps[u'order'] = args.get(u'order')
        if u'page' in args:
            ps[u'page'] = int(args.get(u'page'))
        if u'count' in args:
            ps[u'count'] = int(args.get(u'count'))
        if u'mod' in args:
            ps[u'mod'] = args.get(u'mod')

        validate_params(SCHEMA, ps)
        ctx = context(req)
        return purchaser_services.list_products(
            ctx, ps.get(u'app'), ps.get(u'version_code'),
            ps.get(u'category', u'*'), ps.get(u'order', u'updated'),
            ps.get(u'mod', u'*'), (ps.get(u'page', 0), ps.get(u'count', 10)))
def new_product_page():
    ctx = context(flask.request)
    if not ctx.has_borqs_id():
        return redirect_to_signin()
    app = flask.request.args.get(u'app')
    category = flask.request.args.get(u'category')
    lang = u'default'
    if not app:
        return error_page(u'Error', u'Missing param app')
    if not category:
        return error_page(u'Error', u'Missing param category')

    all_apps = publisher_services.get_all_apps(ctx)
    available_pricetags = publisher_services.get_available_pricetags_for_lang(ctx, app, category, lang)
    nav_paths = [(_find_app_name(all_apps, app), u'/publisher/products/list.html?app=%s' % app)]
    if flask.request.method == u'POST':
        ps = merge_request_params(flask.request)
        error_info = _validate_fields(u'new_product', ps)
        if not error_info:
            p = publisher_services.upsert_version_for_lang(ctx, ps[u'lang'],
                                                           ps.get(u'id', None), ps[u'version'],
                                                           ps[u'name'], ps[u'pricetag_id'], ps[u'description'],
                                                           ps[u'update_change'],
                                                           ps[u'min_app_vc'], ps[u'max_app_vc'], ps[u'supported_mod'],
                                                           ps[u'author_name'], ps[u'author_email'],
                                                           ps[u'logo_file'], ps[u'cover_file'], ps[u'screenshot1_file'],
                                                           ps[u'screenshot2_file'], ps[u'screenshot3_file'],
                                                           ps[u'screenshot4_file'], ps[u'screenshot5_file'],
                                                           ps[u'file']
            )
            return flask.redirect(
                u'/publisher/products/transit.html?app=%s&version=%s&id=%s' % (p[u'app_id'], p[u'version'], p[u'id']))
        else:
            return flask.render_template(u'publisher_product_edit.jinja2',
                                         page_title=u'New product',
                                         all_apps=all_apps,
                                         app_id=app,
                                         category=category,
                                         lang=lang,
                                         lang_name=get_locale_name(lang),
                                         available_pricetags=available_pricetags,
                                         id=ps.get(u'id'),
                                         version=ps.get(u'version'),
                                         name=ps.get(u'name'),
                                         pricetag_id=ps.get(u'pricetag_id'),
                                         description=ps.get(u'description'),
                                         update_change=ps.get(u'update_change'),
                                         min_app_vc=ps.get(u'min_app_vc'),
                                         max_app_vc=ps.get(u'max_app_vc'),
                                         supported_mod=ps.get(u'supported_mod'),
                                         author_name=ps.get(u'author_name'),
                                         author_email=ps.get(u'author_email'),
                                         logo_image=u'',
                                         cover_image=u'',
                                         screenshot1_image=u'',
                                         screenshot2_image=u'',
                                         screenshot3_image=u'',
                                         screenshot4_image=u'',
                                         screenshot5_image=u'',
                                         action_url=u'',
                                         errors=error_info,
                                         ticket=flask.session.get(u'ticket', u''),
                                         mod=u'new_product',
                                         nav_paths=nav_paths,
            )
    else:
        return flask.render_template(u'publisher_product_edit.jinja2',
                                     page_title=u'New',
                                     all_apps=all_apps,
                                     app_id=app,
                                     category=category,
                                     lang=lang,
                                     lang_name=get_locale_name(lang),
                                     available_pricetags=available_pricetags,
                                     id=u'',
                                     version=u'',
                                     name=u'',
                                     pricetag_id=u'',
                                     description=u'',
                                     update_change=u'',
                                     min_app_vc=u'0',
                                     max_app_vc=u'',
                                     supported_mod=u'',
                                     author_name=u'',
                                     author_email=u'',
                                     logo_image=u'',
                                     cover_image=u'',
                                     screenshot1_image=u'',
                                     screenshot2_image=u'',
                                     screenshot3_image=u'',
                                     screenshot4_image=u'',
                                     screenshot5_image=u'',
                                     action_url=u'',
                                     ticket=flask.session.get(u'ticket', u''),
                                     errors=[],
                                     nav_paths=nav_paths,
                                     mod=u'new_product',
        )
def update_version_page():
    ctx = context(flask.request)
    if not ctx.has_borqs_id():
        return redirect_to_signin()

    all_apps = publisher_services.get_all_apps(ctx)
    if flask.request.method == u'POST':
        lang = flask.request.form.get(u'lang', u'default')
        ps = merge_request_params(flask.request)
        error_info = _validate_fields(u'update_version', ps)
        if not error_info:
            p = publisher_services.upsert_version_for_lang(ctx, ps[u'lang'],
                                                           ps.get(u'id', None), ps[u'version'],
                                                           ps[u'name'], ps[u'pricetag_id'], ps[u'description'],
                                                           ps[u'update_change'],
                                                           ps[u'min_app_vc'], ps[u'max_app_vc'], ps[u'supported_mod'],
                                                           ps[u'author_name'], ps[u'author_email'],
                                                           ps[u'logo_file'], ps[u'cover_file'], ps[u'screenshot1_file'],
                                                           ps[u'screenshot2_file'], ps[u'screenshot3_file'],
                                                           ps[u'screenshot4_file'], ps[u'screenshot5_file'],
                                                           ps[u'file']
            )
            available_pricetags = publisher_services.get_available_pricetags_for_lang_by_pid(ctx, p[u'id'], lang)
            nav_paths = [
                (_find_app_name(all_apps, p[u'app_id']), u'/publisher/products/list.html?app=%s' % p[u'app_id'])]
            return flask.render_template(u'publisher_product_edit.jinja2',
                                         page_title=u'Update version',
                                         all_apps=all_apps,
                                         app_id=p[u'app_id'],
                                         category=p[u'category'],
                                         lang=lang,
                                         lang_name=get_locale_name(lang),
                                         available_pricetags=available_pricetags,
                                         id=p[u'id'],
                                         version=p[u'version'],
                                         name=p[u'name'],
                                         pricetag_id=p[u'pricetag_id'],
                                         description=p[u'description'],
                                         update_change=p[u'update_change'],
                                         min_app_vc=p[u'min_app_vc'],
                                         max_app_vc=p[u'max_app_vc'],
                                         supported_mod=p[u'supported_mod'],
                                         author_name=p[u'author_name'],
                                         author_email=p[u'author_email'],
                                         logo_image=p[u'logo_image'].get(u'url', u''),
                                         cover_image=p[u'cover_image'].get(u'url', u''),
                                         screenshot1_image=p[u'screenshot1_image'].get(u'url', u''),
                                         screenshot2_image=p[u'screenshot2_image'].get(u'url', u''),
                                         screenshot3_image=p[u'screenshot3_image'].get(u'url', u''),
                                         screenshot4_image=p[u'screenshot4_image'].get(u'url', u''),
                                         screenshot5_image=p[u'screenshot5_image'].get(u'url', u''),
                                         action_url=p.get(u'action_url', u''),
                                         errors=error_info,
                                         available_langs=AVAILABLE_LANGS_OPTIONS,
                                         ticket=flask.session.get(u'ticket', u''),
                                         nav_paths=nav_paths,
                                         mod=u'update_version'
            )
        else:
            p = publisher_services.get_product_for_lang(ctx, ps[u'id'], ps[u'version'], lang)
            available_pricetags = publisher_services.get_available_pricetags_for_lang_by_pid(ctx, ps[u'id'], lang)
            nav_paths = [
                (_find_app_name(all_apps, p[u'app_id']), u'/publisher/products/list.html?app=%s' % p[u'app_id'])]
            return flask.render_template(u'publisher_product_edit.jinja2',
                                         page_title=u'Update version',
                                         all_apps=all_apps,
                                         app_id=p[u'app_id'],
                                         category=p[u'category'],
                                         lang=lang,
                                         lang_name=get_locale_name(lang),
                                         available_pricetags=available_pricetags,
                                         id=p[u'id'],
                                         version=p[u'version'],
                                         name=p[u'name'],
                                         pricetag_id=p[u'pricetag_id'],
                                         description=p[u'description'],
                                         update_change=p[u'update_change'],
                                         min_app_vc=p[u'min_app_vc'],
                                         max_app_vc=p[u'max_app_vc'],
                                         supported_mod=p[u'supported_mod'],
                                         author_name=p[u'author_name'],
                                         author_email=p[u'author_email'],
                                         logo_image=p[u'logo_image'].get(u'url', u''),
                                         cover_image=p[u'cover_image'].get(u'url', u''),
                                         screenshot1_image=p[u'screenshot1_image'].get(u'url', u''),
                                         screenshot2_image=p[u'screenshot2_image'].get(u'url', u''),
                                         screenshot3_image=p[u'screenshot3_image'].get(u'url', u''),
                                         screenshot4_image=p[u'screenshot4_image'].get(u'url', u''),
                                         screenshot5_image=p[u'screenshot5_image'].get(u'url', u''),
                                         action_url=p.get(u'action_url', u''),
                                         errors=error_info,
                                         available_langs=AVAILABLE_LANGS_OPTIONS,
                                         ticket=flask.session.get(u'ticket', u''),
                                         nav_paths=nav_paths,
                                         mod=u'update_version'
            )
    else:
        lang = flask.request.args.get(u'lang', u'default')
        id = flask.request.args.get(u'id')
        version = flask.request.args.get(u'version')
        if not id:
            return error_page(u'Error', u'Missing param "id"')
        if not version:
            return error_page(u'Error', u'Missing param "version"')

        try:
            p = publisher_services.get_product_for_lang(ctx, id, version, lang)
        except:
            p = None
        if not p:
            return error_page(u'Error', u'Invalid product version')

        app, category = publisher_services.get_app_and_category_for_product(id)
        nav_paths = [(_find_app_name(all_apps, app), u'/publisher/products/list.html?app=%s' % app)]
        available_pricetags = publisher_services.get_available_pricetags_for_lang(ctx, p[u'app_id'], p[u'category'],
                                                                                  lang)
        return flask.render_template(u'publisher_product_edit.jinja2',
                                     page_title=u'Update version',
                                     all_apps=all_apps,
                                     app_id=app,
                                     category=category,
                                     lang=lang,
                                     lang_name=get_locale_name(lang),
                                     available_pricetags=available_pricetags,
                                     id=p[u'id'],
                                     version=p[u'version'],
                                     name=p[u'name'],
                                     pricetag_id=p[u'pricetag_id'],
                                     description=p[u'description'],
                                     update_change=p[u'update_change'],
                                     min_app_vc=p[u'min_app_vc'],
                                     max_app_vc=p[u'max_app_vc'],
                                     supported_mod=p[u'supported_mod'],
                                     author_name=p[u'author_name'],
                                     author_email=p[u'author_email'],
                                     logo_image=p[u'logo_image'].get(u'url', u''),
                                     cover_image=p[u'cover_image'].get(u'url', u''),
                                     screenshot1_image=p[u'screenshot1_image'].get(u'url', u''),
                                     screenshot2_image=p[u'screenshot2_image'].get(u'url', u''),
                                     screenshot3_image=p[u'screenshot3_image'].get(u'url', u''),
                                     screenshot4_image=p[u'screenshot4_image'].get(u'url', u''),
                                     screenshot5_image=p[u'screenshot5_image'].get(u'url', u''),
                                     action_url=p.get(u'action_url'),
                                     errors=[],
                                     available_langs=AVAILABLE_LANGS_OPTIONS,
                                     ticket=flask.session.get(u'ticket', u''),
                                     nav_paths=nav_paths,
                                     mod=u'update_version'
        )
def update_version_page():
    ctx = context(flask.request)
    if not ctx.has_borqs_id():
        return redirect_to_signin()

    all_apps = publisher_services.get_all_apps(ctx)
    if flask.request.method == u'POST':
        lang = flask.request.form.get(u'lang', u'default')
        ps = merge_request_params(flask.request)
        error_info = _validate_fields(u'update_version', ps)
        if not error_info:
            p = publisher_services.upsert_version_for_lang(
                ctx, ps[u'lang'], ps.get(u'id', None), ps[u'version'],
                ps[u'name'], ps[u'pricetag_id'], ps[u'description'],
                ps[u'update_change'], ps[u'min_app_vc'], ps[u'max_app_vc'],
                ps[u'supported_mod'], ps[u'author_name'], ps[u'author_email'],
                ps[u'logo_file'], ps[u'cover_file'], ps[u'screenshot1_file'],
                ps[u'screenshot2_file'], ps[u'screenshot3_file'],
                ps[u'screenshot4_file'], ps[u'screenshot5_file'], ps[u'file'])
            available_pricetags = publisher_services.get_available_pricetags_for_lang_by_pid(
                ctx, p[u'id'], lang)
            nav_paths = [
                (_find_app_name(all_apps, p[u'app_id']),
                 u'/publisher/products/list.html?app=%s' % p[u'app_id'])
            ]
            return flask.render_template(
                u'publisher_product_edit.jinja2',
                page_title=u'Update version',
                all_apps=all_apps,
                app_id=p[u'app_id'],
                category=p[u'category'],
                lang=lang,
                lang_name=get_locale_name(lang),
                available_pricetags=available_pricetags,
                id=p[u'id'],
                version=p[u'version'],
                name=p[u'name'],
                pricetag_id=p[u'pricetag_id'],
                description=p[u'description'],
                update_change=p[u'update_change'],
                min_app_vc=p[u'min_app_vc'],
                max_app_vc=p[u'max_app_vc'],
                supported_mod=p[u'supported_mod'],
                author_name=p[u'author_name'],
                author_email=p[u'author_email'],
                logo_image=p[u'logo_image'].get(u'url', u''),
                cover_image=p[u'cover_image'].get(u'url', u''),
                screenshot1_image=p[u'screenshot1_image'].get(u'url', u''),
                screenshot2_image=p[u'screenshot2_image'].get(u'url', u''),
                screenshot3_image=p[u'screenshot3_image'].get(u'url', u''),
                screenshot4_image=p[u'screenshot4_image'].get(u'url', u''),
                screenshot5_image=p[u'screenshot5_image'].get(u'url', u''),
                action_url=p.get(u'action_url', u''),
                errors=error_info,
                available_langs=AVAILABLE_LANGS_OPTIONS,
                ticket=flask.session.get(u'ticket', u''),
                nav_paths=nav_paths,
                mod=u'update_version')
        else:
            p = publisher_services.get_product_for_lang(
                ctx, ps[u'id'], ps[u'version'], lang)
            available_pricetags = publisher_services.get_available_pricetags_for_lang_by_pid(
                ctx, ps[u'id'], lang)
            nav_paths = [
                (_find_app_name(all_apps, p[u'app_id']),
                 u'/publisher/products/list.html?app=%s' % p[u'app_id'])
            ]
            return flask.render_template(
                u'publisher_product_edit.jinja2',
                page_title=u'Update version',
                all_apps=all_apps,
                app_id=p[u'app_id'],
                category=p[u'category'],
                lang=lang,
                lang_name=get_locale_name(lang),
                available_pricetags=available_pricetags,
                id=p[u'id'],
                version=p[u'version'],
                name=p[u'name'],
                pricetag_id=p[u'pricetag_id'],
                description=p[u'description'],
                update_change=p[u'update_change'],
                min_app_vc=p[u'min_app_vc'],
                max_app_vc=p[u'max_app_vc'],
                supported_mod=p[u'supported_mod'],
                author_name=p[u'author_name'],
                author_email=p[u'author_email'],
                logo_image=p[u'logo_image'].get(u'url', u''),
                cover_image=p[u'cover_image'].get(u'url', u''),
                screenshot1_image=p[u'screenshot1_image'].get(u'url', u''),
                screenshot2_image=p[u'screenshot2_image'].get(u'url', u''),
                screenshot3_image=p[u'screenshot3_image'].get(u'url', u''),
                screenshot4_image=p[u'screenshot4_image'].get(u'url', u''),
                screenshot5_image=p[u'screenshot5_image'].get(u'url', u''),
                action_url=p.get(u'action_url', u''),
                errors=error_info,
                available_langs=AVAILABLE_LANGS_OPTIONS,
                ticket=flask.session.get(u'ticket', u''),
                nav_paths=nav_paths,
                mod=u'update_version')
    else:
        lang = flask.request.args.get(u'lang', u'default')
        id = flask.request.args.get(u'id')
        version = flask.request.args.get(u'version')
        if not id:
            return error_page(u'Error', u'Missing param "id"')
        if not version:
            return error_page(u'Error', u'Missing param "version"')

        try:
            p = publisher_services.get_product_for_lang(ctx, id, version, lang)
        except:
            p = None
        if not p:
            return error_page(u'Error', u'Invalid product version')

        app, category = publisher_services.get_app_and_category_for_product(id)
        nav_paths = [(_find_app_name(all_apps, app),
                      u'/publisher/products/list.html?app=%s' % app)]
        available_pricetags = publisher_services.get_available_pricetags_for_lang(
            ctx, p[u'app_id'], p[u'category'], lang)
        return flask.render_template(
            u'publisher_product_edit.jinja2',
            page_title=u'Update version',
            all_apps=all_apps,
            app_id=app,
            category=category,
            lang=lang,
            lang_name=get_locale_name(lang),
            available_pricetags=available_pricetags,
            id=p[u'id'],
            version=p[u'version'],
            name=p[u'name'],
            pricetag_id=p[u'pricetag_id'],
            description=p[u'description'],
            update_change=p[u'update_change'],
            min_app_vc=p[u'min_app_vc'],
            max_app_vc=p[u'max_app_vc'],
            supported_mod=p[u'supported_mod'],
            author_name=p[u'author_name'],
            author_email=p[u'author_email'],
            logo_image=p[u'logo_image'].get(u'url', u''),
            cover_image=p[u'cover_image'].get(u'url', u''),
            screenshot1_image=p[u'screenshot1_image'].get(u'url', u''),
            screenshot2_image=p[u'screenshot2_image'].get(u'url', u''),
            screenshot3_image=p[u'screenshot3_image'].get(u'url', u''),
            screenshot4_image=p[u'screenshot4_image'].get(u'url', u''),
            screenshot5_image=p[u'screenshot5_image'].get(u'url', u''),
            action_url=p.get(u'action_url'),
            errors=[],
            available_langs=AVAILABLE_LANGS_OPTIONS,
            ticket=flask.session.get(u'ticket', u''),
            nav_paths=nav_paths,
            mod=u'update_version')
 def process(req):
     ctx = context(req)
     return publisher_services.get_all_apps(ctx)
def new_product_page():
    ctx = context(flask.request)
    if not ctx.has_borqs_id():
        return redirect_to_signin()
    app = flask.request.args.get(u'app')
    category = flask.request.args.get(u'category')
    lang = u'default'
    if not app:
        return error_page(u'Error', u'Missing param app')
    if not category:
        return error_page(u'Error', u'Missing param category')

    all_apps = publisher_services.get_all_apps(ctx)
    available_pricetags = publisher_services.get_available_pricetags_for_lang(
        ctx, app, category, lang)
    nav_paths = [(_find_app_name(all_apps, app),
                  u'/publisher/products/list.html?app=%s' % app)]
    if flask.request.method == u'POST':
        ps = merge_request_params(flask.request)
        error_info = _validate_fields(u'new_product', ps)
        if not error_info:
            p = publisher_services.upsert_version_for_lang(
                ctx, ps[u'lang'], ps.get(u'id', None), ps[u'version'],
                ps[u'name'], ps[u'pricetag_id'], ps[u'description'],
                ps[u'update_change'], ps[u'min_app_vc'], ps[u'max_app_vc'],
                ps[u'supported_mod'], ps[u'author_name'], ps[u'author_email'],
                ps[u'logo_file'], ps[u'cover_file'], ps[u'screenshot1_file'],
                ps[u'screenshot2_file'], ps[u'screenshot3_file'],
                ps[u'screenshot4_file'], ps[u'screenshot5_file'], ps[u'file'])
            return flask.redirect(
                u'/publisher/products/transit.html?app=%s&version=%s&id=%s' %
                (p[u'app_id'], p[u'version'], p[u'id']))
        else:
            return flask.render_template(
                u'publisher_product_edit.jinja2',
                page_title=u'New product',
                all_apps=all_apps,
                app_id=app,
                category=category,
                lang=lang,
                lang_name=get_locale_name(lang),
                available_pricetags=available_pricetags,
                id=ps.get(u'id'),
                version=ps.get(u'version'),
                name=ps.get(u'name'),
                pricetag_id=ps.get(u'pricetag_id'),
                description=ps.get(u'description'),
                update_change=ps.get(u'update_change'),
                min_app_vc=ps.get(u'min_app_vc'),
                max_app_vc=ps.get(u'max_app_vc'),
                supported_mod=ps.get(u'supported_mod'),
                author_name=ps.get(u'author_name'),
                author_email=ps.get(u'author_email'),
                logo_image=u'',
                cover_image=u'',
                screenshot1_image=u'',
                screenshot2_image=u'',
                screenshot3_image=u'',
                screenshot4_image=u'',
                screenshot5_image=u'',
                action_url=u'',
                errors=error_info,
                ticket=flask.session.get(u'ticket', u''),
                mod=u'new_product',
                nav_paths=nav_paths,
            )
    else:
        return flask.render_template(
            u'publisher_product_edit.jinja2',
            page_title=u'New',
            all_apps=all_apps,
            app_id=app,
            category=category,
            lang=lang,
            lang_name=get_locale_name(lang),
            available_pricetags=available_pricetags,
            id=u'',
            version=u'',
            name=u'',
            pricetag_id=u'',
            description=u'',
            update_change=u'',
            min_app_vc=u'0',
            max_app_vc=u'',
            supported_mod=u'',
            author_name=u'',
            author_email=u'',
            logo_image=u'',
            cover_image=u'',
            screenshot1_image=u'',
            screenshot2_image=u'',
            screenshot3_image=u'',
            screenshot4_image=u'',
            screenshot5_image=u'',
            action_url=u'',
            ticket=flask.session.get(u'ticket', u''),
            errors=[],
            nav_paths=nav_paths,
            mod=u'new_product',
        )
 def process(req):
     ctx = context(req)
     return publisher_services.get_all_apps(ctx)