2# added user model, base HTML
This commit is contained in:
parent
67964494e8
commit
931a885510
6
.idea/vcs.xml
Normal file
6
.idea/vcs.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
@ -38,6 +38,7 @@ INSTALLED_APPS = [
|
||||
'django.contrib.messages',
|
||||
'django.contrib.staticfiles',
|
||||
'jobs',
|
||||
'users',
|
||||
]
|
||||
|
||||
MIDDLEWARE = [
|
||||
|
@ -1,23 +1,10 @@
|
||||
"""jobportal URL Configuration
|
||||
|
||||
The `urlpatterns` list routes URLs to views. For more information please see:
|
||||
https://docs.djangoproject.com/en/3.1/topics/http/urls/
|
||||
Examples:
|
||||
Function views
|
||||
1. Add an import: from my_app import views
|
||||
2. Add a URL to urlpatterns: path('', views.home, name='home')
|
||||
Class-based views
|
||||
1. Add an import: from other_app.views import Home
|
||||
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
|
||||
Including another URLconf
|
||||
1. Import the include() function: from django.urls import include, path
|
||||
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
|
||||
"""
|
||||
from django.contrib import admin
|
||||
from django.urls import path
|
||||
from django.urls import path, include
|
||||
from django.conf.urls.static import static
|
||||
from django.conf import settings
|
||||
|
||||
urlpatterns = [
|
||||
path('admin/', admin.site.urls),
|
||||
path('', include('jobs.urls')),
|
||||
path('users/', include('users.urls')),
|
||||
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||||
|
6
jobs/urls.py
Normal file
6
jobs/urls.py
Normal file
@ -0,0 +1,6 @@
|
||||
from django.urls import path
|
||||
from .views import *
|
||||
|
||||
urlpatterns = [
|
||||
path('', HomeView.as_view(), name="home"),
|
||||
]
|
@ -1,3 +1,5 @@
|
||||
from django.shortcuts import render
|
||||
from django.views.generic import TemplateView
|
||||
|
||||
# Create your views here.
|
||||
|
||||
class HomeView(TemplateView):
|
||||
template_name = 'jobs/index.html'
|
171
templates/base.html
Normal file
171
templates/base.html
Normal file
@ -0,0 +1,171 @@
|
||||
{% load static %}
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>JobPortal - Free Bootstrap 4 Template by Colorlib</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<link href="https://fonts.googleapis.com/css?family=Nunito+Sans:200,300,400,600,700,800,900" rel="stylesheet">
|
||||
|
||||
<link rel="stylesheet" href="{% static "css/open-iconic-bootstrap.min.css" %}">
|
||||
<link rel="stylesheet" href="{% static "css/animate.css" %}">
|
||||
|
||||
<link rel="stylesheet" href="{% static "css/owl.carousel.min.css" %}">
|
||||
<link rel="stylesheet" href="{% static "css/owl.theme.default.min.css" %}">
|
||||
<link rel="stylesheet" href="{% static "css/magnific-popup.css" %}">
|
||||
|
||||
<link rel="stylesheet" href="{% static "css/aos.css" %}">
|
||||
|
||||
<link rel="stylesheet" href="{% static "css/ionicons.min.css" %}">
|
||||
|
||||
<link rel="stylesheet" href="{% static "css/bootstrap-datepicker.css" %}">
|
||||
<link rel="stylesheet" href="{% static "css/jquery.timepicker.css" %}">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="{% static "css/flaticon.css" %}">
|
||||
<link rel="stylesheet" href="{% static "css/icomoon.css" %}">
|
||||
<link rel="stylesheet" href="{% static "css/style.css" %}">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<nav class="navbar navbar-expand-lg navbar-dark ftco_navbar bg-dark ftco-navbar-light" id="ftco-navbar">
|
||||
<div class="container">
|
||||
<a class="navbar-brand" href="index.html">JobPortal</a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#ftco-nav" aria-controls="ftco-nav" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="oi oi-menu"></span> Menu
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="ftco-nav">
|
||||
<ul class="navbar-nav ml-auto">
|
||||
<li class="nav-item active"><a href="index.html" class="nav-link">Home</a></li>
|
||||
<li class="nav-item"><a href="about.html" class="nav-link">About</a></li>
|
||||
<li class="nav-item"><a href="blog.html" class="nav-link">Blog</a></li>
|
||||
<li class="nav-item"><a href="contact.html" class="nav-link">Contact</a></li>
|
||||
<li class="nav-item cta mr-md-2"><a href="new-post.html" class="nav-link">Post a Job</a></li>
|
||||
<li class="nav-item cta cta-colored"><a href="job-post.html" class="nav-link">Want a Job</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<!-- END nav -->
|
||||
{% block content %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
<section class="ftco-section-parallax">
|
||||
<div class="parallax-img d-flex align-items-center">
|
||||
<div class="container">
|
||||
<div class="row d-flex justify-content-center">
|
||||
<div class="col-md-7 text-center heading-section heading-section-white ftco-animate">
|
||||
<h2>Subcribe to our Newsletter</h2>
|
||||
<p>Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in</p>
|
||||
<div class="row d-flex justify-content-center mt-4 mb-4">
|
||||
<div class="col-md-8">
|
||||
<form action="#" class="subscribe-form">
|
||||
<div class="form-group d-flex">
|
||||
<input type="text" class="form-control" placeholder="Enter email address">
|
||||
<input type="submit" value="Subscribe" class="submit px-3">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<footer class="ftco-footer ftco-bg-dark ftco-section">
|
||||
<div class="container">
|
||||
<div class="row mb-5">
|
||||
<div class="col-md">
|
||||
<div class="ftco-footer-widget mb-4">
|
||||
<h2 class="ftco-heading-2">About</h2>
|
||||
<p>Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts.</p>
|
||||
<ul class="ftco-footer-social list-unstyled float-md-left float-lft mt-3">
|
||||
<li class="ftco-animate"><a href="#"><span class="icon-twitter"></span></a></li>
|
||||
<li class="ftco-animate"><a href="#"><span class="icon-facebook"></span></a></li>
|
||||
<li class="ftco-animate"><a href="#"><span class="icon-instagram"></span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md">
|
||||
<div class="ftco-footer-widget mb-4">
|
||||
<h2 class="ftco-heading-2">Employers</h2>
|
||||
<ul class="list-unstyled">
|
||||
<li><a href="#" class="py-2 d-block">How it works</a></li>
|
||||
<li><a href="#" class="py-2 d-block">Register</a></li>
|
||||
<li><a href="#" class="py-2 d-block">Post a Job</a></li>
|
||||
<li><a href="#" class="py-2 d-block">Advance Skill Search</a></li>
|
||||
<li><a href="#" class="py-2 d-block">Recruiting Service</a></li>
|
||||
<li><a href="#" class="py-2 d-block">Blog</a></li>
|
||||
<li><a href="#" class="py-2 d-block">Faq</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md">
|
||||
<div class="ftco-footer-widget mb-4 ml-md-4">
|
||||
<h2 class="ftco-heading-2">Workers</h2>
|
||||
<ul class="list-unstyled">
|
||||
<li><a href="#" class="py-2 d-block">How it works</a></li>
|
||||
<li><a href="#" class="py-2 d-block">Register</a></li>
|
||||
<li><a href="#" class="py-2 d-block">Post Your Skills</a></li>
|
||||
<li><a href="#" class="py-2 d-block">Job Search</a></li>
|
||||
<li><a href="#" class="py-2 d-block">Emploer Search</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md">
|
||||
<div class="ftco-footer-widget mb-4">
|
||||
<h2 class="ftco-heading-2">Have a Questions?</h2>
|
||||
<div class="block-23 mb-3">
|
||||
<ul>
|
||||
<li><span class="icon icon-map-marker"></span><span class="text">203 Fake St. Mountain View, San Francisco, California, USA</span></li>
|
||||
<li><a href="#"><span class="icon icon-phone"></span><span class="text">+2 392 3929 210</span></a></li>
|
||||
<li><a href="#"><span class="icon icon-envelope"></span><span class="text">info@yourdomain.com</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
|
||||
<p><!-- Link back to Colorlib can't be removed. Template is licensed under CC BY 3.0. -->
|
||||
Copyright ©<script>document.write(new Date().getFullYear());</script> All rights reserved | This template is made with <i class="icon-heart text-danger" aria-hidden="true"></i> by <a href="https://colorlib.com" target="_blank">Colorlib</a>
|
||||
<!-- Link back to Colorlib can't be removed. Template is licensed under CC BY 3.0. --></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<!-- loader -->
|
||||
<div id="ftco-loader" class="show fullscreen"><svg class="circular" width="48px" height="48px"><circle class="path-bg" cx="24" cy="24" r="22" fill="none" stroke-width="4" stroke="#eeeeee"/><circle class="path" cx="24" cy="24" r="22" fill="none" stroke-width="4" stroke-miterlimit="10" stroke="#F96D00"/></svg></div>
|
||||
|
||||
|
||||
<script src="{% static "js/jquery.min.js" %}"></script>
|
||||
<script src="{% static "js/jquery-migrate-3.0.1.min.js" %}"></script>
|
||||
<script src="{% static "js/popper.min.js" %}"></script>
|
||||
<script src="{% static "js/bootstrap.min.js" %}"></script>
|
||||
<script src="{% static "js/jquery.easing.1.3.js" %}"></script>
|
||||
<script src="{% static "js/jquery.waypoints.min.js" %}"></script>
|
||||
<script src="{% static "js/jquery.stellar.min.js" %}"></script>
|
||||
<script src="{% static "js/owl.carousel.min.js" %}"></script>
|
||||
<script src="{% static "js/jquery.magnific-popup.min.js" %}"></script>
|
||||
<script src="{% static "js/aos.js" %}"></script>
|
||||
<script src="{% static "js/jquery.animateNumber.min.js" %}"></script>
|
||||
<script src="{% static "js/bootstrap-datepicker.js" %}"></script>
|
||||
<script src="{% static "js/jquery.timepicker.min.js" %}"></script>
|
||||
<script src="{% static "js/scrollax.min.js" %}"></script>
|
||||
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBVWaKrjvy3MaE7SQ74_uJiULgl1JY0H2s&sensor=false"></script>
|
||||
<script src="{% static "js/google-map.js" %}"></script>
|
||||
<script src="{% static "js/main.js" %}"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
697
templates/jobs/index.html
Normal file
697
templates/jobs/index.html
Normal file
@ -0,0 +1,697 @@
|
||||
{% extends 'base.html' %}
|
||||
{% load static %}
|
||||
{% block content %}
|
||||
|
||||
<div class="hero-wrap js-fullheight" style="background-image: url('{% static 'images/bg_2.jpg' %}');" data-stellar-background-ratio="0.5">
|
||||
<div class="overlay"></div>
|
||||
<div class="container">
|
||||
<div class="row no-gutters slider-text js-fullheight align-items-center justify-content-start" data-scrollax-parent="true">
|
||||
<div class="col-xl-10 ftco-animate mb-5 pb-5" data-scrollax=" properties: { translateY: '70%' }">
|
||||
<p class="mb-4 mt-5 pt-5" data-scrollax="properties: { translateY: '30%', opacity: 1.6 }">We have <span class="number" data-number="850000">0</span> great job offers you deserve!</p>
|
||||
<h1 class="mb-5" data-scrollax="properties: { translateY: '30%', opacity: 1.6 }">Your Dream <br><span>Job is Waiting</span></h1>
|
||||
|
||||
<div class="ftco-search">
|
||||
<div class="row">
|
||||
<div class="col-md-12 nav-link-wrap">
|
||||
<div class="nav nav-pills text-center" id="v-pills-tab" role="tablist" aria-orientation="vertical">
|
||||
<a class="nav-link active mr-md-1" id="v-pills-1-tab" data-toggle="pill" href="#v-pills-1" role="tab" aria-controls="v-pills-1" aria-selected="true">Find a Job</a>
|
||||
|
||||
<a class="nav-link" id="v-pills-2-tab" data-toggle="pill" href="#v-pills-2" role="tab" aria-controls="v-pills-2" aria-selected="false">Find a Candidate</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-12 tab-wrap">
|
||||
|
||||
<div class="tab-content p-4" id="v-pills-tabContent">
|
||||
|
||||
<div class="tab-pane fade show active" id="v-pills-1" role="tabpanel" aria-labelledby="v-pills-nextgen-tab">
|
||||
<form action="#" class="search-job">
|
||||
<div class="row">
|
||||
<div class="col-md">
|
||||
<div class="form-group">
|
||||
<div class="form-field">
|
||||
<div class="icon"><span class="icon-briefcase"></span></div>
|
||||
<input type="text" class="form-control" placeholder="eg. Garphic. Web Developer">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md">
|
||||
<div class="form-group">
|
||||
<div class="form-field">
|
||||
<div class="select-wrap">
|
||||
<div class="icon"><span class="ion-ios-arrow-down"></span></div>
|
||||
<select name="" id="" class="form-control">
|
||||
<option value="">Category</option>
|
||||
<option value="">Full Time</option>
|
||||
<option value="">Part Time</option>
|
||||
<option value="">Freelance</option>
|
||||
<option value="">Internship</option>
|
||||
<option value="">Temporary</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md">
|
||||
<div class="form-group">
|
||||
<div class="form-field">
|
||||
<div class="icon"><span class="icon-map-marker"></span></div>
|
||||
<input type="text" class="form-control" placeholder="Location">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md">
|
||||
<div class="form-group">
|
||||
<div class="form-field">
|
||||
<input type="submit" value="Search" class="form-control btn btn-primary">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="tab-pane fade" id="v-pills-2" role="tabpanel" aria-labelledby="v-pills-performance-tab">
|
||||
<form action="#" class="search-job">
|
||||
<div class="row">
|
||||
<div class="col-md">
|
||||
<div class="form-group">
|
||||
<div class="form-field">
|
||||
<div class="icon"><span class="icon-user"></span></div>
|
||||
<input type="text" class="form-control" placeholder="eg. Adam Scott">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md">
|
||||
<div class="form-group">
|
||||
<div class="form-field">
|
||||
<div class="select-wrap">
|
||||
<div class="icon"><span class="ion-ios-arrow-down"></span></div>
|
||||
<select name="" id="" class="form-control">
|
||||
<option value="">Category</option>
|
||||
<option value="">Full Time</option>
|
||||
<option value="">Part Time</option>
|
||||
<option value="">Freelance</option>
|
||||
<option value="">Internship</option>
|
||||
<option value="">Temporary</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md">
|
||||
<div class="form-group">
|
||||
<div class="form-field">
|
||||
<div class="icon"><span class="icon-map-marker"></span></div>
|
||||
<input type="text" class="form-control" placeholder="Location">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md">
|
||||
<div class="form-group">
|
||||
<div class="form-field">
|
||||
<input type="submit" value="Search" class="form-control btn btn-primary">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="ftco-section services-section bg-light">
|
||||
<div class="container">
|
||||
<div class="row d-flex">
|
||||
<div class="col-md-3 d-flex align-self-stretch ftco-animate">
|
||||
<div class="media block-6 services d-block">
|
||||
<div class="icon"><span class="flaticon-resume"></span></div>
|
||||
<div class="media-body">
|
||||
<h3 class="heading mb-3">Search Millions of Jobs</h3>
|
||||
<p>A small river named Duden flows by their place and supplies.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3 d-flex align-self-stretch ftco-animate">
|
||||
<div class="media block-6 services d-block">
|
||||
<div class="icon"><span class="flaticon-collaboration"></span></div>
|
||||
<div class="media-body">
|
||||
<h3 class="heading mb-3">Easy To Manage Jobs</h3>
|
||||
<p>A small river named Duden flows by their place and supplies.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3 d-flex align-self-stretch ftco-animate">
|
||||
<div class="media block-6 services d-block">
|
||||
<div class="icon"><span class="flaticon-promotions"></span></div>
|
||||
<div class="media-body">
|
||||
<h3 class="heading mb-3">Top Careers</h3>
|
||||
<p>A small river named Duden flows by their place and supplies.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3 d-flex align-self-stretch ftco-animate">
|
||||
<div class="media block-6 services d-block">
|
||||
<div class="icon"><span class="flaticon-employee"></span></div>
|
||||
<div class="media-body">
|
||||
<h3 class="heading mb-3">Search Expert Candidates</h3>
|
||||
<p>A small river named Duden flows by their place and supplies.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="ftco-section ftco-counter">
|
||||
<div class="container">
|
||||
<div class="row justify-content-center mb-5 pb-3">
|
||||
<div class="col-md-7 heading-section text-center ftco-animate">
|
||||
<span class="subheading">Categories work wating for you</span>
|
||||
<h2 class="mb-4"><span>Current</span> Job Posts</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-3 ftco-animate">
|
||||
<ul class="category">
|
||||
<li><a href="#">Web Development <span class="number" data-number="1000">0</span></a></li>
|
||||
<li><a href="#">Graphic Designer <span class="number" data-number="1000">0</span></a></li>
|
||||
<li><a href="#">Multimedia <span class="number" data-number="2000">0</span></a></li>
|
||||
<li><a href="#">Advertising <span class="number" data-number="900">0</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-3 ftco-animate">
|
||||
<ul class="category">
|
||||
<li><a href="#">Education & Training <span class="number" data-number="3500">0</span></a></li>
|
||||
<li><a href="#">English <span class="number" data-number="1560">0</span></a></li>
|
||||
<li><a href="#">Social Media <span class="number" data-number="1000">0</span></a></li>
|
||||
<li><a href="#">Writing <span class="number" data-number="2500">0</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-3 ftco-animate">
|
||||
<ul class="category">
|
||||
<li><a href="#">PHP Programming <span class="number" data-number="5500">0</span></a></li>
|
||||
<li><a href="#">Project Management <span class="number" data-number="2000">0</span></a></li>
|
||||
<li><a href="#">Finance Management <span class="number" data-number="800">0</span></a></li>
|
||||
<li><a href="#">Office & Admin <span class="number" data-number="7000">0</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-3 ftco-animate">
|
||||
<ul class="category">
|
||||
<li><a href="#">Web Designer <span><span class="number" data-number="8000">0</span></span></a></li>
|
||||
<li><a href="#">Customer Service <span class="number" data-number="4000">0</span></a></li>
|
||||
<li><a href="#">Marketing & Sales <span class="number" data-number="3300">0</span></a></li>
|
||||
<li><a href="#">Software Development <span class="number" data-number="1356">0</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="ftco-section bg-light">
|
||||
<div class="container">
|
||||
<div class="row justify-content-center mb-5 pb-3">
|
||||
<div class="col-md-7 heading-section text-center ftco-animate">
|
||||
<span class="subheading">Recently Added Jobs</span>
|
||||
<h2 class="mb-4"><span>Recent</span> Jobs</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12 ftco-animate">
|
||||
|
||||
<div class="job-post-item bg-white p-4 d-block d-md-flex align-items-center">
|
||||
|
||||
<div class="mb-4 mb-md-0 mr-5">
|
||||
<div class="job-post-item-header d-flex align-items-center">
|
||||
<h2 class="mr-3 text-black h3">Frontend Development</h2>
|
||||
<div class="badge-wrap">
|
||||
<span class="bg-primary text-white badge py-2 px-3">Partime</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="job-post-item-body d-block d-md-flex">
|
||||
<div class="mr-3"><span class="icon-layers"></span> <a href="#">Facebook, Inc.</a></div>
|
||||
<div><span class="icon-my_location"></span> <span>Western City, UK</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ml-auto d-flex">
|
||||
<a href="job-single.html" class="btn btn-primary py-2 mr-1">Apply Job</a>
|
||||
<a href="#" class="btn btn-secondary rounded-circle btn-favorite d-flex align-items-center icon">
|
||||
<span class="icon-heart"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- end -->
|
||||
|
||||
<div class="col-md-12 ftco-animate">
|
||||
<div class="job-post-item bg-white p-4 d-block d-md-flex align-items-center">
|
||||
|
||||
<div class="mb-4 mb-md-0 mr-5">
|
||||
<div class="job-post-item-header d-flex align-items-center">
|
||||
<h2 class="mr-3 text-black h4">Full Stack Developer</h2>
|
||||
<div class="badge-wrap">
|
||||
<span class="bg-warning text-white badge py-2 px-3">Full Time</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="job-post-item-body d-block d-md-flex">
|
||||
<div class="mr-3"><span class="icon-layers"></span> <a href="#">Google, Inc.</a></div>
|
||||
<div><span class="icon-my_location"></span> <span>Western City, UK</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ml-auto d-flex">
|
||||
<a href="job-single.html" class="btn btn-primary py-2 mr-1">Apply Job</a>
|
||||
<a href="#" class="btn btn-danger rounded-circle btn-favorite d-flex align-items-center">
|
||||
<span class="icon-heart"></span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div> <!-- end -->
|
||||
<div class="col-md-12 ftco-animate">
|
||||
<div class="job-post-item bg-white p-4 d-block d-md-flex align-items-center">
|
||||
|
||||
<div class="mb-4 mb-md-0 mr-5">
|
||||
<div class="job-post-item-header d-flex align-items-center">
|
||||
<h2 class="mr-3 text-black h4">Open Source Interactive Developer</h2>
|
||||
<div class="badge-wrap">
|
||||
<span class="bg-info text-white badge py-2 px-3">Freelance</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="job-post-item-body d-block d-md-flex">
|
||||
<div class="mr-3"><span class="icon-layers"></span> <a href="#">New York Times</a></div>
|
||||
<div><span class="icon-my_location"></span> <span>Western City, UK</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ml-auto d-flex">
|
||||
<a href="job-single.html" class="btn btn-primary py-2 mr-1">Apply Job</a>
|
||||
<a href="#" class="btn btn-secondary rounded-circle btn-favorite d-flex align-items-center icon">
|
||||
<span class="icon-heart"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- end -->
|
||||
<div class="col-md-12 ftco-animate">
|
||||
|
||||
<div class="job-post-item bg-white p-4 d-block d-md-flex align-items-center">
|
||||
|
||||
<div class="mb-4 mb-md-0 mr-5">
|
||||
<div class="job-post-item-header d-flex align-items-center">
|
||||
<h2 class="mr-3 text-black h4">Frontend Development</h2>
|
||||
<div class="badge-wrap">
|
||||
<span class="bg-secondary text-white badge py-2 px-3">Internship</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="job-post-item-body d-block d-md-flex">
|
||||
<div class="mr-3"><span class="icon-layers"></span> <a href="#">Facebook, Inc.</a></div>
|
||||
<div><span class="icon-my_location"></span> <span>Western City, UK</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ml-auto d-flex">
|
||||
<a href="job-single.html" class="btn btn-primary py-2 mr-1">Apply Job</a>
|
||||
<a href="#" class="btn btn-secondary rounded-circle btn-favorite d-flex align-items-center icon">
|
||||
<span class="icon-heart"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- end -->
|
||||
<div class="col-md-12 ftco-animate">
|
||||
<div class="job-post-item bg-white p-4 d-block d-md-flex align-items-center">
|
||||
|
||||
<div class="mb-4 mb-md-0 mr-5">
|
||||
<div class="job-post-item-header d-flex align-items-center">
|
||||
<h2 class="mr-3 text-black h4">Open Source Interactive Developer</h2>
|
||||
<div class="badge-wrap">
|
||||
<span class="bg-danger text-white badge py-2 px-3">Temporary</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="job-post-item-body d-block d-md-flex">
|
||||
<div class="mr-3"><span class="icon-layers"></span> <a href="#">New York Times</a></div>
|
||||
<div><span class="icon-my_location"></span> <span>Western City, UK</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ml-auto d-flex">
|
||||
<a href="job-single.html" class="btn btn-primary py-2 mr-1">Apply Job</a>
|
||||
<a href="#" class="btn btn-secondary rounded-circle btn-favorite d-flex align-items-center icon">
|
||||
<span class="icon-heart"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- end -->
|
||||
<div class="col-md-12 ftco-animate">
|
||||
|
||||
<div class="job-post-item bg-white p-4 d-block d-md-flex align-items-center">
|
||||
|
||||
<div class="mb-4 mb-md-0 mr-5">
|
||||
<div class="job-post-item-header d-flex align-items-center">
|
||||
<h2 class="mr-3 text-black h3">Frontend Development</h2>
|
||||
<div class="badge-wrap">
|
||||
<span class="bg-primary text-white badge py-2 px-3">Partime</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="job-post-item-body d-block d-md-flex">
|
||||
<div class="mr-3"><span class="icon-layers"></span> <a href="#">Facebook, Inc.</a></div>
|
||||
<div><span class="icon-map-marker"></span> <span>Western City, UK</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ml-auto d-flex">
|
||||
<a href="job-single.html" class="btn btn-primary py-2 mr-1">Apply Job</a>
|
||||
<a href="#" class="btn btn-secondary rounded-circle btn-favorite d-flex align-items-center icon">
|
||||
<span class="icon-heart"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- end -->
|
||||
|
||||
<div class="col-md-12 ftco-animate">
|
||||
<div class="job-post-item bg-white p-4 d-block d-md-flex align-items-center">
|
||||
|
||||
<div class="mb-4 mb-md-0 mr-5">
|
||||
<div class="job-post-item-header d-flex align-items-center">
|
||||
<h2 class="mr-3 text-black h4">Full Stack Developer</h2>
|
||||
<div class="badge-wrap">
|
||||
<span class="bg-warning text-white badge py-2 px-3">Full Time</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="job-post-item-body d-block d-md-flex">
|
||||
<div class="mr-3"><span class="icon-layers"></span> <a href="#">Google, Inc.</a></div>
|
||||
<div><span class="icon-my_location"></span> <span>Western City, UK</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ml-auto d-flex">
|
||||
<a href="job-single.html" class="btn btn-primary py-2 mr-1">Apply Job</a>
|
||||
<a href="#" class="btn btn-secondary rounded-circle btn-favorite d-flex align-items-center icon">
|
||||
<span class="icon-heart"></span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div> <!-- end -->
|
||||
<div class="col-md-12 ftco-animate">
|
||||
<div class="job-post-item bg-white p-4 d-block d-md-flex align-items-center">
|
||||
|
||||
<div class="mb-4 mb-md-0 mr-5">
|
||||
<div class="job-post-item-header d-flex align-items-center">
|
||||
<h2 class="mr-3 text-black h4">Open Source Interactive Developer</h2>
|
||||
<div class="badge-wrap">
|
||||
<span class="bg-info text-white badge py-2 px-3">Freelance</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="job-post-item-body d-block d-md-flex">
|
||||
<div class="mr-3"><span class="icon-layers"></span> <a href="#">New York Times</a></div>
|
||||
<div><span class="icon-my_location"></span> <span>Western City, UK</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ml-auto d-flex">
|
||||
<a href="job-single.html" class="btn btn-primary py-2 mr-1">Apply Job</a>
|
||||
<a href="#" class="btn btn-secondary rounded-circle btn-favorite d-flex align-items-center icon">
|
||||
<span class="icon-heart"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- end -->
|
||||
<div class="col-md-12 ftco-animate">
|
||||
|
||||
<div class="job-post-item bg-white p-4 d-block d-md-flex align-items-center">
|
||||
|
||||
<div class="mb-4 mb-md-0 mr-5">
|
||||
<div class="job-post-item-header d-flex align-items-center">
|
||||
<h2 class="mr-3 text-black h4">Frontend Development</h2>
|
||||
<div class="badge-wrap">
|
||||
<span class="bg-secondary text-white badge py-2 px-3">Internship</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="job-post-item-body d-block d-md-flex">
|
||||
<div class="mr-3"><span class="icon-layers"></span> <a href="#">Facebook, Inc.</a></div>
|
||||
<div><span class="icon-my_location"></span> <span>Western City, UK</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ml-auto d-flex">
|
||||
<a href="job-single.html" class="btn btn-primary py-2 mr-1">Apply Job</a>
|
||||
<a href="#" class="btn btn-secondary rounded-circle btn-favorite d-flex align-items-center icon">
|
||||
<span class="icon-heart"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- end -->
|
||||
<div class="col-md-12 ftco-animate">
|
||||
<div class="job-post-item bg-white p-4 d-block d-md-flex align-items-center">
|
||||
|
||||
<div class="mb-4 mb-md-0 mr-5">
|
||||
<div class="job-post-item-header d-flex align-items-center">
|
||||
<h2 class="mr-3 text-black h4">Open Source Interactive Developer</h2>
|
||||
<div class="badge-wrap">
|
||||
<span class="bg-danger text-white badge py-2 px-3">Temporary</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="job-post-item-body d-block d-md-flex">
|
||||
<div class="mr-3"><span class="icon-layers"></span> <a href="#">New York Times</a></div>
|
||||
<div><span class="icon-my_location"></span> <span>Western City, UK</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ml-auto d-flex">
|
||||
<a href="job-single.html" class="btn btn-primary py-2 mr-1">Apply Job</a>
|
||||
<a href="#" class="btn btn-secondary rounded-circle btn-favorite d-flex align-items-center icon">
|
||||
<span class="icon-heart"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- end -->
|
||||
</div>
|
||||
<div class="row mt-5">
|
||||
<div class="col text-center">
|
||||
<div class="block-27">
|
||||
<ul>
|
||||
<li><a href="#"><</a></li>
|
||||
<li class="active"><span>1</span></li>
|
||||
<li><a href="#">2</a></li>
|
||||
<li><a href="#">3</a></li>
|
||||
<li><a href="#">4</a></li>
|
||||
<li><a href="#">5</a></li>
|
||||
<li><a href="#">></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="ftco-section ftco-counter img" id="section-counter" style="background-image: url(images/bg_1.jpg);" data-stellar-background-ratio="0.5">
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-10">
|
||||
<div class="row">
|
||||
<div class="col-md-3 d-flex justify-content-center counter-wrap ftco-animate">
|
||||
<div class="block-18 text-center">
|
||||
<div class="text">
|
||||
<strong class="number" data-number="1350000">0</strong>
|
||||
<span>Jobs</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3 d-flex justify-content-center counter-wrap ftco-animate">
|
||||
<div class="block-18 text-center">
|
||||
<div class="text">
|
||||
<strong class="number" data-number="40000">0</strong>
|
||||
<span>Members</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3 d-flex justify-content-center counter-wrap ftco-animate">
|
||||
<div class="block-18 text-center">
|
||||
<div class="text">
|
||||
<strong class="number" data-number="30000">0</strong>
|
||||
<span>Resume</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3 d-flex justify-content-center counter-wrap ftco-animate">
|
||||
<div class="block-18 text-center">
|
||||
<div class="text">
|
||||
<strong class="number" data-number="10500">0</strong>
|
||||
<span>Company</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
<section class="ftco-section testimony-section">
|
||||
<div class="container">
|
||||
<div class="row justify-content-center mb-5 pb-3">
|
||||
<div class="col-md-7 text-center heading-section ftco-animate">
|
||||
<span class="subheading">Testimonial</span>
|
||||
<h2 class="mb-4"><span>Happy</span> Clients</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row ftco-animate">
|
||||
<div class="col-md-12">
|
||||
<div class="carousel-testimony owl-carousel ftco-owl">
|
||||
<div class="item">
|
||||
<div class="testimony-wrap py-4 pb-5">
|
||||
<div class="user-img mb-4" style="background-image: url(images/person_1.jpg)">
|
||||
<span class="quote d-flex align-items-center justify-content-center">
|
||||
<i class="icon-quote-left"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="text">
|
||||
<p class="mb-4">Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts.</p>
|
||||
<p class="name">Roger Scott</p>
|
||||
<span class="position">Marketing Manager</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="testimony-wrap py-4 pb-5">
|
||||
<div class="user-img mb-4" style="background-image: url(images/person_2.jpg)">
|
||||
<span class="quote d-flex align-items-center justify-content-center">
|
||||
<i class="icon-quote-left"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="text">
|
||||
<p class="mb-4">Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts.</p>
|
||||
<p class="name">Roger Scott</p>
|
||||
<span class="position">Interface Designer</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="testimony-wrap py-4 pb-5">
|
||||
<div class="user-img mb-4" style="background-image: url(images/person_3.jpg)">
|
||||
<span class="quote d-flex align-items-center justify-content-center">
|
||||
<i class="icon-quote-left"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="text">
|
||||
<p class="mb-4">Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts.</p>
|
||||
<p class="name">Roger Scott</p>
|
||||
<span class="position">UI Designer</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="testimony-wrap py-4 pb-5">
|
||||
<div class="user-img mb-4" style="background-image: url(images/person_1.jpg)">
|
||||
<span class="quote d-flex align-items-center justify-content-center">
|
||||
<i class="icon-quote-left"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="text">
|
||||
<p class="mb-4">Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts.</p>
|
||||
<p class="name">Roger Scott</p>
|
||||
<span class="position">Web Developer</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="testimony-wrap py-4 pb-5">
|
||||
<div class="user-img mb-4" style="background-image: url(images/person_1.jpg)">
|
||||
<span class="quote d-flex align-items-center justify-content-center">
|
||||
<i class="icon-quote-left"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="text">
|
||||
<p class="mb-4">Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts.</p>
|
||||
<p class="name">Roger Scott</p>
|
||||
<span class="position">System Analyst</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="ftco-section bg-light">
|
||||
<div class="container">
|
||||
<div class="row justify-content-center mb-5 pb-3">
|
||||
<div class="col-md-7 heading-section text-center ftco-animate">
|
||||
<span class="subheading">Our Blog</span>
|
||||
<h2><span>Recent</span> Blog</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row d-flex">
|
||||
<div class="col-md-3 d-flex ftco-animate">
|
||||
<div class="blog-entry align-self-stretch">
|
||||
<a href="blog-single.html" class="block-20" style="background-image: url('{% static 'images/image_1.jpg' %}');">
|
||||
</a>
|
||||
<div class="text mt-3">
|
||||
<div class="meta mb-2">
|
||||
<div><a href="#">December 2, 2018</a></div>
|
||||
<div><a href="#">Admin</a></div>
|
||||
<div><a href="#" class="meta-chat"><span class="icon-chat"></span> 3</a></div>
|
||||
</div>
|
||||
<h3 class="heading"><a href="#">Even the all-powerful Pointing has no control about the blind texts</a></h3>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias architecto enim non iste maxime optio, ut com</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3 d-flex ftco-animate">
|
||||
<div class="blog-entry align-self-stretch">
|
||||
<a href="blog-single.html" class="block-20" style="background-image: url('{% static 'images/image_2.jpg' %}');">
|
||||
</a>
|
||||
<div class="text mt-3">
|
||||
<div class="meta mb-2">
|
||||
<div><a href="#">December 2, 2018</a></div>
|
||||
<div><a href="#">Admin</a></div>
|
||||
<div><a href="#" class="meta-chat"><span class="icon-chat"></span> 3</a></div>
|
||||
</div>
|
||||
<h3 class="heading"><a href="#">Even the all-powerful Pointing has no control about the blind texts</a></h3>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet nobis natus incidunt officia assumenda.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3 d-flex ftco-animate">
|
||||
<div class="blog-entry align-self-stretch">
|
||||
<a href="blog-single.html" class="block-20" style="background-image: url('{% static 'images/image_3.jpg' %}');">
|
||||
</a>
|
||||
<div class="text mt-3">
|
||||
<div class="meta mb-2">
|
||||
<div><a href="#">December 2, 2018</a></div>
|
||||
<div><a href="#">Admin</a></div>
|
||||
<div><a href="#" class="meta-chat"><span class="icon-chat"></span> 3</a></div>
|
||||
</div>
|
||||
<h3 class="heading"><a href="#">Even the all-powerful Pointing has no control about the blind texts</a></h3>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Excepturi obcaecati praesentium,</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3 d-flex ftco-animate">
|
||||
<div class="blog-entry align-self-stretch">
|
||||
<a href="blog-single.html" class="block-20" style="background-image: url('{% static 'images/image_4.jpg' %}');">
|
||||
</a>
|
||||
<div class="text mt-3">
|
||||
<div class="meta mb-2">
|
||||
<div><a href="#">December 2, 2018</a></div>
|
||||
<div><a href="#">Admin</a></div>
|
||||
<div><a href="#" class="meta-chat"><span class="icon-chat"></span> 3</a></div>
|
||||
</div>
|
||||
<h3 class="heading"><a href="#">Even the all-powerful Pointing has no control about the blind texts</a></h3>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolor minima, dolores quis, dolorum accusamu</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
0
users/__init__.py
Normal file
0
users/__init__.py
Normal file
3
users/admin.py
Normal file
3
users/admin.py
Normal file
@ -0,0 +1,3 @@
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
5
users/apps.py
Normal file
5
users/apps.py
Normal file
@ -0,0 +1,5 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class UsersConfig(AppConfig):
|
||||
name = 'users'
|
0
users/migrations/__init__.py
Normal file
0
users/migrations/__init__.py
Normal file
27
users/models.py
Normal file
27
users/models.py
Normal file
@ -0,0 +1,27 @@
|
||||
from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
|
||||
from django.contrib.auth.models import PermissionsMixin
|
||||
from django.db import models
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
class UserManager(BaseUserManager):
|
||||
pass
|
||||
|
||||
|
||||
class Account(AbstractBaseUser, PermissionsMixin):
|
||||
email = models.EmailField(_('email address'), unique=True)
|
||||
first_name = models.CharField(_('first name'), max_length=50, blank=False)
|
||||
last_name = models.CharField(_('last name'), max_length=50, blank=False)
|
||||
date_joined = models.DateTimeField(_('date joined'), auto_now_add=True)
|
||||
is_active = models.BooleanField(_('active'), default=True)
|
||||
is_staff = models.BooleanField(_('is_staff'), default=False)
|
||||
is_employee = models.BooleanField(default=False)
|
||||
is_employer = models.BooleanField(default=False)
|
||||
|
||||
objects = UserManager()
|
||||
USERNAME_FIELD = 'email'
|
||||
REQUIRED_FIELDS = []
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('user')
|
||||
verbose_name_plural = _('users')
|
3
users/tests.py
Normal file
3
users/tests.py
Normal file
@ -0,0 +1,3 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
6
users/urls.py
Normal file
6
users/urls.py
Normal file
@ -0,0 +1,6 @@
|
||||
from django.urls import path
|
||||
from .views import *
|
||||
|
||||
urlpatterns = [
|
||||
|
||||
]
|
3
users/views.py
Normal file
3
users/views.py
Normal file
@ -0,0 +1,3 @@
|
||||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
Loading…
Reference in New Issue
Block a user