Source code for sugar.activity.activityhandle

# Copyright (C) 2006-2007 Red Hat, Inc.
# Copyright (C) 2025 MostlyK
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.

"""
Provides a class for storing activity metadata such as activity id's,
journal object id's.
The ActivityHandle class for managing activity instances and their metadata.
"""

import uuid


[docs] class ActivityHandle(object): """ Data structure storing simple activity metadata Args: activity_id (string): unique id for the activity to be created object_id (string): identity of the journal object associated with the activity. When you resume an activity from the journal the object_id will be passed in. It is optional since new activities does not have an associated object. uri (string): URI associated with the activity. Used when opening an external file or resource in the activity, rather than a journal object (downloads stored on the file system for example or web pages) invited (bool): True if the activity is being launched for handling an invite from the network """
[docs] def __init__(self, activity_id=None, object_id=None, uri=None, invited=False): if activity_id is None: activity_id = self._create_activity_id() self.activity_id = activity_id self.object_id = object_id self.uri = uri self.invited = invited
def _create_activity_id(self): """ Generate a new unique activity ID. """ # Simple UUID-based ID generation return str(uuid.uuid4())
[docs] def get_dict(self): """ Get a dictionary representation of the handle. Returns: dict: Dictionary containing handle data """ result = { 'activity_id': self.activity_id, 'invited': self.invited } if self.object_id is not None: result['object_id'] = self.object_id if self.uri is not None: result['uri'] = self.uri return result
[docs] @classmethod def create_from_dict(cls, handle_dict): """ Create an ActivityHandle from a dictionary. Args: handle_dict (dict): Dictionary containing handle data Returns: ActivityHandle: New handle instance """ return cls( activity_id=handle_dict.get('activity_id'), object_id=handle_dict.get('object_id'), uri=handle_dict.get('uri'), invited=handle_dict.get('invited', False) )
[docs] def __repr__(self): """String representation of the handle.""" return f"ActivityHandle(activity_id='{self.activity_id}', " \ f"object_id='{self.object_id}', uri='{self.uri}', " \ f"invited={self.invited})"