本文整理汇总了Python中utils.keen_helper.send_keen_event函数的典型用法代码示例。如果您正苦于以下问题:Python send_keen_event函数的具体用法?Python send_keen_event怎么用?Python send_keen_event使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了send_keen_event函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: delete_variant
def delete_variant(request, project_id, resource_id, variant):
project = get_object_or_404(Project, pk=project_id, owner=request.user)
resource = get_object_or_404(ResourceFile, pk=resource_id, project=project)
if variant == '0':
variant = ''
variant_to_delete = resource.variants.get(tags=variant)
if resource.variants.count() == 1:
return json_failure("You cannot delete the last remaining variant of a resource.")
try:
variant_to_delete.delete()
except Exception as e:
return json_failure(str(e))
else:
send_keen_event('cloudpebble', 'cloudpebble_delete_variant', data={
'data': {
'filename': resource.file_name,
'kind': 'resource',
'resource-kind': resource.kind,
'variant': variant
}
}, project=project, request=request)
return json_response({'resource': {
'variants': [x.get_tags() for x in resource.variants.all()]
}})
示例2: resource_info
def resource_info(request, project_id, resource_id):
project = get_object_or_404(Project, pk=project_id, owner=request.user)
resource = get_object_or_404(ResourceFile, pk=resource_id)
resources = resource.get_identifiers()
send_keen_event('cloudpebble', 'cloudpebble_open_file', data={
'data': {
'filename': resource.file_name,
'kind': 'resource',
'resource-kind': resource.kind
}
}, project=project, request=request)
return json_response({
'resource': {
"target_platforms": json.loads(resource.target_platforms) if resource.target_platforms else None,
'resource_ids': [{
'id': x.resource_id,
'regex': x.character_regex,
'tracking': x.tracking,
'compatibility': x.compatibility
} for x in resources],
'id': resource.id,
'file_name': resource.file_name,
'kind': resource.kind,
"variants": [x.get_tags() for x in resource.variants.all()],
"extra": {y.resource_id: {'regex': y.character_regex, 'tracking': y.tracking, 'compatibility': y.compatibility} for y in resource.identifiers.all()}
}
})
示例3: resource_info
def resource_info(request, project_id, resource_id):
project = get_object_or_404(Project, pk=project_id, owner=request.user)
resource = get_object_or_404(ResourceFile, pk=resource_id)
resources = resource.get_identifiers()
send_keen_event('cloudpebble', 'cloudpebble_open_file', data={
'data': {
'filename': resource.file_name,
'kind': 'resource',
'resource-kind': resource.kind
}
}, project=project, request=request)
return json_response({
'resource': {
'resource_ids': [{
'id': x.resource_id,
'regex': x.character_regex,
'tracking': x.tracking
} for x in resources],
'id': resource.id,
'file_name': resource.file_name,
'kind': resource.kind
}
})
示例4: proxy_keen
def proxy_keen(request, project_id):
from utils.keen_helper import send_keen_event
project = get_object_or_404(Project, pk=project_id)
acceptable_events = {
'app_install_succeeded',
'websocket_connection_failed',
'app_install_failed',
'app_log_view',
'app_logged_crash',
'sdk_screenshot_success',
'sdk_screenshot_failed'
}
event = request.POST['event']
if event not in acceptable_events:
return json_failure("nope.")
data = {}
if 'data' in request.POST:
data['data'] = json.loads(request.POST['data'])
if 'device' in request.POST:
data['device'] = json.loads(request.POST['device'])
if len(data.items()) == 0:
data = None
send_keen_event(['cloudpebble', 'sdk'], event, project=project, request=request, data=data)
return json_response({})
示例5: save_project_settings
def save_project_settings(request, project_id):
project = get_object_or_404(Project, pk=project_id, owner=request.user)
try:
with transaction.commit_on_success():
project.name = request.POST['name']
project.app_uuid = request.POST['app_uuid']
project.app_company_name = request.POST['app_company_name']
project.app_short_name = request.POST['app_short_name']
project.app_long_name = request.POST['app_long_name']
project.app_version_code = int(request.POST['app_version_code'])
project.app_version_label = request.POST['app_version_label']
project.app_is_watchface = bool(int(request.POST['app_is_watchface']))
project.app_capabilities = request.POST['app_capabilities']
project.app_keys = request.POST['app_keys']
project.app_jshint = bool(int(request.POST['app_jshint']))
menu_icon = request.POST['menu_icon']
if menu_icon != '':
menu_icon = int(menu_icon)
old_icon = project.menu_icon
if old_icon is not None:
old_icon.is_menu_icon = False
old_icon.save()
icon_resource = project.resources.filter(id=menu_icon)[0]
icon_resource.is_menu_icon = True
icon_resource.save()
project.save()
except IntegrityError as e:
return json_failure(str(e))
else:
send_keen_event('cloudpebble', 'cloudpebble_save_project_settings', project=project, request=request)
return json_response({})
示例6: do_import_github
def do_import_github(project_id, github_user, github_project, github_branch, delete_project=False):
try:
url = "https://github.com/%s/%s/archive/%s.zip" % (github_user, github_project, github_branch)
if file_exists(url):
u = urllib2.urlopen(url)
return do_import_archive(project_id, u.read())
else:
raise Exception("The branch '%s' does not exist." % github_branch)
except Exception as e:
try:
project = Project.objects.get(pk=project_id)
user = project.owner
except:
project = None
user = None
if delete_project and project is not None:
try:
project.delete()
except:
pass
send_keen_event('cloudpebble', 'cloudpebble_github_import_failed', user=user, data={
'data': {
'reason': e.message,
'github_user': github_user,
'github_project': github_project,
'github_branch': github_branch
}
})
raise
示例7: view_project
def view_project(request, project_id):
project = get_object_or_404(Project, pk=project_id, owner=request.user)
if project.app_uuid is None:
project.app_uuid = generate_half_uuid()
if project.app_company_name is None:
project.app_company_name = request.user.username
if project.app_short_name is None:
project.app_short_name = project.name
if project.app_long_name is None:
project.app_long_name = project.app_short_name
if project.app_version_label is None:
project.app_version_label = '1.0'
send_keen_event('cloudpebble', 'cloudpebble_open_project', request=request, project=project)
app_keys = sorted(json.loads(project.app_keys).iteritems(), key=lambda x: x[1])
try:
token = request.user.social_auth.get(provider='pebble').extra_data['access_token']
except:
token = ''
return render(request, 'ide/project.html', {
'project': project,
'app_keys': app_keys,
'font_css': settings.TYPOGRAPHY_CSS,
'libpebble_proxy': json.dumps(settings.LIBPEBBLE_PROXY),
'token': token,
'phone_shorturl': settings.PHONE_SHORTURL,
})
示例8: create_project
def create_project(request):
name = request.POST['name']
template_id = request.POST.get('template', None)
project_type = request.POST.get('type', 'native')
try:
with transaction.commit_on_success():
project = Project.objects.create(
name=name,
owner=request.user,
sdk_version=2,
app_company_name=request.user.username,
app_short_name=name,
app_long_name=name,
app_version_code=1,
app_version_label='1.0',
app_is_watchface=False,
app_capabilities='',
project_type=project_type
)
if template_id is not None and int(template_id) != 0:
template = TemplateProject.objects.get(pk=int(template_id))
template.copy_into_project(project)
elif project_type == 'simplyjs':
f = SourceFile.objects.create(project=project, file_name="app.js")
f.save_file(open('{}/src/html/demo.js'.format(settings.SIMPLYJS_ROOT)).read())
except IntegrityError as e:
return json_failure(str(e))
else:
send_keen_event('cloudpebble', 'cloudpebble_create_project', project=project, request=request)
return json_response({"id": project.id})
示例9: load_source_file
def load_source_file(request, project_id, file_id):
project = get_object_or_404(Project, pk=project_id, owner=request.user)
source_file = get_object_or_404(SourceFile, pk=file_id, project=project)
try:
content = source_file.get_contents()
try:
folded_lines = json.loads(source_file.folded_lines)
except ValueError:
folded_lines = []
send_keen_event('cloudpebble', 'cloudpebble_open_file', data={
'data': {
'filename': source_file.file_name,
'kind': 'source'
}
}, project=project, request=request)
except Exception as e:
return json_failure(str(e))
else:
return json_response({
"success": True,
"source": content,
"modified": time.mktime(source_file.last_modified.utctimetuple()),
"folded_lines": folded_lines
})
示例10: update_resource
def update_resource(request, project_id, resource_id):
project = get_object_or_404(Project, pk=project_id, owner=request.user)
resource = get_object_or_404(ResourceFile, pk=resource_id, project=project)
resource_ids = json.loads(request.POST['resource_ids'])
try:
with transaction.commit_on_success():
# Lazy approach: delete all the resource_ids and recreate them.
# We could do better.
resources = []
ResourceIdentifier.objects.filter(resource_file=resource).delete()
for r in resource_ids:
regex = r['regex'] if 'regex' in r else None
tracking = int(r['tracking']) if 'tracking' in r else None
resources.append(ResourceIdentifier.objects.create(resource_file=resource, resource_id=r['id'], character_regex=regex, tracking=tracking))
if 'file' in request.FILES:
resource.save_file(request.FILES['file'], request.FILES['file'].size)
except Exception as e:
return json_failure(str(e))
else:
send_keen_event('cloudpebble', 'cloudpebble_save_file', data={
'data': {
'filename': resource.file_name,
'kind': 'source'
}
}, project=project, request=request)
return json_response({"file": {
"id": resource.id,
"kind": resource.kind,
"file_name": resource.file_name,
"resource_ids": [{'id': x.resource_id, 'regex': x.character_regex} for x in resources],
"identifiers": [x.resource_id for x in resources]
}})
示例11: save_source_file
def save_source_file(request, project_id, file_id):
project = get_object_or_404(Project, pk=project_id, owner=request.user)
source_file = get_object_or_404(SourceFile, pk=file_id, project=project)
try:
if source_file.was_modified_since(int(request.POST['modified'])):
send_keen_event('cloudpebble', 'cloudpebble_save_abort_unsafe', data={
'data': {
'filename': source_file.file_name,
'kind': 'source'
}
}, project=project, request=request)
raise Exception(_("Could not save: file has been modified since last save."))
source_file.save_file(request.POST['content'], folded_lines=request.POST['folded_lines'])
except Exception as e:
return json_failure(str(e))
else:
send_keen_event('cloudpebble', 'cloudpebble_save_file', data={
'data': {
'filename': source_file.file_name,
'kind': 'source'
}
}, project=project, request=request)
return json_response({"modified": time.mktime(source_file.last_modified.utctimetuple())})
示例12: save_source_file
def save_source_file(request, project_id, file_id):
project = get_object_or_404(Project, pk=project_id, owner=request.user)
source_file = get_object_or_404(SourceFile, pk=file_id, project=project)
try:
expected_modification_time = datetime.datetime.fromtimestamp(int(request.POST['modified']))
if source_file.last_modified.replace(tzinfo=None, microsecond=0) > expected_modification_time:
send_keen_event('cloudpebble', 'cloudpebble_save_abort_unsafe', data={
'data': {
'filename': source_file.file_name,
'kind': 'source'
}
}, project=project, request=request)
raise Exception("Could not save: file has been modified since last save.")
source_file.save_file(request.POST['content'])
except Exception as e:
return json_failure(str(e))
else:
send_keen_event('cloudpebble', 'cloudpebble_save_file', data={
'data': {
'filename': source_file.file_name,
'kind': 'source'
}
}, project=project, request=request)
return json_response({"modified": time.mktime(source_file.last_modified.utctimetuple())})
示例13: create_resource
def create_resource(request, project_id):
project = get_object_or_404(Project, pk=project_id, owner=request.user)
kind = request.POST['kind']
resource_ids = json.loads(request.POST['resource_ids'])
file_name = request.FILES['file'].name
resources = []
try:
with transaction.commit_on_success():
rf = ResourceFile.objects.create(project=project, file_name=file_name, kind=kind)
for r in resource_ids:
regex = r['regex'] if 'regex' in r else None
tracking = int(r['tracking']) if 'tracking' in r else None
resources.append(ResourceIdentifier.objects.create(resource_file=rf, resource_id=r['id'],
character_regex=regex, tracking=tracking))
rf.save_file(request.FILES['file'], request.FILES['file'].size)
except Exception as e:
return json_failure(str(e))
else:
send_keen_event('cloudpebble', 'cloudpebble_create_file', data={
'data': {
'filename': file_name,
'kind': 'resource',
'resource-kind': kind
}
}, project=project, request=request)
return json_response({"file": {
"id": rf.id,
"kind": rf.kind,
"file_name": rf.file_name,
"resource_ids": [{'id': x.resource_id, 'regex': x.character_regex} for x in resources],
"identifiers": [x.resource_id for x in resources]
}})
示例14: import_gist
def import_gist(user_id, gist_id):
user = User.objects.get(pk=user_id)
g = github.Github()
try:
gist = g.get_gist(gist_id)
except github.UnknownObjectException:
send_keen_event('cloudpebble', 'cloudpebble_gist_not_found', user=user, data={'data': {'gist_id': gist_id}})
raise Exception("Couldn't find gist to import.")
files = gist.files
default_name = gist.description or 'Sample project'
is_native = True
if 'appinfo.json' in files:
settings = json.loads(files['appinfo.json'].content)
if len(files) == 2 and 'simply.js' in files:
is_native = False
else:
settings = {}
if len(files) == 1 and 'simply.js' in files:
is_native = False
project_settings = {
'name': settings.get('longName', default_name),
'owner': user,
'sdk_version': 2,
'app_uuid': generate_half_uuid(),
'app_short_name': settings.get('shortName', default_name),
'app_long_name': settings.get('longName', default_name),
'app_company_name': settings.get('companyName', user.username),
'app_version_code': 1,
'app_version_label': settings.get('versionLabel', '1.0'),
'app_is_watchface': settings.get('watchapp', {}).get('watchface', False),
'app_capabilities': ','.join(settings.get('capabilities', [])),
'app_keys': dict_to_pretty_json(settings.get('appKeys', {})),
'project_type': 'native' if is_native else 'simplyjs'
}
with transaction.commit_on_success():
project = Project.objects.create(**project_settings)
if is_native:
for filename in gist.files:
if filename.endswith('.c') or filename.endswith('.h') or filename == 'pebble-js-app.js':
# Because gists can't have subdirectories.
if filename == 'pebble-js-app.js':
cp_filename = 'js/pebble-js-app.js'
else:
cp_filename = filename
source_file = SourceFile.objects.create(project=project, file_name=cp_filename)
source_file.save_file(gist.files[filename].content)
else:
source_file = SourceFile.objects.create(project=project, file_name='app.js')
source_file.save_file(gist.files['simply.js'].content)
send_keen_event('cloudpebble', 'cloudpebble_gist_import', project=project, data={'data': {'gist_id': gist_id}})
return project.id
示例15: remove_github_auth
def remove_github_auth(request):
try:
user_github = request.user.github
user_github.delete()
except UserGithub.DoesNotExist:
pass
send_keen_event('cloudpebble', 'cloudpebble_github_revoked', request=request)
return HttpResponseRedirect('/ide/settings')