예제 #1
0
파일: settings.py 프로젝트: kelp404/Salmon
def update_profile(request):
    form = ProfileForm(**json.loads(request.body))
    if not form.validate():
        raise Http400

    user = UserModel.get_by_id(request.user.key().id())
    user.name = form.name.data
    user.put()
    return JsonResponse(user)
예제 #2
0
def delete_user(request, user_id):
    user_id = long(user_id)
    if request.user.key().id() == user_id:
        raise Http403
    user = UserModel.get_by_id(user_id)
    if user is None:
        raise Http404
    user.delete()
    return HttpResponse()
예제 #3
0
def get_application(request, application_id):
    application = ApplicationModel.get_by_id(long(application_id))
    if application is None:
        raise Http404
    if request.user.permission != UserPermission.root and\
                    request.user.key().id() not in application.member_ids:
        raise Http403
    result = application.dict()
    result['members'] = [x.dict() for x in UserModel.get_by_id(application.member_ids) if not x is None]
    return JsonResponse(result)
예제 #4
0
def update_profile(request):
    form = ProfileForm(**json.loads(request.body))
    if not form.validate():
        raise Http400

    user = UserModel.get_by_id(request.user.key().id())
    if user is None:
        raise Http404
    user.name = form.name.data
    user.put()
    return JsonResponse(user)
예제 #5
0
def update_user(request, user_id):
    user_id = long(user_id)
    form = UserForm(**json.loads(request.body))
    if not form.validate():
        raise Http400
    user = UserModel.get_by_id(user_id)
    if user is None:
        raise Http404
    user.name = form.name.data
    user.permission = form.permission.data
    user.put()
    return JsonResponse(user)
예제 #6
0
파일: projects.py 프로젝트: kelp404/Salmon
def get_project(request, project_id):
    project = ProjectModel.get_by_id(long(project_id))
    if project is None:
        raise Http404('not found the project %s' % project_id)
    if request.user.permission != UserPermission.root and\
                    request.user.key().id() not in project.member_ids:
        raise Http403
    labels = LabelModel.all().filter('project =', project.key()).order('title').fetch(100)

    result = project.dict()
    result['members'] = [x.dict() for x in UserModel.get_by_id(project.member_ids) if not x is None]
    result['labels'] = [x.dict() for x in labels]
    return JsonResponse(result)
예제 #7
0
파일: logs.py 프로젝트: RinseIO/Victorique
def __add_log(request, application_key, args):
    """
    Add the log.
    :param args: {dict} The log.
    :param is_jsonp: {bool}
    :return: The django response.
    """
    form = APILogForm(key=application_key, **args)
    if not form.validate():
        raise Http400

    applications = ApplicationModel.all().filter("app_key =", form.key.data).fetch(1)
    if not len(applications):
        raise Http404
    application = applications[0]

    # Is the log exist?
    logs = (
        LogModel.all()
        .filter("title =", form.title.data)
        .filter("is_close =", False)
        .filter("application =", application.key())
        .fetch(1)
    )
    if len(logs):
        # update log
        log = logs[0]
        log.count += 1
        log.update_time = datetime.utcnow()
        if not form.user.data is None and form.user.data not in log.users:
            log.users.append(form.user.data)
    else:
        # add the new log
        log = LogModel(application=application, title=form.title.data)
        if not form.user.data is None:
            log.users = [form.user.data]
    if not form.document.data is None:
        log.document = form.document.data
    log.user_agent = request.META.get("HTTP_USER_AGENT")
    log.ip = os.environ.get("REMOTE_ADDR")
    log.put()
    if log.count == 1 and application.email_notification:
        # send email notification to members
        gae_account = getattr(settings, "GAE_ACCOUNT")
        domain = getattr(settings, "HOST")
        users = UserModel.get_by_id(application.member_ids)
        message = mail.EmailMessage(sender=gae_account, subject="%s has a new log at Victorique." % application.title)
        message.to = [x.email for x in users if not x is None]
        message.body = "There is a new log at Victorique.\n%s\nhttps://%s/applications/%s/logs/%s" % (
            log.title,
            domain,
            application.key().id(),
            log.key().id(),
        )
        message.send()

    index = search.Index(namespace="Logs", name=str(application.key().id()))
    search_document = search.Document(
        doc_id=str(log.key().id()),
        fields=[
            search.TextField(name="users", value=unicode(log.users)),
            search.TextField(name="title", value=log.title),
            search.TextField(name="document", value=log.document_json),
            search.TextField(name="ip", value=log.ip),
            search.TextField(name="user_agent", value=log.user_agent),
            search.DateField(name="update_time", value=log.update_time),
        ],
    )
    index.put(search_document)
예제 #8
0
def get_user(request, user_id):
    user_id = long(user_id)
    user = UserModel.get_by_id(user_id)
    if user is None:
        raise Http404
    return JsonResponse(user)