Commit bd34c867 authored by Dominik Rosiek's avatar Dominik Rosiek

Merge branch 'master' of gitlab.telemabk.pl:dominik/BeHub-web

parents 1058957d 24635c2c
......@@ -5,7 +5,7 @@ from django.conf.urls.static import static
from BeHub import settings
from Hub import views as hub_views
from Hub.views import login_page
from Hub.views import login_page, main_page, dashboard, maps
router = routers.DefaultRouter()
router.register(r'beacons', hub_views.BeaconViewSet)
......@@ -13,10 +13,14 @@ router.register(r'beacon_managers', hub_views.BeaconManagerViewSet)
router.register(r'category', hub_views.CategoryViewSet)
router.register(r'sites', hub_views.SiteViewSet)
router.register(r'uuid', hub_views.UuidBeaconViewSet)
router.register(r'users', hub_views.UserViewSet)
urlpatterns = patterns('',
url(r'^$', main_page),
url(r'^login/$', login_page),
url(r'^dashboard/$', dashboard),
url(r'^maps/$', maps),
url(r'^api/', include(router.urls)),
url(r'^admin/', include(admin.site.urls)),
url(r'^api/uuid/(?P<pk>[0-9]+)/$', hub_views.UuidBeaconViewSet.as_view()),
......
from django.contrib.auth.models import User
from django.db import models
......@@ -7,6 +8,7 @@ class Site(models.Model):
link_url = models.CharField(max_length=2000)
description = models.CharField(max_length=300, null=True)
category = models.ManyToManyField('Category', null=True)
author = models.ForeignKey(User)
def __str__(self):
return self.link_url
......@@ -36,3 +38,12 @@ class BeaconManager(models.Model):
def __str__(self):
return str(self.beacon)
class UserProject(models.Model):
author = models.ForeignKey(User)
beacons = models.ManyToManyField('Beacon')
name = models.CharField(max_length=300)
description = models.CharField(max_length=300, null=True)
def __str__(self):
return self.name
\ No newline at end of file
from rest_framework import serializers
from rest_framework.decorators import detail_route, list_route
from django.contrib.auth.models import User
from Hub.models import Beacon, BeaconManager, Category, Site
class SiteSerializer(serializers.HyperlinkedModelSerializer):
author = serializers.HyperlinkedRelatedField(view_name='user-detail', queryset=User.objects.all())
class Meta:
model = Site
fields = ('id', 'url', 'link_url', 'description', 'category')
fields = ('id', 'url', 'link_url', 'description', 'category', 'author')
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Site
fields = ('id', 'url')
class BeaconSerializer(serializers.HyperlinkedModelSerializer):
......
@import url(//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css);
body {padding-top:50px;}
.box {
border-radius: 3px;
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
padding: 10px 25px;
text-align: right;
display: block;
margin-top: 60px;
}
.box-icon {
background-color: #57a544;
border-radius: 50%;
display: table;
height: 100px;
margin: 0 auto;
width: 100px;
margin-top: -61px;
}
.box-icon span {
color: #fff;
display: table-cell;
text-align: center;
vertical-align: middle;
}
.info h4 {
font-size: 26px;
letter-spacing: 2px;
text-transform: uppercase;
}
.info > p {
color: #717171;
font-size: 16px;
padding-top: 10px;
text-align: justify;
}
.info > a {
background-color: #03a9f4;
border-radius: 2px;
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
color: #fff;
transition: all 0.5s ease 0s;
}
.info > a:hover {
background-color: #0288d1;
box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.16), 0 2px 5px 0 rgba(0, 0, 0, 0.12);
color: #fff;
transition: all 0.5s ease 0s;
}
\ No newline at end of file
I hope you love Font Awesome. If you've found it useful, please do me a favor and check out my latest project,
Fonticons (https://fonticons.com). It makes it easy to put the perfect icons on your website. Choose from our awesome,
comprehensive icon sets or copy and paste your own.
Please. Check it out.
-Dave Gandy
// Animated Icons
// --------------------------
.@{fa-css-prefix}-spin {
-webkit-animation: fa-spin 2s infinite linear;
animation: fa-spin 2s infinite linear;
}
.@{fa-css-prefix}-pulse {
-webkit-animation: fa-spin 1s infinite steps(8);
animation: fa-spin 1s infinite steps(8);
}
@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
// Bordered & Pulled
// -------------------------
.@{fa-css-prefix}-border {
padding: .2em .25em .15em;
border: solid .08em @fa-border-color;
border-radius: .1em;
}
.@{fa-css-prefix}-pull-left { float: left; }
.@{fa-css-prefix}-pull-right { float: right; }
.@{fa-css-prefix} {
&.@{fa-css-prefix}-pull-left { margin-right: .3em; }
&.@{fa-css-prefix}-pull-right { margin-left: .3em; }
}
/* Deprecated as of 4.4.0 */
.pull-right { float: right; }
.pull-left { float: left; }
.@{fa-css-prefix} {
&.pull-left { margin-right: .3em; }
&.pull-right { margin-left: .3em; }
}
// Base Class Definition
// -------------------------
.@{fa-css-prefix} {
display: inline-block;
font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration
font-size: inherit; // can't have font-size inherit on line above, so need to override
text-rendering: auto; // optimizelegibility throws things off #1094
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
// Fixed Width Icons
// -------------------------
.@{fa-css-prefix}-fw {
width: (18em / 14);
text-align: center;
}
/*!
* Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
*/
@import "variables.less";
@import "mixins.less";
@import "path.less";
@import "core.less";
@import "larger.less";
@import "fixed-width.less";
@import "list.less";
@import "bordered-pulled.less";
@import "animated.less";
@import "rotated-flipped.less";
@import "stacked.less";
@import "icons.less";
This diff is collapsed.
// Icon Sizes
// -------------------------
/* makes the font 33% larger relative to the icon container */
.@{fa-css-prefix}-lg {
font-size: (4em / 3);
line-height: (3em / 4);
vertical-align: -15%;
}
.@{fa-css-prefix}-2x { font-size: 2em; }
.@{fa-css-prefix}-3x { font-size: 3em; }
.@{fa-css-prefix}-4x { font-size: 4em; }
.@{fa-css-prefix}-5x { font-size: 5em; }
// List Icons
// -------------------------
.@{fa-css-prefix}-ul {
padding-left: 0;
margin-left: @fa-li-width;
list-style-type: none;
> li { position: relative; }
}
.@{fa-css-prefix}-li {
position: absolute;
left: -@fa-li-width;
width: @fa-li-width;
top: (2em / 14);
text-align: center;
&.@{fa-css-prefix}-lg {
left: (-@fa-li-width + (4em / 14));
}
}
// Mixins
// --------------------------
.fa-icon() {
display: inline-block;
font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration
font-size: inherit; // can't have font-size inherit on line above, so need to override
text-rendering: auto; // optimizelegibility throws things off #1094
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.fa-icon-rotate(@degrees, @rotation) {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation);
-webkit-transform: rotate(@degrees);
-ms-transform: rotate(@degrees);
transform: rotate(@degrees);
}
.fa-icon-flip(@horiz, @vert, @rotation) {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1);
-webkit-transform: scale(@horiz, @vert);
-ms-transform: scale(@horiz, @vert);
transform: scale(@horiz, @vert);
}
/* FONT PATH
* -------------------------- */
@font-face {
font-family: 'FontAwesome';
src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}');
src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'),
url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'),
url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'),
url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'),
url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg');
// src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
font-weight: normal;
font-style: normal;
}
// Rotated & Flipped Icons
// -------------------------
.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); }
.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }
.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }
.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }
.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); }
// Hook for IE8-9
// -------------------------
:root .@{fa-css-prefix}-rotate-90,
:root .@{fa-css-prefix}-rotate-180,
:root .@{fa-css-prefix}-rotate-270,
:root .@{fa-css-prefix}-flip-horizontal,
:root .@{fa-css-prefix}-flip-vertical {
filter: none;
}
// Stacked Icons
// -------------------------
.@{fa-css-prefix}-stack {
position: relative;
display: inline-block;
width: 2em;
height: 2em;
line-height: 2em;
vertical-align: middle;
}
.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
position: absolute;
left: 0;
width: 100%;
text-align: center;
}
.@{fa-css-prefix}-stack-1x { line-height: inherit; }
.@{fa-css-prefix}-stack-2x { font-size: 2em; }
.@{fa-css-prefix}-inverse { color: @fa-inverse; }
This diff is collapsed.
// Spinning Icons
// --------------------------
.#{$fa-css-prefix}-spin {
-webkit-animation: fa-spin 2s infinite linear;
animation: fa-spin 2s infinite linear;
}
.#{$fa-css-prefix}-pulse {
-webkit-animation: fa-spin 1s infinite steps(8);
animation: fa-spin 1s infinite steps(8);
}
@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
// Bordered & Pulled
// -------------------------
.#{$fa-css-prefix}-border {
padding: .2em .25em .15em;
border: solid .08em $fa-border-color;
border-radius: .1em;
}
.#{$fa-css-prefix}-pull-left { float: left; }
.#{$fa-css-prefix}-pull-right { float: right; }
.#{$fa-css-prefix} {
&.#{$fa-css-prefix}-pull-left { margin-right: .3em; }
&.#{$fa-css-prefix}-pull-right { margin-left: .3em; }
}
/* Deprecated as of 4.4.0 */
.pull-right { float: right; }
.pull-left { float: left; }
.#{$fa-css-prefix} {
&.pull-left { margin-right: .3em; }
&.pull-right { margin-left: .3em; }
}
// Base Class Definition
// -------------------------
.#{$fa-css-prefix} {
display: inline-block;
font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
font-size: inherit; // can't have font-size inherit on line above, so need to override
text-rendering: auto; // optimizelegibility throws things off #1094
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
// Fixed Width Icons
// -------------------------
.#{$fa-css-prefix}-fw {
width: (18em / 14);
text-align: center;
}
This diff is collapsed.
// Icon Sizes
// -------------------------
/* makes the font 33% larger relative to the icon container */
.#{$fa-css-prefix}-lg {
font-size: (4em / 3);
line-height: (3em / 4);
vertical-align: -15%;
}
.#{$fa-css-prefix}-2x { font-size: 2em; }
.#{$fa-css-prefix}-3x { font-size: 3em; }
.#{$fa-css-prefix}-4x { font-size: 4em; }
.#{$fa-css-prefix}-5x { font-size: 5em; }
// List Icons
// -------------------------
.#{$fa-css-prefix}-ul {
padding-left: 0;
margin-left: $fa-li-width;
list-style-type: none;
> li { position: relative; }
}
.#{$fa-css-prefix}-li {
position: absolute;
left: -$fa-li-width;
width: $fa-li-width;
top: (2em / 14);
text-align: center;
&.#{$fa-css-prefix}-lg {
left: -$fa-li-width + (4em / 14);
}
}
// Mixins
// --------------------------
@mixin fa-icon() {
display: inline-block;
font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
font-size: inherit; // can't have font-size inherit on line above, so need to override
text-rendering: auto; // optimizelegibility throws things off #1094
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
@mixin fa-icon-rotate($degrees, $rotation) {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
-webkit-transform: rotate($degrees);
-ms-transform: rotate($degrees);
transform: rotate($degrees);
}
@mixin fa-icon-flip($horiz, $vert, $rotation) {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
-webkit-transform: scale($horiz, $vert);
-ms-transform: scale($horiz, $vert);
transform: scale($horiz, $vert);
}
/* FONT PATH
* -------------------------- */
@font-face {
font-family: 'FontAwesome';
src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}');
src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'),
url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'),
url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'),
url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'),
url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg');
// src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
font-weight: normal;
font-style: normal;
}
// Rotated & Flipped Icons
// -------------------------
.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); }
.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }
.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }
.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }
.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); }
// Hook for IE8-9
// -------------------------
:root .#{$fa-css-prefix}-rotate-90,
:root .#{$fa-css-prefix}-rotate-180,
:root .#{$fa-css-prefix}-rotate-270,
:root .#{$fa-css-prefix}-flip-horizontal,
:root .#{$fa-css-prefix}-flip-vertical {
filter: none;
}
// Stacked Icons
// -------------------------
.#{$fa-css-prefix}-stack {
position: relative;
display: inline-block;
width: 2em;
height: 2em;
line-height: 2em;
vertical-align: middle;
}
.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x {
position: absolute;
left: 0;
width: 100%;
text-align: center;
}
.#{$fa-css-prefix}-stack-1x { line-height: inherit; }
.#{$fa-css-prefix}-stack-2x { font-size: 2em; }
.#{$fa-css-prefix}-inverse { color: $fa-inverse; }
This diff is collapsed.
/*!
* Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
*/
@import "variables";
@import "mixins";
@import "path";
@import "core";
@import "larger";
@import "fixed-width";
@import "list";
@import "bordered-pulled";
@import "animated";
@import "rotated-flipped";
@import "stacked";
@import "icons";
This diff is collapsed.
This diff is collapsed.
/* Sticky footer styles
-------------------------------------------------- */
/* Wrapper for page content to push down footer */
/* Set the fixed height of the footer here */
#footer {
height: 60px;
background-color: #f5f5f5;
position : fixed;
width:100%;
bottom:0px;
}
/* Custom page CSS
-------------------------------------------------- */
/* Not required for template or sticky footer method. */
.caret-up {
/* Safari */
-webkit-transform: rotate(-180deg);
/* Firefox */
-moz-transform: rotate(-180deg);
/* IE */
-ms-transform: rotate(-180deg);
/* Opera */
-o-transform: rotate(-180deg);
/* Internet Explorer */
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=6);
}
.drop-up {
top: auto;
bottom: 100% !important;
}
html{
overflow-x: hidden;
}
body {
height: 100%;
color : white;
background-color :white;
/* The html and body elements cannot have any padding or margin. */
}
#wrap {
min-height: 100%;
height: auto;
/* Negative indent footer by its height */
margin: 0 auto -60px;
/* Pad bottom by footer height */
padding: 100 0 60px;
}
/*!
* Start Bootstrap - The Big Picture HTML Template (http://startbootstrap.com)
* Code licensed under the Apache License v2.0.
* For details, see http://www.apache.org/licenses/LICENSE-2.0.
*/
.full {
background: url('../img/background_main_page.png') no-repeat center center fixed;
background-repeat: no-repeat;
background-position: center center;
background-attachment: fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
\ No newline at end of file
This diff is collapsed.
{% extends 'welcome_page/default/base.html' %}
{% block content %}
<h2>Hi Your login details are invalid!</h2>
<p>Click <a href="/login/">here</a> to login again</p>
{% endblock %}
\ No newline at end of file
{% extends 'page/default/base.html' %}
{% block content %}
<div class="container">
<div class="row">
<div class="col-sm-6 col-md-4 col-md-offset-4">
<div class="account-wall">
<img class="profile-img" src="{{STATIC_URL}}img/login.jpg"
alt="">
<form action="/login/" method="post" class="form-signin">
{% csrf_token %}
<input type="text" class="form-control" placeholder="Username" required autofocus name="username">
<input type="password" class="form-control" placeholder="Password" required name="password">
<button class="btn btn-lg btn-primary btn-block" type="submit">
Sign in</button>
</form>
</div>
</div>
</div>
</div>
{% endblock content %}
\ No newline at end of file
{% extends 'page/default/base.html' %}
{% block content %}
<div class="container">
<div class="row">
<div class="col-md-6 col-sm-12">
<h1>Chcesz ukrasc beacona?</h1>
<p>Smialo <h1>xD</h1> Logowanie z prawej <h1>xD</h1></p>
</div>
</div>
<!-- /.row -->
</div>
{% endblock content %}
\ No newline at end of file
{% extends 'welcome_page/default/base.html' %}
{% block content %}
<div class="container">
<div class="row">
<form role="form" method="post">
{% csrf_token %}
<div class="col-lg-6">
<div class="well well-sm"><strong><span class="glyphicon glyphicon-asterisk"></span>Required Field</strong></div>
<div class="form-group">
<label for="InputName">Enter Name</label>
<div class="input-group">
<input type="text" class="form-control" name="username" id="InputName" placeholder="Enter Name" required>
<span class="input-group-addon"><span class="glyphicon glyphicon-asterisk"></span></span>
</div>
</div>
<div class="form-group">
<label for="InputEmail">Enter Email</label>
<div class="input-group">
<input type="email" class="form-control" id="InputEmailFirst" name="email" placeholder="Enter Email" required>
<span class="input-group-addon"><span class="glyphicon glyphicon-asterisk"></span></span>
</div>
</div>
<div class="form-group">
<label for="InputPassword">Input password</label>
<div class="input-group">
<input type="password" class="form-control" id="InputPasswordFirst" name="password" placeholder="Password" required>
<span class="input-group-addon"><span class="glyphicon glyphicon-asterisk"></span></span>
</div>
</div>
<div class="form-group">
<label for="ConfirmPassword">ConfirmPassword</label>
<div class="input-group">
<input type="password" class="form-control" id="InputPasswordSecond" name="confirmed_password" placeholder="Password" required>
<span class="input-group-addon"><span class="glyphicon glyphicon-asterisk"></span></span>
</div>
</div>
<input type="submit" name="submit" id="submit" value="Submit" class="btn btn-info pull-right">
</div>
</form>
<div class="col-lg-5 col-md-push-1">
<div class="col-md-12">
<div class="alert alert-success">
<strong><span class="glyphicon "></span> Welcome to register form!</strong>
</div>
{% for error, content in errors.items %}
<div class="alert alert-danger">
<span class="glyphicon glyphicon-remove"></span><strong> {{ content }}</strong>
</div>
{% endfor %}
</div>
</div>
</div>
</div>
{% endblock content %}
\ No newline at end of file
<html >
{% load staticfiles %}
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Bootstrap -->
<link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="{% static 'css/style.css' %}" />
<link rel="stylesheet" type="text/css" href="{% static 'css/login.css' %}" />
<link rel="stylesheet" type="text/css" href="{% static 'css/footer.css' %}" />
<link rel="stylesheet" type="text/css" href="{% static 'css/the-big-picture.css' %}" />
<title>Free Beacons</title>
</head>
<body class="full">
{% include 'page/default/main_bar.html' %}
<div id="wrap">
{% block content %}
{% endblock %}
</div>
{% include 'page/default/footer.html' %}
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="{% static 'js/bootstrap.min.js' %}"></script>
</body>
</html>
\ No newline at end of file
<div id="footer">
<div class="container">
<p class="text-muted credit">
<div class="btn-group">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
Links <span class="caret caret-up"></span>
</button>
<ul class="dropdown-menu drop-up" role="menu">
<li><a href="">Authors:</a></li>
<li><a href="https://pl.linkedin.com/pub/kamil-rogalski/a4/a06/a6a">Kamil Rogalski</a></li>
<li><a href="https://pl.linkedin.com/pub/rafał-lizoń/82/20a/ab">Rafał Lizoń</a></li>
<li class="divider"></li>
<li><a href="#">TMBK</a></li>
</ul>
</div>
</p>
</div>
</div>
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
</button>
<a class="navbar-brand" href="/">Free Beacons</a>
</div>
<ul class="nav navbar-nav navbar-right">
<li><a href="/login">Login</a></li>
<li><a href="/register">Register</a></li>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
\ No newline at end of file
{% load staticfiles%}
<link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="{% static 'css/dashboard.css' %}" />
<div class="container" style="margin-top:40px">
<div class="row">
<div class="col-sm-6 col-md-4 col-md-offset-4">
<div class="panel panel-default">
<div class="panel-heading">
<strong>Login</strong>
</div>
<div class="panel-body">
<form role="form" action="#" method="POST">
{% csrf_token %}
<fieldset>
<div class="row">
<div class="center-block">
<img class="profile-img"
src="{{ STATIC_URL }}img/login.jpg }}" alt="">
</div>
</div>
<div class="row">
<div class="col-sm-12 col-md-10 col-md-offset-1 ">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">
<i class="glyphicon glyphicon-user"></i>
</span>
<input class="form-control" placeholder="username" name="username" type="text" required="" autofocus>
</div>
</div>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">
<i class="glyphicon glyphicon-lock"></i>
</span>
<input class="form-control" placeholder="password" name="password" type="password" value="" required="">
</div>
</div>
<div class="form-group">
<input type="submit" class="btn btn-lg btn-primary btn-block" value="Entrar">
</div>
</div>
</div>
</fieldset>
</form>
</div>
<div class="panel-footer ">
Não é registrado? <a href="#" onClick=""> Clique aqui </a>
</div>
</div>
</div>
</div>
</div>
\ No newline at end of file
{% extends 'user_panel/default/base.html' %}
{% block content %}
<div class="container">
<div class="row">
<a href="/project/{{ project.id }}">
<div class="col-xs-12 col-sm-6 col-md-6 col-lg-6 col-lg-offset-3" >
<div class="box">
<div class="box-icon">
<span class="fa fa-4x fa-html5"></span>
</div>
<div class="info">
<h4 class="text-center">Gra miejska</h4>
<p>Gra miejska Juwenalia 2015</p>
</div>
</div>
</div>
</div>
</div>
{% endblock content %}
\ No newline at end of file
{% extends 'user_panel/default/base.html' %}
{% block content %}
<div class="container">
<div class="row">
<div class="col-md-6">
<h2>Mapa</h2>
</div>
</div>
</div>
{% endblock content %}
\ No newline at end of file
<html >
{% load staticfiles %}
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Bootstrap -->
<link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="{% static 'css/dashboard.css' %}" />
<link rel="stylesheet" type="text/css" href="{% static 'css/login.css' %}" />
<link rel="stylesheet" type="text/css" href="{% static 'css/footer.css' %}" />
<link rel="stylesheet" type="text/css" href="{% static 'css/left_bar.css' %}" />
<link rel="stylesheet" type="text/css" href="{% static 'css/font-awesome.min.css' %}" />
<title>Activy</title>
</head>
<body>
{% include 'user_panel/default/user_bar.html' %}
{% include 'user_panel/default/left_bar.html' %}
<div id="wrap" style="margin-top:20px;">
{% block content %}
{% endblock %}
</div>
{% include 'user_panel/default/footer.html' %}
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="{% static 'js/bootstrap.min.js' %}"></script>
<script src="{% static 'js/hobby_detail.js' %}"></script>
<
</body>
</html>
\ No newline at end of file
<div id="footer">
<div class="container">
<p class="text-muted credit">
<div class="btn-group">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
Links <span class="caret caret-up"></span>
</button>
<ul class="dropdown-menu drop-up" role="menu">
<li><a href="">Authors:</a></li>
<li><a href="https://pl.linkedin.com/pub/kamil-rogalski/a4/a06/a6a">Kamil Rogalski</a></li>
<li><a href="https://pl.linkedin.com/pub/rafał-lizoń/82/20a/ab">Rafał Lizoń</a></li>
<li class="divider"></li>
<li><a href="#">TMBK</a></li>
</ul>
</div>
</p>
</div>
</div>
<div id="wrapper">
<!-- Sidebar -->
<div id="sidebar-wrapper">
<ul class="sidebar-nav">
<li class="sidebar-brand">
</li>
{% for user_hobby in default_data.user_hobby %}
<li>
<a href="/hobby/{{ user_hobby.hobby.id }}"><img src="{{ user_hobby.hobby.icon.photo_url }}"></a>
</li>
{% endfor %}
</ul>
</div>
</div>
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
</button>
<a class="navbar-brand" href="/">FreeBeacon</a>
</div>
<ul class="nav navbar-nav navbar-right">
<li><a href="/">Projekty</a></li>
<li><a href="/maps">Mapa beaconow</a></li>
<li><a href="/logout">Logout</a></li>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
\ No newline at end of file
from django.contrib import auth
from django.contrib.auth import login
from django.contrib.auth.models import User
from django.core.exceptions import ObjectDoesNotExist
from django.http import HttpResponseRedirect, HttpResponse
from django.shortcuts import render, render_to_response
from django.shortcuts import render, render_to_response, redirect
from django.template import RequestContext
# Create your views here.
......@@ -11,7 +12,8 @@ import rest_framework
from rest_framework.response import Response
from rest_framework.views import APIView
from Hub.models import Beacon, BeaconManager, Site, Category
from Hub.serializers import BeaconSerializer, BeaconManagerSerializer, SiteSerializer, CategorySerializer
from Hub.serializers import BeaconSerializer, BeaconManagerSerializer, SiteSerializer, CategorySerializer, \
UserSerializer
class BeaconViewSet(viewsets.ModelViewSet):
......@@ -21,6 +23,14 @@ class BeaconViewSet(viewsets.ModelViewSet):
queryset = Beacon.objects.all()
serializer_class = BeaconSerializer
class UserViewSet(viewsets.ModelViewSet):
"""
API for places
"""
queryset = User.objects.all()
serializer_class = UserSerializer
class BeaconManagerViewSet(viewsets.ModelViewSet):
"""
API for places
......@@ -83,7 +93,7 @@ def login_page(request):
context = RequestContext(request)
if not request.method == 'POST':
return render_to_response('page/login.html', {}, context)
return render_to_response('page/content/login.html', {}, context)
username = request.POST.get('username', '')
password = request.POST.get('password', '')
......@@ -95,3 +105,17 @@ def login_page(request):
else:
return HttpResponse("Invalid login details supplied.")
def main_page(request):
context = RequestContext(request)
if request.user.is_authenticated():
return redirect('/dashboard')
else:
return render_to_response('page/content/main_page.html', {}, context)
def dashboard(request):
context = RequestContext(request)
return render_to_response('user_panel/content/dashboard.html', {}, context)
def maps(request):
context = RequestContext(request)
return render_to_response('user_panel/content/maps.html', {}, context)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment