def change_user_email(self, user_token, new_email): old_user = self.get_user_for_token(user_token) password = old_user.password users_interface = AccessToDjangoUsersDB() with transaction.atomic(): new_user = users_interface.create_and_get_usersdb_instance( new_email, password) old_user.linksdb_set.all().update(user=new_user) users_interface.delete_user_by_usersdb_instance(old_user)
def modify_link_password(self, user_token, shortlink, new_password): user = AccessToDjangoUsersDB().get_usersdb_instance_for_token( user_token) link = self.get_shortlink_from_usersdb_instance(user, shortlink) link.password = new_password link.save()
def modify_longlink(self, user_token, shortlink, new_longlink): user = AccessToDjangoUsersDB().get_usersdb_instance_for_token( user_token) link = self.get_shortlink_from_usersdb_instance(user, shortlink) link.longlink = new_longlink link.save()
def modify_shortlink(self, user_token, old_shortlink, new_shortlink): user = AccessToDjangoUsersDB().get_usersdb_instance_for_token( user_token) link = self.get_shortlink_from_usersdb_instance(user, old_shortlink) with transaction.atomic(): self.add_link_for_user(link.longlink, link.password, new_shortlink, user_token) self.delete_link(user_token, old_shortlink)
def delete_link(self, user_token, shortlink): user = AccessToDjangoUsersDB().get_usersdb_instance_for_token( user_token) link = self.get_shortlink_from_usersdb_instance(user, shortlink) num_of_deleted_links = link.delete()[1]['shortener.LinksDB'] if num_of_deleted_links != 1: raise OtherDBError("Link has not been deleted properly")
def get_user_shortlinks_table(self, user_token): user = AccessToDjangoUsersDB().get_usersdb_instance_for_token( user_token) shortlinks_table = ShortlinksTable() for link in user.linksdb_set.all(): shortlinks_table.add_shortlink(link.shortlink, link.longlink, link.password) return shortlinks_table
def add_link_for_user(self, longlink, link_password, shortlink, user_token): user = AccessToDjangoUsersDB().get_usersdb_instance_for_token( user_token) try: if shortlink is None: with transaction.atomic(): link = self.add_random_link_get_linksdb_instance( longlink, link_password) link.user = user link.save() else: link = user.linksdb_set.create(shortlink=shortlink, longlink=longlink, password=link_password) except IntegrityError: raise ShortLinkAlreadyTaken('Shortlink(%s) is already taken' % shortlink) return link.shortlink
def get_user_for_token(self, token): return AccessToDjangoUsersDB().get_user_for_token(token)
def get_users_interface(): return UsersActions(AccessToDjangoUsersDB())
def get_links_interface(): return LinksActions(AccessToDjangoLinksDB(), AccessToDjangoUsersDB())