Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
I
insights
Overview
Overview
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
edx
insights
Commits
e22a206f
Commit
e22a206f
authored
Jun 02, 2013
by
Piotr Mitros
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improved comments, removed debug code
parent
84b69a87
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
33 additions
and
9 deletions
+33
-9
src/djanalytics/core/auth.py
+8
-0
src/djanalytics/core/decorators.py
+5
-0
src/djanalytics/core/djobject.py
+9
-9
src/djanalytics/core/registry.py
+2
-0
src/djanalytics/core/render.py
+4
-0
src/djanalytics/modules/testmodule/__init__.py
+5
-0
No files found.
src/djanalytics/core/auth.py
View file @
e22a206f
...
@@ -22,6 +22,14 @@ from django.conf import settings
...
@@ -22,6 +22,14 @@ from django.conf import settings
import
re
import
re
def
auth
(
f
):
def
auth
(
f
):
''' Authentication decorator. It will allow all access, unless
django settings defines a DJA_AUTH parameter. Such a parameter can
specify a decorator which will handle authentication/authorization.
DJA_AUTH is a dictionary mapping regexps to appropriate decorators
(so it is possible to e.g. use one for views, and a different one
for queries)
'''
try
:
try
:
dja
=
settings
.
DJA_AUTH
dja
=
settings
.
DJA_AUTH
except
AttributeError
:
except
AttributeError
:
...
...
src/djanalytics/core/decorators.py
View file @
e22a206f
...
@@ -170,6 +170,11 @@ def cron(period, params=None):
...
@@ -170,6 +170,11 @@ def cron(period, params=None):
return
factory
return
factory
def
event_property
(
name
=
None
,
description
=
None
):
def
event_property
(
name
=
None
,
description
=
None
):
''' This is used to add properties to events.
E.g. a module could add the tincan properties such that other
analytics modules could access event properties generically.
'''
def
register
(
f
):
def
register
(
f
):
registry
.
register_event_property
(
f
,
name
,
description
)
registry
.
register_event_property
(
f
,
name
,
description
)
return
f
return
f
...
...
src/djanalytics/core/djobject.py
View file @
e22a206f
...
@@ -57,7 +57,7 @@ class multi_embed():
...
@@ -57,7 +57,7 @@ class multi_embed():
def
__init__
(
self
,
embeds
):
def
__init__
(
self
,
embeds
):
self
.
_embeds
=
embeds
self
.
_embeds
=
embeds
def
__getattr__
(
self
,
attr
):
def
__getattr__
(
self
,
attr
):
print
">>>>>>>>>>>>> Getting"
,
attr
#
print ">>>>>>>>>>>>> Getting", attr
for
x
in
self
.
_embeds
:
for
x
in
self
.
_embeds
:
f
=
None
f
=
None
try
:
try
:
...
@@ -65,11 +65,11 @@ class multi_embed():
...
@@ -65,11 +65,11 @@ class multi_embed():
except
AttributeError
:
except
AttributeError
:
pass
pass
if
f
:
if
f
:
print
#
print
print
">>>>>>>>>>>>>>>>>>>"
,
f
#
print ">>>>>>>>>>>>>>>>>>>", f
print
#
print
return
f
return
f
print
"Not found"
print
"Not found"
,
attr
raise
AttributeError
(
attr
)
raise
AttributeError
(
attr
)
def
_refresh_schema
(
self
):
def
_refresh_schema
(
self
):
...
@@ -77,7 +77,7 @@ class multi_embed():
...
@@ -77,7 +77,7 @@ class multi_embed():
x
.
_refresh_schema
x
.
_refresh_schema
def
__dir__
(
self
):
def
__dir__
(
self
):
child_dirs
=
[
x
.
__dir__
()
for
x
in
self
.
_embeds
]
child_dirs
=
[
x
.
__dir__
()
for
x
in
self
.
_embeds
]
print
child_dirs
#
print child_dirs
return
sorted
(
list
(
set
(
sum
(
child_dirs
,
[]))))
return
sorted
(
list
(
set
(
sum
(
child_dirs
,
[]))))
def
__repr__
(
self
):
def
__repr__
(
self
):
return
"/"
.
join
(
map
(
lambda
x
:
repr
(
x
),
self
.
_embeds
))
return
"/"
.
join
(
map
(
lambda
x
:
repr
(
x
),
self
.
_embeds
))
...
@@ -252,7 +252,7 @@ def get_embed(t, config = None):
...
@@ -252,7 +252,7 @@ def get_embed(t, config = None):
if
config
:
if
config
:
embeds
=
[]
embeds
=
[]
for
embed_spec
in
config
:
for
embed_spec
in
config
:
print
embed_spec
#
print embed_spec
embeds
.
append
(
single_embed
(
t
,
**
embed_spec
))
embeds
.
append
(
single_embed
(
t
,
**
embed_spec
))
return
multi_embed
(
embeds
)
return
multi_embed
(
embeds
)
return
single_embed
(
t
)
return
single_embed
(
t
)
...
@@ -267,7 +267,7 @@ if __name__ == "__main__":
...
@@ -267,7 +267,7 @@ if __name__ == "__main__":
if
True
:
# Internal test -- from djanalytics
if
True
:
# Internal test -- from djanalytics
print
djo
.
query
.
djt_event_count
()
print
djo
.
query
.
djt_event_count
()
print
djo
.
query
.
djt_user_event_count
(
user
=
"bob"
)
print
djo
.
query
.
djt_user_event_count
(
user
=
"bob"
)
print
d
jo
.
query
.
__dir__
(
)
print
d
ir
(
djo
.
query
)
if
False
:
# External test -- from edxanalytics
if
False
:
# External test -- from edxanalytics
transform_policy
=
{
'name'
:
'test'
,
transform_policy
=
{
'name'
:
'test'
,
...
@@ -282,6 +282,6 @@ if __name__ == "__main__":
...
@@ -282,6 +282,6 @@ if __name__ == "__main__":
'course'
:
'6.002x'
}
'course'
:
'6.002x'
}
secure_view
=
transform_embed
(
transform_policy
,
context
,
djo
.
view
)
secure_view
=
transform_embed
(
transform_policy
,
context
,
djo
.
view
)
print
secure_view
.
__dir__
(
)
print
dir
(
secure_view
)
print
secure_view
.
page_count
(
course
=
'6.002x'
)
print
secure_view
.
page_count
(
course
=
'6.002x'
)
print
inspect
.
getargspec
(
secure_view
.
page_count
)
print
inspect
.
getargspec
(
secure_view
.
page_count
)
src/djanalytics/core/registry.py
View file @
e22a206f
...
@@ -91,6 +91,8 @@ def register_event_property(f, name, description):
...
@@ -91,6 +91,8 @@ def register_event_property(f, name, description):
event_property_registry
[
name
]
=
{
'function'
:
f
,
'name'
:
name
,
'doc'
:
description
}
event_property_registry
[
name
]
=
{
'function'
:
f
,
'name'
:
name
,
'doc'
:
description
}
def
schema_helper
():
def
schema_helper
():
''' Return all endpoints (returned in a format identical to schema view)
'''
endpoints
=
[]
endpoints
=
[]
for
cls
in
request_handlers
:
for
cls
in
request_handlers
:
for
name
in
request_handlers
[
cls
]:
for
name
in
request_handlers
[
cls
]:
...
...
src/djanalytics/core/render.py
View file @
e22a206f
...
@@ -58,6 +58,10 @@ lookups = {}
...
@@ -58,6 +58,10 @@ lookups = {}
def
lookup
(
directory
):
def
lookup
(
directory
):
''' Return the mako TemplateLookup for a directory.
Will cache lookups if we created one before.
'''
if
directory
in
lookups
:
if
directory
in
lookups
:
return
lookups
[
directory
]
return
lookups
[
directory
]
else
:
else
:
...
...
src/djanalytics/modules/testmodule/__init__.py
View file @
e22a206f
...
@@ -8,6 +8,7 @@ from djanalytics.core.decorators import query, event_handler, view, event_proper
...
@@ -8,6 +8,7 @@ from djanalytics.core.decorators import query, event_handler, view, event_proper
@view
()
@view
()
def
djt_hello_template
():
def
djt_hello_template
():
''' Example of how to use mako templates in a view '''
from
djanalytics.core.render
import
render
from
djanalytics.core.render
import
render
return
render
(
"hello.html"
,
{})
return
render
(
"hello.html"
,
{})
...
@@ -123,11 +124,13 @@ def djt_readfile(fs, filename):
...
@@ -123,11 +124,13 @@ def djt_readfile(fs, filename):
@query
()
@query
()
def
djt_cache_get
(
cache
,
key
):
def
djt_cache_get
(
cache
,
key
):
''' Used in test case for cache '''
result
=
cache
.
get
(
key
)
result
=
cache
.
get
(
key
)
return
result
return
result
@event_handler
()
@event_handler
()
def
djt_cache_set
(
cache
,
events
):
def
djt_cache_set
(
cache
,
events
):
''' Used in test case for cache '''
for
evt
in
events
:
for
evt
in
events
:
if
'event'
in
evt
and
evt
[
'event'
]
==
'cachetest'
:
if
'event'
in
evt
and
evt
[
'event'
]
==
'cachetest'
:
cache
.
set
(
evt
[
'key'
],
evt
[
'value'
],
evt
[
'timeout'
])
cache
.
set
(
evt
[
'key'
],
evt
[
'value'
],
evt
[
'timeout'
])
...
@@ -145,12 +148,14 @@ def djt_agent(event):
...
@@ -145,12 +148,14 @@ def djt_agent(event):
@event_handler
()
@event_handler
()
def
djt_event_property_check
(
cache
,
events
):
def
djt_event_property_check
(
cache
,
events
):
''' Used in test case for event handler '''
for
evt
in
events
:
for
evt
in
events
:
if
"event_property_check"
in
evt
:
if
"event_property_check"
in
evt
:
cache
.
set
(
"last_seen_user"
,
evt
.
djt_agent
,
30
)
cache
.
set
(
"last_seen_user"
,
evt
.
djt_agent
,
30
)
@query
()
@query
()
def
djt_fake_user_count
():
def
djt_fake_user_count
():
''' Used as test case for query objects '''
return
2
return
2
@view
()
@view
()
...
...
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