Beispiel #1
0
def owner_profile(request):
    """
    Default view show list of sales person in store, button to enable/disable sales.
    TODO: show store statistics: 
    1.number of customers
    2.number of orders
    3.total profits
    4.return ratio
    """
    
    store_id = request.session['current_store_id']
    store = Store.objects.get(id = store_id)
    #list sales agents
    enrollments = StoreEnrollment.objects.filter(store_id = store_id)
    
    enrolls = []
    for item in enrollments:
        enroll = Enrollment(item.id, item.agent.username, item.agent.email, item.active)
#         user = User.objects.get(id = enroll.agent.id)
        enrolls.append(enroll)
    
    # compute the menu
    menu = MenuService.owner_menu(request.user, store)
    
    request.session['current_menu'] = menu
    
    logger.debug('calling store.views.owner_profile()')
    requestContext = RequestContext(request, {'menu':menu,
                                              'store':store,
                                              'enrolls': enrolls,
                                              'user': request.user, 
                                              'page_title': 'Owner profile'} )

    return render_to_response('owner-profile.html', requestContext)
Beispiel #2
0
def add_customer(request, store_id):
    """
    agent can add user after login.
    
    method assumes user is already approved. 
    """
    user = request.user
    
    if request.method == 'POST':
        profile_form = UserProfileForm(data=request.POST)
        if profile_form.is_valid():
            user_profile = profile_form.save(commit=False)
            user_profile.user=user
            user_profile.save()
            return store.views.profile(request) 
        else:
            print profile_form.errors
#             return HttpResponse("Edit profile is failed.")
            raise Http404("Edit profile is failed.")
    else:
        # for visitor, generate empty menu
        menu = MenuService.visitor_menu()
        profile_form = UserProfileForm()
    requestContext = RequestContext(request, {'menu':menu,
                                              'page_title': 'Edit Profile',
                                              'profile_form': profile_form} )
Beispiel #3
0
def create_store(request):
    logger.debug('calling store.views.create_store()')
    if request.method == 'POST':
        store_form = StoreForm(data=request.POST)
        if store_form.is_valid():
            store = store_form.save(commit=False)
            store.owner = request.user
            print 'user = {0}'.format(vars(request.user))
            store.save()
            return owner_profile(request)
        else:
            print store_form.errors
            return HttpResponse("Create store is failed.")
    else:
        # for visitor, generate empty menu
        
        menu = MenuService.new_user_menu(request.user)
        
        store_form = StoreForm()
        
    requestContext = RequestContext(request, {'menu':menu,
                                              'store_form': store_form, 
                                              'page_title': 'Create store'} )

    # Render the template depending on the context.
    return render_to_response('new.html', requestContext)
Beispiel #4
0
def agent_profile(request):
    """
    Default view show list of customers, order button for customer.
    TODO: show store statistics: 
    1.number of customers
    2.number of orders
    3.total profits
    4.return ratio
    """
    
    # list all customer of this agent
    user = request.user
    store_id = request.session['current_store_id']
    store = Store.objects.get(id = store_id)
    
    customers = Customer.objects.filter(agent_id = user.id,store_id = store_id)
    
    # compute the menu
    menu = MenuService.sales_menu(request.user, store)    
    request.session['current_menu'] = menu
    logger.debug('calling store.views.agent_profile()')
        
    requestContext = RequestContext(request, {'menu':menu,
                                              'customers': customers,
                                              'store':store,
                                              'user': request.user, 
                                              'page_title': 'Agent profile'} )

    return render_to_response('agent-profile.html', requestContext)
Beispiel #5
0
def profile(request):
    logger.debug('calling store.views.profile()')
    
    menu = MenuService.new_user_menu(request.user)
    context = {
        'menu':menu,
        'page_title': 'User profile',
        'user': request.user,
    }
    return render_to_response('profile.html', context)
Beispiel #6
0
def store_list(request, user_id):
    """
    Verify user has the access to enlist store.
    """
    logger.debug('calling store.views.store_list()')
    user_name = request.user.username
    
    menu = MenuService.new_user_menu(request.user)
    context = {
        'menu':menu,
        'page_title': 'Profile',
        'user_name': user_name,
    }
    return render_to_response('profile.html', context)
Beispiel #7
0
def unapproved_agent_profile(request):
    store_id = request.session['current_store_id']
    store = Store.objects.get(id = store_id)
    
    menu = MenuService.unapproved_sales_menu(request.user, store)
    request.session['current_menu'] = menu
    logger.debug('calling store.views.unapproved_agent_profile()')
        
    requestContext = RequestContext(request, {'menu':menu,
                                              'store':store,
                                              'user': request.user, 
                                              'page_title': 'Unapproved agent profile'} )

    return render_to_response('unapproved-agent-profile.html', requestContext)
Beispiel #8
0
def create_app(test_config=None):
    app = Flask(__name__)

    cors = CORS(app, resources={r"/*": {"origins": "*"}})

    if test_config is None:
        app.config.from_pyfile("config.py")
    else:
        app.config.update(test_config)

    database = create_engine(app.config['DB_URL'],
                             encoding='utf-8',
                             max_overflow=0)

    ## Persistenace Layer
    user_dao = UserDao(database)
    store_dao = StoreDao(database)
    category_dao = CategoryDao(database)
    menu_dao = MenuDao(database)
    order_dao = OrderDao(database)

    ## Business Layer
    s3_client = boto3.client("s3",
                             aws_access_key_id=app.config['S3_ACCESS_KEY'],
                             aws_secret_access_key=app.config['S3_SECRET_KEY'],
                             region_name='ap-northeast-2')
    services = Services
    services.user_service = UserService(user_dao, app.config, s3_client)
    services.store_service = StoreService(store_dao, app.config, s3_client)
    services.menu_service = MenuService(menu_dao, app.config, s3_client)
    services.order_service = OrderService(order_dao)
    services.category_service = CategoryService(category_dao)
    socket_io = SocketIO(app, cors_allowed_origins="*")
    ## 엔드포인트들을 생성
    create_endpoints(app, services, socket_io)

    return app, socket_io