Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
K
KawowyDzienniczek
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Rafal
KawowyDzienniczek
Commits
00bcb4ab
Commit
00bcb4ab
authored
Jul 18, 2016
by
lizonr1
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add usertasks and init data
parent
da1d6337
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
115 additions
and
6 deletions
+115
-6
init.py
KawowyDzienniczek/App/user/management/commands/init.py
+2
-0
init_usertasks.py
...zienniczek/App/user/management/commands/init_usertasks.py
+28
-0
models.py
KawowyDzienniczek/App/user/models.py
+37
-1
serializers.py
KawowyDzienniczek/App/user/serializers.py
+10
-1
views.py
KawowyDzienniczek/App/user/views.py
+38
-4
No files found.
KawowyDzienniczek/App/user/management/commands/init.py
View file @
00bcb4ab
...
@@ -12,8 +12,10 @@ class Command(BaseCommand):
...
@@ -12,8 +12,10 @@ class Command(BaseCommand):
call_command
(
'init_userprofile'
)
call_command
(
'init_userprofile'
)
call_command
(
'init_products'
)
call_command
(
'init_products'
)
call_command
(
'init_offers'
)
call_command
(
'init_offers'
)
call_command
(
'init_tasks'
)
call_command
(
'init_promotions'
)
call_command
(
'init_promotions'
)
call_command
(
'init_promotionsets'
)
call_command
(
'init_promotionsets'
)
call_command
(
'init_localizations'
)
call_command
(
'init_localizations'
)
call_command
(
'init_places'
)
call_command
(
'init_places'
)
call_command
(
'init_userpromotions'
)
call_command
(
'init_userpromotions'
)
call_command
(
'init_usertasks'
)
KawowyDzienniczek/App/user/management/commands/init_usertasks.py
0 → 100644
View file @
00bcb4ab
import
datetime
from
django.contrib.auth.models
import
User
from
django.core.management.base
import
BaseCommand
from
App.loyaltyMe.models
import
Task
from
App.user.models
import
UserTask
class
Command
(
BaseCommand
):
def
handle
(
self
,
*
args
,
**
options
):
data
=
[
[
'Bądź u nas 10 godzin'
,
'admin'
,
True
,
datetime
.
datetime
.
now
(),
15
,
15
,
datetime
.
datetime
.
now
()],
[
'Bądź u nas 10 godzin'
,
'Klaudia'
,
False
,
datetime
.
datetime
.
now
(),
15
,
15
,
datetime
.
datetime
.
now
()],
[
'Przyjdz 10 razy'
,
'admin'
,
False
,
datetime
.
datetime
.
now
(),
15
,
15
,
datetime
.
datetime
.
now
()],
[
'Przyjdz 10 razy'
,
'Antek'
,
True
,
datetime
.
datetime
.
now
(),
15
,
15
,
datetime
.
datetime
.
now
()],
]
print
(
"Creating UsersTasks"
)
for
user_task
in
data
:
print
(
"{0} take {1} Task"
.
format
(
user_task
[
0
],
user_task
[
1
]))
task
=
Task
.
objects
.
filter
(
name
=
user_task
[
0
])[
0
]
user
=
User
.
objects
.
filter
(
username
=
user_task
[
1
])[
0
]
counter
=
datetime
.
timedelta
(
seconds
=
user_task
[
4
])
beacon_counter
=
datetime
.
timedelta
(
seconds
=
user_task
[
5
])
new_usertask
=
UserTask
.
objects
.
create
(
task
=
task
,
user
=
user
,
done
=
user_task
[
2
],
last_update
=
user_task
[
3
],
counter
=
counter
,
beacon_counter
=
beacon_counter
,
beacon_signal_last_update
=
user_task
[
6
])
new_usertask
.
save
()
KawowyDzienniczek/App/user/models.py
View file @
00bcb4ab
...
@@ -2,10 +2,12 @@ from django.db import models
...
@@ -2,10 +2,12 @@ from django.db import models
from
django.contrib.auth.models
import
User
from
django.contrib.auth.models
import
User
from
django.db.models.signals
import
post_save
from
django.db.models.signals
import
post_save
from
django.dispatch
import
receiver
from
django.dispatch
import
receiver
from
django.utils
import
timezone
from
rest_framework.authtoken.models
import
Token
from
rest_framework.authtoken.models
import
Token
from
datetime
import
timedelta
# Create your models here.
# Create your models here.
from
App.loyaltyMe.models
import
Place
,
Promotion
from
App.loyaltyMe.models
import
Place
,
Promotion
,
Task
@
receiver
(
post_save
,
sender
=
User
)
@
receiver
(
post_save
,
sender
=
User
)
...
@@ -27,3 +29,37 @@ class UserPromotion(models.Model):
...
@@ -27,3 +29,37 @@ class UserPromotion(models.Model):
promotion
=
models
.
ForeignKey
(
Promotion
)
promotion
=
models
.
ForeignKey
(
Promotion
)
status
=
models
.
CharField
(
max_length
=
30
)
status
=
models
.
CharField
(
max_length
=
30
)
code
=
models
.
CharField
(
max_length
=
20
,
null
=
True
)
code
=
models
.
CharField
(
max_length
=
20
,
null
=
True
)
class
UserTask
(
models
.
Model
):
task
=
models
.
ForeignKey
(
Task
)
user
=
models
.
ForeignKey
(
User
,
related_name
=
'user_task'
,
blank
=
False
,
null
=
False
,
default
=
None
)
done
=
models
.
BooleanField
(
default
=
False
)
last_update
=
models
.
DateField
()
counter
=
models
.
DurationField
()
beacon_counter
=
models
.
DurationField
()
beacon_signal_last_update
=
models
.
DateField
()
def
update
(
self
):
if
not
self
.
beacon_delay_passed
():
return
if
self
.
done
:
return
if
self
.
counter
==
self
.
task
.
counter_target
:
self
.
done
=
True
return
actual_time
=
timezone
.
now
()
if
actual_time
+
self
.
task
.
update_delay
>
self
.
last_update
:
self
.
counter
+=
self
.
task
.
counter_incrementation
def
beacon_delay_passed
(
self
):
actual_time
=
timezone
.
now
()
if
actual_time
+
timedelta
(
seconds
=
self
.
task
.
beacon_signal_delay
)
>
self
.
beacon_signal_last_update
:
self
.
beacon_counter
=
+
1
self
.
beacon_signal_last_update
=
actual_time
if
self
.
beacon_counter
==
self
.
task
.
beacon_counter_target
:
self
.
beacon_counter
=
0
return
True
return
False
\ No newline at end of file
KawowyDzienniczek/App/user/serializers.py
View file @
00bcb4ab
...
@@ -4,7 +4,7 @@ from django.utils.translation import ugettext_lazy as _
...
@@ -4,7 +4,7 @@ from django.utils.translation import ugettext_lazy as _
from
rest_framework
import
serializers
from
rest_framework
import
serializers
from
App.loyaltyMe.serializers
import
PromotionSerializer
from
App.loyaltyMe.serializers
import
PromotionSerializer
from
App.user.models
import
UserProfile
,
UserPromotion
from
App.user.models
import
UserProfile
,
UserPromotion
,
UserTask
class
UserSerializer
(
serializers
.
HyperlinkedModelSerializer
):
class
UserSerializer
(
serializers
.
HyperlinkedModelSerializer
):
...
@@ -21,6 +21,15 @@ class UserProfileSerializer(serializers.HyperlinkedModelSerializer):
...
@@ -21,6 +21,15 @@ class UserProfileSerializer(serializers.HyperlinkedModelSerializer):
fields
=
(
'url'
,
'id'
,
'user'
,
'photo'
)
fields
=
(
'url'
,
'id'
,
'user'
,
'photo'
)
class
UserTaskSerializer
(
serializers
.
HyperlinkedModelSerializer
):
user
=
UserSerializer
()
class
Meta
:
model
=
UserTask
fields
=
(
'url'
,
'id'
,
'task'
,
'user'
,
'done'
,
'last_update'
,
'counter'
,
'beacon_counter'
,
'beacon_signal_last_update'
)
class
AuthTokenSerializerByEmail
(
serializers
.
Serializer
):
class
AuthTokenSerializerByEmail
(
serializers
.
Serializer
):
email
=
serializers
.
CharField
(
label
=
_
(
"Email"
))
email
=
serializers
.
CharField
(
label
=
_
(
"Email"
))
password
=
serializers
.
CharField
(
label
=
_
(
"Password"
),
style
=
{
'input_type'
:
'password'
})
password
=
serializers
.
CharField
(
label
=
_
(
"Password"
),
style
=
{
'input_type'
:
'password'
})
...
...
KawowyDzienniczek/App/user/views.py
View file @
00bcb4ab
...
@@ -5,14 +5,17 @@ from django.contrib.auth.models import User
...
@@ -5,14 +5,17 @@ from django.contrib.auth.models import User
# Create your views here.
# Create your views here.
from
rest_framework
import
filters
from
rest_framework
import
filters
from
rest_framework.authtoken.models
import
Token
from
rest_framework.authtoken.models
import
Token
from
rest_framework.decorators
import
list_route
from
rest_framework.authtoken.serializers
import
AuthTokenSerializer
from
rest_framework.decorators
import
list_route
,
api_view
,
renderer_classes
from
rest_framework.response
import
Response
from
rest_framework.response
import
Response
from
rest_framework
import
viewsets
,
permissions
from
rest_framework
import
viewsets
,
permissions
from
rest_framework.views
import
APIView
from
rest_framework.views
import
APIView
from
rest_framework_swagger.renderers
import
OpenAPIRenderer
,
SwaggerUIRenderer
from
rest_framework
import
response
,
schemas
from
App.user.models
import
UserProfile
,
UserPromotion
from
App.user.models
import
UserProfile
,
UserPromotion
,
UserTask
from
App.user.serializers
import
UserSerializer
,
AuthTokenSerializerByEmail
,
UserProfileSerializer
,
\
from
App.user.serializers
import
UserSerializer
,
AuthTokenSerializerByEmail
,
UserProfileSerializer
,
\
UserPromotionSerializer
UserPromotionSerializer
,
UserTaskSerializer
from
rest_framework
import
parsers
,
renderers
from
rest_framework
import
parsers
,
renderers
...
@@ -33,7 +36,11 @@ class UserViewSet(viewsets.ModelViewSet):
...
@@ -33,7 +36,11 @@ class UserViewSet(viewsets.ModelViewSet):
class
UserProfileViewSet
(
viewsets
.
ModelViewSet
):
class
UserProfileViewSet
(
viewsets
.
ModelViewSet
):
"""
"""
API for articles
Returns a list of all **active** accounts in the system.
For more details on how accounts are activated please [see here][ref].
[ref]: http://example.com/activating-accounts
"""
"""
queryset
=
UserProfile
.
objects
.
all
()
queryset
=
UserProfile
.
objects
.
all
()
serializer_class
=
UserProfileSerializer
serializer_class
=
UserProfileSerializer
...
@@ -71,6 +78,9 @@ class ObtainAuthToken(APIView):
...
@@ -71,6 +78,9 @@ class ObtainAuthToken(APIView):
token
,
created
=
Token
.
objects
.
get_or_create
(
user
=
user
)
token
,
created
=
Token
.
objects
.
get_or_create
(
user
=
user
)
return
Response
({
'token'
:
token
.
key
})
return
Response
({
'token'
:
token
.
key
})
def
get_serializer_class
(
self
):
return
AuthTokenSerializerByEmail
obtain_auth_token
=
ObtainAuthToken
.
as_view
()
obtain_auth_token
=
ObtainAuthToken
.
as_view
()
...
@@ -100,3 +110,27 @@ class UserPromotionViewSet(viewsets.ModelViewSet):
...
@@ -100,3 +110,27 @@ class UserPromotionViewSet(viewsets.ModelViewSet):
"""
"""
user
=
self
.
request
.
user
user
=
self
.
request
.
user
return
UserPromotion
.
objects
.
filter
(
user
=
user
)
return
UserPromotion
.
objects
.
filter
(
user
=
user
)
class
UserTaskViewSet
(
viewsets
.
ModelViewSet
):
"""
API for articles
"""
queryset
=
UserTask
.
objects
.
all
()
serializer_class
=
UserTaskSerializer
permission_classes
=
(
permissions
.
IsAuthenticatedOrReadOnly
,)
filter_backends
=
(
filters
.
DjangoFilterBackend
,)
def
get_queryset
(
self
):
"""
This view should return a list of all the purchases
for the currently authenticated user.
"""
user
=
self
.
request
.
user
return
UserTask
.
objects
.
filter
(
user
=
user
)
@
api_view
()
@
renderer_classes
([
OpenAPIRenderer
,
SwaggerUIRenderer
])
def
schema_view
(
request
):
generator
=
schemas
.
SchemaGenerator
(
title
=
'Bookings API'
)
return
response
.
Response
(
generator
.
get_schema
(
request
=
request
))
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment