"""
return await asyncio.to_thread(self._generate, *args, **kwargs)
- def _generate(self, uid, algorithm=None):
+ def _generate(self, uid, email=None, algorithm=None):
log.debug("Generating key for %s (%s)" % (uid, algorithm))
+ # Append email if we have any
+ if email:
+ uid = "%s <%s>" % (uid, email)
+
# Launch a new Pakfire instance
p = self.backend.pakfire()
slug = self._make_slug(name, owner=owner)
# Create a key for this repository
- if owner:
- key = await owner.key.generate_subkey(name)
-
- # If this is not a personal repository,
- # we generate a subkey for the distribution key
- else:
- key = await distro.key.generate_subkey(name)
+ key = await self._make_key(distro, name, owner=owner)
repo = self._get_repository("""
INSERT INTO
if not exists:
return slug
+ async def _make_key(self, distro, name, owner=None):
+ """
+ Generates a new key for the repository
+ """
+ # Generate the UID
+ uid = "%s - %s" % (distro, name)
+
+ # For personal repositories, we will prepend the owner
+ if owner:
+ uid = "%s - %s" % (owner, uid)
+
+ # Fetch an email address
+ email = owner.email if owner else distro.contact
+
+ # Generate the key
+ return await self.backend.keys.generate(uid, email=email)
+
def get_by_id(self, repo_id):
return self._get_repository("SELECT * FROM repositories \
WHERE id = %s", repo_id)