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)
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)
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)
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)
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)
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)