예제 #1
0
from flask_admin.contrib.sqla import ModelView

from flask_security import current_user

from src import admin, db

from src.user.models import User, Device, UserDevice, Role, UserRole, Rider, RiderDevice, Group, DeviceGroup


class MyModel(ModelView):
    page_size = 100
    can_set_page_size = True
    can_view_details = True

    def is_accessible(self):
        return current_user.has_role('admin')


admin.add_view(MyModel(User, session=db.session))
admin.add_view(MyModel(Role, session=db.session))
admin.add_view(MyModel(UserRole, session=db.session))
admin.add_view(MyModel(Device, session=db.session))
admin.add_view(MyModel(UserDevice, session=db.session))
admin.add_view(MyModel(Rider, session=db.session))
admin.add_view(MyModel(RiderDevice, session=db.session))
admin.add_view(MyModel(Group, session=db.session))
admin.add_view(MyModel(DeviceGroup, session=db.session))
예제 #2
0
    column_exclude_list = ('password')

    page_size = 100
    can_set_page_size = True
    can_view_details = True

    def is_accessible(self):
        if not current_user.is_authenticated or not current_user.has_role(
                'admin'):
            # permission denied
            abort(403)
        if current_user.has_role('admin'):
            return True
        return False

    def _handle_view(self, name, **kwargs):
        """
        Override builtin _handle_view in order to redirect users when a view is
        not accessible.
        """
        if not self.is_accessible():
            if current_user.is_authenticated:
                # permission denied
                abort(403)


admin.add_view(MyAdminModel(User, session=db.session))
admin.add_view(MyAdminModel(Role, session=db.session))
admin.add_view(MyAdminModel(UserRole, session=db.session))
admin.add_view(MyAdminModel(Notification, session=db.session))
예제 #3
0
                password,
                current_app.config.get("BCRYPT_LOG_ROUNDS")).decode()

    def encode_token(self, user_id, token_type):
        if token_type == "access":
            seconds = current_app.config.get("ACCESS_TOKEN_EXPIRATION")
        else:
            seconds = current_app.config.get("REFRESH_TOKEN_EXPIRATION")

        payload = {
            "exp":
            datetime.datetime.utcnow() + datetime.timedelta(seconds=seconds),
            "iat": datetime.datetime.utcnow(),
            "sub": user_id,
        }
        return jwt.encode(payload,
                          current_app.config.get("SECRET_KEY"),
                          algorithm="HS256")

    @staticmethod
    def decode_token(token):
        payload = jwt.decode(token, current_app.config.get("SECRET_KEY"))
        return payload["sub"]


if os.getenv("FLASK_ENV") == "development":
    from src import admin
    from src.api.users.admin import UsersAdminView

    admin.add_view(UsersAdminView(User, db.session))
예제 #4
0
from sqlalchemy.sql import func

from src import db


class Review(db.Model):

    __tablename__ = "reviews"

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    user_id = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False)
    place_id = db.Column(db.Integer, db.ForeignKey("places.id"), nullable=False)
    created_date = db.Column(db.DateTime, default=func.now(), nullable=False)
    rating = db.Column(db.Integer, nullable=False)
    text = db.Column(db.String, nullable=True)
    # images = db.relationship("Image", cascade = "delete")

    def __init__(self, **kwargs):
        self.user_id = kwargs.get("user_id")
        self.place_id = kwargs.get("place_id")
        self.rating = kwargs.get("rating")
        self.text = kwargs.get("text")
        # self.images = kwargs.get("images")


if os.getenv("FLASK_ENV") == "development":
    from src import admin
    from src.api.reviews.admin import ReviewsAdminView

    admin.add_view(ReviewsAdminView(Review, db.session))
from flask_admin_impexp.admin_impexp import AdminImportExport

from src import admin, db
from src.user.models import User, UserProfile, Role, Permission, UserRole
from src.user.schemas import UserProfileSchema, UserSchema, UserRoleSchema


class MyModel(AdminImportExport):
    pass


admin.add_view(MyModel(User, session=db.session, schema=UserSchema))
admin.add_view(
    MyModel(UserProfile, session=db.session, schema=UserProfileSchema))
admin.add_view(MyModel(Role, session=db.session))
admin.add_view(MyModel(UserRole, session=db.session, schema=UserRoleSchema))
admin.add_view(MyModel(Permission, session=db.session))
예제 #6
0
import os

from flask_admin.contrib.sqla import ModelView
from sqlalchemy.sql import func

from src import db


class User(db.Model):

    __tablename__ = "users"

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(128), nullable=False)
    email = db.Column(db.String(128), nullable=False)
    active = db.Column(db.Boolean(), default=True, nullable=False)
    created_date = db.Column(db.DateTime, default=func.now(), nullable=False)

    def __init__(self, username, email):
        self.username = username
        self.email = email


if os.getenv("FLASK_ENV") == "development":
    from src import admin

    admin.add_view(ModelView(User, db.session))
예제 #7
0
    name = db.Column(db.String, nullable=False)
    lat = db.Column(db.Float, nullable=False)
    lon = db.Column(db.Float, nullable=False)
    coords = db.Column(Geography(geometry_type="POINT", srid=4326),
                       nullable=False)

    types = db.Column(db.VARCHAR(255), nullable=False)

    def __init__(self, lat, lon, name, types):
        # self.coords = f"POINT({lon} {lat})"
        self.coords = f"POINT({lat} {lon})"
        self.name = name
        self.types = types
        self.lat = lat
        self.lon = lon

    def serialize(self):
        return {
            "name": self.name,
            "latitude": self.lat,
            "longitude": self.lon,
            "types": self.types,
        }


if os.getenv("FLASK_ENV") == "development":
    from src import admin
    from src.api.places.admin import PlacesAdminView

    admin.add_view(PlacesAdminView(Place, db.session))
예제 #8
0

class MyModel(AdminImportExport):
    page_size = 100
    column_display_pk = True

    def is_accessible(self):
        return current_user.has_role('admin')


class RetailShopAdmin(MyModel):

    form_excluded_columns = ('products', 'orders', 'brands', 'distributors')


admin.add_view(MyModel(User, session=db.session))
admin.add_view(MyModel(Customer, session=db.session))
admin.add_view(MyModel(Role, session=db.session))
admin.add_view(MyModel(UserRole, session=db.session))
admin.add_view(MyModel(PermissionSet, session=db.session))
admin.add_view(RetailShopAdmin(RetailShop, session=db.session))
admin.add_view(MyModel(RetailBrand, session=db.session))
admin.add_view(MyModel(UserRetailShop, session=db.session))
admin.add_view(MyModel(RegistrationDetail, session=db.session))
admin.add_view(MyModel(Address, session=db.session))
admin.add_view(MyModel(Locality, session=db.session))
admin.add_view(MyModel(City, session=db.session))

admin.add_view(MyModel(ProductTax, session=db.session))
admin.add_view(MyModel(Tag, session=db.session))
admin.add_view(MyModel(AddOn, session=db.session))
예제 #9
0
from flask_admin.contrib.sqla import ModelView

from flask_security import current_user

from src import admin, db

from src.user.models import User, Role, UserRole, UserToUser
from src.dues.models import Due, Payment


class MyModel(ModelView):
    page_size = 100
    can_set_page_size = True
    can_view_details = True

    def is_accessible(self):
        return current_user.has_role('admin')


admin.add_view(MyModel(User, session=db.session))
admin.add_view(MyModel(Role, session=db.session))
admin.add_view(MyModel(UserRole, session=db.session))

admin.add_view(MyModel(Due, session=db.session))
admin.add_view(MyModel(Payment, session=db.session))
admin.add_view(MyModel(UserToUser, session=db.session))
예제 #10
0
from flask import render_template
from flask_security import login_required, current_user
from flask_admin.contrib import sqla

from src import admin, db
from src.user.models import User, UserProfile, Role


@login_required
def index():
    return render_template('index.html')


class MyModel(sqla.ModelView):
    column_display_pk = True

    def is_accessible(self):
        return current_user.has_role('admin')


admin.add_view(MyModel(User, session=db.session))
admin.add_view(MyModel(UserProfile, session=db.session))
admin.add_view(MyModel(Role, session=db.session))
예제 #11
0
from flask import render_template
from flask_security import login_required, current_user
from flask_admin.contrib import sqla

from src import admin, db
from src.user.models import User, UserProfile, Role


@login_required
def index():
    return render_template('index.html')


class MyModel(sqla.ModelView):
    column_display_pk = True

    # def is_accessible(self):
    #     return current_user.has_role('admin')


admin.add_view(MyModel(User, session=db.session))
admin.add_view(MyModel(UserProfile, session=db.session))
admin.add_view(MyModel(Role, session=db.session))
예제 #12
0
# src/api/users/models.py

import os  # new

from sqlalchemy.sql import func

from src import db


class User(db.Model):
    __tablename__ = "users"

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(128), nullable=False)
    email = db.Column(db.String(128), nullable=False)
    active = db.Column(db.Boolean(), default=True, nullable=False)
    created_date = db.Column(db.DateTime, default=func.now(), nullable=False)

    def __init__(self, username, email):
        self.username = username
        self.email = email


# new
if os.getenv("FLASK_ENV") == "development":
    from src import admin
    from src.api.users.admin import UsersAdminView  # new

    admin.add_view(UsersAdminView(User, db.session))  # updated
예제 #13
0
    column_exclude_list = ('password')

    page_size = 100
    can_set_page_size = True
    can_view_details = True

    def is_accessible(self):
        if not current_user.is_authenticated or not current_user.has_role('admin'):
        	# permission denied
        	abort(403)
        if current_user.has_role('admin'):
            return True
        return False

    def _handle_view(self, name, **kwargs):
        """
        Override builtin _handle_view in order to redirect users when a view is
        not accessible.
        """
        if not self.is_accessible():
            if current_user.is_authenticated:
                # permission denied
                abort(403)


admin.add_view(MyAdminModel(User, session=db.session))
admin.add_view(MyAdminModel(Role, session=db.session))
admin.add_view(MyAdminModel(UserRole, session=db.session))
admin.add_view(MyAdminModel(Housing, session=db.session))