コード例 #1
0
ファイル: views.py プロジェクト: Smashman/mods.tf
def page(mod_id, page=1):
    mod = Mod.query.get_or_404(mod_id)
    check_mod_permissions(mod)
    mod_stats = get_mod_stats(mod, True)

    item_results = format_query(mod_stats.get("item_query"), mod.id, page)

    item_search_form = ItemSearch()

    classes = mod.class_model
    sorted_classes = sort_classes(classes)

    item_search_form.equip_regions.query = TF2EquipRegion.query.all()
    item_search_form.bodygroups.query = TF2BodyGroup.query.all()
    item_search_form.classes.choices = sorted_classes

    item_search_form.classes.data = [_class for _class in classes]
    item_search_form.bodygroups.data = [
        bodygroup for bodygroup in mod.bodygroups
    ]
    item_search_form.equip_regions.data = [
        equip_region for equip_region in mod.equip_regions
    ]

    return render_template('mods/page.html',
                           mod=mod,
                           mod_stats=mod_stats,
                           item_search=item_search_form,
                           mod_id=mod.id,
                           item_results=item_results.get('items'),
                           page=page,
                           title=mod.pretty_name,
                           sorted_classes=sorted_classes)
コード例 #2
0
ファイル: views.py プロジェクト: grynjin/mods.tf
def image(mod_id, type):
    mod = Mod.query.get_or_404(mod_id)
    check_mod_permissions(mod)
    image = ModImage.query.filter_by(mod_id=mod_id, type=type).first()
    if image:
        return send_from_directory(os.path.abspath(os.path.join(current_app.config['OUTPUT_FOLDER_LOCATION'], str(mod_id))),
                                   image.filename,
                                   as_attachment=True)
    else:
        abort(404)
コード例 #3
0
ファイル: views.py プロジェクト: Smashman/mods.tf
def image(mod_id, type):
    mod = Mod.query.get_or_404(mod_id)
    check_mod_permissions(mod)
    image = ModImage.query.filter_by(mod_id=mod_id, type=type).first()
    if image:
        return send_from_directory(os.path.abspath(
            os.path.join(current_app.config['OUTPUT_FOLDER_LOCATION'],
                         str(mod_id))),
                                   image.filename,
                                   as_attachment=True)
    else:
        abort(404)
コード例 #4
0
ファイル: views.py プロジェクト: grynjin/mods.tf
def package(mod_id, defindex):
    mod_package = ModPackage.query.filter_by(mod_id=mod_id, defindex=defindex).first()
    mod = Mod.query.get_or_404(mod_id)
    check_mod_permissions(mod)
    replacement = TF2Item.query.filter_by(defindex=defindex, inactive=False).first()
    if mod and replacement:
        if not current_user.is_admin():
            twenty_four_hours_ago = datetime.datetime.utcnow() - datetime.timedelta(hours=24)
            downloads_by_mod = PackageDownload.query.filter_by(user=current_user)\
                .filter(PackageDownload.downloaded >= twenty_four_hours_ago)\
                .outerjoin(ModPackage)\
                .filter(ModPackage.mod_id == mod_id)
            if downloads_by_mod.count() >= 15:
                flash(u"Download limit for {} reached. Please try again in 24 hours.".format(mod.pretty_name), "danger")
                return redirect(url_for("mods.page", mod_id=mod_id))
            downloads_by_replacement = downloads_by_mod.filter(ModPackage.defindex == defindex)
            if downloads_by_replacement.count() >= 2:
                flash(u"Download limit for {} replacement reached. Please try again in 24 hours."
                      .format(replacement.item_name), "danger")
                return redirect(url_for("mods.page", mod_id=mod_id))
        if not mod_package:
            filename = package_mod_to_item(mod, replacement)
            long_date = False
            if datetime.datetime.utcnow() < mod.uploaded + datetime.timedelta(weeks=4):
                long_date = True
            mod_package = ModPackage(mod.id, replacement.defindex, filename, long_date)
            db.session.add(mod_package)
            db.session.commit()
        elif datetime.datetime.utcnow() > mod_package.expire_date:
            mod = mod_package.mod
            replacement = mod_package.replacement
            long_date = False
            if datetime.datetime.utcnow() < mod.uploaded + datetime.timedelta(weeks=4):
                long_date = True
            filename = package_mod_to_item(mod, replacement)
            mod_package.filename = filename
            mod_package.update_expire(long_date)
            mod_package.deleted = False
            db.session.add(mod_package)
            db.session.commit()
        else:
            filename = mod_package.filename
        download_record = PackageDownload(mod_package.id, current_user.account_id)
        db.session.add(download_record)
        db.session.commit()
        return send_from_directory(os.path.abspath(os.path.join(current_app.config['OUTPUT_FOLDER_LOCATION'], str(mod.id))),
                                   filename,
                                   as_attachment=True)
    else:
        abort(404)
コード例 #5
0
ファイル: views.py プロジェクト: grynjin/mods.tf
def page(mod_id, page=1):
    mod = Mod.query.get_or_404(mod_id)
    check_mod_permissions(mod)
    mod_stats = get_mod_stats(mod, True)

    item_results = format_query(mod_stats.get("item_query"), mod.id, page)

    item_search_form = ItemSearch()

    classes = mod.class_model
    sorted_classes = sort_classes(classes)

    item_search_form.equip_regions.query = TF2EquipRegion.query.all()
    item_search_form.bodygroups.query = TF2BodyGroup.query.all()
    item_search_form.classes.choices = sorted_classes

    item_search_form.classes.data = [_class for _class in classes]
    item_search_form.bodygroups.data = [bodygroup for bodygroup in mod.bodygroups]
    item_search_form.equip_regions.data = [equip_region for equip_region in mod.equip_regions]

    return render_template('mods/page.html', mod=mod, mod_stats=mod_stats, item_search=item_search_form, mod_id=mod.id,
                           item_results=item_results.get('items'), page=page, title=mod.pretty_name,
                           sorted_classes=sorted_classes)
コード例 #6
0
ファイル: views.py プロジェクト: Smashman/mods.tf
def package(mod_id, defindex):
    mod_package = ModPackage.query.filter_by(mod_id=mod_id,
                                             defindex=defindex).first()
    mod = Mod.query.get_or_404(mod_id)
    check_mod_permissions(mod)
    if mod.hide_downloads:
        abort(404)
    replacement = TF2Item.query.filter_by(defindex=defindex,
                                          inactive=False).first()
    if mod and replacement:
        if not current_user.is_admin():
            twenty_four_hours_ago = datetime.datetime.utcnow(
            ) - datetime.timedelta(hours=24)
            downloads_by_mod = PackageDownload.query.filter_by(user=current_user)\
                .filter(PackageDownload.downloaded >= twenty_four_hours_ago)\
                .outerjoin(ModPackage)\
                .filter(ModPackage.mod_id == mod_id)
            if downloads_by_mod.count() >= 15:
                flash(
                    u"Download limit for {} reached. Please try again in 24 hours."
                    .format(mod.pretty_name), "danger")
                return redirect(url_for("mods.page", mod_id=mod_id))
            downloads_by_replacement = downloads_by_mod.filter(
                ModPackage.defindex == defindex)
            if downloads_by_replacement.count() >= 2:
                flash(
                    u"Download limit for {} replacement reached. Please try again in 24 hours."
                    .format(replacement.item_name), "danger")
                return redirect(url_for("mods.page", mod_id=mod_id))
        if not mod_package:
            filename = package_mod_to_item(mod, replacement)
            long_date = False
            if datetime.datetime.utcnow() < mod.uploaded + datetime.timedelta(
                    weeks=4):
                long_date = True
            mod_package = ModPackage(mod.id, replacement.defindex, filename,
                                     long_date)
            db.session.add(mod_package)
            db.session.commit()
        elif datetime.datetime.utcnow() > mod_package.expire_date:
            mod = mod_package.mod
            replacement = mod_package.replacement
            long_date = False
            if datetime.datetime.utcnow() < mod.uploaded + datetime.timedelta(
                    weeks=4):
                long_date = True
            filename = package_mod_to_item(mod, replacement)
            mod_package.filename = filename
            mod_package.update_expire(long_date)
            mod_package.deleted = False
            db.session.add(mod_package)
            db.session.commit()
        else:
            filename = mod_package.filename
        download_record = PackageDownload(mod_package.id,
                                          current_user.account_id)
        db.session.add(download_record)
        db.session.commit()
        return send_from_directory(os.path.abspath(
            os.path.join(current_app.config['OUTPUT_FOLDER_LOCATION'],
                         str(mod.id))),
                                   filename,
                                   as_attachment=True)
    else:
        abort(404)