コード例 #1
0
ファイル: version.py プロジェクト: vijos/vj4
import functools
import git
import logging
from os import path

import vj4
from vj4.util import argmethod

_logger = logging.getLogger(__name__)


@functools.lru_cache()
@argmethod.wrap
def get():
  try:
    return git.Repo(path.dirname(path.dirname(vj4.__file__))).git.describe(always=True, tags=True, dirty=True)
  except (git.InvalidGitRepositoryError, git.GitCommandError) as e:
    _logger.error('Failed to get repository: %s', repr(e))
    return 'unknown'


if __name__ == '__main__':
  argmethod.invoke_by_args()
コード例 #2
0

@argmethod.wrap
async def link_by_md5(file_md5: str):
    """Link a file by MD5 if exists."""
    coll = db.Collection('fs.files')
    doc = await coll.find_and_modify(query={'md5': file_md5},
                                     update={'$inc': {
                                         'metadata.link': 1
                                     }})
    if doc:
        return doc['_id']


@argmethod.wrap
async def unlink(file_id: objectid.ObjectId):
    """Unlink a file."""
    coll = db.Collection('fs.files')
    doc = await coll.find_and_modify(query={'_id': file_id},
                                     update={'$inc': {
                                         'metadata.link': -1
                                     }},
                                     new=True)
    if not doc['metadata']['link']:
        fs = db.GridFS('fs')
        await fs.delete(file_id)


if __name__ == '__main__':
    argmethod.invoke_by_args()