Fix #1024 - Correctly set generator on Activities
This commit is contained in:
parent
6740d03422
commit
5436d980a1
@ -419,9 +419,9 @@ def oauth_required(controller):
|
|||||||
|
|
||||||
# Fill user if not already
|
# Fill user if not already
|
||||||
token = authorization[u"oauth_token"]
|
token = authorization[u"oauth_token"]
|
||||||
access_token = AccessToken.query.filter_by(token=token).first()
|
request.access_token = AccessToken.query.filter_by(token=token).first()
|
||||||
if access_token is not None and request.user is None:
|
if request.access_token is not None and request.user is None:
|
||||||
user_id = access_token.user
|
user_id = request.access_token.user
|
||||||
request.user = User.query.filter_by(id=user_id).first()
|
request.user = User.query.filter_by(id=user_id).first()
|
||||||
|
|
||||||
return controller(request, *args, **kwargs)
|
return controller(request, *args, **kwargs)
|
||||||
|
@ -23,6 +23,7 @@ from werkzeug.datastructures import FileStorage
|
|||||||
from mediagoblin.decorators import oauth_required, require_active_login
|
from mediagoblin.decorators import oauth_required, require_active_login
|
||||||
from mediagoblin.federation.decorators import user_has_privilege
|
from mediagoblin.federation.decorators import user_has_privilege
|
||||||
from mediagoblin.db.models import User, MediaEntry, MediaComment, Activity
|
from mediagoblin.db.models import User, MediaEntry, MediaComment, Activity
|
||||||
|
from mediagoblin.tools.federation import create_activity, create_generator
|
||||||
from mediagoblin.tools.routing import extract_url_arguments
|
from mediagoblin.tools.routing import extract_url_arguments
|
||||||
from mediagoblin.tools.response import redirect, json_response, json_error, \
|
from mediagoblin.tools.response import redirect, json_response, json_error, \
|
||||||
render_404, render_to_response
|
render_404, render_to_response
|
||||||
@ -180,6 +181,17 @@ def feed_endpoint(request):
|
|||||||
comment = MediaComment(author=request.user.id)
|
comment = MediaComment(author=request.user.id)
|
||||||
comment.unserialize(data["object"], request)
|
comment.unserialize(data["object"], request)
|
||||||
comment.save()
|
comment.save()
|
||||||
|
|
||||||
|
# Create activity for comment
|
||||||
|
generator = create_generator(request)
|
||||||
|
activity = create_activity(
|
||||||
|
verb="post",
|
||||||
|
actor=request.user,
|
||||||
|
obj=comment,
|
||||||
|
target=comment.get_entry,
|
||||||
|
generator=generator
|
||||||
|
)
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
"verb": "post",
|
"verb": "post",
|
||||||
"object": comment.serialize(request)
|
"object": comment.serialize(request)
|
||||||
|
@ -26,7 +26,7 @@ from werkzeug.datastructures import FileStorage
|
|||||||
from mediagoblin import mg_globals
|
from mediagoblin import mg_globals
|
||||||
from mediagoblin.tools.response import json_response
|
from mediagoblin.tools.response import json_response
|
||||||
from mediagoblin.tools.text import convert_to_tag_list_of_dicts
|
from mediagoblin.tools.text import convert_to_tag_list_of_dicts
|
||||||
from mediagoblin.tools.federation import create_activity
|
from mediagoblin.tools.federation import create_activity, create_generator
|
||||||
from mediagoblin.db.models import MediaEntry, ProcessingMetaData
|
from mediagoblin.db.models import MediaEntry, ProcessingMetaData
|
||||||
from mediagoblin.processing import mark_entry_failed
|
from mediagoblin.processing import mark_entry_failed
|
||||||
from mediagoblin.processing.task import ProcessMedia
|
from mediagoblin.processing.task import ProcessMedia
|
||||||
@ -294,7 +294,12 @@ def api_add_to_feed(request, entry):
|
|||||||
add_comment_subscription(request.user, entry)
|
add_comment_subscription(request.user, entry)
|
||||||
|
|
||||||
# Create activity
|
# Create activity
|
||||||
create_activity("post", entry, entry.uploader)
|
create_activity(
|
||||||
|
verb="post",
|
||||||
|
obj=entry,
|
||||||
|
actor=entry.uploader,
|
||||||
|
generator=create_generator(request)
|
||||||
|
)
|
||||||
entry.save()
|
entry.save()
|
||||||
run_process_media(entry, feed_url)
|
run_process_media(entry, feed_url)
|
||||||
|
|
||||||
|
@ -16,7 +16,34 @@
|
|||||||
|
|
||||||
from mediagoblin.db.models import Activity, Generator, User
|
from mediagoblin.db.models import Activity, Generator, User
|
||||||
|
|
||||||
def create_activity(verb, obj, actor, target=None):
|
def create_generator(request):
|
||||||
|
"""
|
||||||
|
This creates a Generator object based on the Client associated with the
|
||||||
|
OAuth credentials used. If the request has invalid OAuth credentials or
|
||||||
|
no OAuth credentials None is returned.
|
||||||
|
"""
|
||||||
|
if not hasattr(request, "access_token"):
|
||||||
|
return None
|
||||||
|
|
||||||
|
client = request.access_token.get_requesttoken.get_client
|
||||||
|
|
||||||
|
# Check if there is a generator already
|
||||||
|
generator = Generator.query.filter_by(
|
||||||
|
name=client.application_name,
|
||||||
|
object_type="client"
|
||||||
|
).first()
|
||||||
|
if generator is None:
|
||||||
|
generator = Generator(
|
||||||
|
name=client.application_name,
|
||||||
|
object_type="client"
|
||||||
|
)
|
||||||
|
generator.save()
|
||||||
|
|
||||||
|
return generator
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def create_activity(verb, obj, actor, target=None, generator=None):
|
||||||
"""
|
"""
|
||||||
This will create an Activity object which for the obj if possible
|
This will create an Activity object which for the obj if possible
|
||||||
and save it. The verb should be one of the following:
|
and save it. The verb should be one of the following:
|
||||||
@ -34,14 +61,15 @@ def create_activity(verb, obj, actor, target=None):
|
|||||||
if verb not in Activity.VALID_VERBS:
|
if verb not in Activity.VALID_VERBS:
|
||||||
raise ValueError("A invalid verb type has been supplied.")
|
raise ValueError("A invalid verb type has been supplied.")
|
||||||
|
|
||||||
# This should exist as we're creating it by the migration for Generator
|
|
||||||
generator = Generator.query.filter_by(name="GNU MediaGoblin").first()
|
|
||||||
if generator is None:
|
if generator is None:
|
||||||
generator = Generator(
|
# This should exist as we're creating it by the migration for Generator
|
||||||
name="GNU MediaGoblin",
|
generator = Generator.query.filter_by(name="GNU MediaGoblin").first()
|
||||||
object_type="service"
|
if generator is None:
|
||||||
)
|
generator = Generator(
|
||||||
generator.save()
|
name="GNU MediaGoblin",
|
||||||
|
object_type="service"
|
||||||
|
)
|
||||||
|
generator.save()
|
||||||
|
|
||||||
activity = Activity(verb=verb)
|
activity = Activity(verb=verb)
|
||||||
activity.set_object(obj)
|
activity.set_object(obj)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user