comparison rhodecode/lib/utils.py @ 1039:51b70569c330 beta

extended admin rescan to show what repositories was added and what removed fixed found bugs, added expunge to cached getter since it introduce some more problems. Added some relationship to properly clean related objects from database.
author Marcin Kuzminski <marcin@python-works.com>
date Sun, 13 Feb 2011 01:38:39 +0100
parents 2e9f2bd28143
children bc3dafd0e24c
comparison
equal deleted inserted replaced
1038:5554aa9c2480 1039:51b70569c330
361 """ 361 """
362 362
363 sa = meta.Session() 363 sa = meta.Session()
364 rm = RepoModel() 364 rm = RepoModel()
365 user = sa.query(User).filter(User.admin == True).first() 365 user = sa.query(User).filter(User.admin == True).first()
366 366 added = []
367 for name, repo in initial_repo_list.items(): 367 for name, repo in initial_repo_list.items():
368 group = map_groups(name.split('/')) 368 group = map_groups(name.split('/'))
369 if not rm.get_by_repo_name(name, cache=False): 369 if not rm.get_by_repo_name(name, cache=False):
370 log.info('repository %s not found creating default', name) 370 log.info('repository %s not found creating default', name)
371 371 added.append(name)
372 form_data = { 372 form_data = {
373 'repo_name':name, 373 'repo_name':name,
374 'repo_type':repo.alias, 374 'repo_type':repo.alias,
375 'description':repo.description \ 375 'description':repo.description \
376 if repo.description != 'unknown' else \ 376 if repo.description != 'unknown' else \
378 'private':False, 378 'private':False,
379 'group_id':getattr(group, 'group_id', None) 379 'group_id':getattr(group, 'group_id', None)
380 } 380 }
381 rm.create(form_data, user, just_db=True) 381 rm.create(form_data, user, just_db=True)
382 382
383 removed = []
383 if remove_obsolete: 384 if remove_obsolete:
384 #remove from database those repositories that are not in the filesystem 385 #remove from database those repositories that are not in the filesystem
385 for repo in sa.query(Repository).all(): 386 for repo in sa.query(Repository).all():
386 if repo.repo_name not in initial_repo_list.keys(): 387 if repo.repo_name not in initial_repo_list.keys():
388 removed.append(repo.repo_name)
387 sa.delete(repo) 389 sa.delete(repo)
388 sa.commit() 390 sa.commit()
389 391
392 return added, removed
390 class OrderedDict(dict, DictMixin): 393 class OrderedDict(dict, DictMixin):
391 394
392 def __init__(self, *args, **kwds): 395 def __init__(self, *args, **kwds):
393 if len(args) > 1: 396 if len(args) > 1:
394 raise TypeError('expected at most 1 arguments, got %d' % len(args)) 397 raise TypeError('expected at most 1 arguments, got %d' % len(args))